about summary refs log tree commit diff
path: root/third_party/overlays/ecl-static.nix
blob: 66579c33abcec2b9f0ae1fbae774efad89c6903f (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
{ ... }:

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
    ];
  });
}