-
-
Notifications
You must be signed in to change notification settings - Fork 15.4k
Overhaul quicklisp-to-nix #28810
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Overhaul quicklisp-to-nix #28810
Conversation
@bradleyjensen, thanks for your PR! By analyzing the history of the files in this pull request, we identified @7c6f434c to be a potential reviewer. |
Note: I took the (potentially?) contentious stance that lispPackages should be about lisp code and we shouldn't be building the executables provided by lisp systems. I believe that executables provided by lispPackages (such as stumpwm) should be in their own nix package. |
1. Detect (and automatically handle) parasitic systems. 2. Each nix package has only one asd, and (almost) every parasitic package inside it builds. 3. Ensure that parasitic systems are compiled. 4. Remove unnecessary testnames lisp override mechanism (the testnae/testSystem is replaced by parasites/buildSystems). 5. Parasitic systems (if included in the system closure) become aliases to their host package. 6. Support caching fasl files in a known directory (for faster re-generation after modifying quicklisp-to-nix-system-info). 7. Eliminate unnecessary overrides. We're going to determine ALL lisp dependencies correctly. 8. Don't try to "build" lisp packages with make. lispPackages should be about bringing in a lisp library. 9. Eliminate the hand-maintained list of aliases. Parasites should become aliases. Everything else should be a real package.
Note: Changes to overrides were necessary
991b442
to
d1e11cd
Compare
Makes sense. We also move out applications out of |
We don't have any Lisp binaries that you are expected to run without writing additional Lisp code, as far as I know… |
I can't reproduce the build failure for 7a9dxzcii40616l2dlv1vkjnkf21n501-lisp-alexandria-20170630-git on my NixOS box. I did the following.
Am I missing something? |
KEEP_THIS_ASD=0 | ||
for ALLOWED_ASD in $asdFilesToKeep; do | ||
ALLOWED_ASD="/$ALLOWED_ASD" | ||
ALLOWED_ASD_LENGTH=${"$"}{#ALLOWED_ASD} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
By the way, do you know about escaping by ''
, i.e. '' x=''${y}''
?
if [ "$(expr substr "$ASD_FILE" "$ASD_FILE_SUFFIX_INDEX" "$ASD_FILE_LENGTH")" == "$ALLOWED_ASD" ]; then | ||
KEEP_THIS_ASD=1 | ||
break | ||
fi |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is all the computation to check if test "$ALLOWED_ASD" = "$(basename "ASD_FILE")"
?
@@ -23,9 +22,6 @@ in | |||
cp "$out/lib/common-lisp/stumpwm/stumpwm" "$out/bin" | |||
''; | |||
}; | |||
propagatedBuildInputs = (x.propagatedBuildInputs or []) ++ (with qlnp; [ | |||
alexandria cl-ppcre clx | |||
]); | |||
}; | |||
iterate = skipBuildPhase; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If I understand your changes correctly, skipBuildPhase
is now the default
On the whole great, thanks. |
Did you run the package update without using sandboxing? |
I did not know about that quoting behavior. Thanks! I don’t know why I didn’t think to use basename. Brain fart. Sorry about that. Correct. Skipping Rhee build is now the default. I suppose I should have removed the unnecessary overrides. |
I dunno if it would make sense to keep going to list all the systems that couldn't be processed. Unfortunately, even among Quicklisp-provided systems, that is not always the empty set. |
I’m not sure if I follow. Are you saying we should try to get every buildable quicklisp system into lispPackages? Last time I checked, there were about a thousand releases and about 3 thousand quicklispable systems provided by those releases. |
No, I mean that when I add multiple systems (or even try to switch to the next upstream version) before regenerating, handling some systems fails, and not only because of the missing dependencies. |
Motivation for this change
The quicklisp-to-nix system misses many dependencies and is awkward to run. Some lisp systems cannot be loaded because they weren't compiled before the nix package directory was made readonly.
Things done
(nix.useSandbox on NixOS,
or option
build-use-sandbox
innix.conf
on non-NixOS)
nix-shell -p nox --run "nox-review wip"
./result/bin/
)