tvl-depot/third_party/overlays/ecl-static.nix
sterni 6908d960b2 feat(3p/overlays/ecl-static): 21.2.1 -> 1c98924
Seems like some issues to do with bytecode compilation have been fixed
at HEAD. closer-mop compiles again and an ironclad failure with the
next quicklisp/channel bump is avoided.

In this change pathname handling in ECL also changed somehow, causing it
to make the :directory part absolute by prefixing it with a slash which
made ld.bfd unhappy while linking an output path that began with a
double slash. This problem can be avoided by constructing the path as
ANSI Common Lisp intended. The truename on the out path is important to
make it recognize that it is indeed a directory.

Change-Id: I5e744022b92502f99ac0b33411a6be443707e200
Reviewed-on: https://cl.tvl.fyi/c/depot/+/5076
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2022-01-28 10:43:01 +00:00

37 lines
1.5 KiB
Nix

{ ... }:
self: super:
{
# Statically linked ECL with statically linked dependencies.
# Works quite well, but solving this properly in a nixpkgs
# context will require figuring out cross compilation (for
# pkgsStatic), so we're gonna use this override for now.
#
# Note that ecl-static does mean that we have things
# statically linked against GMP and ECL which are LGPL.
# I believe this should be alright: The way ppl are gonna
# interact with the distributed binaries (i. e. the binary
# cache) is Nix in the depot monorepo, so the separability
# requirement should be satisfied: Source code or overriding
# would be available as ways to swap out the used GMP in the
# program.
# See https://www.gnu.org/licenses/gpl-faq.en.html#LGPLStaticVsDynamic
ecl-static = (super.pkgsMusl.ecl.override {
inherit (self.pkgsStatic) gmp libffi boehmgc;
}).overrideAttrs (drv: rec {
# version must not be changed as it indicates where to find the bundled libs,
# using ecl HEAD is necessary for us since it includes multiple fixes to do
# with bytecode compilation and allows to concatenate fasc files again.
src = self.fetchFromGitLab {
owner = "embeddable-common-lisp";
repo = "ecl";
rev = "1c989247c1b0bf1d38a76aec30b9ca5e41afe1e3";
sha256 = "0bzjqw6m1kk5z5b81yizic347k931msp5lf78x65dcw3fqfwv3xn";
};
configureFlags = drv.configureFlags ++ [
"--disable-shared"
"--with-dffi=no" # will fail at runtime anyways if statically linked
];
});
}