From ae9cb7be8c3b5a3edfd90eff8734861ae89f7df8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kasper=20Ga=C5=82kowski?= Date: Tue, 11 Oct 2022 17:41:55 +0200 Subject: [PATCH 1/3] lispPackages_new: fixed a bunch of packages magicl, cl-cairo2, cl-ana, gsll, cl-libyaml, cl-libxml2, cl-readline --- .../development/lisp-modules-new/packages.nix | 7 +++++++ .../magicl-dont-build-fortran-twice.patch | 21 +++++++++++++++++++ pkgs/development/lisp-modules-new/ql.nix | 21 +++++++++++++++++++ 3 files changed, 49 insertions(+) create mode 100644 pkgs/development/lisp-modules-new/patches/magicl-dont-build-fortran-twice.patch diff --git a/pkgs/development/lisp-modules-new/packages.nix b/pkgs/development/lisp-modules-new/packages.nix index 1ad06f615b56..3dee2b19231b 100644 --- a/pkgs/development/lisp-modules-new/packages.nix +++ b/pkgs/development/lisp-modules-new/packages.nix @@ -423,6 +423,13 @@ let patches = [ ./patches/qtools-use-nix-libs.patch ]; }; + magicl = build-with-compile-into-pwd { + inherit (ql.magicl) pname version src lispLibs; + nativeBuildInputs = [ pkgs.gfortran ]; + nativeLibs = [ pkgs.openblas ]; + patches = [ ./patches/magicl-dont-build-fortran-twice.patch ]; + }; + }; in packages diff --git a/pkgs/development/lisp-modules-new/patches/magicl-dont-build-fortran-twice.patch b/pkgs/development/lisp-modules-new/patches/magicl-dont-build-fortran-twice.patch new file mode 100644 index 000000000000..f63b6949b1fd --- /dev/null +++ b/pkgs/development/lisp-modules-new/patches/magicl-dont-build-fortran-twice.patch @@ -0,0 +1,21 @@ +--- a/magicl.asd ++++ b/magicl.asd +@@ -143,6 +143,7 @@ + (shared-object (make-pathname :type #+darwin "dylib" #-darwin "so" + :name "libexpokit" + :defaults fortran-file))) ++ (unless (probe-file (nn shared-object)) + (uiop:run-program + (list "gfortran" "-fPIC" "-std=legacy" + "-c" +@@ -155,7 +156,7 @@ + (nn object-file) + #+darwin "-lblas" + #+darwin "-llapack")) +- (delete-file object-file)))) ++ (delete-file object-file))))) + + + (asdf:defsystem #:magicl/ext-expokit + +Diff finished. Mon Oct 10 22:03:54 2022 diff --git a/pkgs/development/lisp-modules-new/ql.nix b/pkgs/development/lisp-modules-new/ql.nix index 4ffce7a8d769..8e281f6b2c59 100644 --- a/pkgs/development/lisp-modules-new/ql.nix +++ b/pkgs/development/lisp-modules-new/ql.nix @@ -19,6 +19,9 @@ let cl-cffi-gtk-cairo = pkg: { nativeLibs = [ cairo ]; }; + cl-cairo2 = pkg: { + nativeLibs = [ cairo ]; + }; cl-cffi-gtk-gdk = pkg: { nativeLibs = [ gtk3 ]; }; @@ -130,6 +133,24 @@ let nativeLibs = [ libfixposix ]; systems = [ "iolib" "iolib/os" "iolib/pathnames" ]; }; + "cl-ana.hdf-cffi" = pkg: { + nativeBuildInputs = [ hdf5 ]; + nativeLibs = [ hdf5 ]; + NIX_LDFLAGS = [ "-lhdf5" ]; + }; + gsll = pkg: { + nativeBuildInputs = [ gsl ]; + nativeLibs = [ gsl ]; + }; + cl-libyaml = pkg: { + nativeLibs = [ libyaml ]; + }; + cl-libxml2 = pkg: { + nativeLibs = [ libxml2 ]; + }; + cl-readline = pkg: { + nativeLibs = [ readline ]; + }; }; qlpkgs = From 2f103f2b1f4a9cd20fe00e331f1177cf31086f26 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kasper=20Ga=C5=82kowski?= Date: Sun, 13 Nov 2022 13:34:39 +0100 Subject: [PATCH 2/3] lispPackages_new: Fix patching without build-with-compile-into-pwd Add patch for cffi-libffi on Darwin --- .../lisp-modules-new/lisp-packages.nix | 28 ++++--------------- .../development/lisp-modules-new/packages.nix | 1 + .../patches/cffi-libffi-darwin-ffi-h.patch | 14 ++++++++++ 3 files changed, 21 insertions(+), 22 deletions(-) create mode 100644 pkgs/development/lisp-modules-new/patches/cffi-libffi-darwin-ffi-h.patch diff --git a/pkgs/development/lisp-modules-new/lisp-packages.nix b/pkgs/development/lisp-modules-new/lisp-packages.nix index 513f72a985e0..913296e9fce3 100644 --- a/pkgs/development/lisp-modules-new/lisp-packages.nix +++ b/pkgs/development/lisp-modules-new/lisp-packages.nix @@ -133,10 +133,6 @@ let in stdenv.mkDerivation (rec { inherit pname version nativeLibs javaLibs lispLibs lisp systems asds; - src = if builtins.length patches > 0 - then apply-patches args - else args.src; - # When src is null, we are building a lispWithPackages and only # want to make use of the dependency environment variables # generated by build-asdf-system @@ -248,24 +244,12 @@ let dontStrip = true; dontFixup = true; - } // args)); - - # Need to do that because we always want to compile straight from - # `src` for go-to-definition to work in SLIME. - apply-patches = { patches, src, ... }: - stdenv.mkDerivation { - inherit patches src; - pname = "source"; - version = "patched"; - dontConfigure = true; - dontBuild = true; - dontStrip = true; - dontFixup = true; - installPhase = '' - mkdir -pv $out - cp -r * $out - ''; - }; + } // (args // { + src = if builtins.length (args.patches or []) > 0 + then pkgs.applyPatches { inherit (args) src patches; } + else args.src; + patches = []; + }))); # Build the set of lisp packages using `lisp` # These packages are defined manually for one reason or another: diff --git a/pkgs/development/lisp-modules-new/packages.nix b/pkgs/development/lisp-modules-new/packages.nix index 3dee2b19231b..244d2f4b5b5f 100644 --- a/pkgs/development/lisp-modules-new/packages.nix +++ b/pkgs/development/lisp-modules-new/packages.nix @@ -102,6 +102,7 @@ let url = "https://github.com/cffi/cffi/archive/3f842b92ef808900bf20dae92c2d74232c2f6d3a.tar.gz"; sha256 = "1jilvmbbfrmb23j07lwmkbffc6r35wnvas5s4zjc84i856ccclm2"; }; + patches = [ ./patches/cffi-libffi-darwin-ffi-h.patch ]; }); cl-unicode = build-with-compile-into-pwd { diff --git a/pkgs/development/lisp-modules-new/patches/cffi-libffi-darwin-ffi-h.patch b/pkgs/development/lisp-modules-new/patches/cffi-libffi-darwin-ffi-h.patch new file mode 100644 index 000000000000..15c4a4588755 --- /dev/null +++ b/pkgs/development/lisp-modules-new/patches/cffi-libffi-darwin-ffi-h.patch @@ -0,0 +1,14 @@ +--- a/libffi/libffi-types.lisp ++++ b/libffi/libffi-types.lisp +@@ -43,9 +43,6 @@ + + (pkg-config-cflags "libffi" :optional t) + +-#+darwin +-(include "ffi/ffi.h") +-#-darwin + (include "ffi.h") + + (cenum status + +Diff finished. Sun Nov 13 00:23:10 2022 \ No newline at end of file From f9e9336207b9a67b65f859783d502f096a27bf8e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kasper=20Ga=C5=82kowski?= Date: Sun, 13 Nov 2022 15:04:23 +0100 Subject: [PATCH 3/3] lispPackages_new: fix for patched sources not being picked up --- pkgs/development/lisp-modules-new/lisp-packages.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/lisp-modules-new/lisp-packages.nix b/pkgs/development/lisp-modules-new/lisp-packages.nix index 913296e9fce3..aebcfdb1878e 100644 --- a/pkgs/development/lisp-modules-new/lisp-packages.nix +++ b/pkgs/development/lisp-modules-new/lisp-packages.nix @@ -197,7 +197,7 @@ let # # NOTE: It's important to read files from `src` instead of # from pwd to get go-to-definition working with SLIME - export CL_SOURCE_REGISTRY=$CL_SOURCE_REGISTRY:${src}// + export CL_SOURCE_REGISTRY=$CL_SOURCE_REGISTRY:$src// # Similiarily for native deps export LD_LIBRARY_PATH=${makeLibraryPath nativeLibs}:$LD_LIBRARY_PATH @@ -205,7 +205,7 @@ let # Make asdf compile from `src` to pwd and load `lispLibs` # from storeDir. Otherwise it could try to recompile lisp deps. - export ASDF_OUTPUT_TRANSLATIONS="${src}:$(pwd):${storeDir}:${storeDir}" + export ASDF_OUTPUT_TRANSLATIONS="$src:$(pwd):${storeDir}:${storeDir}" # track lisp dependencies for graph generation # TODO: Do the propagation like for lisp, native and java like this: