guix-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Improve ASDF build system for Common Lisp libraries


From: Guillaume Le Vaillant
Subject: Re: Improve ASDF build system for Common Lisp libraries
Date: Mon, 14 Sep 2020 15:39:22 +0200
User-agent: mu4e 1.4.13; emacs 27.1

I was thinking about what the package definitions would look like if we
put pre-compiled files in package outputs instead of in their own
packages. For example with a cl-xyz package having cl-abc as native
input and cl-def as input:

 - cl-xyz package needs to propagate cl-abc and cl-def (sources).
 - cl-xyz:sbcl has cl-abc:sbcl as native input and cl-def:sbcl as input.
 - cl-xyz:ecl has cl-abc:ecl as native input and cl-def:ecl as input.


So the package definition would look like:

--8<---------------cut here---------------start------------->8---
(package
  ...
  (native-inputs
   `(("cl-abc-sbcl" ,cl-abc "sbcl")
     ("cl-abc-ecl" ,cl-abc "ecl")))
  (inputs
   `(("cl-def-sbcl" ,cl-def "sbcl")
     ("cl-def-ecl" ,cl-def "ecl")))
  (propagated-inputs
   `(("cl-abc" ,cl-abc)
     ("cl-def" ,cl-def)))
  ...
  )
--8<---------------cut here---------------end--------------->8---


It's a bit burdensome to write, but we could have a define-lisp-package
macro taking a lighter package definition and transforming it a full
package definition as above:

--8<---------------cut here---------------start------------->8---
(define-lisp-package cl-xyz
  (package
    ...
    (native-inputs
     `(("cl-abc" ,cl-abc)))
    (inputs
     `(("cl-def" ,cl-def)))
    ...
    ))
--8<---------------cut here---------------end--------------->8---


However, it would mean that installing only cl-xyz:sbcl would download
the sbcl pre-compiled files and the ecl pre-compiled files for all the
dependencies of cl-xyz (direct and transitive).
The only way to prevent downloading all these unnecessary ecl
pre-compiled files would be for the package definition to have a way to
say "the sbcl outputs only depend on the sources and the sbcl outputs of
the dependencies", but I don't think that's possible...

Attachment: signature.asc
Description: PGP signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]