summary refs log tree commit diff
diff options
context:
space:
mode:
authorJörg Thalheim <Mic92@users.noreply.github.com>2019-01-26 09:30:03 +0000
committerGitHub <noreply@github.com>2019-01-26 09:30:03 +0000
commit18a2cdf424c1dfdb2075f667e0c3bef53322dcc9 (patch)
treee680fcfe11fd0d25bf50b701494032b7b72fafb2
parent544c2271743e609d92493f0d387824b88cff832a (diff)
parent33036ac5d489125f9b97a5dc8d860b105db540d0 (diff)
downloadnixpkgs-18a2cdf424c1dfdb2075f667e0c3bef53322dcc9.tar
nixpkgs-18a2cdf424c1dfdb2075f667e0c3bef53322dcc9.tar.gz
nixpkgs-18a2cdf424c1dfdb2075f667e0c3bef53322dcc9.tar.bz2
nixpkgs-18a2cdf424c1dfdb2075f667e0c3bef53322dcc9.tar.lz
nixpkgs-18a2cdf424c1dfdb2075f667e0c3bef53322dcc9.tar.xz
nixpkgs-18a2cdf424c1dfdb2075f667e0c3bef53322dcc9.tar.zst
nixpkgs-18a2cdf424c1dfdb2075f667e0c3bef53322dcc9.zip
Merge pull request #47316 from alyssais/nix-perl-bindings
nix: move perl-bindings inside common function
-rw-r--r--pkgs/tools/package-management/nix/default.nix260
1 files changed, 129 insertions, 131 deletions
diff --git a/pkgs/tools/package-management/nix/default.nix b/pkgs/tools/package-management/nix/default.nix
index 995f123b81d..d86dfa31619 100644
--- a/pkgs/tools/package-management/nix/default.nix
+++ b/pkgs/tools/package-management/nix/default.nix
@@ -13,153 +13,154 @@ let
 
   sh = busybox-sandbox-shell;
 
