From d593eadfc66875e41778d753b8970818512854be Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Mon, 16 Jun 2025 12:09:43 +0200 Subject: [PATCH 1/8] nixVersions: give unit tests access to a $HOME directory Also, don't try to access cache.nixos.org in the libstore unit tests. We have to disable the test in versions prior to 2.31; that's OK, since it was being skipped when run under Nix anyway before that. (cherry picked from commit 01388b3e78582553cc30ee772db5b5aba8d89edd) Co-authored-by: Philip Taron --- .../modular/src/libflake-tests/package.nix | 20 +++++++--------- .../modular/src/libstore-tests/package.nix | 23 ++++++++++--------- 2 files changed, 20 insertions(+), 23 deletions(-) diff --git a/pkgs/tools/package-management/nix/modular/src/libflake-tests/package.nix b/pkgs/tools/package-management/nix/modular/src/libflake-tests/package.nix index 93429e53812b..f84692827536 100644 --- a/pkgs/tools/package-management/nix/modular/src/libflake-tests/package.nix +++ b/pkgs/tools/package-management/nix/modular/src/libflake-tests/package.nix @@ -42,18 +42,14 @@ mkMesonExecutable (finalAttrs: { { meta.broken = !stdenv.hostPlatform.emulatorAvailable buildPackages; } - ( - lib.optionalString stdenv.hostPlatform.isWindows '' - export HOME="$PWD/home-dir" - mkdir -p "$HOME" - '' - + '' - export _NIX_TEST_UNIT_DATA=${resolvePath ./data} - export NIX_CONFIG="extra-experimental-features = flakes" - ${stdenv.hostPlatform.emulator buildPackages} ${lib.getExe finalAttrs.finalPackage} - touch $out - '' - ); + ('' + export _NIX_TEST_UNIT_DATA=${resolvePath ./data} + export NIX_CONFIG="extra-experimental-features = flakes" + export HOME="$TMPDIR/home" + mkdir -p "$HOME" + ${stdenv.hostPlatform.emulator buildPackages} ${lib.getExe finalAttrs.finalPackage} + touch $out + ''); }; }; diff --git a/pkgs/tools/package-management/nix/modular/src/libstore-tests/package.nix b/pkgs/tools/package-management/nix/modular/src/libstore-tests/package.nix index be9a51a784d2..c3dc0343dfd9 100644 --- a/pkgs/tools/package-management/nix/modular/src/libstore-tests/package.nix +++ b/pkgs/tools/package-management/nix/modular/src/libstore-tests/package.nix @@ -41,6 +41,10 @@ mkMesonExecutable (finalAttrs: { mesonFlags = [ ]; + excludedTestPatterns = lib.optionals (lib.versionOlder finalAttrs.version "2.31") [ + "nix_api_util_context.nix_store_real_path_binary_cache" + ]; + passthru = { tests = { run = @@ -59,17 +63,14 @@ mkMesonExecutable (finalAttrs: { { meta.broken = !stdenv.hostPlatform.emulatorAvailable buildPackages; } - ( - lib.optionalString stdenv.hostPlatform.isWindows '' - export HOME="$PWD/home-dir" - mkdir -p "$HOME" - '' - + '' - export _NIX_TEST_UNIT_DATA=${data + "/src/libstore-tests/data"} - ${stdenv.hostPlatform.emulator buildPackages} ${lib.getExe finalAttrs.finalPackage} - touch $out - '' - ); + ('' + export _NIX_TEST_UNIT_DATA=${data + "/src/libstore-tests/data"} + export HOME="$TMPDIR/home" + mkdir -p "$HOME" + ${stdenv.hostPlatform.emulator buildPackages} ${lib.getExe finalAttrs.finalPackage} \ + --gtest_filter=-${lib.concatStringsSep ":" finalAttrs.excludedTestPatterns} + touch $out + ''); }; }; From 5e7b9010cf49024bd5edec0a193acd3a7cf737bf Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Mon, 7 Jul 2025 11:12:55 +0200 Subject: [PATCH 2/8] nixVersions: use writableTmpDirAsHomeHook for the unit tests (cherry picked from commit f29acd5bbc0505ea6a78a51e4828a22630dd0ff1) --- .../nix/modular/src/libflake-tests/package.nix | 4 ++-- .../nix/modular/src/libstore-tests/package.nix | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/pkgs/tools/package-management/nix/modular/src/libflake-tests/package.nix b/pkgs/tools/package-management/nix/modular/src/libflake-tests/package.nix index f84692827536..ed1b51bda304 100644 --- a/pkgs/tools/package-management/nix/modular/src/libflake-tests/package.nix +++ b/pkgs/tools/package-management/nix/modular/src/libflake-tests/package.nix @@ -3,6 +3,7 @@ buildPackages, stdenv, mkMesonExecutable, + writableTmpDirAsHomeHook, nix-flake, nix-flake-c, @@ -41,12 +42,11 @@ mkMesonExecutable (finalAttrs: { runCommand "${finalAttrs.pname}-run" { meta.broken = !stdenv.hostPlatform.emulatorAvailable buildPackages; + buildInputs = [ writableTmpDirAsHomeHook ]; } ('' export _NIX_TEST_UNIT_DATA=${resolvePath ./data} export NIX_CONFIG="extra-experimental-features = flakes" - export HOME="$TMPDIR/home" - mkdir -p "$HOME" ${stdenv.hostPlatform.emulator buildPackages} ${lib.getExe finalAttrs.finalPackage} touch $out ''); diff --git a/pkgs/tools/package-management/nix/modular/src/libstore-tests/package.nix b/pkgs/tools/package-management/nix/modular/src/libstore-tests/package.nix index c3dc0343dfd9..c1ab5a95d536 100644 --- a/pkgs/tools/package-management/nix/modular/src/libstore-tests/package.nix +++ b/pkgs/tools/package-management/nix/modular/src/libstore-tests/package.nix @@ -3,6 +3,7 @@ buildPackages, stdenv, mkMesonExecutable, + writableTmpDirAsHomeHook, nix-store, nix-store-c, @@ -62,11 +63,10 @@ mkMesonExecutable (finalAttrs: { runCommand "${finalAttrs.pname}-run" { meta.broken = !stdenv.hostPlatform.emulatorAvailable buildPackages; + buildInputs = [ writableTmpDirAsHomeHook ]; } ('' export _NIX_TEST_UNIT_DATA=${data + "/src/libstore-tests/data"} - export HOME="$TMPDIR/home" - mkdir -p "$HOME" ${stdenv.hostPlatform.emulator buildPackages} ${lib.getExe finalAttrs.finalPackage} \ --gtest_filter=-${lib.concatStringsSep ":" finalAttrs.excludedTestPatterns} touch $out From e1ff94f0921f808ef0a10503cbe1f93190a64557 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Mon, 7 Jul 2025 11:26:06 +0200 Subject: [PATCH 3/8] nixVersions: fix impurity trying to access the Nix daemon in libstore-tests This failed on macOS: nix-store-tests-run> C++ exception with description "../nix_api_store.cc:33: nix_err_code(ctx) != NIX_OK, message: error: getting status of '/nix/var/nix/daemon-socket/socket': Operation not permitted" thrown in the test body. (cherry picked from commit 778156072444fdd06812b89e86169bf45f2425df) --- .../nix/modular/src/libstore-tests/package.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/tools/package-management/nix/modular/src/libstore-tests/package.nix b/pkgs/tools/package-management/nix/modular/src/libstore-tests/package.nix index c1ab5a95d536..47e3128ec1a2 100644 --- a/pkgs/tools/package-management/nix/modular/src/libstore-tests/package.nix +++ b/pkgs/tools/package-management/nix/modular/src/libstore-tests/package.nix @@ -67,6 +67,7 @@ mkMesonExecutable (finalAttrs: { } ('' export _NIX_TEST_UNIT_DATA=${data + "/src/libstore-tests/data"} + export NIX_REMOTE=$HOME/store ${stdenv.hostPlatform.emulator buildPackages} ${lib.getExe finalAttrs.finalPackage} \ --gtest_filter=-${lib.concatStringsSep ":" finalAttrs.excludedTestPatterns} touch $out From f6cbf3ec402538b3b383af59256f45b7a7f5c2b0 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Mon, 4 Aug 2025 21:07:26 +0200 Subject: [PATCH 4/8] nixVersions: increase the initial Boehm GC mark stack size If the mark stack size is too small, it greatly inhibits parallel marking, which is very bad for performance on multi-core systems. (cherry picked from commit 0d559f0c1301af9bd2c6751761bff6490962d0ee) --- .../tools/package-management/nix/dependencies.nix | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/pkgs/tools/package-management/nix/dependencies.nix b/pkgs/tools/package-management/nix/dependencies.nix index a00078939ab7..82f844f82887 100644 --- a/pkgs/tools/package-management/nix/dependencies.nix +++ b/pkgs/tools/package-management/nix/dependencies.nix @@ -8,7 +8,20 @@ regular@{ { scopeFunction = scope: { - boehmgc = regular.boehmgc.override { enableLargeConfig = true; }; + boehmgc = + (regular.boehmgc.override { + enableLargeConfig = true; + }).overrideAttrs + (attrs: { + # Increase the initial mark stack size to avoid stack + # overflows, since these inhibit parallel marking (see + # GC_mark_some()). To check whether the mark stack is too + # small, run Nix with GC_PRINT_STATS=1 and look for messages + # such as `Mark stack overflow`, `No room to copy back mark + # stack`, and `Grew mark stack to ... frames`. + NIX_CFLAGS_COMPILE = "-DINITIAL_MARK_STACK_SIZE=1048576"; + }); + aws-sdk-cpp = (regular.aws-sdk-cpp.override { apis = [ From fe134e42fff55d8045270888ee65273ab966fded Mon Sep 17 00:00:00 2001 From: Farid Zakaria Date: Thu, 14 Aug 2025 20:42:21 -0700 Subject: [PATCH 5/8] nixVersions: use `writableTmpDirAsHomeHook` in `nix-fetchers-tests` execution environment (cherry picked from commit b21304fe4c491b871682fc292d9c31410cbb418a) --- .../modular/src/libfetchers-tests/package.nix | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/pkgs/tools/package-management/nix/modular/src/libfetchers-tests/package.nix b/pkgs/tools/package-management/nix/modular/src/libfetchers-tests/package.nix index 132e4c1da99b..87407e9579d0 100644 --- a/pkgs/tools/package-management/nix/modular/src/libfetchers-tests/package.nix +++ b/pkgs/tools/package-management/nix/modular/src/libfetchers-tests/package.nix @@ -3,6 +3,7 @@ buildPackages, stdenv, mkMesonExecutable, + writableTmpDirAsHomeHook, nix-fetchers, nix-fetchers-c, @@ -47,18 +48,13 @@ mkMesonExecutable (finalAttrs: { runCommand "${finalAttrs.pname}-run" { meta.broken = !stdenv.hostPlatform.emulatorAvailable buildPackages; + buildInputs = [ writableTmpDirAsHomeHook ]; } - ( - lib.optionalString stdenv.hostPlatform.isWindows '' - export HOME="$PWD/home-dir" - mkdir -p "$HOME" - '' - + '' - export _NIX_TEST_UNIT_DATA=${resolvePath ./data} - ${stdenv.hostPlatform.emulator buildPackages} ${lib.getExe finalAttrs.finalPackage} - touch $out - '' - ); + '' + export _NIX_TEST_UNIT_DATA=${resolvePath ./data} + ${stdenv.hostPlatform.emulator buildPackages} ${lib.getExe finalAttrs.finalPackage} + touch $out + ''; }; }; From 269f0be9ee6682bd5665a90faf03a2b6dd179b23 Mon Sep 17 00:00:00 2001 From: Philip Taron Date: Fri, 29 Aug 2025 09:42:28 -0700 Subject: [PATCH 6/8] bmake: interrupt-compat test fails on x86_64-linux building for i686-linux --- pkgs/by-name/bm/bmake/package.nix | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/pkgs/by-name/bm/bmake/package.nix b/pkgs/by-name/bm/bmake/package.nix index aa6b562a3b96..c19335332d86 100644 --- a/pkgs/by-name/bm/bmake/package.nix +++ b/pkgs/by-name/bm/bmake/package.nix @@ -57,12 +57,18 @@ stdenv.mkDerivation (finalAttrs: { # * opt-keep-going-indirect: not yet known # * varmod-localtime: musl doesn't support TZDIR and this test relies on # impure, implicit paths - env.BROKEN_TESTS = builtins.concatStringsSep " " [ - "directive-export" - "directive-export-gmake" - "opt-keep-going-indirect" - "varmod-localtime" - ]; + # * interrupt-compat (fails on x86_64-linux building for i686-linux) + env.BROKEN_TESTS = lib.concatStringsSep " " ( + [ + "directive-export" + "directive-export-gmake" + "opt-keep-going-indirect" + "varmod-localtime" + ] + ++ lib.optionals stdenv.targetPlatform.is32bit [ + "interrupt-compat" + ] + ); strictDeps = true; From f7fecd580268026398e9e5927e3a122e6aa6b2dd Mon Sep 17 00:00:00 2001 From: Philip Taron Date: Fri, 29 Aug 2025 09:04:48 -0700 Subject: [PATCH 7/8] nixosTests.nix-upgrade: fix eval --- nixos/tests/all-tests.nix | 5 ++++- nixos/tests/nix/upgrade.nix | 13 +++++++++---- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/nixos/tests/all-tests.nix b/nixos/tests/all-tests.nix index 3c6f89dcb2ae..0324587339f6 100644 --- a/nixos/tests/all-tests.nix +++ b/nixos/tests/all-tests.nix @@ -1035,7 +1035,10 @@ in nix-config = runTest ./nix-config.nix; nix-ld = runTest ./nix-ld.nix; nix-misc = handleTest ./nix/misc.nix { }; - nix-upgrade = handleTest ./nix/upgrade.nix { inherit (pkgs) nixVersions; }; + nix-upgrade = handleTest ./nix/upgrade.nix { + inherit (pkgs) nixVersions; + inherit system; + }; nix-required-mounts = runTest ./nix-required-mounts; nix-serve = runTest ./nix-serve.nix; nix-serve-ssh = runTest ./nix-serve-ssh.nix; diff --git a/nixos/tests/nix/upgrade.nix b/nixos/tests/nix/upgrade.nix index e4cd0cb09b8f..a014313aa53a 100644 --- a/nixos/tests/nix/upgrade.nix +++ b/nixos/tests/nix/upgrade.nix @@ -1,10 +1,15 @@ -{ pkgs, nixVersions, ... }: +{ + pkgs, + nixVersions, + system, + ... +}: let lib = pkgs.lib; fallback-paths-external = pkgs.writeTextDir "fallback-paths.nix" '' { - ${pkgs.system} = "${nixVersions.latest}"; + ${system} = "${nixVersions.latest}"; }''; nixos-module = builtins.toFile "nixos-module.nix" '' @@ -71,7 +76,7 @@ pkgs.testers.nixosTest { if not match: raise Exception("Couldn't find new version in output: " + result) with subtest("nix-build-with-mismatch-daemon"): - machine.succeed("runuser -u alice -- nix build --expr 'derivation {name =\"test\"; system = \"${pkgs.system}\";builder = \"/bin/sh\"; args = [\"-c\" \"echo test > $out\"];}' --print-out-paths") + machine.succeed("runuser -u alice -- nix build --expr 'derivation {name =\"test\"; system = \"${system}\";builder = \"/bin/sh\"; args = [\"-c\" \"echo test > $out\"];}' --print-out-paths") with subtest("remove-new-nix"): @@ -94,7 +99,7 @@ pkgs.testers.nixosTest { if not match: raise Exception("Couldn't find new version in output: " + result) with subtest("nix-build-with-new-daemon"): - machine.succeed("runuser -u alice -- nix build --expr 'derivation {name =\"test-new\"; system = \"${pkgs.system}\";builder = \"/bin/sh\"; args = [\"-c\" \"echo test > $out\"];}' --print-out-paths") + machine.succeed("runuser -u alice -- nix build --expr 'derivation {name =\"test-new\"; system = \"${system}\";builder = \"/bin/sh\"; args = [\"-c\" \"echo test > $out\"];}' --print-out-paths") with subtest("nix-collect-garbage-with-old-nix"): machine.succeed("${nixVersions.stable}/bin/nix-collect-garbage") From 42e6ff4333af70e7385820837a8fac96833c24e8 Mon Sep 17 00:00:00 2001 From: Philip Taron Date: Wed, 27 Aug 2025 09:56:41 -0700 Subject: [PATCH 8/8] nixVersions.nix_2_31: init at 2.31.0 Diff: https://github.com/NixOS/nix/compare/2.30.2...2.31.0 Changelog: https://discourse.nixos.org/t/nix-2-31-0-released/68465 --- pkgs/tools/package-management/nix/default.nix | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/pkgs/tools/package-management/nix/default.nix b/pkgs/tools/package-management/nix/default.nix index 5ab965e908d0..0ce59e8467bb 100644 --- a/pkgs/tools/package-management/nix/default.nix +++ b/pkgs/tools/package-management/nix/default.nix @@ -164,6 +164,20 @@ lib.makeExtensible ( nix_2_30 = addTests "nix_2_30" self.nixComponents_2_30.nix-everything; + nixComponents_2_31 = nixDependencies.callPackage ./modular/packages.nix rec { + version = "2.31.0"; + inherit (self.nix_2_30.meta) maintainers teams; + otherSplices = generateSplicesForNixComponents "nixComponents_2_31"; + src = fetchFromGitHub { + owner = "NixOS"; + repo = "nix"; + tag = version; + hash = "sha256-5JYyijH2q/uQCDIZCCyQEBsZ0VPNP2SS1wgZ4+qeIWM="; + }; + }; + + nix_2_31 = addTests "nix_2_31" self.nixComponents_2_31.nix-everything; + nixComponents_git = nixDependencies.callPackage ./modular/packages.nix rec { version = "2.31pre20250712_${lib.substring 0 8 src.rev}"; inherit maintainers teams;