diff --git a/pkgs/stdenv/darwin/make-bootstrap-tools.nix b/pkgs/stdenv/darwin/make-bootstrap-tools.nix index da4a94e34b01a..1fed692fd1cee 100644 --- a/pkgs/stdenv/darwin/make-bootstrap-tools.nix +++ b/pkgs/stdenv/darwin/make-bootstrap-tools.nix @@ -1,7 +1,5 @@ { pkgspath ? ../../.., test-pkgspath ? pkgspath -, localSystem ? { system = builtins.currentSystem; } -, crossSystem ? null -, bootstrapFiles ? null +, system ? builtins.currentSystem, crossSystem ? null, bootstrapFiles ? null }: let cross = if crossSystem != null @@ -13,7 +11,7 @@ let cross = if crossSystem != null in (import "${pkgspath}/pkgs/stdenv/darwin" args').stagesDarwin; } else {}; -in with import pkgspath ({ inherit localSystem; } // cross // custom-bootstrap); +in with import pkgspath ({ inherit system; } // cross // custom-bootstrap); let llvmPackages = llvmPackages_11; @@ -366,7 +364,7 @@ in rec { test-pkgs = import test-pkgspath { # if the bootstrap tools are for another platform, we should be testing # that platform. - localSystem = if crossSystem != null then crossSystem else localSystem; + system = if crossSystem != null then crossSystem else system; stdenvStages = args: let args' = args // { inherit bootstrapLlvmVersion bootstrapFiles; }; diff --git a/pkgs/stdenv/linux/make-bootstrap-tools.nix b/pkgs/stdenv/linux/make-bootstrap-tools.nix index b2d04c8667d5f..d23a996dfcb48 100644 --- a/pkgs/stdenv/linux/make-bootstrap-tools.nix +++ b/pkgs/stdenv/linux/make-bootstrap-tools.nix @@ -1,6 +1,9 @@ -{ pkgs ? import ../../.. {} }: +{ localSystem ? { system = builtins.currentSystem; } +, crossSystem ? null +}: let + pkgs = import ../../.. { inherit localSystem crossSystem; }; libc = pkgs.stdenv.cc.libc; in with pkgs; rec { diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 4221ad132814f..dcdae6713d01b 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -2054,15 +2054,13 @@ with pkgs; brewtarget = libsForQt514.callPackage ../applications/misc/brewtarget { } ; - stdenvBootstrapTools = if stdenv.hostPlatform.isDarwin then - callPackage ../stdenv/darwin/make-bootstrap-tools.nix { - localSystem = stdenv.buildPlatform; - crossSystem = - if stdenv.buildPlatform == stdenv.hostPlatform then null else stdenv.hostPlatform; - } - else if stdenv.hostPlatform.isLinux then - callPackage ../stdenv/linux/make-bootstrap-tools.nix {} - else throw "stdenvBootstrapTools: unknown hostPlatform ${stdenv.hostPlatform.config}"; + freshBootstrapTools = + let args = { crossSystem = stdenv.hostPlatform.system; }; in + if stdenv.hostPlatform.isDarwin + then callPackage ../stdenv/darwin/make-bootstrap-tools.nix args + else if stdenv.hostPlatform.isLinux + then callPackage ../stdenv/linux/make-bootstrap-tools.nix args + else throw "freshBootstrapTools: unknown hostPlatform ${stdenv.hostPlatform.config}"; boxes = callPackage ../tools/text/boxes { }; diff --git a/pkgs/top-level/release.nix b/pkgs/top-level/release.nix index bac3d1b1171dd..2381224c78723 100644 --- a/pkgs/top-level/release.nix +++ b/pkgs/top-level/release.nix @@ -31,169 +31,182 @@ let ] (arch: builtins.elem "${arch}-darwin" systemsWithAnySupport); jobs = - { tarball = import ./make-tarball.nix { inherit pkgs nixpkgs officialRelease supportedSystems; }; - - metrics = import ./metrics.nix { inherit pkgs nixpkgs; }; - - manual = import ../../doc { inherit pkgs nixpkgs; }; - lib-tests = import ../../lib/tests/release.nix { inherit pkgs; }; - pkgs-lib-tests = import ../pkgs-lib/tests { inherit pkgs; }; - - darwin-tested = if supportDarwin.x86_64 then pkgs.releaseTools.aggregate - { name = "nixpkgs-darwin-${jobs.tarball.version}"; - meta.description = "Release-critical builds for the Nixpkgs darwin channel"; - constituents = - [ jobs.tarball - jobs.cabal2nix.x86_64-darwin - jobs.ghc.x86_64-darwin - jobs.git.x86_64-darwin - jobs.go.x86_64-darwin - jobs.mariadb.x86_64-darwin - jobs.nix.x86_64-darwin - jobs.nixpkgs-review.x86_64-darwin - jobs.nix-info.x86_64-darwin - jobs.nix-info-tested.x86_64-darwin - jobs.openssh.x86_64-darwin - jobs.openssl.x86_64-darwin - jobs.pandoc.x86_64-darwin - jobs.postgresql.x86_64-darwin - jobs.python3.x86_64-darwin - jobs.ruby.x86_64-darwin - jobs.rustc.x86_64-darwin - # blocking ofBorg CI 2020-02-28 - # jobs.stack.x86_64-darwin - jobs.stdenv.x86_64-darwin - jobs.vim.x86_64-darwin - jobs.cachix.x86_64-darwin - - # UI apps - # jobs.firefox-unwrapped.x86_64-darwin - jobs.qt5.qtmultimedia.x86_64-darwin - jobs.inkscape.x86_64-darwin - jobs.gimp.x86_64-darwin - jobs.emacs.x86_64-darwin - jobs.wireshark.x86_64-darwin - jobs.transmission-gtk.x86_64-darwin - - # Tests - /* - jobs.tests.cc-wrapper.x86_64-darwin - jobs.tests.cc-wrapper-clang.x86_64-darwin - jobs.tests.cc-wrapper-libcxx.x86_64-darwin - jobs.tests.stdenv-inputs.x86_64-darwin - jobs.tests.macOSSierraShared.x86_64-darwin - jobs.tests.patch-shebangs.x86_64-darwin - */ - ]; - } else null; - - unstable = pkgs.releaseTools.aggregate - { name = "nixpkgs-${jobs.tarball.version}"; - meta.description = "Release-critical builds for the Nixpkgs unstable channel"; - constituents = - [ jobs.tarball - jobs.metrics - jobs.manual - jobs.lib-tests - jobs.pkgs-lib-tests - jobs.stdenv.x86_64-linux - jobs.cargo.x86_64-linux - jobs.go.x86_64-linux - jobs.linux.x86_64-linux - jobs.pandoc.x86_64-linux - jobs.python3.x86_64-linux - # Needed by contributors to test PRs (by inclusion of the PR template) - jobs.nixpkgs-review.x86_64-linux - # Needed for support - jobs.nix-info.x86_64-linux - jobs.nix-info-tested.x86_64-linux - # Ensure that X11/GTK are in order. - jobs.firefox-unwrapped.x86_64-linux - jobs.cachix.x86_64-linux - - /* - jobs.tests.cc-wrapper.x86_64-linux - jobs.tests.cc-wrapper-gcc7.x86_64-linux - jobs.tests.cc-wrapper-gcc8.x86_64-linux - - # broken see issue #40038 - - jobs.tests.cc-wrapper-clang.x86_64-linux - jobs.tests.cc-wrapper-libcxx.x86_64-linux - jobs.tests.cc-wrapper-clang-5.x86_64-linux - jobs.tests.cc-wrapper-libcxx-5.x86_64-linux - jobs.tests.cc-wrapper-clang-6.x86_64-linux - jobs.tests.cc-wrapper-libcxx-6.x86_64-linux - jobs.tests.cc-multilib-gcc.x86_64-linux - jobs.tests.cc-multilib-clang.x86_64-linux - jobs.tests.stdenv-inputs.x86_64-linux - jobs.tests.patch-shebangs.x86_64-linux - */ - ] - ++ lib.collect lib.isDerivation jobs.stdenvBootstrapTools - ++ lib.optionals supportDarwin.x86_64 [ - jobs.stdenv.x86_64-darwin - jobs.cargo.x86_64-darwin - jobs.cachix.x86_64-darwin - jobs.go.x86_64-darwin - jobs.python3.x86_64-darwin - jobs.nixpkgs-review.x86_64-darwin - jobs.nix-info.x86_64-darwin - jobs.nix-info-tested.x86_64-darwin - jobs.git.x86_64-darwin - jobs.mariadb.x86_64-darwin - jobs.vim.x86_64-darwin - jobs.inkscape.x86_64-darwin - jobs.qt5.qtmultimedia.x86_64-darwin - /* - jobs.tests.cc-wrapper.x86_64-darwin - jobs.tests.cc-wrapper-gcc7.x86_64-darwin - # jobs.tests.cc-wrapper-gcc8.x86_64-darwin - jobs.tests.cc-wrapper-clang.x86_64-darwin - jobs.tests.cc-wrapper-libcxx.x86_64-darwin - jobs.tests.cc-wrapper-clang-5.x86_64-darwin - jobs.tests.cc-wrapper-libcxx-6.x86_64-darwin - jobs.tests.cc-wrapper-clang-6.x86_64-darwin - jobs.tests.cc-wrapper-libcxx-6.x86_64-darwin - jobs.tests.stdenv-inputs.x86_64-darwin - jobs.tests.macOSSierraShared.x86_64-darwin - jobs.tests.patch-shebangs.x86_64-darwin - */ - ]; - }; - - stdenvBootstrapTools = with lib; - genAttrs systemsWithAnySupport - (system: { - inherit - (import ../stdenv/linux/make-bootstrap-tools.nix { - localSystem = { inherit system; }; - }) - dist test; - }) - # darwin is special in this - // optionalAttrs supportDarwin.x86_64 { - x86_64-darwin = - let - bootstrap = import ../stdenv/darwin/make-bootstrap-tools.nix { system = "x86_64-darwin"; }; - in { - # Lightweight distribution and test - inherit (bootstrap) dist test; - # Test a full stdenv bootstrap from the bootstrap tools definition - inherit (bootstrap.test-pkgs) stdenv; - }; - } // optionalAttrs supportDarwin.aarch64 { - # Cross compiled bootstrap tools - aarch64-darwin = - let - bootstrap = import ../stdenv/darwin/make-bootstrap-tools.nix { system = "x86_64-darwin"; crossSystem = "aarch64-darwin"; }; - in { - # Distribution only for now - inherit (bootstrap) dist; - }; + let nonPackageJobs = + { tarball = import ./make-tarball.nix { inherit pkgs nixpkgs officialRelease supportedSystems; }; + + metrics = import ./metrics.nix { inherit pkgs nixpkgs; }; + + manual = import ../../doc { inherit pkgs nixpkgs; }; + lib-tests = import ../../lib/tests/release.nix { inherit pkgs; }; + pkgs-lib-tests = import ../pkgs-lib/tests { inherit pkgs; }; + + darwin-tested = if supportDarwin.x86_64 then pkgs.releaseTools.aggregate + { name = "nixpkgs-darwin-${jobs.tarball.version}"; + meta.description = "Release-critical builds for the Nixpkgs darwin channel"; + constituents = + [ jobs.tarball + jobs.cabal2nix.x86_64-darwin + jobs.ghc.x86_64-darwin + jobs.git.x86_64-darwin + jobs.go.x86_64-darwin + jobs.mariadb.x86_64-darwin + jobs.nix.x86_64-darwin + jobs.nixpkgs-review.x86_64-darwin + jobs.nix-info.x86_64-darwin + jobs.nix-info-tested.x86_64-darwin + jobs.openssh.x86_64-darwin + jobs.openssl.x86_64-darwin + jobs.pandoc.x86_64-darwin + jobs.postgresql.x86_64-darwin + jobs.python3.x86_64-darwin + jobs.ruby.x86_64-darwin + jobs.rustc.x86_64-darwin + # blocking ofBorg CI 2020-02-28 + # jobs.stack.x86_64-darwin + jobs.stdenv.x86_64-darwin + jobs.vim.x86_64-darwin + jobs.cachix.x86_64-darwin + + # UI apps + # jobs.firefox-unwrapped.x86_64-darwin + jobs.qt5.qtmultimedia.x86_64-darwin + jobs.inkscape.x86_64-darwin + jobs.gimp.x86_64-darwin + jobs.emacs.x86_64-darwin + jobs.wireshark.x86_64-darwin + jobs.transmission-gtk.x86_64-darwin + + # Tests + /* + jobs.tests.cc-wrapper.x86_64-darwin + jobs.tests.cc-wrapper-clang.x86_64-darwin + jobs.tests.cc-wrapper-libcxx.x86_64-darwin + jobs.tests.stdenv-inputs.x86_64-darwin + jobs.tests.macOSSierraShared.x86_64-darwin + jobs.tests.patch-shebangs.x86_64-darwin + */ + ]; + } else null; + + unstable = pkgs.releaseTools.aggregate + { name = "nixpkgs-${jobs.tarball.version}"; + meta.description = "Release-critical builds for the Nixpkgs unstable channel"; + constituents = + [ jobs.tarball + jobs.metrics + jobs.manual + jobs.lib-tests + jobs.pkgs-lib-tests + jobs.stdenv.x86_64-linux + jobs.cargo.x86_64-linux + jobs.go.x86_64-linux + jobs.linux.x86_64-linux + jobs.pandoc.x86_64-linux + jobs.python3.x86_64-linux + # Needed by contributors to test PRs (by inclusion of the PR template) + jobs.nixpkgs-review.x86_64-linux + # Needed for support + jobs.nix-info.x86_64-linux + jobs.nix-info-tested.x86_64-linux + # Ensure that X11/GTK are in order. + jobs.firefox-unwrapped.x86_64-linux + jobs.cachix.x86_64-linux + + /* + jobs.tests.cc-wrapper.x86_64-linux + jobs.tests.cc-wrapper-gcc7.x86_64-linux + jobs.tests.cc-wrapper-gcc8.x86_64-linux + + # broken see issue #40038 + + jobs.tests.cc-wrapper-clang.x86_64-linux + jobs.tests.cc-wrapper-libcxx.x86_64-linux + jobs.tests.cc-wrapper-clang-5.x86_64-linux + jobs.tests.cc-wrapper-libcxx-5.x86_64-linux + jobs.tests.cc-wrapper-clang-6.x86_64-linux + jobs.tests.cc-wrapper-libcxx-6.x86_64-linux + jobs.tests.cc-multilib-gcc.x86_64-linux + jobs.tests.cc-multilib-clang.x86_64-linux + jobs.tests.stdenv-inputs.x86_64-linux + jobs.tests.patch-shebangs.x86_64-linux + */ + ] + ++ lib.collect lib.isDerivation jobs.stdenvBootstrapTools + ++ lib.optionals supportDarwin.x86_64 [ + jobs.stdenv.x86_64-darwin + jobs.cargo.x86_64-darwin + jobs.cachix.x86_64-darwin + jobs.go.x86_64-darwin + jobs.python3.x86_64-darwin + jobs.nixpkgs-review.x86_64-darwin + jobs.nix-info.x86_64-darwin + jobs.nix-info-tested.x86_64-darwin + jobs.git.x86_64-darwin + jobs.mariadb.x86_64-darwin + jobs.vim.x86_64-darwin + jobs.inkscape.x86_64-darwin + jobs.qt5.qtmultimedia.x86_64-darwin + /* + jobs.tests.cc-wrapper.x86_64-darwin + jobs.tests.cc-wrapper-gcc7.x86_64-darwin + # jobs.tests.cc-wrapper-gcc8.x86_64-darwin + jobs.tests.cc-wrapper-clang.x86_64-darwin + jobs.tests.cc-wrapper-libcxx.x86_64-darwin + jobs.tests.cc-wrapper-clang-5.x86_64-darwin + jobs.tests.cc-wrapper-libcxx-6.x86_64-darwin + jobs.tests.cc-wrapper-clang-6.x86_64-darwin + jobs.tests.cc-wrapper-libcxx-6.x86_64-darwin + jobs.tests.stdenv-inputs.x86_64-darwin + jobs.tests.macOSSierraShared.x86_64-darwin + jobs.tests.patch-shebangs.x86_64-darwin + */ + ]; }; - } // (mapTestOn ((packagePlatforms pkgs) // { + stdenvBootstrapTools = with lib; + genAttrs systemsWithAnySupport + (system: { + inherit + (import ../stdenv/linux/make-bootstrap-tools.nix { + localSystem = { inherit system; }; + }) + dist test; + }) + # darwin is special in this + // optionalAttrs supportDarwin.x86_64 { + x86_64-darwin = + let + bootstrap = import ../stdenv/darwin/make-bootstrap-tools.nix { system = "x86_64-darwin"; }; + in { + # Lightweight distribution and test + inherit (bootstrap) dist test; + # Test a full stdenv bootstrap from the bootstrap tools definition + inherit (bootstrap.test-pkgs) stdenv; + }; + } // optionalAttrs supportDarwin.aarch64 { + # Cross compiled bootstrap tools + aarch64-darwin = + let + bootstrap = import ../stdenv/darwin/make-bootstrap-tools.nix { system = "x86_64-darwin"; crossSystem = "aarch64-darwin"; }; + in { + # Distribution only for now + inherit (bootstrap) dist; + }; + }; + + }; + # Do not allow attribute collision between jobs inserted in + # 'nonPackageAttrs' and jobs pulled in from 'pkgs'. + # Conflicts usually cause silent job drops like in + # https://github.com/NixOS/nixpkgs/pull/182058 + nonPackageAttrs = lib.attrNames nonPackageJobs; + packageAttrs = lib.attrNames pkgs; + attributeCollisions = lib.intersectLists nonPackageAttrs packageAttrs; + in assert lib.assertMsg + (attributeCollisions == []) + "jobs: Unexpected attribute collision between 'jobs' and 'pkgs': ${lib.concatStringsSep " " attributeCollisions}"; + + nonPackageJobs // (mapTestOn ((packagePlatforms pkgs) // { haskell.compiler = packagePlatforms pkgs.haskell.compiler; haskellPackages = packagePlatforms pkgs.haskellPackages; idrisPackages = packagePlatforms pkgs.idrisPackages;