-  common = { name, suffix ? "", src, fromGit ? false }: stdenv.mkDerivation rec {
-    inherit name src;
-    version = lib.getVersion name;
-
-    is20 = lib.versionAtLeast version "2.0pre";
-
-    VERSION_SUFFIX = lib.optionalString fromGit suffix;
-
-    outputs = [ "out" "dev" "man" "doc" ];
-
-    nativeBuildInputs =
-      [ pkgconfig ]
-      ++ lib.optionals (!is20) [ curl perl ]
-      ++ lib.optionals fromGit [ autoreconfHook autoconf-archive bison flex libxml2 libxslt docbook5 docbook_xsl_ns ];
-
-    buildInputs = [ curl openssl sqlite xz bzip2 ]
-      ++ lib.optional (stdenv.isLinux || stdenv.isDarwin) libsodium
-      ++ lib.optionals is20 [ brotli boost editline ]
-      ++ lib.optional withLibseccomp libseccomp
-      ++ lib.optional (withAWS && is20)
-          ((aws-sdk-cpp.override {
-            apis = ["s3" "transfer"];
-            customMemoryManagement = false;
-          }).overrideDerivation (args: {
-            patches = args.patches or [] ++ [(fetchpatch {
-              url = https://github.com/edolstra/aws-sdk-cpp/commit/7d58e303159b2fb343af9a1ec4512238efa147c7.patch;
-              sha256 = "103phn6kyvs1yc7fibyin3lgxz699qakhw671kl207484im55id1";
-            })];
-          }));
-
-    propagatedBuildInputs = [ boehmgc ];
-
-    # Seems to be required when using std::atomic with 64-bit types
-    NIX_LDFLAGS = lib.optionalString (stdenv.hostPlatform.system == "armv6l-linux") "-latomic";
-
-    preConfigure =
-      # Copy libboost_context so we don't get all of Boost in our closure.
-      # https://github.com/NixOS/nixpkgs/issues/45462
-      if is20 then ''
-        mkdir -p $out/lib
-        cp ${boost}/lib/libboost_context* $out/lib
-      '' else ''
-        configureFlagsArray+=(BDW_GC_LIBS="-lgc -lgccpp")
+  common = { name, suffix ? "", src, fromGit ? false }:
+    let nix = stdenv.mkDerivation rec {
+      inherit name src;
+      version = lib.getVersion name;
+
+      is20 = lib.versionAtLeast version "2.0pre";
+
+      VERSION_SUFFIX = lib.optionalString fromGit suffix;
+
+      outputs = [ "out" "dev" "man" "doc" ];
+
+      nativeBuildInputs =
+        [ pkgconfig ]
+        ++ lib.optionals (!is20) [ curl perl ]
+        ++ lib.optionals fromGit [ autoreconfHook autoconf-archive bison flex libxml2 libxslt docbook5 docbook_xsl_ns ];
+
+      buildInputs = [ curl openssl sqlite xz bzip2 ]
+        ++ lib.optional (stdenv.isLinux || stdenv.isDarwin) libsodium
+        ++ lib.optionals is20 [ brotli boost editline ]
+        ++ lib.optional withLibseccomp libseccomp
+        ++ lib.optional (withAWS && is20)
+            ((aws-sdk-cpp.override {
+              apis = ["s3" "transfer"];
+              customMemoryManagement = false;
+            }).overrideDerivation (args: {
+              patches = args.patches or [] ++ [(fetchpatch {
+                url = https://github.com/edolstra/aws-sdk-cpp/commit/7d58e303159b2fb343af9a1ec4512238efa147c7.patch;
+                sha256 = "103phn6kyvs1yc7fibyin3lgxz699qakhw671kl207484im55id1";
+              })];
+            }));
+
+      propagatedBuildInputs = [ boehmgc ];
+
+      # Seems to be required when using std::atomic with 64-bit types
+      NIX_LDFLAGS = lib.optionalString (stdenv.hostPlatform.system == "armv6l-linux") "-latomic";
+
+      preConfigure =
+        # Copy libboost_context so we don't get all of Boost in our closure.
+        # https://github.com/NixOS/nixpkgs/issues/45462
+        if is20 then ''
+          mkdir -p $out/lib
+          cp ${boost}/lib/libboost_context* $out/lib
+        '' else ''
+          configureFlagsArray+=(BDW_GC_LIBS="-lgc -lgccpp")
+        '';
+
+      configureFlags =
+        [ "--with-store-dir=${storeDir}"
+          "--localstatedir=${stateDir}"
+          "--sysconfdir=${confDir}"
+          "--disable-init-state"
+          "--enable-gc"
+        ]
+        ++ lib.optionals (!is20) [
+          "--with-dbi=${perlPackages.DBI}/${perl.libPrefix}"
+          "--with-dbd-sqlite=${perlPackages.DBDSQLite}/${perl.libPrefix}"
+          "--with-www-curl=${perlPackages.WWWCurl}/${perl.libPrefix}"
+        ] ++ lib.optionals (is20 && stdenv.isLinux) [
+          "--with-sandbox-shell=${sh}/bin/busybox"
+        ]
+        ++ lib.optional (
+            stdenv.hostPlatform != stdenv.buildPlatform && stdenv.hostPlatform ? nix && stdenv.hostPlatform.nix ? system
+        ) ''--with-system=${stdenv.hostPlatform.nix.system}''
+           # RISC-V support in progress https://github.com/seccomp/libseccomp/pull/50
+        ++ lib.optional (!withLibseccomp) "--disable-seccomp-sandboxing";
+
+      makeFlags = "profiledir=$(out)/etc/profile.d";
+
+      installFlags = "sysconfdir=$(out)/etc";
+
+      doInstallCheck = true; # not cross
+
+      # socket path becomes too long otherwise
+      preInstallCheck = lib.optional stdenv.isDarwin ''
+        export TMPDIR=$NIX_BUILD_TOP
       '';
 
-    configureFlags =
-      [ "--with-store-dir=${storeDir}"
-        "--localstatedir=${stateDir}"
-        "--sysconfdir=${confDir}"
-        "--disable-init-state"
-        "--enable-gc"
-      ]
-      ++ lib.optionals (!is20) [
-        "--with-dbi=${perlPackages.DBI}/${perl.libPrefix}"
-        "--with-dbd-sqlite=${perlPackages.DBDSQLite}/${perl.libPrefix}"
-        "--with-www-curl=${perlPackages.WWWCurl}/${perl.libPrefix}"
-      ] ++ lib.optionals (is20 && stdenv.isLinux) [
-        "--with-sandbox-shell=${sh}/bin/busybox"
-      ]
-      ++ lib.optional (
-          stdenv.hostPlatform != stdenv.buildPlatform && stdenv.hostPlatform ? nix && stdenv.hostPlatform.nix ? system
-      ) ''--with-system=${stdenv.hostPlatform.nix.system}''
-         # RISC-V support in progress https://github.com/seccomp/libseccomp/pull/50
-      ++ lib.optional (!withLibseccomp) "--disable-seccomp-sandboxing";
-
-    makeFlags = "profiledir=$(out)/etc/profile.d";
-
-    installFlags = "sysconfdir=$(out)/etc";
-
-    doInstallCheck = true; # not cross
-
-    # socket path becomes too long otherwise
-    preInstallCheck = lib.optional stdenv.isDarwin ''
-      export TMPDIR=$NIX_BUILD_TOP
-    '';
-
-    separateDebugInfo = stdenv.isLinux;
-
-    enableParallelBuilding = true;
-
-    meta = {
-      description = "Powerful package manager that makes package management reliable and reproducible";
-      longDescription = ''
-        Nix is a powerful package manager for Linux and other Unix systems that
-        makes package management reliable and reproducible. It provides atomic
-        upgrades and rollbacks, side-by-side installation of multiple versions of
-        a package, multi-user package management and easy setup of build
-        environments.
-      '';
-      homepage = https://nixos.org/;
-      license = stdenv.lib.licenses.lgpl2Plus;
-      maintainers = [ stdenv.lib.maintainers.eelco ];
-      platforms = stdenv.lib.platforms.all;
-      outputsToInstall = [ "out" "man" ];
+      separateDebugInfo = stdenv.isLinux;
+
+      enableParallelBuilding = true;
+
+      meta = {
+        description = "Powerful package manager that makes package management reliable and reproducible";
+        longDescription = ''
+          Nix is a powerful package manager for Linux and other Unix systems that
+          makes package management reliable and reproducible. It provides atomic
+          upgrades and rollbacks, side-by-side installation of multiple versions of
+          a package, multi-user package management and easy setup of build
+          environments.
+        '';
+        homepage = https://nixos.org/;
+        license = stdenv.lib.licenses.lgpl2Plus;
+        maintainers = [ stdenv.lib.maintainers.eelco ];
+        platforms = stdenv.lib.platforms.all;
+        outputsToInstall = [ "out" "man" ];
+      };
+
+      passthru = {
+        inherit fromGit;
+
+        perl-bindings = stdenv.mkDerivation {
+          name = "nix-perl-${version}";
+
+          inherit src;
+
+          postUnpack = "sourceRoot=$sourceRoot/perl";
+
+          # This is not cross-compile safe, don't have time to fix right now
+          # but noting for future travellers.
+          nativeBuildInputs =
+            [ perl pkgconfig curl nix libsodium ]
+            ++ lib.optionals fromGit [ autoreconfHook autoconf-archive ]
+            ++ lib.optional is20 boost;
+
+          configureFlags =
+            [ "--with-dbi=${perlPackages.DBI}/${perl.libPrefix}"
+              "--with-dbd-sqlite=${perlPackages.DBDSQLite}/${perl.libPrefix}"
+            ];
+
+          preConfigure = "export NIX_STATE_DIR=$TMPDIR";
+
+          preBuild = "unset NIX_INDENT_MAKE";
+        };
+      };
     };
-
-    passthru = { inherit fromGit; };
-  };
-
-  perl-bindings = { nix, needsBoost ? false }: stdenv.mkDerivation {
-    name = "nix-perl-" + nix.version;
-
-    inherit (nix) src;
-
-    postUnpack = "sourceRoot=$sourceRoot/perl";
-
-    # This is not cross-compile safe, don't have time to fix right now
-    # but noting for future travellers.
-    nativeBuildInputs =
-      [ perl pkgconfig curl nix libsodium ]
-      ++ lib.optionals nix.fromGit [ autoreconfHook autoconf-archive ]
-      ++ lib.optional needsBoost boost;
-
-    configureFlags =
-      [ "--with-dbi=${perlPackages.DBI}/${perl.libPrefix}"
-        "--with-dbd-sqlite=${perlPackages.DBDSQLite}/${perl.libPrefix}"
-      ];
-
-    preConfigure = "export NIX_STATE_DIR=$TMPDIR";
-
-    preBuild = "unset NIX_INDENT_MAKE";
-  };
+  in nix;
 
 in rec {
 
   nix = nixStable;
 
-  nix1 = (common rec {
+  nix1 = common rec {
     name = "nix-1.11.16";
     src = fetchurl {
       url = "http://nixos.org/releases/nix/${name}/${name}.tar.xz";
       sha256 = "0ca5782fc37d62238d13a620a7b4bff6a200bab1bd63003709249a776162357c";
     };
-  }) // { perl-bindings = nix1; };
+  };
 
-  nixStable = (common rec {
+  nixStable = common rec {
     name = "nix-2.2";
     src = fetchurl {
       url = "http://nixos.org/releases/nix/${name}/${name}.tar.xz";
       sha256 = "63238d00d290b8a93925891fc9164439d3941e2ccc569bf7f7ca32f53c3ec0c7";
     };
-  }) // { perl-bindings = perl-bindings {
-    nix = nixStable;
-    needsBoost = true;
-  }; };
+  };
 
-  nixUnstable = (lib.lowPrio (common rec {
+  nixUnstable = lib.lowPrio (common rec {
     name = "nix-2.2${suffix}";
     suffix = "pre6600_85488a93";
     src = fetchFromGitHub {
@@ -169,9 +170,6 @@ in rec {
       sha256 = "1n5dp7p2lzpnj7f834d25k020v16gnnsm56jz46y87v2x7b69ccm";
     };
     fromGit = true;
-  })) // { perl-bindings = perl-bindings {
-    nix = nixUnstable;
-    needsBoost = true;
-  }; };
+  });
 
 }