From b5b2a913f87470c9502c8b7ba4db6e4f4d3317bd Mon Sep 17 00:00:00 2001 From: Robert Hensing Date: Wed, 22 Jan 2025 14:14:28 +0100 Subject: [PATCH 01/10] nix/2_26: Add files --- .../package-management/nix/2_26/.version | 1 + .../nix/2_26/doc/manual/package.nix | 71 +++++++ .../nix/2_26/packaging/components.nix | 66 ++++++ .../nix/2_26/packaging/everything.nix | 192 ++++++++++++++++++ .../package-management/nix/2_26/source.json | 6 + .../2_26/src/external-api-docs/package.nix | 56 +++++ .../2_26/src/internal-api-docs/package.nix | 50 +++++ .../nix/2_26/src/libcmd/package.nix | 83 ++++++++ .../nix/2_26/src/libexpr-c/package.nix | 53 +++++ .../2_26/src/libexpr-test-support/package.nix | 57 ++++++ .../nix/2_26/src/libexpr-tests/package.nix | 79 +++++++ .../nix/2_26/src/libexpr/package.nix | 105 ++++++++++ .../2_26/src/libfetchers-tests/package.nix | 77 +++++++ .../nix/2_26/src/libfetchers/package.nix | 55 +++++ .../nix/2_26/src/libflake-c/package.nix | 55 +++++ .../nix/2_26/src/libflake-tests/package.nix | 80 ++++++++ .../nix/2_26/src/libflake/package.nix | 54 +++++ .../nix/2_26/src/libmain-c/package.nix | 57 ++++++ .../nix/2_26/src/libmain/package.nix | 51 +++++ .../nix/2_26/src/libstore-c/package.nix | 53 +++++ .../src/libstore-test-support/package.nix | 57 ++++++ .../nix/2_26/src/libstore-tests/package.nix | 95 +++++++++ .../nix/2_26/src/libstore/package.nix | 96 +++++++++ .../nix/2_26/src/libutil-c/package.nix | 51 +++++ .../2_26/src/libutil-test-support/package.nix | 55 +++++ .../nix/2_26/src/libutil-tests/package.nix | 78 +++++++ .../nix/2_26/src/libutil/package.nix | 81 ++++++++ .../nix/2_26/src/nix/package.nix | 105 ++++++++++ .../nix/2_26/src/perl/package.nix | 76 +++++++ .../nix/2_26/tests/functional/package.nix | 103 ++++++++++ 30 files changed, 2098 insertions(+) create mode 100644 pkgs/tools/package-management/nix/2_26/.version create mode 100644 pkgs/tools/package-management/nix/2_26/doc/manual/package.nix create mode 100644 pkgs/tools/package-management/nix/2_26/packaging/components.nix create mode 100644 pkgs/tools/package-management/nix/2_26/packaging/everything.nix create mode 100644 pkgs/tools/package-management/nix/2_26/source.json create mode 100644 pkgs/tools/package-management/nix/2_26/src/external-api-docs/package.nix create mode 100644 pkgs/tools/package-management/nix/2_26/src/internal-api-docs/package.nix create mode 100644 pkgs/tools/package-management/nix/2_26/src/libcmd/package.nix create mode 100644 pkgs/tools/package-management/nix/2_26/src/libexpr-c/package.nix create mode 100644 pkgs/tools/package-management/nix/2_26/src/libexpr-test-support/package.nix create mode 100644 pkgs/tools/package-management/nix/2_26/src/libexpr-tests/package.nix create mode 100644 pkgs/tools/package-management/nix/2_26/src/libexpr/package.nix create mode 100644 pkgs/tools/package-management/nix/2_26/src/libfetchers-tests/package.nix create mode 100644 pkgs/tools/package-management/nix/2_26/src/libfetchers/package.nix create mode 100644 pkgs/tools/package-management/nix/2_26/src/libflake-c/package.nix create mode 100644 pkgs/tools/package-management/nix/2_26/src/libflake-tests/package.nix create mode 100644 pkgs/tools/package-management/nix/2_26/src/libflake/package.nix create mode 100644 pkgs/tools/package-management/nix/2_26/src/libmain-c/package.nix create mode 100644 pkgs/tools/package-management/nix/2_26/src/libmain/package.nix create mode 100644 pkgs/tools/package-management/nix/2_26/src/libstore-c/package.nix create mode 100644 pkgs/tools/package-management/nix/2_26/src/libstore-test-support/package.nix create mode 100644 pkgs/tools/package-management/nix/2_26/src/libstore-tests/package.nix create mode 100644 pkgs/tools/package-management/nix/2_26/src/libstore/package.nix create mode 100644 pkgs/tools/package-management/nix/2_26/src/libutil-c/package.nix create mode 100644 pkgs/tools/package-management/nix/2_26/src/libutil-test-support/package.nix create mode 100644 pkgs/tools/package-management/nix/2_26/src/libutil-tests/package.nix create mode 100644 pkgs/tools/package-management/nix/2_26/src/libutil/package.nix create mode 100644 pkgs/tools/package-management/nix/2_26/src/nix/package.nix create mode 100644 pkgs/tools/package-management/nix/2_26/src/perl/package.nix create mode 100644 pkgs/tools/package-management/nix/2_26/tests/functional/package.nix diff --git a/pkgs/tools/package-management/nix/2_26/.version b/pkgs/tools/package-management/nix/2_26/.version new file mode 100644 index 000000000000..7a25c70f90cf --- /dev/null +++ b/pkgs/tools/package-management/nix/2_26/.version @@ -0,0 +1 @@ +2.26.0 diff --git a/pkgs/tools/package-management/nix/2_26/doc/manual/package.nix b/pkgs/tools/package-management/nix/2_26/doc/manual/package.nix new file mode 100644 index 000000000000..f8133f2e1dd1 --- /dev/null +++ b/pkgs/tools/package-management/nix/2_26/doc/manual/package.nix @@ -0,0 +1,71 @@ +{ lib +, mkMesonDerivation + +, meson +, ninja +, lowdown-unsandboxed +, mdbook +, mdbook-linkcheck +, jq +, python3 +, rsync +, nix-cli + +# Configuration Options + +, version +}: + +let + inherit (lib) fileset; +in + +mkMesonDerivation (finalAttrs: { + pname = "nix-manual"; + inherit version; + + workDir = ./.; + fileset = fileset.difference + (fileset.unions [ + ../../.version + # Too many different types of files to filter for now + ../../doc/manual + ./. + ]) + # Do a blacklist instead + ../../doc/manual/package.nix; + + # TODO the man pages should probably be separate + outputs = [ "out" "man" ]; + + # Hack for sake of the dev shell + passthru.externalNativeBuildInputs = [ + meson + ninja + (lib.getBin lowdown-unsandboxed) + mdbook + mdbook-linkcheck + jq + python3 + rsync + ]; + + nativeBuildInputs = finalAttrs.passthru.externalNativeBuildInputs ++ [ + nix-cli + ]; + + preConfigure = + '' + chmod u+w ./.version + echo ${finalAttrs.version} > ./.version + ''; + + postInstall = '' + mkdir -p ''$out/nix-support + echo "doc manual ''$out/share/doc/nix/manual" >> ''$out/nix-support/hydra-build-products + ''; + + meta = { + platforms = lib.platforms.all; + }; +}) diff --git a/pkgs/tools/package-management/nix/2_26/packaging/components.nix b/pkgs/tools/package-management/nix/2_26/packaging/components.nix new file mode 100644 index 000000000000..e1f661be8fbc --- /dev/null +++ b/pkgs/tools/package-management/nix/2_26/packaging/components.nix @@ -0,0 +1,66 @@ +{ + lib, + src, + officialRelease, +}: + +scope: + +let + inherit (scope) callPackage; + + baseVersion = lib.fileContents ../.version; + + versionSuffix = lib.optionalString (!officialRelease) "pre"; + + fineVersionSuffix = lib.optionalString + (!officialRelease) + "pre${builtins.substring 0 8 (src.lastModifiedDate or src.lastModified or "19700101")}_${src.shortRev or "dirty"}"; + + fineVersion = baseVersion + fineVersionSuffix; +in + +# This becomes the pkgs.nixComponents attribute set +{ + version = baseVersion + versionSuffix; + inherit versionSuffix; + + nix-util = callPackage ../src/libutil/package.nix { }; + nix-util-c = callPackage ../src/libutil-c/package.nix { }; + nix-util-test-support = callPackage ../src/libutil-test-support/package.nix { }; + nix-util-tests = callPackage ../src/libutil-tests/package.nix { }; + + nix-store = callPackage ../src/libstore/package.nix { }; + nix-store-c = callPackage ../src/libstore-c/package.nix { }; + nix-store-test-support = callPackage ../src/libstore-test-support/package.nix { }; + nix-store-tests = callPackage ../src/libstore-tests/package.nix { }; + + nix-fetchers = callPackage ../src/libfetchers/package.nix { }; + nix-fetchers-tests = callPackage ../src/libfetchers-tests/package.nix { }; + + nix-expr = callPackage ../src/libexpr/package.nix { }; + nix-expr-c = callPackage ../src/libexpr-c/package.nix { }; + nix-expr-test-support = callPackage ../src/libexpr-test-support/package.nix { }; + nix-expr-tests = callPackage ../src/libexpr-tests/package.nix { }; + + nix-flake = callPackage ../src/libflake/package.nix { }; + nix-flake-c = callPackage ../src/libflake-c/package.nix { }; + nix-flake-tests = callPackage ../src/libflake-tests/package.nix { }; + + nix-main = callPackage ../src/libmain/package.nix { }; + nix-main-c = callPackage ../src/libmain-c/package.nix { }; + + nix-cmd = callPackage ../src/libcmd/package.nix { }; + + nix-cli = callPackage ../src/nix/package.nix { version = fineVersion; }; + + nix-functional-tests = callPackage ../src/nix-functional-tests/package.nix { version = fineVersion; }; + + nix-manual = callPackage ../doc/manual/package.nix { version = fineVersion; }; + nix-internal-api-docs = callPackage ../src/internal-api-docs/package.nix { version = fineVersion; }; + nix-external-api-docs = callPackage ../src/external-api-docs/package.nix { version = fineVersion; }; + + nix-perl-bindings = callPackage ../src/perl/package.nix { }; + + nix-everything = callPackage ../packaging/everything.nix { }; +} diff --git a/pkgs/tools/package-management/nix/2_26/packaging/everything.nix b/pkgs/tools/package-management/nix/2_26/packaging/everything.nix new file mode 100644 index 000000000000..7ca878d8d535 --- /dev/null +++ b/pkgs/tools/package-management/nix/2_26/packaging/everything.nix @@ -0,0 +1,192 @@ +{ + lib, + stdenv, + buildEnv, + + nix-util, + nix-util-c, + nix-util-tests, + + nix-store, + nix-store-c, + nix-store-tests, + + nix-fetchers, + nix-fetchers-tests, + + nix-expr, + nix-expr-c, + nix-expr-tests, + + nix-flake, + nix-flake-c, + nix-flake-tests, + + nix-main, + nix-main-c, + + nix-cmd, + + nix-cli, + + nix-functional-tests, + + nix-manual, + nix-internal-api-docs, + nix-external-api-docs, + + nix-perl-bindings, + + testers, + runCommand, +}: + +let + libs = { + inherit + nix-util + nix-util-c + nix-store + nix-store-c + nix-fetchers + nix-expr + nix-expr-c + nix-flake + nix-flake-c + nix-main + nix-main-c + nix-cmd + ; + } // lib.optionalAttrs (!stdenv.hostPlatform.isStatic && stdenv.buildPlatform.canExecute stdenv.hostPlatform) { + # Currently fails in static build + inherit + nix-perl-bindings + ; + }; + + dev = stdenv.mkDerivation (finalAttrs: { + name = "nix-${nix-cli.version}-dev"; + pname = "nix"; + version = nix-cli.version; + dontUnpack = true; + dontBuild = true; + libs = map lib.getDev (lib.attrValues libs); + installPhase = '' + mkdir -p $out/nix-support + echo $libs >> $out/nix-support/propagated-build-inputs + ''; + passthru = { + tests = { + pkg-config = + testers.hasPkgConfigModules { + package = finalAttrs.finalPackage; + }; + }; + + # If we were to fully emulate output selection here, we'd confuse the Nix CLIs, + # because they rely on `drvPath`. + dev = finalAttrs.finalPackage.out; + + libs = throw "`nix.dev.libs` is not meant to be used; use `nix.libs` instead."; + }; + meta = { + pkgConfigModules = [ + "nix-cmd" + "nix-expr" + "nix-expr-c" + "nix-fetchers" + "nix-flake" + "nix-flake-c" + "nix-main" + "nix-main-c" + "nix-store" + "nix-store-c" + "nix-util" + "nix-util-c" + ]; + }; + }); + devdoc = buildEnv { + name = "nix-${nix-cli.version}-devdoc"; + paths = [ + nix-internal-api-docs + nix-external-api-docs + ]; + }; + +in +(buildEnv { + name = "nix-${nix-cli.version}"; + paths = [ + nix-cli + nix-manual.man + ]; + + meta.mainProgram = "nix"; +}).overrideAttrs (finalAttrs: prevAttrs: { + doCheck = true; + doInstallCheck = true; + + checkInputs = [ + # Make sure the unit tests have passed + nix-util-tests.tests.run + nix-store-tests.tests.run + nix-expr-tests.tests.run + nix-fetchers-tests.tests.run + nix-flake-tests.tests.run + + # Make sure the functional tests have passed + nix-functional-tests + + # dev bundle is ok + # (checkInputs must be empty paths??) + (runCommand "check-pkg-config" { checked = dev.tests.pkg-config; } "mkdir $out") + ] ++ lib.optionals (!stdenv.hostPlatform.isStatic && stdenv.buildPlatform.canExecute stdenv.hostPlatform) [ + # Perl currently fails in static build + # TODO: Split out tests into a separate derivation? + nix-perl-bindings + ]; + passthru = prevAttrs.passthru // { + inherit (nix-cli) version; + + /** + These are the libraries that are part of the Nix project. They are used + by the Nix CLI and other tools. + + If you need to use these libraries in your project, we recommend to use + the `-c` C API libraries exclusively, if possible. + + We also recommend that you build the complete package to ensure that the unit tests pass. + You could do this in CI, or by passing it in an unused environment variable. e.g in a `mkDerivation` call: + + ```nix + buildInputs = [ nix.libs.nix-util-c nix.libs.nix-store-c ]; + # Make sure the nix libs we use are ok + unusedInputsForTests = [ nix ]; + disallowedReferences = nix.all; + ``` + */ + inherit libs; + + tests = prevAttrs.passthru.tests or {} // { + # TODO: create a proper fixpoint and: + # pkg-config = + # testers.hasPkgConfigModules { + # package = finalPackage; + # }; + }; + + /** + A derivation referencing the `dev` outputs of the Nix libraries. + */ + inherit dev; + inherit devdoc; + doc = nix-manual; + outputs = [ "out" "dev" "devdoc" "doc" ]; + all = lib.attrValues (lib.genAttrs finalAttrs.passthru.outputs (outName: finalAttrs.finalPackage.${outName})); + }; + meta = prevAttrs.meta // { + description = "The Nix package manager"; + pkgConfigModules = dev.meta.pkgConfigModules; + }; +}) diff --git a/pkgs/tools/package-management/nix/2_26/source.json b/pkgs/tools/package-management/nix/2_26/source.json new file mode 100644 index 000000000000..40acad769e09 --- /dev/null +++ b/pkgs/tools/package-management/nix/2_26/source.json @@ -0,0 +1,6 @@ +{ + "owner": "NixOS", + "repo": "nix", + "rev": "717372382f75be6832c73ec5519e5d6b9aa5141b", + "hash": "sha256-0lFNh54gkDsdHOriOEHK6lr1rGRiP1mhNaCNm+6QspE=" +} diff --git a/pkgs/tools/package-management/nix/2_26/src/external-api-docs/package.nix b/pkgs/tools/package-management/nix/2_26/src/external-api-docs/package.nix new file mode 100644 index 000000000000..57c5138cfdb4 --- /dev/null +++ b/pkgs/tools/package-management/nix/2_26/src/external-api-docs/package.nix @@ -0,0 +1,56 @@ +{ lib +, mkMesonDerivation + +, doxygen + +# Configuration Options + +, version +}: + +let + inherit (lib) fileset; +in + +mkMesonDerivation (finalAttrs: { + pname = "nix-external-api-docs"; + inherit version; + + workDir = ./.; + fileset = + let + cpp = fileset.fileFilter (file: file.hasExt "cc" || file.hasExt "h"); + in + fileset.unions [ + ./.version + ../../.version + ./meson.build + ./doxygen.cfg.in + ./README.md + # Source is not compiled, but still must be available for Doxygen + # to gather comments. + (cpp ../libexpr-c) + (cpp ../libflake-c) + (cpp ../libstore-c) + (cpp ../libutil-c) + ]; + + nativeBuildInputs = [ + doxygen + ]; + + preConfigure = + '' + chmod u+w ./.version + echo ${finalAttrs.version} > ./.version + ''; + + postInstall = '' + mkdir -p ''${!outputDoc}/nix-support + echo "doc external-api-docs $out/share/doc/nix/external-api/html" >> ''${!outputDoc}/nix-support/hydra-build-products + ''; + + meta = { + platforms = lib.platforms.all; + }; +}) diff --git a/pkgs/tools/package-management/nix/2_26/src/internal-api-docs/package.nix b/pkgs/tools/package-management/nix/2_26/src/internal-api-docs/package.nix new file mode 100644 index 000000000000..993a257a69f3 --- /dev/null +++ b/pkgs/tools/package-management/nix/2_26/src/internal-api-docs/package.nix @@ -0,0 +1,50 @@ +{ lib +, mkMesonDerivation + +, doxygen + +# Configuration Options + +, version +}: + +let + inherit (lib) fileset; +in + +mkMesonDerivation (finalAttrs: { + pname = "nix-internal-api-docs"; + inherit version; + + workDir = ./.; + fileset = let + cpp = fileset.fileFilter (file: file.hasExt "cc" || file.hasExt "hh"); + in fileset.unions [ + ./.version + ../../.version + ./meson.build + ./doxygen.cfg.in + # Source is not compiled, but still must be available for Doxygen + # to gather comments. + (cpp ../.) + ]; + + nativeBuildInputs = [ + doxygen + ]; + + preConfigure = + '' + chmod u+w ./.version + echo ${finalAttrs.version} > ./.version + ''; + + postInstall = '' + mkdir -p ''${!outputDoc}/nix-support + echo "doc internal-api-docs $out/share/doc/nix/internal-api/html" >> ''${!outputDoc}/nix-support/hydra-build-products + ''; + + meta = { + platforms = lib.platforms.all; + }; +}) diff --git a/pkgs/tools/package-management/nix/2_26/src/libcmd/package.nix b/pkgs/tools/package-management/nix/2_26/src/libcmd/package.nix new file mode 100644 index 000000000000..5cafb4dc100c --- /dev/null +++ b/pkgs/tools/package-management/nix/2_26/src/libcmd/package.nix @@ -0,0 +1,83 @@ +{ lib +, stdenv +, mkMesonLibrary + +, nix-util +, nix-store +, nix-fetchers +, nix-expr +, nix-flake +, nix-main +, editline +, readline +, lowdown +, nlohmann_json + +# Configuration Options + +, version + +# Whether to enable Markdown rendering in the Nix binary. +, enableMarkdown ? !stdenv.hostPlatform.isWindows + +# Which interactive line editor library to use for Nix's repl. +# +# Currently supported choices are: +# +# - editline (default) +# - readline +, readlineFlavor ? if stdenv.hostPlatform.isWindows then "readline" else "editline" +}: + +let + inherit (lib) fileset; +in + +mkMesonLibrary (finalAttrs: { + pname = "nix-cmd"; + inherit version; + + workDir = ./.; + fileset = fileset.unions [ + ../../nix-meson-build-support + ./nix-meson-build-support + ../../.version + ./.version + ./meson.build + ./meson.options + (fileset.fileFilter (file: file.hasExt "cc") ./.) + (fileset.fileFilter (file: file.hasExt "hh") ./.) + ]; + + buildInputs = [ + ({ inherit editline readline; }.${readlineFlavor}) + ] ++ lib.optional enableMarkdown lowdown; + + propagatedBuildInputs = [ + nix-util + nix-store + nix-fetchers + nix-expr + nix-flake + nix-main + nlohmann_json + ]; + + preConfigure = + # "Inline" .version so it's not a symlink, and includes the suffix. + # Do the meson utils, without modification. + '' + chmod u+w ./.version + echo ${version} > ../../.version + ''; + + mesonFlags = [ + (lib.mesonEnable "markdown" enableMarkdown) + (lib.mesonOption "readline-flavor" readlineFlavor) + ]; + + meta = { + platforms = lib.platforms.unix ++ lib.platforms.windows; + }; + +}) diff --git a/pkgs/tools/package-management/nix/2_26/src/libexpr-c/package.nix b/pkgs/tools/package-management/nix/2_26/src/libexpr-c/package.nix new file mode 100644 index 000000000000..5047f3e2e9ab --- /dev/null +++ b/pkgs/tools/package-management/nix/2_26/src/libexpr-c/package.nix @@ -0,0 +1,53 @@ +{ lib +, mkMesonLibrary + +, nix-store-c +, nix-expr + +# Configuration Options + +, version +}: + +let + inherit (lib) fileset; +in + +mkMesonLibrary (finalAttrs: { + pname = "nix-expr-c"; + inherit version; + + workDir = ./.; + fileset = fileset.unions [ + ../../nix-meson-build-support + ./nix-meson-build-support + ../../.version + ./.version + ./meson.build + # ./meson.options + (fileset.fileFilter (file: file.hasExt "cc") ./.) + (fileset.fileFilter (file: file.hasExt "hh") ./.) + (fileset.fileFilter (file: file.hasExt "h") ./.) + ]; + + propagatedBuildInputs = [ + nix-store-c + nix-expr + ]; + + preConfigure = + # "Inline" .version so it's not a symlink, and includes the suffix. + # Do the meson utils, without modification. + '' + chmod u+w ./.version + echo ${version} > ../../.version + ''; + + mesonFlags = [ + ]; + + meta = { + platforms = lib.platforms.unix ++ lib.platforms.windows; + }; + +}) diff --git a/pkgs/tools/package-management/nix/2_26/src/libexpr-test-support/package.nix b/pkgs/tools/package-management/nix/2_26/src/libexpr-test-support/package.nix new file mode 100644 index 000000000000..48118fa0c758 --- /dev/null +++ b/pkgs/tools/package-management/nix/2_26/src/libexpr-test-support/package.nix @@ -0,0 +1,57 @@ +{ lib +, mkMesonLibrary + +, nix-store-test-support +, nix-expr +, nix-expr-c + +, rapidcheck + +# Configuration Options + +, version +}: + +let + inherit (lib) fileset; +in + +mkMesonLibrary (finalAttrs: { + pname = "nix-util-test-support"; + inherit version; + + workDir = ./.; + fileset = fileset.unions [ + ../../nix-meson-build-support + ./nix-meson-build-support + ../../.version + ./.version + ./meson.build + # ./meson.options + (fileset.fileFilter (file: file.hasExt "cc") ./.) + (fileset.fileFilter (file: file.hasExt "hh") ./.) + ]; + + propagatedBuildInputs = [ + nix-store-test-support + nix-expr + nix-expr-c + rapidcheck + ]; + + preConfigure = + # "Inline" .version so it's not a symlink, and includes the suffix. + # Do the meson utils, without modification. + '' + chmod u+w ./.version + echo ${version} > ../../.version + ''; + + mesonFlags = [ + ]; + + meta = { + platforms = lib.platforms.unix ++ lib.platforms.windows; + }; + +}) diff --git a/pkgs/tools/package-management/nix/2_26/src/libexpr-tests/package.nix b/pkgs/tools/package-management/nix/2_26/src/libexpr-tests/package.nix new file mode 100644 index 000000000000..a4a3bb0e7ecd --- /dev/null +++ b/pkgs/tools/package-management/nix/2_26/src/libexpr-tests/package.nix @@ -0,0 +1,79 @@ +{ lib +, buildPackages +, stdenv +, mkMesonExecutable + +, nix-expr +, nix-expr-c +, nix-expr-test-support + +, rapidcheck +, gtest +, runCommand + +# Configuration Options + +, version +, resolvePath +}: + +let + inherit (lib) fileset; +in + +mkMesonExecutable (finalAttrs: { + pname = "nix-expr-tests"; + inherit version; + + workDir = ./.; + fileset = fileset.unions [ + ../../nix-meson-build-support + ./nix-meson-build-support + ../../.version + ./.version + ./meson.build + # ./meson.options + (fileset.fileFilter (file: file.hasExt "cc") ./.) + (fileset.fileFilter (file: file.hasExt "hh") ./.) + ]; + + buildInputs = [ + nix-expr + nix-expr-c + nix-expr-test-support + rapidcheck + gtest + ]; + + preConfigure = + # "Inline" .version so it's not a symlink, and includes the suffix. + # Do the meson utils, without modification. + '' + chmod u+w ./.version + echo ${version} > ../../.version + ''; + + mesonFlags = [ + ]; + + passthru = { + tests = { + run = runCommand "${finalAttrs.pname}-run" { + 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} + ${stdenv.hostPlatform.emulator buildPackages} ${lib.getExe finalAttrs.finalPackage} + touch $out + ''); + }; + }; + + meta = { + platforms = lib.platforms.unix ++ lib.platforms.windows; + mainProgram = finalAttrs.pname + stdenv.hostPlatform.extensions.executable; + }; + +}) diff --git a/pkgs/tools/package-management/nix/2_26/src/libexpr/package.nix b/pkgs/tools/package-management/nix/2_26/src/libexpr/package.nix new file mode 100644 index 000000000000..3d5b78e35f2d --- /dev/null +++ b/pkgs/tools/package-management/nix/2_26/src/libexpr/package.nix @@ -0,0 +1,105 @@ +{ lib +, stdenv +, mkMesonLibrary + +, bison +, flex +, cmake # for resolving toml11 dep + +, nix-util +, nix-store +, nix-fetchers +, boost +, boehmgc +, nlohmann_json +, toml11 + +# Configuration Options + +, version + +# Whether to use garbage collection for the Nix language evaluator. +# +# If it is disabled, we just leak memory, but this is not as bad as it +# sounds so long as evaluation just takes places within short-lived +# processes. (When the process exits, the memory is reclaimed; it is +# only leaked *within* the process.) +# +# Temporarily disabled on Windows because the `GC_throw_bad_alloc` +# symbol is missing during linking. +, enableGC ? !stdenv.hostPlatform.isWindows +}: + +let + inherit (lib) fileset; +in + +mkMesonLibrary (finalAttrs: { + pname = "nix-expr"; + inherit version; + + workDir = ./.; + fileset = fileset.unions [ + ../../nix-meson-build-support + ./nix-meson-build-support + ../../.version + ./.version + ./meson.build + ./meson.options + ./primops/meson.build + (fileset.fileFilter (file: file.hasExt "cc") ./.) + (fileset.fileFilter (file: file.hasExt "hh") ./.) + ./lexer.l + ./parser.y + (fileset.difference + (fileset.fileFilter (file: file.hasExt "nix") ./.) + ./package.nix + ) + ]; + + nativeBuildInputs = [ + bison + flex + cmake + ]; + + buildInputs = [ + toml11 + ]; + + propagatedBuildInputs = [ + nix-util + nix-store + nix-fetchers + ] ++ finalAttrs.passthru.externalPropagatedBuildInputs; + + # Hack for sake of the dev shell + passthru.externalPropagatedBuildInputs = [ + boost + nlohmann_json + ] ++ lib.optional enableGC boehmgc; + + preConfigure = + # "Inline" .version so it's not a symlink, and includes the suffix. + # Do the meson utils, without modification. + '' + chmod u+w ./.version + echo ${version} > ../../.version + ''; + + mesonFlags = [ + (lib.mesonEnable "gc" enableGC) + ]; + + env = { + # Needed for Meson to find Boost. + # https://github.com/NixOS/nixpkgs/issues/86131. + BOOST_INCLUDEDIR = "${lib.getDev boost}/include"; + BOOST_LIBRARYDIR = "${lib.getLib boost}/lib"; + }; + + meta = { + platforms = lib.platforms.unix ++ lib.platforms.windows; + }; + +}) diff --git a/pkgs/tools/package-management/nix/2_26/src/libfetchers-tests/package.nix b/pkgs/tools/package-management/nix/2_26/src/libfetchers-tests/package.nix new file mode 100644 index 000000000000..5336672a2221 --- /dev/null +++ b/pkgs/tools/package-management/nix/2_26/src/libfetchers-tests/package.nix @@ -0,0 +1,77 @@ +{ lib +, buildPackages +, stdenv +, mkMesonExecutable + +, nix-fetchers +, nix-store-test-support + +, rapidcheck +, gtest +, runCommand + +# Configuration Options + +, version +, resolvePath +}: + +let + inherit (lib) fileset; +in + +mkMesonExecutable (finalAttrs: { + pname = "nix-fetchers-tests"; + inherit version; + + workDir = ./.; + fileset = fileset.unions [ + ../../nix-meson-build-support + ./nix-meson-build-support + ../../.version + ./.version + ./meson.build + # ./meson.options + (fileset.fileFilter (file: file.hasExt "cc") ./.) + (fileset.fileFilter (file: file.hasExt "hh") ./.) + ]; + + buildInputs = [ + nix-fetchers + nix-store-test-support + rapidcheck + gtest + ]; + + preConfigure = + # "Inline" .version so it's not a symlink, and includes the suffix. + # Do the meson utils, without modification. + '' + chmod u+w ./.version + echo ${version} > ../../.version + ''; + + mesonFlags = [ + ]; + + passthru = { + tests = { + run = runCommand "${finalAttrs.pname}-run" { + 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} + ${stdenv.hostPlatform.emulator buildPackages} ${lib.getExe finalAttrs.finalPackage} + touch $out + ''); + }; + }; + + meta = { + platforms = lib.platforms.unix ++ lib.platforms.windows; + mainProgram = finalAttrs.pname + stdenv.hostPlatform.extensions.executable; + }; + +}) diff --git a/pkgs/tools/package-management/nix/2_26/src/libfetchers/package.nix b/pkgs/tools/package-management/nix/2_26/src/libfetchers/package.nix new file mode 100644 index 000000000000..d4ca18555031 --- /dev/null +++ b/pkgs/tools/package-management/nix/2_26/src/libfetchers/package.nix @@ -0,0 +1,55 @@ +{ lib +, mkMesonLibrary + +, nix-util +, nix-store +, nlohmann_json +, libgit2 + +# Configuration Options + +, version +}: + +let + inherit (lib) fileset; +in + +mkMesonLibrary (finalAttrs: { + pname = "nix-fetchers"; + inherit version; + + workDir = ./.; + fileset = fileset.unions [ + ../../nix-meson-build-support + ./nix-meson-build-support + ../../.version + ./.version + ./meson.build + (fileset.fileFilter (file: file.hasExt "cc") ./.) + (fileset.fileFilter (file: file.hasExt "hh") ./.) + ]; + + buildInputs = [ + libgit2 + ]; + + propagatedBuildInputs = [ + nix-store + nix-util + nlohmann_json + ]; + + preConfigure = + # "Inline" .version so it's not a symlink, and includes the suffix. + # Do the meson utils, without modification. + '' + chmod u+w ./.version + echo ${version} > ../../.version + ''; + + meta = { + platforms = lib.platforms.unix ++ lib.platforms.windows; + }; + +}) diff --git a/pkgs/tools/package-management/nix/2_26/src/libflake-c/package.nix b/pkgs/tools/package-management/nix/2_26/src/libflake-c/package.nix new file mode 100644 index 000000000000..dcd6c4966097 --- /dev/null +++ b/pkgs/tools/package-management/nix/2_26/src/libflake-c/package.nix @@ -0,0 +1,55 @@ +{ lib +, mkMesonLibrary + +, nix-store-c +, nix-expr-c +, nix-flake + +# Configuration Options + +, version +}: + +let + inherit (lib) fileset; +in + +mkMesonLibrary (finalAttrs: { + pname = "nix-flake-c"; + inherit version; + + workDir = ./.; + fileset = fileset.unions [ + ../../nix-meson-build-support + ./nix-meson-build-support + ../../.version + ./.version + ./meson.build + # ./meson.options + (fileset.fileFilter (file: file.hasExt "cc") ./.) + (fileset.fileFilter (file: file.hasExt "hh") ./.) + (fileset.fileFilter (file: file.hasExt "h") ./.) + ]; + + propagatedBuildInputs = [ + nix-expr-c + nix-store-c + nix-flake + ]; + + preConfigure = + # "Inline" .version so it's not a symlink, and includes the suffix. + # Do the meson utils, without modification. + '' + chmod u+w ./.version + echo ${version} > ../../.version + ''; + + mesonFlags = [ + ]; + + meta = { + platforms = lib.platforms.unix ++ lib.platforms.windows; + }; + +}) diff --git a/pkgs/tools/package-management/nix/2_26/src/libflake-tests/package.nix b/pkgs/tools/package-management/nix/2_26/src/libflake-tests/package.nix new file mode 100644 index 000000000000..51b68ad581ff --- /dev/null +++ b/pkgs/tools/package-management/nix/2_26/src/libflake-tests/package.nix @@ -0,0 +1,80 @@ +{ lib +, buildPackages +, stdenv +, mkMesonExecutable + +, nix-flake +, nix-flake-c +, nix-expr-test-support + +, rapidcheck +, gtest +, runCommand + +# Configuration Options + +, version +, resolvePath +}: + +let + inherit (lib) fileset; +in + +mkMesonExecutable (finalAttrs: { + pname = "nix-flake-tests"; + inherit version; + + workDir = ./.; + fileset = fileset.unions [ + ../../nix-meson-build-support + ./nix-meson-build-support + ../../.version + ./.version + ./meson.build + # ./meson.options + (fileset.fileFilter (file: file.hasExt "cc") ./.) + (fileset.fileFilter (file: file.hasExt "hh") ./.) + ]; + + buildInputs = [ + nix-flake + nix-flake-c + nix-expr-test-support + rapidcheck + gtest + ]; + + preConfigure = + # "Inline" .version so it's not a symlink, and includes the suffix. + # Do the meson utils, without modification. + '' + chmod u+w ./.version + echo ${version} > ../../.version + ''; + + mesonFlags = [ + ]; + + passthru = { + tests = { + run = runCommand "${finalAttrs.pname}-run" { + 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 + ''); + }; + }; + + meta = { + platforms = lib.platforms.unix ++ lib.platforms.windows; + mainProgram = finalAttrs.pname + stdenv.hostPlatform.extensions.executable; + }; + +}) diff --git a/pkgs/tools/package-management/nix/2_26/src/libflake/package.nix b/pkgs/tools/package-management/nix/2_26/src/libflake/package.nix new file mode 100644 index 000000000000..3fc96a20e58c --- /dev/null +++ b/pkgs/tools/package-management/nix/2_26/src/libflake/package.nix @@ -0,0 +1,54 @@ +{ lib +, mkMesonLibrary + +, nix-util +, nix-store +, nix-fetchers +, nix-expr +, nlohmann_json + +# Configuration Options + +, version +}: + +let + inherit (lib) fileset; +in + +mkMesonLibrary (finalAttrs: { + pname = "nix-flake"; + inherit version; + + workDir = ./.; + fileset = fileset.unions [ + ../../nix-meson-build-support + ./nix-meson-build-support + ../../.version + ./.version + ./meson.build + (fileset.fileFilter (file: file.hasExt "cc") ./.) + (fileset.fileFilter (file: file.hasExt "hh") ./.) + ]; + + propagatedBuildInputs = [ + nix-store + nix-util + nix-fetchers + nix-expr + nlohmann_json + ]; + + preConfigure = + # "Inline" .version so it's not a symlink, and includes the suffix. + # Do the meson utils, without modification. + '' + chmod u+w ./.version + echo ${version} > ../../.version + ''; + + meta = { + platforms = lib.platforms.unix ++ lib.platforms.windows; + }; + +}) diff --git a/pkgs/tools/package-management/nix/2_26/src/libmain-c/package.nix b/pkgs/tools/package-management/nix/2_26/src/libmain-c/package.nix new file mode 100644 index 000000000000..b96901bb46bb --- /dev/null +++ b/pkgs/tools/package-management/nix/2_26/src/libmain-c/package.nix @@ -0,0 +1,57 @@ +{ lib +, mkMesonLibrary + +, nix-util-c +, nix-store +, nix-store-c +, nix-main + +# Configuration Options + +, version +}: + +let + inherit (lib) fileset; +in + +mkMesonLibrary (finalAttrs: { + pname = "nix-main-c"; + inherit version; + + workDir = ./.; + fileset = fileset.unions [ + ../../nix-meson-build-support + ./nix-meson-build-support + ../../.version + ./.version + ./meson.build + # ./meson.options + (fileset.fileFilter (file: file.hasExt "cc") ./.) + (fileset.fileFilter (file: file.hasExt "hh") ./.) + (fileset.fileFilter (file: file.hasExt "h") ./.) + ]; + + propagatedBuildInputs = [ + nix-util-c + nix-store + nix-store-c + nix-main + ]; + + preConfigure = + # "Inline" .version so it's not a symlink, and includes the suffix. + # Do the meson utils, without modification. + '' + chmod u+w ./.version + echo ${version} > ../../.version + ''; + + mesonFlags = [ + ]; + + meta = { + platforms = lib.platforms.unix ++ lib.platforms.windows; + }; + +}) diff --git a/pkgs/tools/package-management/nix/2_26/src/libmain/package.nix b/pkgs/tools/package-management/nix/2_26/src/libmain/package.nix new file mode 100644 index 000000000000..9a5b9e8c2df0 --- /dev/null +++ b/pkgs/tools/package-management/nix/2_26/src/libmain/package.nix @@ -0,0 +1,51 @@ +{ lib +, mkMesonLibrary + +, openssl + +, nix-util +, nix-store + +# Configuration Options + +, version +}: + +let + inherit (lib) fileset; +in + +mkMesonLibrary (finalAttrs: { + pname = "nix-main"; + inherit version; + + workDir = ./.; + fileset = fileset.unions [ + ../../nix-meson-build-support + ./nix-meson-build-support + ../../.version + ./.version + ./meson.build + (fileset.fileFilter (file: file.hasExt "cc") ./.) + (fileset.fileFilter (file: file.hasExt "hh") ./.) + ]; + + propagatedBuildInputs = [ + nix-util + nix-store + openssl + ]; + + preConfigure = + # "Inline" .version so it's not a symlink, and includes the suffix. + # Do the meson utils, without modification. + '' + chmod u+w ./.version + echo ${version} > ../../.version + ''; + + meta = { + platforms = lib.platforms.unix ++ lib.platforms.windows; + }; + +}) diff --git a/pkgs/tools/package-management/nix/2_26/src/libstore-c/package.nix b/pkgs/tools/package-management/nix/2_26/src/libstore-c/package.nix new file mode 100644 index 000000000000..c2413c3890d1 --- /dev/null +++ b/pkgs/tools/package-management/nix/2_26/src/libstore-c/package.nix @@ -0,0 +1,53 @@ +{ lib +, mkMesonLibrary + +, nix-util-c +, nix-store + +# Configuration Options + +, version +}: + +let + inherit (lib) fileset; +in + +mkMesonLibrary (finalAttrs: { + pname = "nix-store-c"; + inherit version; + + workDir = ./.; + fileset = fileset.unions [ + ../../nix-meson-build-support + ./nix-meson-build-support + ../../.version + ./.version + ./meson.build + # ./meson.options + (fileset.fileFilter (file: file.hasExt "cc") ./.) + (fileset.fileFilter (file: file.hasExt "hh") ./.) + (fileset.fileFilter (file: file.hasExt "h") ./.) + ]; + + propagatedBuildInputs = [ + nix-util-c + nix-store + ]; + + preConfigure = + # "Inline" .version so it's not a symlink, and includes the suffix. + # Do the meson utils, without modification. + '' + chmod u+w ./.version + echo ${version} > ../../.version + ''; + + mesonFlags = [ + ]; + + meta = { + platforms = lib.platforms.unix ++ lib.platforms.windows; + }; + +}) diff --git a/pkgs/tools/package-management/nix/2_26/src/libstore-test-support/package.nix b/pkgs/tools/package-management/nix/2_26/src/libstore-test-support/package.nix new file mode 100644 index 000000000000..5d3f41b3e8b9 --- /dev/null +++ b/pkgs/tools/package-management/nix/2_26/src/libstore-test-support/package.nix @@ -0,0 +1,57 @@ +{ lib +, mkMesonLibrary + +, nix-util-test-support +, nix-store +, nix-store-c + +, rapidcheck + +# Configuration Options + +, version +}: + +let + inherit (lib) fileset; +in + +mkMesonLibrary (finalAttrs: { + pname = "nix-store-test-support"; + inherit version; + + workDir = ./.; + fileset = fileset.unions [ + ../../nix-meson-build-support + ./nix-meson-build-support + ../../.version + ./.version + ./meson.build + # ./meson.options + (fileset.fileFilter (file: file.hasExt "cc") ./.) + (fileset.fileFilter (file: file.hasExt "hh") ./.) + ]; + + propagatedBuildInputs = [ + nix-util-test-support + nix-store + nix-store-c + rapidcheck + ]; + + preConfigure = + # "Inline" .version so it's not a symlink, and includes the suffix. + # Do the meson utils, without modification. + '' + chmod u+w ./.version + echo ${version} > ../../.version + ''; + + mesonFlags = [ + ]; + + meta = { + platforms = lib.platforms.unix ++ lib.platforms.windows; + }; + +}) diff --git a/pkgs/tools/package-management/nix/2_26/src/libstore-tests/package.nix b/pkgs/tools/package-management/nix/2_26/src/libstore-tests/package.nix new file mode 100644 index 000000000000..3acf4e25c2cc --- /dev/null +++ b/pkgs/tools/package-management/nix/2_26/src/libstore-tests/package.nix @@ -0,0 +1,95 @@ +{ lib +, buildPackages +, stdenv +, mkMesonExecutable + +, nix-store +, nix-store-c +, nix-store-test-support +, sqlite + +, rapidcheck +, gtest +, runCommand + +# Configuration Options + +, version +, filesetToSource +}: + +let + inherit (lib) fileset; +in + +mkMesonExecutable (finalAttrs: { + pname = "nix-store-tests"; + inherit version; + + workDir = ./.; + fileset = fileset.unions [ + ../../nix-meson-build-support + ./nix-meson-build-support + ../../.version + ./.version + ./meson.build + # ./meson.options + (fileset.fileFilter (file: file.hasExt "cc") ./.) + (fileset.fileFilter (file: file.hasExt "hh") ./.) + ]; + + # Hack for sake of the dev shell + passthru.externalBuildInputs = [ + sqlite + rapidcheck + gtest + ]; + + buildInputs = finalAttrs.passthru.externalBuildInputs ++ [ + nix-store + nix-store-c + nix-store-test-support + ]; + + preConfigure = + # "Inline" .version so it's not a symlink, and includes the suffix. + # Do the meson utils, without modification. + '' + chmod u+w ./.version + echo ${version} > ../../.version + ''; + + mesonFlags = [ + ]; + + passthru = { + tests = { + run = let + # Some data is shared with the functional tests: they create it, + # we consume it. + data = filesetToSource { + root = ../..; + fileset = lib.fileset.unions [ + ./data + ../../tests/functional/derivation + ]; + }; + in runCommand "${finalAttrs.pname}-run" { + 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 + ''); + }; + }; + + meta = { + platforms = lib.platforms.unix ++ lib.platforms.windows; + mainProgram = finalAttrs.pname + stdenv.hostPlatform.extensions.executable; + }; + +}) diff --git a/pkgs/tools/package-management/nix/2_26/src/libstore/package.nix b/pkgs/tools/package-management/nix/2_26/src/libstore/package.nix new file mode 100644 index 000000000000..4fbaea4acc57 --- /dev/null +++ b/pkgs/tools/package-management/nix/2_26/src/libstore/package.nix @@ -0,0 +1,96 @@ +{ lib +, stdenv +, mkMesonLibrary + +, unixtools +, darwin + +, nix-util +, boost +, curl +, aws-sdk-cpp +, libseccomp +, nlohmann_json +, sqlite + +, busybox-sandbox-shell ? null + +# Configuration Options + +, version + +, embeddedSandboxShell ? stdenv.hostPlatform.isStatic +}: + +let + inherit (lib) fileset; +in + +mkMesonLibrary (finalAttrs: { + pname = "nix-store"; + inherit version; + + workDir = ./.; + fileset = fileset.unions [ + ../../nix-meson-build-support + ./nix-meson-build-support + ../../.version + ./.version + ./meson.build + ./meson.options + ./linux/meson.build + ./unix/meson.build + ./windows/meson.build + (fileset.fileFilter (file: file.hasExt "cc") ./.) + (fileset.fileFilter (file: file.hasExt "hh") ./.) + (fileset.fileFilter (file: file.hasExt "sb") ./.) + (fileset.fileFilter (file: file.hasExt "md") ./.) + (fileset.fileFilter (file: file.hasExt "sql") ./.) + ]; + + nativeBuildInputs = + lib.optional embeddedSandboxShell unixtools.hexdump; + + buildInputs = [ + boost + curl + sqlite + ] ++ lib.optional stdenv.hostPlatform.isLinux libseccomp + # There have been issues building these dependencies + ++ lib.optional stdenv.hostPlatform.isDarwin darwin.apple_sdk.libs.sandbox + ++ lib.optional (stdenv.hostPlatform == stdenv.buildPlatform && (stdenv.isLinux || stdenv.isDarwin)) + aws-sdk-cpp + ; + + propagatedBuildInputs = [ + nix-util + nlohmann_json + ]; + + preConfigure = + # "Inline" .version so it's not a symlink, and includes the suffix. + # Do the meson utils, without modification. + '' + chmod u+w ./.version + echo ${version} > ../../.version + ''; + + mesonFlags = [ + (lib.mesonEnable "seccomp-sandboxing" stdenv.hostPlatform.isLinux) + (lib.mesonBool "embedded-sandbox-shell" embeddedSandboxShell) + ] ++ lib.optionals stdenv.hostPlatform.isLinux [ + (lib.mesonOption "sandbox-shell" "${busybox-sandbox-shell}/bin/busybox") + ]; + + env = { + # Needed for Meson to find Boost. + # https://github.com/NixOS/nixpkgs/issues/86131. + BOOST_INCLUDEDIR = "${lib.getDev boost}/include"; + BOOST_LIBRARYDIR = "${lib.getLib boost}/lib"; + }; + + meta = { + platforms = lib.platforms.unix ++ lib.platforms.windows; + }; + +}) diff --git a/pkgs/tools/package-management/nix/2_26/src/libutil-c/package.nix b/pkgs/tools/package-management/nix/2_26/src/libutil-c/package.nix new file mode 100644 index 000000000000..f80e0b7f0a2a --- /dev/null +++ b/pkgs/tools/package-management/nix/2_26/src/libutil-c/package.nix @@ -0,0 +1,51 @@ +{ lib +, mkMesonLibrary + +, nix-util + +# Configuration Options + +, version +}: + +let + inherit (lib) fileset; +in + +mkMesonLibrary (finalAttrs: { + pname = "nix-util-c"; + inherit version; + + workDir = ./.; + fileset = fileset.unions [ + ../../nix-meson-build-support + ./nix-meson-build-support + ../../.version + ./.version + ./meson.build + ./meson.options + (fileset.fileFilter (file: file.hasExt "cc") ./.) + (fileset.fileFilter (file: file.hasExt "hh") ./.) + (fileset.fileFilter (file: file.hasExt "h") ./.) + ]; + + propagatedBuildInputs = [ + nix-util + ]; + + preConfigure = + # "Inline" .version so it's not a symlink, and includes the suffix. + # Do the meson utils, without modification. + '' + chmod u+w ./.version + echo ${version} > ../../.version + ''; + + mesonFlags = [ + ]; + + meta = { + platforms = lib.platforms.unix ++ lib.platforms.windows; + }; + +}) diff --git a/pkgs/tools/package-management/nix/2_26/src/libutil-test-support/package.nix b/pkgs/tools/package-management/nix/2_26/src/libutil-test-support/package.nix new file mode 100644 index 000000000000..a8a239717a68 --- /dev/null +++ b/pkgs/tools/package-management/nix/2_26/src/libutil-test-support/package.nix @@ -0,0 +1,55 @@ +{ lib +, mkMesonLibrary + +, nix-util +, nix-util-c + +, rapidcheck + +# Configuration Options + +, version +}: + +let + inherit (lib) fileset; +in + +mkMesonLibrary (finalAttrs: { + pname = "nix-util-test-support"; + inherit version; + + workDir = ./.; + fileset = fileset.unions [ + ../../nix-meson-build-support + ./nix-meson-build-support + ../../.version + ./.version + ./meson.build + # ./meson.options + (fileset.fileFilter (file: file.hasExt "cc") ./.) + (fileset.fileFilter (file: file.hasExt "hh") ./.) + ]; + + propagatedBuildInputs = [ + nix-util + nix-util-c + rapidcheck + ]; + + preConfigure = + # "Inline" .version so it's not a symlink, and includes the suffix. + # Do the meson utils, without modification. + '' + chmod u+w ./.version + echo ${version} > ../../.version + ''; + + mesonFlags = [ + ]; + + meta = { + platforms = lib.platforms.unix ++ lib.platforms.windows; + }; + +}) diff --git a/pkgs/tools/package-management/nix/2_26/src/libutil-tests/package.nix b/pkgs/tools/package-management/nix/2_26/src/libutil-tests/package.nix new file mode 100644 index 000000000000..28769e115224 --- /dev/null +++ b/pkgs/tools/package-management/nix/2_26/src/libutil-tests/package.nix @@ -0,0 +1,78 @@ +{ lib +, buildPackages +, stdenv +, mkMesonExecutable + +, nix-util +, nix-util-c +, nix-util-test-support + +, rapidcheck +, gtest +, runCommand + +# Configuration Options + +, version +}: + +let + inherit (lib) fileset; +in + +mkMesonExecutable (finalAttrs: { + pname = "nix-util-tests"; + inherit version; + + workDir = ./.; + fileset = fileset.unions [ + ../../nix-meson-build-support + ./nix-meson-build-support + ../../.version + ./.version + ./meson.build + # ./meson.options + (fileset.fileFilter (file: file.hasExt "cc") ./.) + (fileset.fileFilter (file: file.hasExt "hh") ./.) + ]; + + buildInputs = [ + nix-util + nix-util-c + nix-util-test-support + rapidcheck + gtest + ]; + + preConfigure = + # "Inline" .version so it's not a symlink, and includes the suffix. + # Do the meson utils, without modification. + '' + chmod u+w ./.version + echo ${version} > ../../.version + ''; + + mesonFlags = [ + ]; + + passthru = { + tests = { + run = runCommand "${finalAttrs.pname}-run" { + 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} + ${stdenv.hostPlatform.emulator buildPackages} ${lib.getExe finalAttrs.finalPackage} + touch $out + ''); + }; + }; + + meta = { + platforms = lib.platforms.unix ++ lib.platforms.windows; + mainProgram = finalAttrs.pname + stdenv.hostPlatform.extensions.executable; + }; + +}) diff --git a/pkgs/tools/package-management/nix/2_26/src/libutil/package.nix b/pkgs/tools/package-management/nix/2_26/src/libutil/package.nix new file mode 100644 index 000000000000..679872a75c59 --- /dev/null +++ b/pkgs/tools/package-management/nix/2_26/src/libutil/package.nix @@ -0,0 +1,81 @@ +{ lib +, stdenv +, mkMesonLibrary + +, boost +, brotli +, libarchive +, libcpuid +, libsodium +, nlohmann_json +, openssl + +# Configuration Options + +, version +}: + +let + inherit (lib) fileset; +in + +mkMesonLibrary (finalAttrs: { + pname = "nix-util"; + inherit version; + + workDir = ./.; + fileset = fileset.unions [ + ../../nix-meson-build-support + ./nix-meson-build-support + ../../.version + ./.version + ./widecharwidth + ./meson.build + ./meson.options + ./linux/meson.build + ./unix/meson.build + ./windows/meson.build + (fileset.fileFilter (file: file.hasExt "cc") ./.) + (fileset.fileFilter (file: file.hasExt "hh") ./.) + ]; + + buildInputs = [ + brotli + libsodium + openssl + ] ++ lib.optional stdenv.hostPlatform.isx86_64 libcpuid + ; + + propagatedBuildInputs = [ + boost + libarchive + nlohmann_json + ]; + + preConfigure = + # "Inline" .version so it's not a symlink, and includes the suffix. + # Do the meson utils, without modification. + # + # TODO: change release process to add `pre` in `.version`, remove it + # before tagging, and restore after. + '' + chmod u+w ./.version + echo ${version} > ../../.version + ''; + + mesonFlags = [ + (lib.mesonEnable "cpuid" stdenv.hostPlatform.isx86_64) + ]; + + env = { + # Needed for Meson to find Boost. + # https://github.com/NixOS/nixpkgs/issues/86131. + BOOST_INCLUDEDIR = "${lib.getDev boost}/include"; + BOOST_LIBRARYDIR = "${lib.getLib boost}/lib"; + }; + + meta = { + platforms = lib.platforms.unix ++ lib.platforms.windows; + }; + +}) diff --git a/pkgs/tools/package-management/nix/2_26/src/nix/package.nix b/pkgs/tools/package-management/nix/2_26/src/nix/package.nix new file mode 100644 index 000000000000..171621af9176 --- /dev/null +++ b/pkgs/tools/package-management/nix/2_26/src/nix/package.nix @@ -0,0 +1,105 @@ +{ lib +, mkMesonExecutable + +, nix-store +, nix-expr +, nix-main +, nix-cmd + +# Configuration Options + +, version +}: + +let + inherit (lib) fileset; +in + +mkMesonExecutable (finalAttrs: { + pname = "nix"; + inherit version; + + workDir = ./.; + fileset = fileset.unions ([ + ../../nix-meson-build-support + ./nix-meson-build-support + ../../.version + ./.version + ./meson.build + ./meson.options + + # Symbolic links to other dirs + ## exes + ./build-remote + ./doc + ./nix-build + ./nix-channel + ./nix-collect-garbage + ./nix-copy-closure + ./nix-env + ./nix-instantiate + ./nix-store + ## dirs + ./scripts + ../../scripts + ./misc + ../../misc + + # Doc nix files for --help + ../../doc/manual/generate-manpage.nix + ../../doc/manual/utils.nix + ../../doc/manual/generate-settings.nix + ../../doc/manual/generate-store-info.nix + + # Other files to be included as string literals + ../nix-channel/unpack-channel.nix + ../nix-env/buildenv.nix + ./get-env.sh + ./help-stores.md + ../../doc/manual/source/store/types/index.md.in + ./profiles.md + ../../doc/manual/source/command-ref/files/profiles.md + + # Files + ] ++ lib.concatMap + (dir: [ + (fileset.fileFilter (file: file.hasExt "cc") dir) + (fileset.fileFilter (file: file.hasExt "hh") dir) + (fileset.fileFilter (file: file.hasExt "md") dir) + ]) + [ + ./. + ../build-remote + ../nix-build + ../nix-channel + ../nix-collect-garbage + ../nix-copy-closure + ../nix-env + ../nix-instantiate + ../nix-store + ] + ); + + buildInputs = [ + nix-store + nix-expr + nix-main + nix-cmd + ]; + + preConfigure = + # "Inline" .version so it's not a symlink, and includes the suffix. + # Do the meson utils, without modification. + '' + chmod u+w ./.version + echo ${version} > ../../../.version + ''; + + mesonFlags = [ + ]; + + meta = { + platforms = lib.platforms.unix ++ lib.platforms.windows; + }; + +}) diff --git a/pkgs/tools/package-management/nix/2_26/src/perl/package.nix b/pkgs/tools/package-management/nix/2_26/src/perl/package.nix new file mode 100644 index 000000000000..5ee0df13c9d1 --- /dev/null +++ b/pkgs/tools/package-management/nix/2_26/src/perl/package.nix @@ -0,0 +1,76 @@ +{ lib +, stdenv +, mkMesonDerivation +, pkg-config +, perl +, perlPackages +, nix-store +, version +, curl +, bzip2 +, libsodium +}: + +let + inherit (lib) fileset; +in + +perl.pkgs.toPerlModule (mkMesonDerivation (finalAttrs: { + pname = "nix-perl"; + inherit version; + + workDir = ./.; + fileset = fileset.unions ([ + ./.version + ../../.version + ./MANIFEST + ./lib + ./meson.build + ./meson.options + ] ++ lib.optionals finalAttrs.doCheck [ + ./.yath.rc.in + ./t + ]); + + nativeBuildInputs = [ + pkg-config + perl + curl + ]; + + buildInputs = [ + nix-store + ] ++ finalAttrs.passthru.externalBuildInputs; + + # Hack for sake of the dev shell + passthru.externalBuildInputs = [ + bzip2 + libsodium + ]; + + # `perlPackages.Test2Harness` is marked broken for Darwin + doCheck = !stdenv.isDarwin; + + nativeCheckInputs = [ + perlPackages.Test2Harness + ]; + + preConfigure = + # "Inline" .version so its not a symlink, and includes the suffix + '' + chmod u+w .version + echo ${finalAttrs.version} > .version + ''; + + mesonFlags = [ + (lib.mesonOption "dbi_path" "${perlPackages.DBI}/${perl.libPrefix}") + (lib.mesonOption "dbd_sqlite_path" "${perlPackages.DBDSQLite}/${perl.libPrefix}") + (lib.mesonEnable "tests" finalAttrs.doCheck) + ]; + + mesonCheckFlags = [ + "--print-errorlogs" + ]; + + strictDeps = false; +})) diff --git a/pkgs/tools/package-management/nix/2_26/tests/functional/package.nix b/pkgs/tools/package-management/nix/2_26/tests/functional/package.nix new file mode 100644 index 000000000000..d1582b05d145 --- /dev/null +++ b/pkgs/tools/package-management/nix/2_26/tests/functional/package.nix @@ -0,0 +1,103 @@ +{ lib +, stdenv +, mkMesonDerivation + +, meson +, ninja +, pkg-config + +, jq +, git +, mercurial +, util-linux + +, nix-store +, nix-expr +, nix-cli + +, busybox-sandbox-shell ? null + +# Configuration Options + +, pname ? "nix-functional-tests" +, version + +# For running the functional tests against a different pre-built Nix. +, test-daemon ? null +}: + +let + inherit (lib) fileset; +in + +mkMesonDerivation (finalAttrs: { + inherit pname version; + + workDir = ./.; + fileset = fileset.unions [ + ../../scripts/nix-profile.sh.in + ../../.version + ../../tests/functional + ./. + ]; + + # Hack for sake of the dev shell + passthru.externalNativeBuildInputs = [ + meson + ninja + pkg-config + + jq + git + mercurial + ] ++ lib.optionals stdenv.hostPlatform.isLinux [ + # For various sandboxing tests that needs a statically-linked shell, + # etc. + busybox-sandbox-shell + # For Overlay FS tests need `mount`, `umount`, and `unshare`. + # For `script` command (ensuring a TTY) + # TODO use `unixtools` to be precise over which executables instead? + util-linux + ]; + + nativeBuildInputs = finalAttrs.passthru.externalNativeBuildInputs ++ [ + nix-cli + ]; + + buildInputs = [ + nix-store + nix-expr + ]; + + preConfigure = + # "Inline" .version so it's not a symlink, and includes the suffix. + # Do the meson utils, without modification. + '' + chmod u+w ./.version + echo ${version} > ../../../.version + '' + # TEMP hack for Meson before make is gone, where + # `src/nix-functional-tests` is during the transition a symlink and + # not the actual directory directory. + + '' + cd $(readlink -e $PWD) + echo $PWD | grep tests/functional + ''; + + mesonCheckFlags = [ + "--print-errorlogs" + ]; + + doCheck = true; + + installPhase = '' + mkdir $out + ''; + + meta = { + platforms = lib.platforms.unix; + }; + +} // lib.optionalAttrs (test-daemon != null) { + NIX_DAEMON_PACKAGE = test-daemon; +}) From 0c89e259affea05b309877b2830cb3a8cb582046 Mon Sep 17 00:00:00 2001 From: Robert Hensing Date: Wed, 22 Jan 2025 14:42:35 +0100 Subject: [PATCH 02/10] nixVersions.nix_2_26: init --- .../nix/2_26/componentized.nix | 44 ++++ .../nix/2_26/dependencies.nix | 193 ++++++++++++++++++ .../nix/2_26/packaging/components.nix | 2 +- .../nix/2_26/src/libutil-tests/package.nix | 3 +- pkgs/tools/package-management/nix/default.nix | 4 + 5 files changed, 244 insertions(+), 2 deletions(-) create mode 100644 pkgs/tools/package-management/nix/2_26/componentized.nix create mode 100644 pkgs/tools/package-management/nix/2_26/dependencies.nix diff --git a/pkgs/tools/package-management/nix/2_26/componentized.nix b/pkgs/tools/package-management/nix/2_26/componentized.nix new file mode 100644 index 000000000000..2d9a3f46f146 --- /dev/null +++ b/pkgs/tools/package-management/nix/2_26/componentized.nix @@ -0,0 +1,44 @@ + +{ lib, fetchFromGitHub, splicePackages, generateSplicesForMkScope, newScope, pkgs, stdenv, + libgit2-thin-packfile, + ... }: +let + officialRelease = true; + src = fetchFromGitHub (builtins.fromJSON (builtins.readFile ./source.json)); + + # A new scope, so that we can use `callPackage` to inject our own interdependencies + # without "polluting" the top level "`pkgs`" attrset. + # This also has the benefit of providing us with a distinct set of packages + # we can iterate over. + nixComponents = + lib.makeScopeWithSplicing' + { + inherit splicePackages; + inherit (nixDependencies) newScope; + } + { + otherSplices = generateSplicesForMkScope "nixComponents"; + f = import ./packaging/components.nix { + inherit lib officialRelease src; + }; + }; + + # The dependencies are in their own scope, so that they don't have to be + # in Nixpkgs top level `pkgs` or `nixComponents`. + nixDependencies = + lib.makeScopeWithSplicing' + { + inherit splicePackages; + inherit newScope; # layered directly on pkgs, unlike nixComponents above + } + { + otherSplices = generateSplicesForMkScope "nixDependencies"; + f = import ./dependencies.nix { + inherit pkgs; + inherit stdenv; + inherit src; + inherit libgit2-thin-packfile; + }; + }; +in + nixComponents.nix-everything diff --git a/pkgs/tools/package-management/nix/2_26/dependencies.nix b/pkgs/tools/package-management/nix/2_26/dependencies.nix new file mode 100644 index 000000000000..2cfac6cb63e4 --- /dev/null +++ b/pkgs/tools/package-management/nix/2_26/dependencies.nix @@ -0,0 +1,193 @@ +# These overrides are applied to the dependencies of the Nix components. + +{ + src, + + # The raw Nixpkgs, not affected by this scope + pkgs, + + stdenv, + libgit2-thin-packfile, +}: + +let + prevStdenv = stdenv; +in + +let + inherit (pkgs) lib; + + root = ./.; + + stdenv = if prevStdenv.isDarwin && prevStdenv.isx86_64 + then darwinStdenv + else prevStdenv; + + # Fix the following error with the default x86_64-darwin SDK: + # + # error: aligned allocation function of type 'void *(std::size_t, std::align_val_t)' is only available on macOS 10.13 or newer + # + # Despite the use of the 10.13 deployment target here, the aligned + # allocation function Clang uses with this setting actually works + # all the way back to 10.6. + darwinStdenv = pkgs.overrideSDK prevStdenv { darwinMinVersion = "10.13"; }; + + resolveRelPath = p: lib.path.removePrefix root p; + resolvePath = p: src + "/${resolveRelPath p}"; + + # Indirection for Nixpkgs to override when package.nix files are vendored + # fileset filtering is not possible without IFD on src, so we ignore the fileset + # and produce a path containing _more_, but the extra files generally won't be + # accessed. + # The Nix flake uses fileset.toSource for this. + filesetToSource = { root, fileset }: resolvePath root; + + /** Given a set of layers, create a mkDerivation-like function */ + mkPackageBuilder = exts: userFn: + stdenv.mkDerivation (lib.extends (lib.composeManyExtensions exts) userFn); + + localSourceLayer = finalAttrs: prevAttrs: + let + workDirPath = + # Ideally we'd pick finalAttrs.workDir, but for now `mkDerivation` has + # the requirement that everything except passthru and meta must be + # serialized by mkDerivation, which doesn't work for this. + prevAttrs.workDir; + + workDirSubpath = resolveRelPath workDirPath; + # sources = assert prevAttrs.fileset._type == "fileset"; prevAttrs.fileset; + # src = lib.fileset.toSource { fileset = sources; inherit root; }; + + in + { + sourceRoot = "${src.name}/" + workDirSubpath; + inherit src; + + # Clear what `derivation` can't/shouldn't serialize; see prevAttrs.workDir. + fileset = null; + workDir = null; + }; + + mesonLayer = finalAttrs: prevAttrs: + { + # NOTE: + # As of https://github.com/NixOS/nixpkgs/blob/8baf8241cea0c7b30e0b8ae73474cb3de83c1a30/pkgs/by-name/me/meson/setup-hook.sh#L26, + # `mesonBuildType` defaults to `plain` if not specified. We want our Nix-built binaries to be optimized by default. + # More on build types here: https://mesonbuild.com/Builtin-options.html#details-for-buildtype. + mesonBuildType = "release"; + # NOTE: + # Users who are debugging Nix builds are expected to set the environment variable `mesonBuildType`, per the + # guidance in https://github.com/NixOS/nix/blob/8a3fc27f1b63a08ac983ee46435a56cf49ebaf4a/doc/manual/source/development/debugging.md?plain=1#L10. + # For this reason, we don't want to refer to `finalAttrs.mesonBuildType` here, but rather use the environment variable. + preConfigure = prevAttrs.preConfigure or "" + lib.optionalString ( + !stdenv.hostPlatform.isWindows + # build failure + && !stdenv.hostPlatform.isStatic + # LTO breaks exception handling on x86-64-darwin. + && stdenv.system != "x86_64-darwin" + ) '' + case "$mesonBuildType" in + release|minsize) appendToVar mesonFlags "-Db_lto=true" ;; + *) appendToVar mesonFlags "-Db_lto=false" ;; + esac + ''; + nativeBuildInputs = [ + pkgs.buildPackages.meson + pkgs.buildPackages.ninja + ] ++ prevAttrs.nativeBuildInputs or []; + mesonCheckFlags = prevAttrs.mesonCheckFlags or [] ++ [ + "--print-errorlogs" + ]; + }; + + mesonBuildLayer = finalAttrs: prevAttrs: + { + nativeBuildInputs = prevAttrs.nativeBuildInputs or [] ++ [ + pkgs.buildPackages.pkg-config + ]; + separateDebugInfo = !stdenv.hostPlatform.isStatic; + hardeningDisable = lib.optional stdenv.hostPlatform.isStatic "pie"; + env = prevAttrs.env or {} + // lib.optionalAttrs + (stdenv.isLinux + && !(stdenv.hostPlatform.isStatic && stdenv.system == "aarch64-linux") + && !(stdenv.hostPlatform.useLLVM or false)) + { LDFLAGS = "-fuse-ld=gold"; }; + }; + + mesonLibraryLayer = finalAttrs: prevAttrs: + { + outputs = prevAttrs.outputs or [ "out" ] ++ [ "dev" ]; + }; + + # Work around weird `--as-needed` linker behavior with BSD, see + # https://github.com/mesonbuild/meson/issues/3593 + bsdNoLinkAsNeeded = finalAttrs: prevAttrs: + lib.optionalAttrs stdenv.hostPlatform.isBSD { + mesonFlags = [ (lib.mesonBool "b_asneeded" false) ] ++ prevAttrs.mesonFlags or []; + }; + + miscGoodPractice = finalAttrs: prevAttrs: + { + strictDeps = prevAttrs.strictDeps or true; + enableParallelBuilding = true; + }; +in +scope: { + inherit stdenv; + inherit libgit2-thin-packfile; + + aws-sdk-cpp = (pkgs.aws-sdk-cpp.override { + apis = [ "s3" "transfer" ]; + customMemoryManagement = false; + }).overrideAttrs { + # only a stripped down version is built, which takes a lot less resources + # to build, so we don't need a "big-parallel" machine. + requiredSystemFeatures = [ ]; + }; + + boehmgc = pkgs.boehmgc.override { + enableLargeConfig = true; + }; + + # TODO Hack until https://github.com/NixOS/nixpkgs/issues/45462 is fixed. + boost = (pkgs.boost.override { + extraB2Args = [ + "--with-container" + "--with-context" + "--with-coroutine" + ]; + }).overrideAttrs (old: { + # Need to remove `--with-*` to use `--with-libraries=...` + buildPhase = lib.replaceStrings [ "--without-python" ] [ "" ] old.buildPhase; + installPhase = lib.replaceStrings [ "--without-python" ] [ "" ] old.installPhase; + }); + + libgit2 = libgit2-thin-packfile; + + inherit resolvePath filesetToSource; + + mkMesonDerivation = + mkPackageBuilder [ + miscGoodPractice + localSourceLayer + mesonLayer + ]; + mkMesonExecutable = + mkPackageBuilder [ + miscGoodPractice + bsdNoLinkAsNeeded + localSourceLayer + mesonLayer + mesonBuildLayer + ]; + mkMesonLibrary = + mkPackageBuilder [ + miscGoodPractice + bsdNoLinkAsNeeded + localSourceLayer + mesonLayer + mesonBuildLayer + mesonLibraryLayer + ]; +} diff --git a/pkgs/tools/package-management/nix/2_26/packaging/components.nix b/pkgs/tools/package-management/nix/2_26/packaging/components.nix index e1f661be8fbc..bd9d5687a71c 100644 --- a/pkgs/tools/package-management/nix/2_26/packaging/components.nix +++ b/pkgs/tools/package-management/nix/2_26/packaging/components.nix @@ -54,7 +54,7 @@ in nix-cli = callPackage ../src/nix/package.nix { version = fineVersion; }; - nix-functional-tests = callPackage ../src/nix-functional-tests/package.nix { version = fineVersion; }; + nix-functional-tests = callPackage ../tests/functional/package.nix { version = fineVersion; }; nix-manual = callPackage ../doc/manual/package.nix { version = fineVersion; }; nix-internal-api-docs = callPackage ../src/internal-api-docs/package.nix { version = fineVersion; }; diff --git a/pkgs/tools/package-management/nix/2_26/src/libutil-tests/package.nix b/pkgs/tools/package-management/nix/2_26/src/libutil-tests/package.nix index 28769e115224..e5805ec3968e 100644 --- a/pkgs/tools/package-management/nix/2_26/src/libutil-tests/package.nix +++ b/pkgs/tools/package-management/nix/2_26/src/libutil-tests/package.nix @@ -14,6 +14,7 @@ # Configuration Options , version +, resolvePath }: let @@ -63,7 +64,7 @@ mkMesonExecutable (finalAttrs: { export HOME="$PWD/home-dir" mkdir -p "$HOME" '' + '' - export _NIX_TEST_UNIT_DATA=${./data} + export _NIX_TEST_UNIT_DATA=${resolvePath ./data} ${stdenv.hostPlatform.emulator buildPackages} ${lib.getExe finalAttrs.finalPackage} touch $out ''); diff --git a/pkgs/tools/package-management/nix/default.nix b/pkgs/tools/package-management/nix/default.nix index 548adcb8d7a7..20d545b79874 100644 --- a/pkgs/tools/package-management/nix/default.nix +++ b/pkgs/tools/package-management/nix/default.nix @@ -160,6 +160,10 @@ in lib.makeExtensible (self: ({ self_attribute_name = "nix_2_25"; }; + nix_2_26 = callPackage ./2_26/componentized.nix { + inherit libgit2-thin-packfile; + }; + git = common rec { version = "2.25.0"; suffix = "pre20241101_${lib.substring 0 8 src.rev}"; From 062c34cdace499aa44f0fa6ca6f2ca71769f6c43 Mon Sep 17 00:00:00 2001 From: Robert Hensing Date: Wed, 22 Jan 2025 14:51:18 +0100 Subject: [PATCH 03/10] Format --- .../nix/2_26/componentized.nix | 15 +- .../nix/2_26/dependencies.nix | 218 +++++++++--------- .../nix/2_26/doc/manual/package.nix | 60 ++--- .../nix/2_26/packaging/components.nix | 8 +- .../nix/2_26/packaging/everything.nix | 183 ++++++++------- .../2_26/src/external-api-docs/package.nix | 20 +- .../2_26/src/internal-api-docs/package.nix | 44 ++-- .../nix/2_26/src/libcmd/package.nix | 49 ++-- .../nix/2_26/src/libexpr-c/package.nix | 13 +- .../2_26/src/libexpr-test-support/package.nix | 17 +- .../nix/2_26/src/libexpr-tests/package.nix | 53 +++-- .../nix/2_26/src/libexpr/package.nix | 56 +++-- .../2_26/src/libfetchers-tests/package.nix | 51 ++-- .../nix/2_26/src/libfetchers/package.nix | 17 +- .../nix/2_26/src/libflake-c/package.nix | 15 +- .../nix/2_26/src/libflake-tests/package.nix | 55 +++-- .../nix/2_26/src/libflake/package.nix | 19 +- .../nix/2_26/src/libmain-c/package.nix | 17 +- .../nix/2_26/src/libmain/package.nix | 15 +- .../nix/2_26/src/libstore-c/package.nix | 13 +- .../src/libstore-test-support/package.nix | 17 +- .../nix/2_26/src/libstore-tests/package.nix | 76 +++--- .../nix/2_26/src/libstore/package.nix | 68 +++--- .../nix/2_26/src/libutil-c/package.nix | 11 +- .../2_26/src/libutil-test-support/package.nix | 15 +- .../nix/2_26/src/libutil-tests/package.nix | 53 +++-- .../nix/2_26/src/libutil/package.nix | 28 +-- .../nix/2_26/src/nix/package.nix | 132 ++++++----- .../nix/2_26/src/perl/package.nix | 126 +++++----- .../nix/2_26/tests/functional/package.nix | 169 +++++++------- 30 files changed, 870 insertions(+), 763 deletions(-) diff --git a/pkgs/tools/package-management/nix/2_26/componentized.nix b/pkgs/tools/package-management/nix/2_26/componentized.nix index 2d9a3f46f146..9dbf54392fb4 100644 --- a/pkgs/tools/package-management/nix/2_26/componentized.nix +++ b/pkgs/tools/package-management/nix/2_26/componentized.nix @@ -1,7 +1,14 @@ - -{ lib, fetchFromGitHub, splicePackages, generateSplicesForMkScope, newScope, pkgs, stdenv, +{ + lib, + fetchFromGitHub, + splicePackages, + generateSplicesForMkScope, + newScope, + pkgs, + stdenv, libgit2-thin-packfile, - ... }: + ... +}: let officialRelease = true; src = fetchFromGitHub (builtins.fromJSON (builtins.readFile ./source.json)); @@ -41,4 +48,4 @@ let }; }; in - nixComponents.nix-everything +nixComponents.nix-everything diff --git a/pkgs/tools/package-management/nix/2_26/dependencies.nix b/pkgs/tools/package-management/nix/2_26/dependencies.nix index 2cfac6cb63e4..e226384f2acf 100644 --- a/pkgs/tools/package-management/nix/2_26/dependencies.nix +++ b/pkgs/tools/package-management/nix/2_26/dependencies.nix @@ -19,9 +19,7 @@ let root = ./.; - stdenv = if prevStdenv.isDarwin && prevStdenv.isx86_64 - then darwinStdenv - else prevStdenv; + stdenv = if prevStdenv.isDarwin && prevStdenv.isx86_64 then darwinStdenv else prevStdenv; # Fix the following error with the default x86_64-darwin SDK: # @@ -42,11 +40,14 @@ let # The Nix flake uses fileset.toSource for this. filesetToSource = { root, fileset }: resolvePath root; - /** Given a set of layers, create a mkDerivation-like function */ - mkPackageBuilder = exts: userFn: - stdenv.mkDerivation (lib.extends (lib.composeManyExtensions exts) userFn); + /** + Given a set of layers, create a mkDerivation-like function + */ + mkPackageBuilder = + exts: userFn: stdenv.mkDerivation (lib.extends (lib.composeManyExtensions exts) userFn); - localSourceLayer = finalAttrs: prevAttrs: + localSourceLayer = + finalAttrs: prevAttrs: let workDirPath = # Ideally we'd pick finalAttrs.workDir, but for now `mkDerivation` has @@ -68,126 +69,133 @@ let workDir = null; }; - mesonLayer = finalAttrs: prevAttrs: - { - # NOTE: - # As of https://github.com/NixOS/nixpkgs/blob/8baf8241cea0c7b30e0b8ae73474cb3de83c1a30/pkgs/by-name/me/meson/setup-hook.sh#L26, - # `mesonBuildType` defaults to `plain` if not specified. We want our Nix-built binaries to be optimized by default. - # More on build types here: https://mesonbuild.com/Builtin-options.html#details-for-buildtype. - mesonBuildType = "release"; - # NOTE: - # Users who are debugging Nix builds are expected to set the environment variable `mesonBuildType`, per the - # guidance in https://github.com/NixOS/nix/blob/8a3fc27f1b63a08ac983ee46435a56cf49ebaf4a/doc/manual/source/development/debugging.md?plain=1#L10. - # For this reason, we don't want to refer to `finalAttrs.mesonBuildType` here, but rather use the environment variable. - preConfigure = prevAttrs.preConfigure or "" + lib.optionalString ( - !stdenv.hostPlatform.isWindows - # build failure - && !stdenv.hostPlatform.isStatic - # LTO breaks exception handling on x86-64-darwin. - && stdenv.system != "x86_64-darwin" - ) '' - case "$mesonBuildType" in - release|minsize) appendToVar mesonFlags "-Db_lto=true" ;; - *) appendToVar mesonFlags "-Db_lto=false" ;; - esac - ''; - nativeBuildInputs = [ - pkgs.buildPackages.meson - pkgs.buildPackages.ninja - ] ++ prevAttrs.nativeBuildInputs or []; - mesonCheckFlags = prevAttrs.mesonCheckFlags or [] ++ [ - "--print-errorlogs" - ]; - }; + mesonLayer = finalAttrs: prevAttrs: { + # NOTE: + # As of https://github.com/NixOS/nixpkgs/blob/8baf8241cea0c7b30e0b8ae73474cb3de83c1a30/pkgs/by-name/me/meson/setup-hook.sh#L26, + # `mesonBuildType` defaults to `plain` if not specified. We want our Nix-built binaries to be optimized by default. + # More on build types here: https://mesonbuild.com/Builtin-options.html#details-for-buildtype. + mesonBuildType = "release"; + # NOTE: + # Users who are debugging Nix builds are expected to set the environment variable `mesonBuildType`, per the + # guidance in https://github.com/NixOS/nix/blob/8a3fc27f1b63a08ac983ee46435a56cf49ebaf4a/doc/manual/source/development/debugging.md?plain=1#L10. + # For this reason, we don't want to refer to `finalAttrs.mesonBuildType` here, but rather use the environment variable. + preConfigure = + prevAttrs.preConfigure or "" + + + lib.optionalString + ( + !stdenv.hostPlatform.isWindows + # build failure + && !stdenv.hostPlatform.isStatic + # LTO breaks exception handling on x86-64-darwin. + && stdenv.system != "x86_64-darwin" + ) + '' + case "$mesonBuildType" in + release|minsize) appendToVar mesonFlags "-Db_lto=true" ;; + *) appendToVar mesonFlags "-Db_lto=false" ;; + esac + ''; + nativeBuildInputs = [ + pkgs.buildPackages.meson + pkgs.buildPackages.ninja + ] ++ prevAttrs.nativeBuildInputs or [ ]; + mesonCheckFlags = prevAttrs.mesonCheckFlags or [ ] ++ [ + "--print-errorlogs" + ]; + }; - mesonBuildLayer = finalAttrs: prevAttrs: - { - nativeBuildInputs = prevAttrs.nativeBuildInputs or [] ++ [ - pkgs.buildPackages.pkg-config - ]; - separateDebugInfo = !stdenv.hostPlatform.isStatic; - hardeningDisable = lib.optional stdenv.hostPlatform.isStatic "pie"; - env = prevAttrs.env or {} - // lib.optionalAttrs - (stdenv.isLinux - && !(stdenv.hostPlatform.isStatic && stdenv.system == "aarch64-linux") - && !(stdenv.hostPlatform.useLLVM or false)) - { LDFLAGS = "-fuse-ld=gold"; }; - }; + mesonBuildLayer = finalAttrs: prevAttrs: { + nativeBuildInputs = prevAttrs.nativeBuildInputs or [ ] ++ [ + pkgs.buildPackages.pkg-config + ]; + separateDebugInfo = !stdenv.hostPlatform.isStatic; + hardeningDisable = lib.optional stdenv.hostPlatform.isStatic "pie"; + env = + prevAttrs.env or { } + // lib.optionalAttrs ( + stdenv.isLinux + && !(stdenv.hostPlatform.isStatic && stdenv.system == "aarch64-linux") + && !(stdenv.hostPlatform.useLLVM or false) + ) { LDFLAGS = "-fuse-ld=gold"; }; + }; - mesonLibraryLayer = finalAttrs: prevAttrs: - { - outputs = prevAttrs.outputs or [ "out" ] ++ [ "dev" ]; - }; + mesonLibraryLayer = finalAttrs: prevAttrs: { + outputs = prevAttrs.outputs or [ "out" ] ++ [ "dev" ]; + }; # Work around weird `--as-needed` linker behavior with BSD, see # https://github.com/mesonbuild/meson/issues/3593 - bsdNoLinkAsNeeded = finalAttrs: prevAttrs: + bsdNoLinkAsNeeded = + finalAttrs: prevAttrs: lib.optionalAttrs stdenv.hostPlatform.isBSD { - mesonFlags = [ (lib.mesonBool "b_asneeded" false) ] ++ prevAttrs.mesonFlags or []; + mesonFlags = [ (lib.mesonBool "b_asneeded" false) ] ++ prevAttrs.mesonFlags or [ ]; }; - miscGoodPractice = finalAttrs: prevAttrs: - { - strictDeps = prevAttrs.strictDeps or true; - enableParallelBuilding = true; - }; + miscGoodPractice = finalAttrs: prevAttrs: { + strictDeps = prevAttrs.strictDeps or true; + enableParallelBuilding = true; + }; in scope: { inherit stdenv; inherit libgit2-thin-packfile; - aws-sdk-cpp = (pkgs.aws-sdk-cpp.override { - apis = [ "s3" "transfer" ]; - customMemoryManagement = false; - }).overrideAttrs { - # only a stripped down version is built, which takes a lot less resources - # to build, so we don't need a "big-parallel" machine. - requiredSystemFeatures = [ ]; - }; + aws-sdk-cpp = + (pkgs.aws-sdk-cpp.override { + apis = [ + "s3" + "transfer" + ]; + customMemoryManagement = false; + }).overrideAttrs + { + # only a stripped down version is built, which takes a lot less resources + # to build, so we don't need a "big-parallel" machine. + requiredSystemFeatures = [ ]; + }; boehmgc = pkgs.boehmgc.override { enableLargeConfig = true; }; # TODO Hack until https://github.com/NixOS/nixpkgs/issues/45462 is fixed. - boost = (pkgs.boost.override { - extraB2Args = [ - "--with-container" - "--with-context" - "--with-coroutine" - ]; - }).overrideAttrs (old: { - # Need to remove `--with-*` to use `--with-libraries=...` - buildPhase = lib.replaceStrings [ "--without-python" ] [ "" ] old.buildPhase; - installPhase = lib.replaceStrings [ "--without-python" ] [ "" ] old.installPhase; - }); + boost = + (pkgs.boost.override { + extraB2Args = [ + "--with-container" + "--with-context" + "--with-coroutine" + ]; + }).overrideAttrs + (old: { + # Need to remove `--with-*` to use `--with-libraries=...` + buildPhase = lib.replaceStrings [ "--without-python" ] [ "" ] old.buildPhase; + installPhase = lib.replaceStrings [ "--without-python" ] [ "" ] old.installPhase; + }); libgit2 = libgit2-thin-packfile; inherit resolvePath filesetToSource; - mkMesonDerivation = - mkPackageBuilder [ - miscGoodPractice - localSourceLayer - mesonLayer - ]; - mkMesonExecutable = - mkPackageBuilder [ - miscGoodPractice - bsdNoLinkAsNeeded - localSourceLayer - mesonLayer - mesonBuildLayer - ]; - mkMesonLibrary = - mkPackageBuilder [ - miscGoodPractice - bsdNoLinkAsNeeded - localSourceLayer - mesonLayer - mesonBuildLayer - mesonLibraryLayer - ]; + mkMesonDerivation = mkPackageBuilder [ + miscGoodPractice + localSourceLayer + mesonLayer + ]; + mkMesonExecutable = mkPackageBuilder [ + miscGoodPractice + bsdNoLinkAsNeeded + localSourceLayer + mesonLayer + mesonBuildLayer + ]; + mkMesonLibrary = mkPackageBuilder [ + miscGoodPractice + bsdNoLinkAsNeeded + localSourceLayer + mesonLayer + mesonBuildLayer + mesonLibraryLayer + ]; } diff --git a/pkgs/tools/package-management/nix/2_26/doc/manual/package.nix b/pkgs/tools/package-management/nix/2_26/doc/manual/package.nix index f8133f2e1dd1..8f5d0dfe1370 100644 --- a/pkgs/tools/package-management/nix/2_26/doc/manual/package.nix +++ b/pkgs/tools/package-management/nix/2_26/doc/manual/package.nix @@ -1,19 +1,20 @@ -{ lib -, mkMesonDerivation +{ + lib, + mkMesonDerivation, -, meson -, ninja -, lowdown-unsandboxed -, mdbook -, mdbook-linkcheck -, jq -, python3 -, rsync -, nix-cli + meson, + ninja, + lowdown-unsandboxed, + mdbook, + mdbook-linkcheck, + jq, + python3, + rsync, + nix-cli, -# Configuration Options + # Configuration Options -, version + version, }: let @@ -25,18 +26,22 @@ mkMesonDerivation (finalAttrs: { inherit version; workDir = ./.; - fileset = fileset.difference - (fileset.unions [ - ../../.version - # Too many different types of files to filter for now - ../../doc/manual - ./. - ]) - # Do a blacklist instead - ../../doc/manual/package.nix; + fileset = + fileset.difference + (fileset.unions [ + ../../.version + # Too many different types of files to filter for now + ../../doc/manual + ./. + ]) + # Do a blacklist instead + ../../doc/manual/package.nix; # TODO the man pages should probably be separate - outputs = [ "out" "man" ]; + outputs = [ + "out" + "man" + ]; # Hack for sake of the dev shell passthru.externalNativeBuildInputs = [ @@ -54,11 +59,10 @@ mkMesonDerivation (finalAttrs: { nix-cli ]; - preConfigure = - '' - chmod u+w ./.version - echo ${finalAttrs.version} > ./.version - ''; + preConfigure = '' + chmod u+w ./.version + echo ${finalAttrs.version} > ./.version + ''; postInstall = '' mkdir -p ''$out/nix-support diff --git a/pkgs/tools/package-management/nix/2_26/packaging/components.nix b/pkgs/tools/package-management/nix/2_26/packaging/components.nix index bd9d5687a71c..57932617f827 100644 --- a/pkgs/tools/package-management/nix/2_26/packaging/components.nix +++ b/pkgs/tools/package-management/nix/2_26/packaging/components.nix @@ -13,9 +13,11 @@ let versionSuffix = lib.optionalString (!officialRelease) "pre"; - fineVersionSuffix = lib.optionalString - (!officialRelease) - "pre${builtins.substring 0 8 (src.lastModifiedDate or src.lastModified or "19700101")}_${src.shortRev or "dirty"}"; + fineVersionSuffix = + lib.optionalString (!officialRelease) + "pre${ + builtins.substring 0 8 (src.lastModifiedDate or src.lastModified or "19700101") + }_${src.shortRev or "dirty"}"; fineVersion = baseVersion + fineVersionSuffix; in diff --git a/pkgs/tools/package-management/nix/2_26/packaging/everything.nix b/pkgs/tools/package-management/nix/2_26/packaging/everything.nix index 7ca878d8d535..2b47c31bbf54 100644 --- a/pkgs/tools/package-management/nix/2_26/packaging/everything.nix +++ b/pkgs/tools/package-management/nix/2_26/packaging/everything.nix @@ -42,27 +42,31 @@ }: let - libs = { - inherit - nix-util - nix-util-c - nix-store - nix-store-c - nix-fetchers - nix-expr - nix-expr-c - nix-flake - nix-flake-c - nix-main - nix-main-c - nix-cmd - ; - } // lib.optionalAttrs (!stdenv.hostPlatform.isStatic && stdenv.buildPlatform.canExecute stdenv.hostPlatform) { - # Currently fails in static build - inherit - nix-perl-bindings - ; - }; + libs = + { + inherit + nix-util + nix-util-c + nix-store + nix-store-c + nix-fetchers + nix-expr + nix-expr-c + nix-flake + nix-flake-c + nix-main + nix-main-c + nix-cmd + ; + } + // lib.optionalAttrs + (!stdenv.hostPlatform.isStatic && stdenv.buildPlatform.canExecute stdenv.hostPlatform) + { + # Currently fails in static build + inherit + nix-perl-bindings + ; + }; dev = stdenv.mkDerivation (finalAttrs: { name = "nix-${nix-cli.version}-dev"; @@ -77,10 +81,9 @@ let ''; passthru = { tests = { - pkg-config = - testers.hasPkgConfigModules { - package = finalAttrs.finalPackage; - }; + pkg-config = testers.hasPkgConfigModules { + package = finalAttrs.finalPackage; + }; }; # If we were to fully emulate output selection here, we'd confuse the Nix CLIs, @@ -123,70 +126,84 @@ in ]; meta.mainProgram = "nix"; -}).overrideAttrs (finalAttrs: prevAttrs: { - doCheck = true; - doInstallCheck = true; +}).overrideAttrs + ( + finalAttrs: prevAttrs: { + doCheck = true; + doInstallCheck = true; - checkInputs = [ - # Make sure the unit tests have passed - nix-util-tests.tests.run - nix-store-tests.tests.run - nix-expr-tests.tests.run - nix-fetchers-tests.tests.run - nix-flake-tests.tests.run + checkInputs = + [ + # Make sure the unit tests have passed + nix-util-tests.tests.run + nix-store-tests.tests.run + nix-expr-tests.tests.run + nix-fetchers-tests.tests.run + nix-flake-tests.tests.run - # Make sure the functional tests have passed - nix-functional-tests + # Make sure the functional tests have passed + nix-functional-tests - # dev bundle is ok - # (checkInputs must be empty paths??) - (runCommand "check-pkg-config" { checked = dev.tests.pkg-config; } "mkdir $out") - ] ++ lib.optionals (!stdenv.hostPlatform.isStatic && stdenv.buildPlatform.canExecute stdenv.hostPlatform) [ - # Perl currently fails in static build - # TODO: Split out tests into a separate derivation? - nix-perl-bindings - ]; - passthru = prevAttrs.passthru // { - inherit (nix-cli) version; + # dev bundle is ok + # (checkInputs must be empty paths??) + (runCommand "check-pkg-config" { checked = dev.tests.pkg-config; } "mkdir $out") + ] + ++ lib.optionals + (!stdenv.hostPlatform.isStatic && stdenv.buildPlatform.canExecute stdenv.hostPlatform) + [ + # Perl currently fails in static build + # TODO: Split out tests into a separate derivation? + nix-perl-bindings + ]; + passthru = prevAttrs.passthru // { + inherit (nix-cli) version; - /** - These are the libraries that are part of the Nix project. They are used - by the Nix CLI and other tools. + /** + These are the libraries that are part of the Nix project. They are used + by the Nix CLI and other tools. - If you need to use these libraries in your project, we recommend to use - the `-c` C API libraries exclusively, if possible. + If you need to use these libraries in your project, we recommend to use + the `-c` C API libraries exclusively, if possible. - We also recommend that you build the complete package to ensure that the unit tests pass. - You could do this in CI, or by passing it in an unused environment variable. e.g in a `mkDerivation` call: + We also recommend that you build the complete package to ensure that the unit tests pass. + You could do this in CI, or by passing it in an unused environment variable. e.g in a `mkDerivation` call: - ```nix - buildInputs = [ nix.libs.nix-util-c nix.libs.nix-store-c ]; - # Make sure the nix libs we use are ok - unusedInputsForTests = [ nix ]; - disallowedReferences = nix.all; - ``` - */ - inherit libs; + ```nix + buildInputs = [ nix.libs.nix-util-c nix.libs.nix-store-c ]; + # Make sure the nix libs we use are ok + unusedInputsForTests = [ nix ]; + disallowedReferences = nix.all; + ``` + */ + inherit libs; - tests = prevAttrs.passthru.tests or {} // { - # TODO: create a proper fixpoint and: - # pkg-config = - # testers.hasPkgConfigModules { - # package = finalPackage; - # }; - }; + tests = prevAttrs.passthru.tests or { } // { + # TODO: create a proper fixpoint and: + # pkg-config = + # testers.hasPkgConfigModules { + # package = finalPackage; + # }; + }; - /** - A derivation referencing the `dev` outputs of the Nix libraries. - */ - inherit dev; - inherit devdoc; - doc = nix-manual; - outputs = [ "out" "dev" "devdoc" "doc" ]; - all = lib.attrValues (lib.genAttrs finalAttrs.passthru.outputs (outName: finalAttrs.finalPackage.${outName})); - }; - meta = prevAttrs.meta // { - description = "The Nix package manager"; - pkgConfigModules = dev.meta.pkgConfigModules; - }; -}) + /** + A derivation referencing the `dev` outputs of the Nix libraries. + */ + inherit dev; + inherit devdoc; + doc = nix-manual; + outputs = [ + "out" + "dev" + "devdoc" + "doc" + ]; + all = lib.attrValues ( + lib.genAttrs finalAttrs.passthru.outputs (outName: finalAttrs.finalPackage.${outName}) + ); + }; + meta = prevAttrs.meta // { + description = "The Nix package manager"; + pkgConfigModules = dev.meta.pkgConfigModules; + }; + } + ) diff --git a/pkgs/tools/package-management/nix/2_26/src/external-api-docs/package.nix b/pkgs/tools/package-management/nix/2_26/src/external-api-docs/package.nix index 57c5138cfdb4..b194e16d4608 100644 --- a/pkgs/tools/package-management/nix/2_26/src/external-api-docs/package.nix +++ b/pkgs/tools/package-management/nix/2_26/src/external-api-docs/package.nix @@ -1,11 +1,12 @@ -{ lib -, mkMesonDerivation +{ + lib, + mkMesonDerivation, -, doxygen + doxygen, -# Configuration Options + # Configuration Options -, version + version, }: let @@ -39,11 +40,10 @@ mkMesonDerivation (finalAttrs: { doxygen ]; - preConfigure = - '' - chmod u+w ./.version - echo ${finalAttrs.version} > ./.version - ''; + preConfigure = '' + chmod u+w ./.version + echo ${finalAttrs.version} > ./.version + ''; postInstall = '' mkdir -p ''${!outputDoc}/nix-support diff --git a/pkgs/tools/package-management/nix/2_26/src/internal-api-docs/package.nix b/pkgs/tools/package-management/nix/2_26/src/internal-api-docs/package.nix index 993a257a69f3..6c4f354aee5c 100644 --- a/pkgs/tools/package-management/nix/2_26/src/internal-api-docs/package.nix +++ b/pkgs/tools/package-management/nix/2_26/src/internal-api-docs/package.nix @@ -1,11 +1,12 @@ -{ lib -, mkMesonDerivation +{ + lib, + mkMesonDerivation, -, doxygen + doxygen, -# Configuration Options + # Configuration Options -, version + version, }: let @@ -17,27 +18,28 @@ mkMesonDerivation (finalAttrs: { inherit version; workDir = ./.; - fileset = let - cpp = fileset.fileFilter (file: file.hasExt "cc" || file.hasExt "hh"); - in fileset.unions [ - ./.version - ../../.version - ./meson.build - ./doxygen.cfg.in - # Source is not compiled, but still must be available for Doxygen - # to gather comments. - (cpp ../.) - ]; + fileset = + let + cpp = fileset.fileFilter (file: file.hasExt "cc" || file.hasExt "hh"); + in + fileset.unions [ + ./.version + ../../.version + ./meson.build + ./doxygen.cfg.in + # Source is not compiled, but still must be available for Doxygen + # to gather comments. + (cpp ../.) + ]; nativeBuildInputs = [ doxygen ]; - preConfigure = - '' - chmod u+w ./.version - echo ${finalAttrs.version} > ./.version - ''; + preConfigure = '' + chmod u+w ./.version + echo ${finalAttrs.version} > ./.version + ''; postInstall = '' mkdir -p ''${!outputDoc}/nix-support diff --git a/pkgs/tools/package-management/nix/2_26/src/libcmd/package.nix b/pkgs/tools/package-management/nix/2_26/src/libcmd/package.nix index 5cafb4dc100c..d155d9f1e620 100644 --- a/pkgs/tools/package-management/nix/2_26/src/libcmd/package.nix +++ b/pkgs/tools/package-management/nix/2_26/src/libcmd/package.nix @@ -1,32 +1,33 @@ -{ lib -, stdenv -, mkMesonLibrary +{ + lib, + stdenv, + mkMesonLibrary, -, nix-util -, nix-store -, nix-fetchers -, nix-expr -, nix-flake -, nix-main -, editline -, readline -, lowdown -, nlohmann_json + nix-util, + nix-store, + nix-fetchers, + nix-expr, + nix-flake, + nix-main, + editline, + readline, + lowdown, + nlohmann_json, -# Configuration Options + # Configuration Options -, version + version, -# Whether to enable Markdown rendering in the Nix binary. -, enableMarkdown ? !stdenv.hostPlatform.isWindows + # Whether to enable Markdown rendering in the Nix binary. + enableMarkdown ? !stdenv.hostPlatform.isWindows, -# Which interactive line editor library to use for Nix's repl. -# -# Currently supported choices are: -# -# - editline (default) -# - readline -, readlineFlavor ? if stdenv.hostPlatform.isWindows then "readline" else "editline" + # Which interactive line editor library to use for Nix's repl. + # + # Currently supported choices are: + # + # - editline (default) + # - readline + readlineFlavor ? if stdenv.hostPlatform.isWindows then "readline" else "editline", }: let diff --git a/pkgs/tools/package-management/nix/2_26/src/libexpr-c/package.nix b/pkgs/tools/package-management/nix/2_26/src/libexpr-c/package.nix index 5047f3e2e9ab..ad1ea371c2d7 100644 --- a/pkgs/tools/package-management/nix/2_26/src/libexpr-c/package.nix +++ b/pkgs/tools/package-management/nix/2_26/src/libexpr-c/package.nix @@ -1,12 +1,13 @@ -{ lib -, mkMesonLibrary +{ + lib, + mkMesonLibrary, -, nix-store-c -, nix-expr + nix-store-c, + nix-expr, -# Configuration Options + # Configuration Options -, version + version, }: let diff --git a/pkgs/tools/package-management/nix/2_26/src/libexpr-test-support/package.nix b/pkgs/tools/package-management/nix/2_26/src/libexpr-test-support/package.nix index 48118fa0c758..5628d606a452 100644 --- a/pkgs/tools/package-management/nix/2_26/src/libexpr-test-support/package.nix +++ b/pkgs/tools/package-management/nix/2_26/src/libexpr-test-support/package.nix @@ -1,15 +1,16 @@ -{ lib -, mkMesonLibrary +{ + lib, + mkMesonLibrary, -, nix-store-test-support -, nix-expr -, nix-expr-c + nix-store-test-support, + nix-expr, + nix-expr-c, -, rapidcheck + rapidcheck, -# Configuration Options + # Configuration Options -, version + version, }: let diff --git a/pkgs/tools/package-management/nix/2_26/src/libexpr-tests/package.nix b/pkgs/tools/package-management/nix/2_26/src/libexpr-tests/package.nix index a4a3bb0e7ecd..bb5acb7c873d 100644 --- a/pkgs/tools/package-management/nix/2_26/src/libexpr-tests/package.nix +++ b/pkgs/tools/package-management/nix/2_26/src/libexpr-tests/package.nix @@ -1,20 +1,21 @@ -{ lib -, buildPackages -, stdenv -, mkMesonExecutable +{ + lib, + buildPackages, + stdenv, + mkMesonExecutable, -, nix-expr -, nix-expr-c -, nix-expr-test-support + nix-expr, + nix-expr-c, + nix-expr-test-support, -, rapidcheck -, gtest -, runCommand + rapidcheck, + gtest, + runCommand, -# Configuration Options + # Configuration Options -, version -, resolvePath + version, + resolvePath, }: let @@ -58,16 +59,22 @@ mkMesonExecutable (finalAttrs: { passthru = { tests = { - run = runCommand "${finalAttrs.pname}-run" { - 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} - ${stdenv.hostPlatform.emulator buildPackages} ${lib.getExe finalAttrs.finalPackage} - touch $out - ''); + run = + runCommand "${finalAttrs.pname}-run" + { + 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} + ${stdenv.hostPlatform.emulator buildPackages} ${lib.getExe finalAttrs.finalPackage} + touch $out + '' + ); }; }; diff --git a/pkgs/tools/package-management/nix/2_26/src/libexpr/package.nix b/pkgs/tools/package-management/nix/2_26/src/libexpr/package.nix index 3d5b78e35f2d..afd01c3846e9 100644 --- a/pkgs/tools/package-management/nix/2_26/src/libexpr/package.nix +++ b/pkgs/tools/package-management/nix/2_26/src/libexpr/package.nix @@ -1,33 +1,34 @@ -{ lib -, stdenv -, mkMesonLibrary +{ + lib, + stdenv, + mkMesonLibrary, -, bison -, flex -, cmake # for resolving toml11 dep + bison, + flex, + cmake, # for resolving toml11 dep -, nix-util -, nix-store -, nix-fetchers -, boost -, boehmgc -, nlohmann_json -, toml11 + nix-util, + nix-store, + nix-fetchers, + boost, + boehmgc, + nlohmann_json, + toml11, -# Configuration Options + # Configuration Options -, version + version, -# Whether to use garbage collection for the Nix language evaluator. -# -# If it is disabled, we just leak memory, but this is not as bad as it -# sounds so long as evaluation just takes places within short-lived -# processes. (When the process exits, the memory is reclaimed; it is -# only leaked *within* the process.) -# -# Temporarily disabled on Windows because the `GC_throw_bad_alloc` -# symbol is missing during linking. -, enableGC ? !stdenv.hostPlatform.isWindows + # Whether to use garbage collection for the Nix language evaluator. + # + # If it is disabled, we just leak memory, but this is not as bad as it + # sounds so long as evaluation just takes places within short-lived + # processes. (When the process exits, the memory is reclaimed; it is + # only leaked *within* the process.) + # + # Temporarily disabled on Windows because the `GC_throw_bad_alloc` + # symbol is missing during linking. + enableGC ? !stdenv.hostPlatform.isWindows, }: let @@ -51,10 +52,7 @@ mkMesonLibrary (finalAttrs: { (fileset.fileFilter (file: file.hasExt "hh") ./.) ./lexer.l ./parser.y - (fileset.difference - (fileset.fileFilter (file: file.hasExt "nix") ./.) - ./package.nix - ) + (fileset.difference (fileset.fileFilter (file: file.hasExt "nix") ./.) ./package.nix) ]; nativeBuildInputs = [ diff --git a/pkgs/tools/package-management/nix/2_26/src/libfetchers-tests/package.nix b/pkgs/tools/package-management/nix/2_26/src/libfetchers-tests/package.nix index 5336672a2221..f2680e9b3c1f 100644 --- a/pkgs/tools/package-management/nix/2_26/src/libfetchers-tests/package.nix +++ b/pkgs/tools/package-management/nix/2_26/src/libfetchers-tests/package.nix @@ -1,19 +1,20 @@ -{ lib -, buildPackages -, stdenv -, mkMesonExecutable +{ + lib, + buildPackages, + stdenv, + mkMesonExecutable, -, nix-fetchers -, nix-store-test-support + nix-fetchers, + nix-store-test-support, -, rapidcheck -, gtest -, runCommand + rapidcheck, + gtest, + runCommand, -# Configuration Options + # Configuration Options -, version -, resolvePath + version, + resolvePath, }: let @@ -56,16 +57,22 @@ mkMesonExecutable (finalAttrs: { passthru = { tests = { - run = runCommand "${finalAttrs.pname}-run" { - 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} - ${stdenv.hostPlatform.emulator buildPackages} ${lib.getExe finalAttrs.finalPackage} - touch $out - ''); + run = + runCommand "${finalAttrs.pname}-run" + { + 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} + ${stdenv.hostPlatform.emulator buildPackages} ${lib.getExe finalAttrs.finalPackage} + touch $out + '' + ); }; }; diff --git a/pkgs/tools/package-management/nix/2_26/src/libfetchers/package.nix b/pkgs/tools/package-management/nix/2_26/src/libfetchers/package.nix index d4ca18555031..b0aecd04979e 100644 --- a/pkgs/tools/package-management/nix/2_26/src/libfetchers/package.nix +++ b/pkgs/tools/package-management/nix/2_26/src/libfetchers/package.nix @@ -1,14 +1,15 @@ -{ lib -, mkMesonLibrary +{ + lib, + mkMesonLibrary, -, nix-util -, nix-store -, nlohmann_json -, libgit2 + nix-util, + nix-store, + nlohmann_json, + libgit2, -# Configuration Options + # Configuration Options -, version + version, }: let diff --git a/pkgs/tools/package-management/nix/2_26/src/libflake-c/package.nix b/pkgs/tools/package-management/nix/2_26/src/libflake-c/package.nix index dcd6c4966097..f0615a42798e 100644 --- a/pkgs/tools/package-management/nix/2_26/src/libflake-c/package.nix +++ b/pkgs/tools/package-management/nix/2_26/src/libflake-c/package.nix @@ -1,13 +1,14 @@ -{ lib -, mkMesonLibrary +{ + lib, + mkMesonLibrary, -, nix-store-c -, nix-expr-c -, nix-flake + nix-store-c, + nix-expr-c, + nix-flake, -# Configuration Options + # Configuration Options -, version + version, }: let diff --git a/pkgs/tools/package-management/nix/2_26/src/libflake-tests/package.nix b/pkgs/tools/package-management/nix/2_26/src/libflake-tests/package.nix index 51b68ad581ff..f9d9b0bc0c6b 100644 --- a/pkgs/tools/package-management/nix/2_26/src/libflake-tests/package.nix +++ b/pkgs/tools/package-management/nix/2_26/src/libflake-tests/package.nix @@ -1,20 +1,21 @@ -{ lib -, buildPackages -, stdenv -, mkMesonExecutable +{ + lib, + buildPackages, + stdenv, + mkMesonExecutable, -, nix-flake -, nix-flake-c -, nix-expr-test-support + nix-flake, + nix-flake-c, + nix-expr-test-support, -, rapidcheck -, gtest -, runCommand + rapidcheck, + gtest, + runCommand, -# Configuration Options + # Configuration Options -, version -, resolvePath + version, + resolvePath, }: let @@ -58,17 +59,23 @@ mkMesonExecutable (finalAttrs: { passthru = { tests = { - run = runCommand "${finalAttrs.pname}-run" { - 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 - ''); + run = + runCommand "${finalAttrs.pname}-run" + { + 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 + '' + ); }; }; diff --git a/pkgs/tools/package-management/nix/2_26/src/libflake/package.nix b/pkgs/tools/package-management/nix/2_26/src/libflake/package.nix index 3fc96a20e58c..ebd38e140d30 100644 --- a/pkgs/tools/package-management/nix/2_26/src/libflake/package.nix +++ b/pkgs/tools/package-management/nix/2_26/src/libflake/package.nix @@ -1,15 +1,16 @@ -{ lib -, mkMesonLibrary +{ + lib, + mkMesonLibrary, -, nix-util -, nix-store -, nix-fetchers -, nix-expr -, nlohmann_json + nix-util, + nix-store, + nix-fetchers, + nix-expr, + nlohmann_json, -# Configuration Options + # Configuration Options -, version + version, }: let diff --git a/pkgs/tools/package-management/nix/2_26/src/libmain-c/package.nix b/pkgs/tools/package-management/nix/2_26/src/libmain-c/package.nix index b96901bb46bb..cf710e03b0d0 100644 --- a/pkgs/tools/package-management/nix/2_26/src/libmain-c/package.nix +++ b/pkgs/tools/package-management/nix/2_26/src/libmain-c/package.nix @@ -1,14 +1,15 @@ -{ lib -, mkMesonLibrary +{ + lib, + mkMesonLibrary, -, nix-util-c -, nix-store -, nix-store-c -, nix-main + nix-util-c, + nix-store, + nix-store-c, + nix-main, -# Configuration Options + # Configuration Options -, version + version, }: let diff --git a/pkgs/tools/package-management/nix/2_26/src/libmain/package.nix b/pkgs/tools/package-management/nix/2_26/src/libmain/package.nix index 9a5b9e8c2df0..046b505dfd46 100644 --- a/pkgs/tools/package-management/nix/2_26/src/libmain/package.nix +++ b/pkgs/tools/package-management/nix/2_26/src/libmain/package.nix @@ -1,14 +1,15 @@ -{ lib -, mkMesonLibrary +{ + lib, + mkMesonLibrary, -, openssl + openssl, -, nix-util -, nix-store + nix-util, + nix-store, -# Configuration Options + # Configuration Options -, version + version, }: let diff --git a/pkgs/tools/package-management/nix/2_26/src/libstore-c/package.nix b/pkgs/tools/package-management/nix/2_26/src/libstore-c/package.nix index c2413c3890d1..89abeaab8706 100644 --- a/pkgs/tools/package-management/nix/2_26/src/libstore-c/package.nix +++ b/pkgs/tools/package-management/nix/2_26/src/libstore-c/package.nix @@ -1,12 +1,13 @@ -{ lib -, mkMesonLibrary +{ + lib, + mkMesonLibrary, -, nix-util-c -, nix-store + nix-util-c, + nix-store, -# Configuration Options + # Configuration Options -, version + version, }: let diff --git a/pkgs/tools/package-management/nix/2_26/src/libstore-test-support/package.nix b/pkgs/tools/package-management/nix/2_26/src/libstore-test-support/package.nix index 5d3f41b3e8b9..7cc29795c190 100644 --- a/pkgs/tools/package-management/nix/2_26/src/libstore-test-support/package.nix +++ b/pkgs/tools/package-management/nix/2_26/src/libstore-test-support/package.nix @@ -1,15 +1,16 @@ -{ lib -, mkMesonLibrary +{ + lib, + mkMesonLibrary, -, nix-util-test-support -, nix-store -, nix-store-c + nix-util-test-support, + nix-store, + nix-store-c, -, rapidcheck + rapidcheck, -# Configuration Options + # Configuration Options -, version + version, }: let diff --git a/pkgs/tools/package-management/nix/2_26/src/libstore-tests/package.nix b/pkgs/tools/package-management/nix/2_26/src/libstore-tests/package.nix index 3acf4e25c2cc..670386c4a6ff 100644 --- a/pkgs/tools/package-management/nix/2_26/src/libstore-tests/package.nix +++ b/pkgs/tools/package-management/nix/2_26/src/libstore-tests/package.nix @@ -1,21 +1,22 @@ -{ lib -, buildPackages -, stdenv -, mkMesonExecutable +{ + lib, + buildPackages, + stdenv, + mkMesonExecutable, -, nix-store -, nix-store-c -, nix-store-test-support -, sqlite + nix-store, + nix-store-c, + nix-store-test-support, + sqlite, -, rapidcheck -, gtest -, runCommand + rapidcheck, + gtest, + runCommand, -# Configuration Options + # Configuration Options -, version -, filesetToSource + version, + filesetToSource, }: let @@ -64,26 +65,33 @@ mkMesonExecutable (finalAttrs: { passthru = { tests = { - run = let - # Some data is shared with the functional tests: they create it, - # we consume it. - data = filesetToSource { - root = ../..; - fileset = lib.fileset.unions [ - ./data - ../../tests/functional/derivation - ]; - }; - in runCommand "${finalAttrs.pname}-run" { - 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 - ''); + run = + let + # Some data is shared with the functional tests: they create it, + # we consume it. + data = filesetToSource { + root = ../..; + fileset = lib.fileset.unions [ + ./data + ../../tests/functional/derivation + ]; + }; + in + runCommand "${finalAttrs.pname}-run" + { + 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 + '' + ); }; }; diff --git a/pkgs/tools/package-management/nix/2_26/src/libstore/package.nix b/pkgs/tools/package-management/nix/2_26/src/libstore/package.nix index 4fbaea4acc57..c982b44f0b73 100644 --- a/pkgs/tools/package-management/nix/2_26/src/libstore/package.nix +++ b/pkgs/tools/package-management/nix/2_26/src/libstore/package.nix @@ -1,25 +1,26 @@ -{ lib -, stdenv -, mkMesonLibrary +{ + lib, + stdenv, + mkMesonLibrary, -, unixtools -, darwin + unixtools, + darwin, -, nix-util -, boost -, curl -, aws-sdk-cpp -, libseccomp -, nlohmann_json -, sqlite + nix-util, + boost, + curl, + aws-sdk-cpp, + libseccomp, + nlohmann_json, + sqlite, -, busybox-sandbox-shell ? null + busybox-sandbox-shell ? null, -# Configuration Options + # Configuration Options -, version + version, -, embeddedSandboxShell ? stdenv.hostPlatform.isStatic + embeddedSandboxShell ? stdenv.hostPlatform.isStatic, }: let @@ -48,19 +49,20 @@ mkMesonLibrary (finalAttrs: { (fileset.fileFilter (file: file.hasExt "sql") ./.) ]; - nativeBuildInputs = - lib.optional embeddedSandboxShell unixtools.hexdump; + nativeBuildInputs = lib.optional embeddedSandboxShell unixtools.hexdump; - buildInputs = [ - boost - curl - sqlite - ] ++ lib.optional stdenv.hostPlatform.isLinux libseccomp + buildInputs = + [ + boost + curl + sqlite + ] + ++ lib.optional stdenv.hostPlatform.isLinux libseccomp # There have been issues building these dependencies ++ lib.optional stdenv.hostPlatform.isDarwin darwin.apple_sdk.libs.sandbox - ++ lib.optional (stdenv.hostPlatform == stdenv.buildPlatform && (stdenv.isLinux || stdenv.isDarwin)) - aws-sdk-cpp - ; + ++ lib.optional ( + stdenv.hostPlatform == stdenv.buildPlatform && (stdenv.isLinux || stdenv.isDarwin) + ) aws-sdk-cpp; propagatedBuildInputs = [ nix-util @@ -75,12 +77,14 @@ mkMesonLibrary (finalAttrs: { echo ${version} > ../../.version ''; - mesonFlags = [ - (lib.mesonEnable "seccomp-sandboxing" stdenv.hostPlatform.isLinux) - (lib.mesonBool "embedded-sandbox-shell" embeddedSandboxShell) - ] ++ lib.optionals stdenv.hostPlatform.isLinux [ - (lib.mesonOption "sandbox-shell" "${busybox-sandbox-shell}/bin/busybox") - ]; + mesonFlags = + [ + (lib.mesonEnable "seccomp-sandboxing" stdenv.hostPlatform.isLinux) + (lib.mesonBool "embedded-sandbox-shell" embeddedSandboxShell) + ] + ++ lib.optionals stdenv.hostPlatform.isLinux [ + (lib.mesonOption "sandbox-shell" "${busybox-sandbox-shell}/bin/busybox") + ]; env = { # Needed for Meson to find Boost. diff --git a/pkgs/tools/package-management/nix/2_26/src/libutil-c/package.nix b/pkgs/tools/package-management/nix/2_26/src/libutil-c/package.nix index f80e0b7f0a2a..72f57d6f9c62 100644 --- a/pkgs/tools/package-management/nix/2_26/src/libutil-c/package.nix +++ b/pkgs/tools/package-management/nix/2_26/src/libutil-c/package.nix @@ -1,11 +1,12 @@ -{ lib -, mkMesonLibrary +{ + lib, + mkMesonLibrary, -, nix-util + nix-util, -# Configuration Options + # Configuration Options -, version + version, }: let diff --git a/pkgs/tools/package-management/nix/2_26/src/libutil-test-support/package.nix b/pkgs/tools/package-management/nix/2_26/src/libutil-test-support/package.nix index a8a239717a68..33cd5217defa 100644 --- a/pkgs/tools/package-management/nix/2_26/src/libutil-test-support/package.nix +++ b/pkgs/tools/package-management/nix/2_26/src/libutil-test-support/package.nix @@ -1,14 +1,15 @@ -{ lib -, mkMesonLibrary +{ + lib, + mkMesonLibrary, -, nix-util -, nix-util-c + nix-util, + nix-util-c, -, rapidcheck + rapidcheck, -# Configuration Options + # Configuration Options -, version + version, }: let diff --git a/pkgs/tools/package-management/nix/2_26/src/libutil-tests/package.nix b/pkgs/tools/package-management/nix/2_26/src/libutil-tests/package.nix index e5805ec3968e..d4eea3a8dc26 100644 --- a/pkgs/tools/package-management/nix/2_26/src/libutil-tests/package.nix +++ b/pkgs/tools/package-management/nix/2_26/src/libutil-tests/package.nix @@ -1,20 +1,21 @@ -{ lib -, buildPackages -, stdenv -, mkMesonExecutable +{ + lib, + buildPackages, + stdenv, + mkMesonExecutable, -, nix-util -, nix-util-c -, nix-util-test-support + nix-util, + nix-util-c, + nix-util-test-support, -, rapidcheck -, gtest -, runCommand + rapidcheck, + gtest, + runCommand, -# Configuration Options + # Configuration Options -, version -, resolvePath + version, + resolvePath, }: let @@ -58,16 +59,22 @@ mkMesonExecutable (finalAttrs: { passthru = { tests = { - run = runCommand "${finalAttrs.pname}-run" { - 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} - ${stdenv.hostPlatform.emulator buildPackages} ${lib.getExe finalAttrs.finalPackage} - touch $out - ''); + run = + runCommand "${finalAttrs.pname}-run" + { + 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} + ${stdenv.hostPlatform.emulator buildPackages} ${lib.getExe finalAttrs.finalPackage} + touch $out + '' + ); }; }; diff --git a/pkgs/tools/package-management/nix/2_26/src/libutil/package.nix b/pkgs/tools/package-management/nix/2_26/src/libutil/package.nix index 679872a75c59..586119a6e5d5 100644 --- a/pkgs/tools/package-management/nix/2_26/src/libutil/package.nix +++ b/pkgs/tools/package-management/nix/2_26/src/libutil/package.nix @@ -1,18 +1,19 @@ -{ lib -, stdenv -, mkMesonLibrary +{ + lib, + stdenv, + mkMesonLibrary, -, boost -, brotli -, libarchive -, libcpuid -, libsodium -, nlohmann_json -, openssl + boost, + brotli, + libarchive, + libcpuid, + libsodium, + nlohmann_json, + openssl, -# Configuration Options + # Configuration Options -, version + version, }: let @@ -43,8 +44,7 @@ mkMesonLibrary (finalAttrs: { brotli libsodium openssl - ] ++ lib.optional stdenv.hostPlatform.isx86_64 libcpuid - ; + ] ++ lib.optional stdenv.hostPlatform.isx86_64 libcpuid; propagatedBuildInputs = [ boost diff --git a/pkgs/tools/package-management/nix/2_26/src/nix/package.nix b/pkgs/tools/package-management/nix/2_26/src/nix/package.nix index 171621af9176..89c52c3bb050 100644 --- a/pkgs/tools/package-management/nix/2_26/src/nix/package.nix +++ b/pkgs/tools/package-management/nix/2_26/src/nix/package.nix @@ -1,14 +1,15 @@ -{ lib -, mkMesonExecutable +{ + lib, + mkMesonExecutable, -, nix-store -, nix-expr -, nix-main -, nix-cmd + nix-store, + nix-expr, + nix-main, + nix-cmd, -# Configuration Options + # Configuration Options -, version + version, }: let @@ -20,64 +21,67 @@ mkMesonExecutable (finalAttrs: { inherit version; workDir = ./.; - fileset = fileset.unions ([ - ../../nix-meson-build-support - ./nix-meson-build-support - ../../.version - ./.version - ./meson.build - ./meson.options - - # Symbolic links to other dirs - ## exes - ./build-remote - ./doc - ./nix-build - ./nix-channel - ./nix-collect-garbage - ./nix-copy-closure - ./nix-env - ./nix-instantiate - ./nix-store - ## dirs - ./scripts - ../../scripts - ./misc - ../../misc - - # Doc nix files for --help - ../../doc/manual/generate-manpage.nix - ../../doc/manual/utils.nix - ../../doc/manual/generate-settings.nix - ../../doc/manual/generate-store-info.nix - - # Other files to be included as string literals - ../nix-channel/unpack-channel.nix - ../nix-env/buildenv.nix - ./get-env.sh - ./help-stores.md - ../../doc/manual/source/store/types/index.md.in - ./profiles.md - ../../doc/manual/source/command-ref/files/profiles.md - - # Files - ] ++ lib.concatMap - (dir: [ - (fileset.fileFilter (file: file.hasExt "cc") dir) - (fileset.fileFilter (file: file.hasExt "hh") dir) - (fileset.fileFilter (file: file.hasExt "md") dir) - ]) + fileset = fileset.unions ( [ - ./. - ../build-remote - ../nix-build - ../nix-channel - ../nix-collect-garbage - ../nix-copy-closure - ../nix-env - ../nix-instantiate - ../nix-store + ../../nix-meson-build-support + ./nix-meson-build-support + ../../.version + ./.version + ./meson.build + ./meson.options + + # Symbolic links to other dirs + ## exes + ./build-remote + ./doc + ./nix-build + ./nix-channel + ./nix-collect-garbage + ./nix-copy-closure + ./nix-env + ./nix-instantiate + ./nix-store + ## dirs + ./scripts + ../../scripts + ./misc + ../../misc + + # Doc nix files for --help + ../../doc/manual/generate-manpage.nix + ../../doc/manual/utils.nix + ../../doc/manual/generate-settings.nix + ../../doc/manual/generate-store-info.nix + + # Other files to be included as string literals + ../nix-channel/unpack-channel.nix + ../nix-env/buildenv.nix + ./get-env.sh + ./help-stores.md + ../../doc/manual/source/store/types/index.md.in + ./profiles.md + ../../doc/manual/source/command-ref/files/profiles.md + + # Files ] + ++ + lib.concatMap + (dir: [ + (fileset.fileFilter (file: file.hasExt "cc") dir) + (fileset.fileFilter (file: file.hasExt "hh") dir) + (fileset.fileFilter (file: file.hasExt "md") dir) + ]) + [ + ./. + ../build-remote + ../nix-build + ../nix-channel + ../nix-collect-garbage + ../nix-copy-closure + ../nix-env + ../nix-instantiate + ../nix-store + ] ); buildInputs = [ diff --git a/pkgs/tools/package-management/nix/2_26/src/perl/package.nix b/pkgs/tools/package-management/nix/2_26/src/perl/package.nix index 5ee0df13c9d1..d95d13aa9213 100644 --- a/pkgs/tools/package-management/nix/2_26/src/perl/package.nix +++ b/pkgs/tools/package-management/nix/2_26/src/perl/package.nix @@ -1,76 +1,82 @@ -{ lib -, stdenv -, mkMesonDerivation -, pkg-config -, perl -, perlPackages -, nix-store -, version -, curl -, bzip2 -, libsodium +{ + lib, + stdenv, + mkMesonDerivation, + pkg-config, + perl, + perlPackages, + nix-store, + version, + curl, + bzip2, + libsodium, }: let inherit (lib) fileset; in -perl.pkgs.toPerlModule (mkMesonDerivation (finalAttrs: { - pname = "nix-perl"; - inherit version; +perl.pkgs.toPerlModule ( + mkMesonDerivation (finalAttrs: { + pname = "nix-perl"; + inherit version; - workDir = ./.; - fileset = fileset.unions ([ - ./.version - ../../.version - ./MANIFEST - ./lib - ./meson.build - ./meson.options - ] ++ lib.optionals finalAttrs.doCheck [ - ./.yath.rc.in - ./t - ]); + workDir = ./.; + fileset = fileset.unions ( + [ + ./.version + ../../.version + ./MANIFEST + ./lib + ./meson.build + ./meson.options + ] + ++ lib.optionals finalAttrs.doCheck [ + ./.yath.rc.in + ./t + ] + ); - nativeBuildInputs = [ - pkg-config - perl - curl - ]; + nativeBuildInputs = [ + pkg-config + perl + curl + ]; - buildInputs = [ - nix-store - ] ++ finalAttrs.passthru.externalBuildInputs; + buildInputs = [ + nix-store + ] ++ finalAttrs.passthru.externalBuildInputs; - # Hack for sake of the dev shell - passthru.externalBuildInputs = [ - bzip2 - libsodium - ]; + # Hack for sake of the dev shell + passthru.externalBuildInputs = [ + bzip2 + libsodium + ]; - # `perlPackages.Test2Harness` is marked broken for Darwin - doCheck = !stdenv.isDarwin; + # `perlPackages.Test2Harness` is marked broken for Darwin + doCheck = !stdenv.isDarwin; - nativeCheckInputs = [ - perlPackages.Test2Harness - ]; + nativeCheckInputs = [ + perlPackages.Test2Harness + ]; - preConfigure = - # "Inline" .version so its not a symlink, and includes the suffix - '' - chmod u+w .version - echo ${finalAttrs.version} > .version - ''; + preConfigure = + # "Inline" .version so its not a symlink, and includes the suffix + '' + chmod u+w .version + echo ${finalAttrs.version} > .version + ''; - mesonFlags = [ - (lib.mesonOption "dbi_path" "${perlPackages.DBI}/${perl.libPrefix}") - (lib.mesonOption "dbd_sqlite_path" "${perlPackages.DBDSQLite}/${perl.libPrefix}") - (lib.mesonEnable "tests" finalAttrs.doCheck) - ]; + mesonFlags = [ + (lib.mesonOption "dbi_path" "${perlPackages.DBI}/${perl.libPrefix}") + (lib.mesonOption "dbd_sqlite_path" "${perlPackages.DBDSQLite}/${perl.libPrefix}") + (lib.mesonEnable "tests" finalAttrs.doCheck) + ]; - mesonCheckFlags = [ - "--print-errorlogs" - ]; + mesonCheckFlags = [ + "--print-errorlogs" + ]; - strictDeps = false; -})) + strictDeps = false; + }) +) diff --git a/pkgs/tools/package-management/nix/2_26/tests/functional/package.nix b/pkgs/tools/package-management/nix/2_26/tests/functional/package.nix index d1582b05d145..74c034196fde 100644 --- a/pkgs/tools/package-management/nix/2_26/tests/functional/package.nix +++ b/pkgs/tools/package-management/nix/2_26/tests/functional/package.nix @@ -1,103 +1,110 @@ -{ lib -, stdenv -, mkMesonDerivation +{ + lib, + stdenv, + mkMesonDerivation, -, meson -, ninja -, pkg-config + meson, + ninja, + pkg-config, -, jq -, git -, mercurial -, util-linux + jq, + git, + mercurial, + util-linux, -, nix-store -, nix-expr -, nix-cli + nix-store, + nix-expr, + nix-cli, -, busybox-sandbox-shell ? null + busybox-sandbox-shell ? null, -# Configuration Options + # Configuration Options -, pname ? "nix-functional-tests" -, version + pname ? "nix-functional-tests", + version, -# For running the functional tests against a different pre-built Nix. -, test-daemon ? null + # For running the functional tests against a different pre-built Nix. + test-daemon ? null, }: let inherit (lib) fileset; in -mkMesonDerivation (finalAttrs: { - inherit pname version; +mkMesonDerivation ( + finalAttrs: + { + inherit pname version; - workDir = ./.; - fileset = fileset.unions [ - ../../scripts/nix-profile.sh.in - ../../.version - ../../tests/functional - ./. - ]; + workDir = ./.; + fileset = fileset.unions [ + ../../scripts/nix-profile.sh.in + ../../.version + ../../tests/functional + ./. + ]; - # Hack for sake of the dev shell - passthru.externalNativeBuildInputs = [ - meson - ninja - pkg-config + # Hack for sake of the dev shell + passthru.externalNativeBuildInputs = + [ + meson + ninja + pkg-config - jq - git - mercurial - ] ++ lib.optionals stdenv.hostPlatform.isLinux [ - # For various sandboxing tests that needs a statically-linked shell, - # etc. - busybox-sandbox-shell - # For Overlay FS tests need `mount`, `umount`, and `unshare`. - # For `script` command (ensuring a TTY) - # TODO use `unixtools` to be precise over which executables instead? - util-linux - ]; + jq + git + mercurial + ] + ++ lib.optionals stdenv.hostPlatform.isLinux [ + # For various sandboxing tests that needs a statically-linked shell, + # etc. + busybox-sandbox-shell + # For Overlay FS tests need `mount`, `umount`, and `unshare`. + # For `script` command (ensuring a TTY) + # TODO use `unixtools` to be precise over which executables instead? + util-linux + ]; - nativeBuildInputs = finalAttrs.passthru.externalNativeBuildInputs ++ [ - nix-cli - ]; + nativeBuildInputs = finalAttrs.passthru.externalNativeBuildInputs ++ [ + nix-cli + ]; - buildInputs = [ - nix-store - nix-expr - ]; + buildInputs = [ + nix-store + nix-expr + ]; - preConfigure = - # "Inline" .version so it's not a symlink, and includes the suffix. - # Do the meson utils, without modification. - '' - chmod u+w ./.version - echo ${version} > ../../../.version - '' - # TEMP hack for Meson before make is gone, where - # `src/nix-functional-tests` is during the transition a symlink and - # not the actual directory directory. - + '' - cd $(readlink -e $PWD) - echo $PWD | grep tests/functional + preConfigure = + # "Inline" .version so it's not a symlink, and includes the suffix. + # Do the meson utils, without modification. + '' + chmod u+w ./.version + echo ${version} > ../../../.version + '' + # TEMP hack for Meson before make is gone, where + # `src/nix-functional-tests` is during the transition a symlink and + # not the actual directory directory. + + '' + cd $(readlink -e $PWD) + echo $PWD | grep tests/functional + ''; + + mesonCheckFlags = [ + "--print-errorlogs" + ]; + + doCheck = true; + + installPhase = '' + mkdir $out ''; - mesonCheckFlags = [ - "--print-errorlogs" - ]; + meta = { + platforms = lib.platforms.unix; + }; - doCheck = true; - - installPhase = '' - mkdir $out - ''; - - meta = { - platforms = lib.platforms.unix; - }; - -} // lib.optionalAttrs (test-daemon != null) { - NIX_DAEMON_PACKAGE = test-daemon; -}) + } + // lib.optionalAttrs (test-daemon != null) { + NIX_DAEMON_PACKAGE = test-daemon; + } +) From 82dbd490221a44f5956f3836117d244d39664577 Mon Sep 17 00:00:00 2001 From: Robert Hensing Date: Wed, 22 Jan 2025 15:35:54 +0100 Subject: [PATCH 04/10] refactor: Extract pkgs/.../nix/tests.nix --- pkgs/tools/package-management/nix/common.nix | 34 ++----------- pkgs/tools/package-management/nix/tests.nix | 52 ++++++++++++++++++++ 2 files changed, 55 insertions(+), 31 deletions(-) create mode 100644 pkgs/tools/package-management/nix/tests.nix diff --git a/pkgs/tools/package-management/nix/common.nix b/pkgs/tools/package-management/nix/common.nix index 9732b8a98c04..bfecf16919dc 100644 --- a/pkgs/tools/package-management/nix/common.nix +++ b/pkgs/tools/package-management/nix/common.nix @@ -250,37 +250,9 @@ self = stdenv.mkDerivation { perl-bindings = perl.pkgs.toPerlModule (callPackage ./nix-perl.nix { nix = self; inherit Security; }); - tests = { - srcVersion = runCommand "nix-src-version" { - inherit version; - } '' - # This file is an implementation detail, but it's a good sanity check - # If upstream changes that, we'll have to adapt. - srcVersion=$(cat ${src}/.version) - echo "Version in nix nix expression: $version" - echo "Version in nix.src: $srcVersion" - if [ "$version" != "$srcVersion" ]; then - echo "Version mismatch!" - exit 1 - fi - touch $out - ''; - - /** Intended to test `lib`, but also a good smoke test for Nix */ - nixpkgs-lib = import ../../../../lib/tests/test-with-nix.nix { - inherit lib pkgs; - nix = self; - }; - } // lib.optionalAttrs stdenv.hostPlatform.isLinux { - nixStatic = pkgsStatic.nixVersions.${self_attribute_name}; - - # Basic smoke tests that needs to pass when upgrading nix. - # Note that this test does only test the nixVersions.stable attribute. - misc = nixosTests.nix-misc.default; - upgrade = nixosTests.nix-upgrade; - simpleUefiSystemdBoot = nixosTests.installer.simpleUefiSystemdBoot; - } // lib.optionalAttrs (stdenv.hostPlatform.system == "x86_64-linux") { - nixi686 = pkgsi686Linux.nixVersions.${self_attribute_name}; + tests = import ./tests.nix { + inherit runCommand version src lib stdenv pkgs pkgsi686Linux pkgsStatic nixosTests self_attribute_name; + nix = self; }; }; diff --git a/pkgs/tools/package-management/nix/tests.nix b/pkgs/tools/package-management/nix/tests.nix new file mode 100644 index 000000000000..662cfe7d194c --- /dev/null +++ b/pkgs/tools/package-management/nix/tests.nix @@ -0,0 +1,52 @@ +{ + runCommand, + version, + src, + nix, + lib, + stdenv, + pkgs, + pkgsi686Linux, + pkgsStatic, + nixosTests, + self_attribute_name, +}: +{ + srcVersion = + runCommand "nix-src-version" + { + inherit version; + } + '' + # This file is an implementation detail, but it's a good sanity check + # If upstream changes that, we'll have to adapt. + srcVersion=$(cat ${src}/.version) + echo "Version in nix nix expression: $version" + echo "Version in nix.src: $srcVersion" + if [ "$version" != "$srcVersion" ]; then + echo "Version mismatch!" + exit 1 + fi + touch $out + ''; + + /** + Intended to test `lib`, but also a good smoke test for Nix + */ + nixpkgs-lib = import ../../../../lib/tests/test-with-nix.nix { + inherit lib pkgs; + inherit nix; + }; +} +// lib.optionalAttrs stdenv.hostPlatform.isLinux { + nixStatic = pkgsStatic.nixVersions.${self_attribute_name}; + + # Basic smoke tests that needs to pass when upgrading nix. + # Note that this test does only test the nixVersions.stable attribute. + misc = nixosTests.nix-misc.default; + upgrade = nixosTests.nix-upgrade; + simpleUefiSystemdBoot = nixosTests.installer.simpleUefiSystemdBoot; +} +// lib.optionalAttrs (stdenv.hostPlatform.system == "x86_64-linux") { + nixi686 = pkgsi686Linux.nixVersions.${self_attribute_name}; +} From c40da46bc7c6d8e311a9590efcf741d9e4f9e93a Mon Sep 17 00:00:00 2001 From: Robert Hensing Date: Wed, 22 Jan 2025 15:42:44 +0100 Subject: [PATCH 05/10] nix_2_26: Fix dev output shim nativeBuildInputs = [ nix ] would have no effect before this change. The pkg-config test on the dev output probably didn't work before, so I've removed it for now. --- .../nix/2_26/packaging/everything.nix | 27 +++++++++---------- pkgs/tools/package-management/nix/default.nix | 19 +++++++++++-- 2 files changed, 29 insertions(+), 17 deletions(-) diff --git a/pkgs/tools/package-management/nix/2_26/packaging/everything.nix b/pkgs/tools/package-management/nix/2_26/packaging/everything.nix index 2b47c31bbf54..c89d35a60a7d 100644 --- a/pkgs/tools/package-management/nix/2_26/packaging/everything.nix +++ b/pkgs/tools/package-management/nix/2_26/packaging/everything.nix @@ -68,7 +68,7 @@ let ; }; - dev = stdenv.mkDerivation (finalAttrs: { + dev = nixAttrs: stdenv.mkDerivation (finalAttrs: { name = "nix-${nix-cli.version}-dev"; pname = "nix"; version = nix-cli.version; @@ -78,17 +78,20 @@ let installPhase = '' mkdir -p $out/nix-support echo $libs >> $out/nix-support/propagated-build-inputs + echo ${nixAttrs.finalPackage} >> $out/nix-support/propagated-build-inputs ''; passthru = { tests = { - pkg-config = testers.hasPkgConfigModules { - package = finalAttrs.finalPackage; - }; + # TODO: is this supposed to work for a dev output? + # pkg-config = testers.hasPkgConfigModules { + # package = finalAttrs.finalPackage; + # }; }; # If we were to fully emulate output selection here, we'd confuse the Nix CLIs, # because they rely on `drvPath`. dev = finalAttrs.finalPackage.out; + out = nixAttrs.finalPackage.out; libs = throw "`nix.dev.libs` is not meant to be used; use `nix.libs` instead."; }; @@ -143,10 +146,6 @@ in # Make sure the functional tests have passed nix-functional-tests - - # dev bundle is ok - # (checkInputs must be empty paths??) - (runCommand "check-pkg-config" { checked = dev.tests.pkg-config; } "mkdir $out") ] ++ lib.optionals (!stdenv.hostPlatform.isStatic && stdenv.buildPlatform.canExecute stdenv.hostPlatform) @@ -178,17 +177,15 @@ in inherit libs; tests = prevAttrs.passthru.tests or { } // { - # TODO: create a proper fixpoint and: - # pkg-config = - # testers.hasPkgConfigModules { - # package = finalPackage; - # }; + pkg-config = testers.hasPkgConfigModules { + package = finalAttrs.finalPackage; + }; }; /** A derivation referencing the `dev` outputs of the Nix libraries. */ - inherit dev; + dev = dev finalAttrs; inherit devdoc; doc = nix-manual; outputs = [ @@ -203,7 +200,7 @@ in }; meta = prevAttrs.meta // { description = "The Nix package manager"; - pkgConfigModules = dev.meta.pkgConfigModules; + pkgConfigModules = (dev finalAttrs).meta.pkgConfigModules; }; } ) diff --git a/pkgs/tools/package-management/nix/default.nix b/pkgs/tools/package-management/nix/default.nix index 20d545b79874..53cee6fcb819 100644 --- a/pkgs/tools/package-management/nix/default.nix +++ b/pkgs/tools/package-management/nix/default.nix @@ -9,6 +9,10 @@ , fetchpatch2 , runCommand , Security +, pkgs +, pkgsi686Linux +, pkgsStatic +, nixosTests , storeDir ? "/nix/store" , stateDir ? "/nix/var" @@ -160,9 +164,20 @@ in lib.makeExtensible (self: ({ self_attribute_name = "nix_2_25"; }; - nix_2_26 = callPackage ./2_26/componentized.nix { + nix_2_26 = (callPackage ./2_26/componentized.nix { inherit libgit2-thin-packfile; - }; + }).overrideAttrs (this: old: { + passthru = old.passthru or {} // { + tests = + old.passthru.tests or {} + // import ./tests.nix { + inherit runCommand lib stdenv pkgs pkgsi686Linux pkgsStatic nixosTests; + inherit (old) version src; + nix = this.finalPackage; + self_attribute_name = "nix_2_26"; + }; + }; + }); git = common rec { version = "2.25.0"; From 34f269c14ac18d89ddee9a8f54b1ca92a85bbcc6 Mon Sep 17 00:00:00 2001 From: Robert Hensing Date: Wed, 22 Jan 2025 20:43:48 +0100 Subject: [PATCH 06/10] Format --- .../nix/2_26/packaging/everything.nix | 88 ++++++++++--------- 1 file changed, 45 insertions(+), 43 deletions(-) diff --git a/pkgs/tools/package-management/nix/2_26/packaging/everything.nix b/pkgs/tools/package-management/nix/2_26/packaging/everything.nix index c89d35a60a7d..7ac7a156d226 100644 --- a/pkgs/tools/package-management/nix/2_26/packaging/everything.nix +++ b/pkgs/tools/package-management/nix/2_26/packaging/everything.nix @@ -68,50 +68,52 @@ let ; }; - dev = nixAttrs: stdenv.mkDerivation (finalAttrs: { - name = "nix-${nix-cli.version}-dev"; - pname = "nix"; - version = nix-cli.version; - dontUnpack = true; - dontBuild = true; - libs = map lib.getDev (lib.attrValues libs); - installPhase = '' - mkdir -p $out/nix-support - echo $libs >> $out/nix-support/propagated-build-inputs - echo ${nixAttrs.finalPackage} >> $out/nix-support/propagated-build-inputs - ''; - passthru = { - tests = { - # TODO: is this supposed to work for a dev output? - # pkg-config = testers.hasPkgConfigModules { - # package = finalAttrs.finalPackage; - # }; + dev = + nixAttrs: + stdenv.mkDerivation (finalAttrs: { + name = "nix-${nix-cli.version}-dev"; + pname = "nix"; + version = nix-cli.version; + dontUnpack = true; + dontBuild = true; + libs = map lib.getDev (lib.attrValues libs); + installPhase = '' + mkdir -p $out/nix-support + echo $libs >> $out/nix-support/propagated-build-inputs + echo ${nixAttrs.finalPackage} >> $out/nix-support/propagated-build-inputs + ''; + passthru = { + tests = { + # TODO: is this supposed to work for a dev output? + # pkg-config = testers.hasPkgConfigModules { + # package = finalAttrs.finalPackage; + # }; + }; + + # If we were to fully emulate output selection here, we'd confuse the Nix CLIs, + # because they rely on `drvPath`. + dev = finalAttrs.finalPackage.out; + out = nixAttrs.finalPackage.out; + + libs = throw "`nix.dev.libs` is not meant to be used; use `nix.libs` instead."; }; - - # If we were to fully emulate output selection here, we'd confuse the Nix CLIs, - # because they rely on `drvPath`. - dev = finalAttrs.finalPackage.out; - out = nixAttrs.finalPackage.out; - - libs = throw "`nix.dev.libs` is not meant to be used; use `nix.libs` instead."; - }; - meta = { - pkgConfigModules = [ - "nix-cmd" - "nix-expr" - "nix-expr-c" - "nix-fetchers" - "nix-flake" - "nix-flake-c" - "nix-main" - "nix-main-c" - "nix-store" - "nix-store-c" - "nix-util" - "nix-util-c" - ]; - }; - }); + meta = { + pkgConfigModules = [ + "nix-cmd" + "nix-expr" + "nix-expr-c" + "nix-fetchers" + "nix-flake" + "nix-flake-c" + "nix-main" + "nix-main-c" + "nix-store" + "nix-store-c" + "nix-util" + "nix-util-c" + ]; + }; + }); devdoc = buildEnv { name = "nix-${nix-cli.version}-devdoc"; paths = [ From 430a6df76f75d78feece9b7a6e25837b524973b3 Mon Sep 17 00:00:00 2001 From: Robert Hensing Date: Tue, 28 Jan 2025 10:17:30 +0100 Subject: [PATCH 07/10] nixVersions.nix_2_26: 2.26.0 -> 2.26.1 --- pkgs/tools/package-management/nix/2_26/.version | 2 +- pkgs/tools/package-management/nix/2_26/source.json | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/tools/package-management/nix/2_26/.version b/pkgs/tools/package-management/nix/2_26/.version index 7a25c70f90cf..f34083e034ae 100644 --- a/pkgs/tools/package-management/nix/2_26/.version +++ b/pkgs/tools/package-management/nix/2_26/.version @@ -1 +1 @@ -2.26.0 +2.26.1 diff --git a/pkgs/tools/package-management/nix/2_26/source.json b/pkgs/tools/package-management/nix/2_26/source.json index 40acad769e09..09afd9c0640f 100644 --- a/pkgs/tools/package-management/nix/2_26/source.json +++ b/pkgs/tools/package-management/nix/2_26/source.json @@ -1,6 +1,6 @@ { "owner": "NixOS", "repo": "nix", - "rev": "717372382f75be6832c73ec5519e5d6b9aa5141b", - "hash": "sha256-0lFNh54gkDsdHOriOEHK6lr1rGRiP1mhNaCNm+6QspE=" + "rev": "36bd92736faaf81c6af3dff8f560963eb4e76b14", + "hash": "sha256-1T7WRNfUMsiiNB77BuHElzjavguL8oJx+wBtfMcobq8=" } From 3cbcec03f22d70bc6df9b5c99e380a08a3968133 Mon Sep 17 00:00:00 2001 From: Robert Hensing Date: Tue, 28 Jan 2025 10:20:50 +0100 Subject: [PATCH 08/10] nixVersions.nix_2_26: Use default boost package --- .../package-management/nix/2_26/dependencies.nix | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/pkgs/tools/package-management/nix/2_26/dependencies.nix b/pkgs/tools/package-management/nix/2_26/dependencies.nix index e226384f2acf..fddcf228e7cb 100644 --- a/pkgs/tools/package-management/nix/2_26/dependencies.nix +++ b/pkgs/tools/package-management/nix/2_26/dependencies.nix @@ -159,21 +159,6 @@ scope: { enableLargeConfig = true; }; - # TODO Hack until https://github.com/NixOS/nixpkgs/issues/45462 is fixed. - boost = - (pkgs.boost.override { - extraB2Args = [ - "--with-container" - "--with-context" - "--with-coroutine" - ]; - }).overrideAttrs - (old: { - # Need to remove `--with-*` to use `--with-libraries=...` - buildPhase = lib.replaceStrings [ "--without-python" ] [ "" ] old.buildPhase; - installPhase = lib.replaceStrings [ "--without-python" ] [ "" ] old.installPhase; - }); - libgit2 = libgit2-thin-packfile; inherit resolvePath filesetToSource; From 64a9532416f4f2cd88e4b16a8f7433d87555aee5 Mon Sep 17 00:00:00 2001 From: Robert Hensing Date: Tue, 28 Jan 2025 10:23:04 +0100 Subject: [PATCH 09/10] nix//.version: Drop newline --- pkgs/tools/package-management/nix/2_26/.version | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/tools/package-management/nix/2_26/.version b/pkgs/tools/package-management/nix/2_26/.version index f34083e034ae..53effa101a05 100644 --- a/pkgs/tools/package-management/nix/2_26/.version +++ b/pkgs/tools/package-management/nix/2_26/.version @@ -1 +1 @@ -2.26.1 +2.26.1 \ No newline at end of file From ae7447170667497a992c9333bafe731691b46aba Mon Sep 17 00:00:00 2001 From: Robert Hensing Date: Sun, 9 Feb 2025 21:01:08 +0100 Subject: [PATCH 10/10] nixVersions.nix_2_26: Drop libgit2-thin-packfile override --- pkgs/tools/package-management/nix/2_26/componentized.nix | 2 -- pkgs/tools/package-management/nix/2_26/dependencies.nix | 4 ---- pkgs/tools/package-management/nix/default.nix | 4 +--- 3 files changed, 1 insertion(+), 9 deletions(-) diff --git a/pkgs/tools/package-management/nix/2_26/componentized.nix b/pkgs/tools/package-management/nix/2_26/componentized.nix index 9dbf54392fb4..48f2d052d36f 100644 --- a/pkgs/tools/package-management/nix/2_26/componentized.nix +++ b/pkgs/tools/package-management/nix/2_26/componentized.nix @@ -6,7 +6,6 @@ newScope, pkgs, stdenv, - libgit2-thin-packfile, ... }: let @@ -44,7 +43,6 @@ let inherit pkgs; inherit stdenv; inherit src; - inherit libgit2-thin-packfile; }; }; in diff --git a/pkgs/tools/package-management/nix/2_26/dependencies.nix b/pkgs/tools/package-management/nix/2_26/dependencies.nix index fddcf228e7cb..73739e2edcc5 100644 --- a/pkgs/tools/package-management/nix/2_26/dependencies.nix +++ b/pkgs/tools/package-management/nix/2_26/dependencies.nix @@ -7,7 +7,6 @@ pkgs, stdenv, - libgit2-thin-packfile, }: let @@ -139,7 +138,6 @@ let in scope: { inherit stdenv; - inherit libgit2-thin-packfile; aws-sdk-cpp = (pkgs.aws-sdk-cpp.override { @@ -159,8 +157,6 @@ scope: { enableLargeConfig = true; }; - libgit2 = libgit2-thin-packfile; - inherit resolvePath filesetToSource; mkMesonDerivation = mkPackageBuilder [ diff --git a/pkgs/tools/package-management/nix/default.nix b/pkgs/tools/package-management/nix/default.nix index 53cee6fcb819..23b11f1c6285 100644 --- a/pkgs/tools/package-management/nix/default.nix +++ b/pkgs/tools/package-management/nix/default.nix @@ -164,9 +164,7 @@ in lib.makeExtensible (self: ({ self_attribute_name = "nix_2_25"; }; - nix_2_26 = (callPackage ./2_26/componentized.nix { - inherit libgit2-thin-packfile; - }).overrideAttrs (this: old: { + nix_2_26 = (callPackage ./2_26/componentized.nix { }).overrideAttrs (this: old: { passthru = old.passthru or {} // { tests = old.passthru.tests or {}