about summary refs log tree commit diff
diff options
context:
space:
mode:
authorsterni <sternenseemann@systemli.org>2022-01-27T11·42+0100
committersterni <sternenseemann@systemli.org>2022-01-28T10·43+0000
commit6908d960b24072043923adcd6ecc0aa128496187 (patch)
treebef57de5351f9de85f9c7d005664b4394eefcc16
parent1673fe95c8e0187844b3607e02e37963cb79dba2 (diff)
feat(3p/overlays/ecl-static): 21.2.1 -> 1c98924 r/3692
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>
-rw-r--r--nix/buildLisp/default.nix7
-rw-r--r--third_party/lisp/closer-mop.nix4
-rw-r--r--third_party/overlays/ecl-static.nix24
3 files changed, 13 insertions, 22 deletions
diff --git a/nix/buildLisp/default.nix b/nix/buildLisp/default.nix
index 442ac7dfe1..ab23b30210 100644
--- a/nix/buildLisp/default.nix
+++ b/nix/buildLisp/default.nix
@@ -413,10 +413,9 @@ let
         (ext:install-c-compiler)
 
         (c:build-program
-         (make-pathname :name "${name}"
-                        :directory (concatenate 'string
-                                                (getenv-or-fail "out")
-                                                "/bin"))
+         (merge-pathnames (make-pathname :directory '(:relative "bin")
+                                         :name "${name}")
+                          (truename (getenv-or-fail "out")))
          :epilogue-code `(progn
                           ;; UIOP doesn't understand ECL, so we need to make it
                           ;; aware that we are a proper executable, causing it
diff --git a/third_party/lisp/closer-mop.nix b/third_party/lisp/closer-mop.nix
index 419772ba97..145b9cfd43 100644
--- a/third_party/lisp/closer-mop.nix
+++ b/third_party/lisp/closer-mop.nix
@@ -16,8 +16,4 @@ in depot.nix.buildLisp.library {
       ccl = "${src}/closer-clozure.lisp";
     }
   ];
-
-  brokenOn = [
-    "ecl" # https://github.com/pcostanza/closer-mop/issues/20
-  ];
 }
diff --git a/third_party/overlays/ecl-static.nix b/third_party/overlays/ecl-static.nix
index beda6641a0..66579c33ab 100644
--- a/third_party/overlays/ecl-static.nix
+++ b/third_party/overlays/ecl-static.nix
@@ -19,20 +19,16 @@ self: super:
   # 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: {
-    # Patches that make .fasc files concatenable again
-    patches = drv.patches ++ [
-      (self.fetchpatch {
-        name = "make-bytecode-fasl-concatenatable-1.patch";
-        url = "https://gitlab.com/embeddable-common-lisp/ecl/-/commit/fbb75a0fc524e3280d89d8abf3be2ee9924955c8.patch";
-        sha256 = "0k6cx1bh835rl0j0wbbi5nj0aa2rwbyfyz5q2jw643iqc62l16kv";
-      })
-      (self.fetchpatch {
-        name = "make-bytecode-fasl-concatenatable-2.patch";
-        url = "https://gitlab.com/embeddable-common-lisp/ecl/-/commit/a8b1c0da43f89800d09c23a27832d0b4c9dcc1e8.patch";
-        sha256 = "18hl79lss0dxglpa34hszqb6ajvs8rs4b4g1qlrqrvgh1gs667n0";
-      })
-    ];
+  }).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