diff options
author | Alyssa Ross <hi@alyssa.is> | 2021-08-04 10:43:07 +0000 |
---|---|---|
committer | Alyssa Ross <hi@alyssa.is> | 2021-08-04 10:43:07 +0000 |
commit | 62614cbef7da005c1eda8c9400160f6bcd6546b8 (patch) | |
tree | c2630f69080637987b68acb1ee8676d2681fe304 /pkgs/tools/package-management/nix/default.nix | |
parent | d9c82ed3044c72cecf01c6ea042489d30914577c (diff) | |
parent | e24069138dfec3ef94f211f1da005bb5395adc11 (diff) | |
download | nixpkgs-62614cbef7da005c1eda8c9400160f6bcd6546b8.tar nixpkgs-62614cbef7da005c1eda8c9400160f6bcd6546b8.tar.gz nixpkgs-62614cbef7da005c1eda8c9400160f6bcd6546b8.tar.bz2 nixpkgs-62614cbef7da005c1eda8c9400160f6bcd6546b8.tar.lz nixpkgs-62614cbef7da005c1eda8c9400160f6bcd6546b8.tar.xz nixpkgs-62614cbef7da005c1eda8c9400160f6bcd6546b8.tar.zst nixpkgs-62614cbef7da005c1eda8c9400160f6bcd6546b8.zip |
Merge branch 'nixpkgs-update' into master
Diffstat (limited to 'pkgs/tools/package-management/nix/default.nix')
-rw-r--r-- | pkgs/tools/package-management/nix/default.nix | 145 |
1 files changed, 91 insertions, 54 deletions
diff --git a/pkgs/tools/package-management/nix/default.nix b/pkgs/tools/package-management/nix/default.nix index 05036770316..e60cf580426 100644 --- a/pkgs/tools/package-management/nix/default.nix +++ b/pkgs/tools/package-management/nix/default.nix @@ -1,65 +1,76 @@ -{ lib, fetchurl, fetchFromGitHub, callPackage +{ lib, fetchurl, fetchFromGitHub, fetchpatch, callPackage , storeDir ? "/nix/store" , stateDir ? "/nix/var" , confDir ? "/etc" , boehmgc -, stdenv, llvmPackages_6 +, Security }: let common = - { lib, stdenv, fetchpatch, perl, curl, bzip2, sqlite, openssl ? null, xz - , bash, coreutils, gzip, gnutar - , pkgconfig, boehmgc, perlPackages, libsodium, brotli, boost, editline, nlohmann_json - , autoreconfHook, autoconf-archive, bison, flex, libxml2, libxslt, docbook5, docbook_xsl_ns - , jq, libarchive + { lib, stdenv, perl, curl, bzip2, sqlite, openssl ? null, xz + , bash, coreutils, util-linuxMinimal, gzip, gnutar + , pkg-config, boehmgc, libsodium, brotli, boost, editline, nlohmann_json + , autoreconfHook, autoconf-archive, bison, flex + , jq, libarchive, libcpuid + , lowdown, mdbook # Used by tests - , gmock + , gtest , busybox-sandbox-shell , storeDir , stateDir , confDir - , withLibseccomp ? lib.any (lib.meta.platformMatch stdenv.hostPlatform) libseccomp.meta.platforms, libseccomp + , withLibseccomp ? lib.meta.availableOn stdenv.hostPlatform libseccomp, libseccomp , withAWS ? !enableStatic && (stdenv.isLinux || stdenv.isDarwin), aws-sdk-cpp - , enableStatic ? false - , name, suffix ? "", src - + , enableStatic ? stdenv.hostPlatform.isStatic + , enableDocumentation ? lib.versionOlder version "2.4pre" || + stdenv.hostPlatform == stdenv.buildPlatform + , pname, version, suffix ? "", src + , patches ? [ ] }: let sh = busybox-sandbox-shell; nix = stdenv.mkDerivation rec { - inherit name src; - version = lib.getVersion name; + inherit pname version src patches; is24 = lib.versionAtLeast version "2.4pre"; - isExactly23 = lib.versionAtLeast version "2.3" && lib.versionOlder version "2.4"; VERSION_SUFFIX = suffix; - outputs = [ "out" "dev" "man" "doc" ]; + outputs = + [ "out" "dev" ] + ++ lib.optionals enableDocumentation [ "man" "doc" ]; nativeBuildInputs = - [ pkgconfig ] - ++ lib.optionals is24 [ autoreconfHook autoconf-archive bison flex libxml2 libxslt - docbook5 docbook_xsl_ns jq ]; + [ pkg-config ] + ++ lib.optionals stdenv.isLinux [ util-linuxMinimal ] + ++ lib.optionals (is24 && enableDocumentation) [ + (lib.getBin lowdown) mdbook + ] + ++ lib.optionals is24 + [ autoreconfHook + autoconf-archive + bison flex + jq + ]; buildInputs = - [ curl openssl sqlite xz bzip2 nlohmann_json + [ curl libsodium openssl sqlite xz bzip2 nlohmann_json brotli boost editline ] - ++ lib.optional (stdenv.isLinux || stdenv.isDarwin) libsodium - ++ lib.optionals is24 [ libarchive gmock ] + ++ lib.optionals stdenv.isDarwin [ Security ] + ++ lib.optionals is24 [ libarchive gtest lowdown ] + ++ lib.optional (is24 && stdenv.isx86_64) libcpuid ++ lib.optional withLibseccomp libseccomp ++ lib.optional withAWS ((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"; - })]; + patches = args.patches or [] ++ [ + ./aws-sdk-cpp-TransferManager-ContentEncoding.patch + ]; })); propagatedBuildInputs = [ boehmgc ]; @@ -88,9 +99,13 @@ common = patchelf --set-rpath $out/lib:${stdenv.cc.cc.lib}/lib $out/lib/libboost_thread.so.* ''} '' + - # For Nix-2.3, patch around an issue where the Nix configure step pulls in the - # build system's bash and other utilities when cross-compiling - lib.optionalString (stdenv.buildPlatform != stdenv.hostPlatform && isExactly23) '' + # On all versions before c9f51e87057652db0013289a95deffba495b35e7, which + # removes config.nix entirely and is not present in 2.3.x, we need to + # patch around an issue where the Nix configure step pulls in the build + # system's bash and other utilities when cross-compiling. + lib.optionalString ( + stdenv.buildPlatform != stdenv.hostPlatform && !is24 + ) '' mkdir tmp/ substitute corepkgs/config.nix.in tmp/config.nix.in \ --subst-var-by bash ${bash}/bin/bash \ @@ -107,15 +122,19 @@ common = [ "--with-store-dir=${storeDir}" "--localstatedir=${stateDir}" "--sysconfdir=${confDir}" - "--disable-init-state" "--enable-gc" ] + ++ lib.optional (!enableDocumentation) "--disable-doc-gen" + ++ lib.optionals (!is24) [ + # option was removed in 2.4 + "--disable-init-state" + ] ++ lib.optionals 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}'' + ) "--with-system=${stdenv.hostPlatform.nix.system}" # RISC-V support in progress https://github.com/seccomp/libseccomp/pull/50 ++ lib.optional (!withLibseccomp) "--disable-seccomp-sandboxing"; @@ -127,7 +146,7 @@ common = doInstallCheck = true; # not cross # socket path becomes too long otherwise - preInstallCheck = lib.optional stdenv.isDarwin '' + preInstallCheck = lib.optionalString stdenv.isDarwin '' export TMPDIR=$NIX_BUILD_TOP ''; @@ -145,14 +164,14 @@ common = environments. ''; homepage = "https://nixos.org/"; - license = stdenv.lib.licenses.lgpl2Plus; - maintainers = [ stdenv.lib.maintainers.eelco ]; - platforms = stdenv.lib.platforms.unix; - outputsToInstall = [ "out" "man" ]; + license = lib.licenses.lgpl2Plus; + maintainers = [ lib.maintainers.eelco ]; + platforms = lib.platforms.unix; + outputsToInstall = [ "out" ] ++ lib.optional enableDocumentation "man"; }; passthru = { - perl-bindings = stdenv.mkDerivation { + perl-bindings = perl.pkgs.toPerlModule (stdenv.mkDerivation { pname = "nix-perl"; inherit version; @@ -163,51 +182,69 @@ common = # 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 boost autoreconfHook autoconf-archive ]; + [ perl pkg-config curl nix libsodium boost autoreconfHook autoconf-archive nlohmann_json ]; configureFlags = - [ "--with-dbi=${perlPackages.DBI}/${perl.libPrefix}" - "--with-dbd-sqlite=${perlPackages.DBDSQLite}/${perl.libPrefix}" + [ "--with-dbi=${perl.pkgs.DBI}/${perl.libPrefix}" + "--with-dbd-sqlite=${perl.pkgs.DBDSQLite}/${perl.libPrefix}" ]; preConfigure = "export NIX_STATE_DIR=$TMPDIR"; preBuild = "unset NIX_INDENT_MAKE"; - }; + }); + inherit boehmgc; }; }; in nix; + boehmgc_nix = boehmgc.override { + enableLargeConfig = true; + }; + + boehmgc_nixUnstable = boehmgc_nix.overrideAttrs (drv: { + patches = (drv.patches or []) ++ [ + # Part of the GC solution in https://github.com/NixOS/nix/pull/4944 + (fetchpatch { + url = https://github.com/hercules-ci/nix/raw/5c58d84a76d96f269e3ff1e72c9c9ba5f68576af/boehmgc-coroutine-sp-fallback.diff; + sha256 = "sha256-JvnWVTlkltmQUs/0qApv/LPZ690UX1/2hEP+LYRwKbI="; + }) + ]; + }); + in rec { nix = nixStable; nixStable = callPackage common (rec { - name = "nix-2.3.7"; + pname = "nix"; + version = "2.3.14"; src = fetchurl { - url = "https://nixos.org/releases/nix/${name}/${name}.tar.xz"; - sha256 = "dd8f52849414e5a878afe7e797aa4e22bab77c875d9da5a38d5f1bada704e596"; + url = "https://nixos.org/releases/nix/${pname}-${version}/${pname}-${version}.tar.xz"; + sha256 = "sha256-cToMnZU3+UpjeiiXnG3clz9zn8Xk+TbB7UbqmLMrlFk="; }; - inherit storeDir stateDir confDir boehmgc; - } // stdenv.lib.optionalAttrs stdenv.cc.isClang { - stdenv = llvmPackages_6.stdenv; + boehmgc = boehmgc_nix; + + inherit storeDir stateDir confDir; }); nixUnstable = lib.lowPrio (callPackage common rec { - name = "nix-2.4${suffix}"; - suffix = "pre20200721_ff314f1"; + pname = "nix"; + version = "2.4${suffix}"; + suffix = "pre20210707_02dd6bb"; src = fetchFromGitHub { owner = "NixOS"; repo = "nix"; - rev = "ff314f186e3f91d87af6ad96c0ae3b472494b940"; - hash = "sha256-QibpLo4/gf2xYGoeQcgjZzH/qy5TBRVH+QCHgqOwur0="; + rev = "02dd6bb610e55a009cd7a4c83639698d3a7acaa2"; + sha256 = "sha256-ARRiLrDOK+JQtvVXsYegspENYimQzilvdTfO7eiBuaA="; }; - inherit storeDir stateDir confDir boehmgc; - }); + boehmgc = boehmgc_nixUnstable; - nixFlakes = nixUnstable; + inherit storeDir stateDir confDir; + + }); } |