guix-devel
[Top][All Lists]
Advanced

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

Re: ASDF Builder (Common Lisp) & "package-inferred-system" Packages


From: Pierre Neidhardt
Subject: Re: ASDF Builder (Common Lisp) & "package-inferred-system" Packages
Date: Sat, 03 Aug 2019 10:04:59 +0200

Hi Katherine!

One of the issue that we have with the current build system is that it
does not find the dependencies properly for the inferred packages.

Robert from the ASDF team suggested a solution:

                        https://gitlab.common-lisp.net/asdf/asdf/issues/10

I think if we use his more general function, we can properly populate
the *source-registry*.  So that would be a solution to the first of our
problems, that of the missing inputs.

The main other issue is the one you mention: we need to compile the
.fasl files right.

> - Stop rolling all code into system-fasls
> - Output each file's equivalent fasl to a common directory for the
>   system
> - Set a search path in the profile to recursively search the SBCL fasl
>   output tree for systems.

This sounds reasonable.  Also you mentioned above that concatenating the
generated fasl files into a single one manually worked for you.  If it
works, then why not!


> In the interim, an idea I had was to borrow the "base package" concept I
> came across when packaging other, non package-inferred, systems. I
> haven't tried it yet, but I think it should work, even if it sounds
> tedious to me.
>
> Sticking with the dbus example, it looks like we have the following
> situation:
>
> - dbus
>   - dbus/all
>     - dbus/utils
>     - dbus/protocols
>     - ...
>
> I think what we could do is define a `dbus-base` package which is
> hidden, and then start defining "sub-packages" which simply inherit from
> the base package, i.e.:
>
> - dbus-base
>   - dbus-utils (inherit from dbus-base)
>   - dbus-protocols (inherit from dbus-base)
>   - ...
>   - dbus-all (inherit from dbus-base; require dbus-utils,
>     dbus-protocols, etc.)
>
> In essence we would be manually defining the dependency tree that ASDF
> is inferring. We could probably lean on Common Lisp and ASDF itself to
> generate these packages within a hypothetical importer.

I don't think that would work, because the inferred packages can have
circular dependencies, e.g. dbus-utils depends on dbus-protocols which
depends on dbus-utils (correct me if I'm wrong).
But this is not allowed in Guix (the dependency graph is acyclic).

> But as I said, this seems quite tedious. We really should make our
> Common Lisp packaging smarter.

I believe your above solution could work.  Wanna give it a shot?

Andy, what do you think?

-- 
Pierre Neidhardt
https://ambrevar.xyz/

Attachment: signature.asc
Description: PGP signature


reply via email to

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