[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: ASDF Builder (Common Lisp) & "package-inferred-system" Packages
From: |
Katherine Cox-Buday |
Subject: |
Re: ASDF Builder (Common Lisp) & "package-inferred-system" Packages |
Date: |
Sat, 03 Aug 2019 09:14:17 -0500 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/26.2 (gnu/linux) |
Pierre Neidhardt <address@hidden> writes:
> 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.
Perfect!
> 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!
I never got this to work[1]. I think Ningle's systems are being bundled
into a single fasl, but for whatever reason, its subsystems cannot be
found despite that bundled fasl being on the path.
Last I looked at this, I remember being left with the distinct
impression that we would have to stop producing system fasls, and rather
than having one directory of system fasls, we'd have a tree of system
directories, each populated with all the fasls for a system e.g.:
- ~/.guix-profile/lib/sbcl/
- dbus/
- dbus-all.fasl
- dbus-utils.fasl
- ...
And then find a way to search ~/.guix-profile/lib/sbcl/ recursively. The
ASDF manual says[2] $XDG_CONFIG_DIRS/common-lisp/source-registry.conf
can hold configurations, as well as `CL_SOURCE_REGISTRY`. Maybe Guix
could set one of these in the profile to something like `(:tree
(:home ".guix-profile/lib/sbcl/"))`.
Or we could stick to the `*source-registry*` variable and use a smarter
Common Lisp function to populate it.
> I believe your above solution could work. Wanna give it a shot?
Currently I have 1 day a week to work on open source things, and I have
been busy with other projects. Those may be wrapping up "soon", and then
I could give it a go, but I don't think you want to wait for me :) I
also don't speak Guile very well, and these larger changes to the build
system would probably take me awhile. It would probably be faster and
help to educate me if I were a reviewer on patches you produce.
I also want to mention that I remember going around in circles on this a
bit, so take everything I say here with a grain of salt. I think
experimentation is needed to find the cleanest implementation!
> Andy, what do you think?
[1]- https://lists.gnu.org/archive/html/guix-devel/2019-01/msg00204.html
[2] - https://www.common-lisp.net/project/asdf/asdf.html#Configurations
--
Katherine