per-system-optim/nixpkgs/nixpkgs.patch

136 lines
6 KiB
Diff
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

diff --git a/lib/systems/architectures.nix b/lib/systems/architectures.nix
index 9be8c80e3f11..0d1e4c6dfb05 100644
--- a/lib/systems/architectures.nix
+++ b/lib/systems/architectures.nix
@@ -41,9 +41,25 @@ rec {
armv5te = [ ];
armv6 = [ ];
armv7-a = [ ];
- armv8-a = [ ];
+ armv8-a = [ "fp" "simd" ];
+ "armv8.1-a" = [ "crc" "lse" "rdma" ] ++ features.armv8-a;
+ "armv8.2-a" = features."armv8.1-a";
+ "armv8.3-a" = [ "pauth" ] ++ features."armv8.2-a";
+ "armv8.4-a" = [ "flagm" "fp16fml" "dotprod" ] ++ features."armv8.3-a";
+ "armv8.5-a" = [ "sb" "sbss" "predres" ] ++ features."armv8.4-a";
+ "armv8.6-a" = [ "bf16" "i8mm" ] ++ features."armv8.5-a";
+ "armv8.7-a" = [ "ls64" ] ++ features."armv8.6-a";
+ "armv8.8-a" = [ "mops" ] ++ features."armv8.7-a";
+ "armv9-a" = [ "sve" "sve2" ] ++ features."armv8.5-a";
+ "armv9.1-a" = [ "bf16" "i8mm" ] ++ features."armv9-a";
+ "armv9.2-a" = [ "ls64" ] ++ features."armv9.1-a";
+ "armv9.3-a" = [ "mops" ] ++ features."armv9.2-a";
mips32 = [ ];
loongson2f = [ ];
+ rv64gc = [];
+ rv64gc_zba = [];
+ rv64gc_zbb = [];
+ rv64gc_zba_zbb = [];
};
# a superior CPU has all the features of an inferior and is able to build and test code for it
@@ -114,8 +130,24 @@ rec {
armv6 = [ ];
armv7-a = [ ];
armv8-a = [ ];
+ "armv8.1-a" = [ "armv8-a" ] ++ inferiors.armv8-a;
+ "armv8.2-a" = [ "armv8.1-a" ] ++ inferiors."armv8.1-a";
+ "armv8.3-a" = [ "armv8.2-a" ] ++ inferiors."armv8.2-a";
+ "armv8.4-a" = [ "armv8.3-a" ] ++ inferiors."armv8.3-a";
+ "armv8.5-a" = [ "armv8.4-a" ] ++ inferiors."armv8.4-a";
+ "armv8.6-a" = [ "armv8.5-a" ] ++ inferiors."armv8.5-a";
+ "armv8.7-a" = [ "armv8.6-a" ] ++ inferiors."armv8.6-a";
+ "armv8.8-a" = [ "armv8.7-a" ] ++ inferiors."armv8.7-a";
+ "armv9-a" = [ "armv8.5-a" ] ++ inferiors."armv8.5-a";
+ "armv9.1-a" = [ "armv9-a" "armv8.6-a" ] ++ inferiors."armv9-a" ++ inferiors."armv8.6-a";
+ "armv9.2-a" = [ "armv9.1-a" "armv8.7-a" ] ++ inferiors."armv9.1-a" ++ inferiors."armv8.7-a";
+ "armv9.3-a" = [ "armv9.2-a" "armv8.8-a" ] ++ inferiors."armv9.2-a" ++ inferiors."armv8.8-a";
mips32 = [ ];
loongson2f = [ ];
+ rv64gc = [ ];
+ rv64gc_zba = [ "rv64gc" ] ++ inferiors.rv64gc;
+ rv64gc_zbb = [ "rv64gc" ] ++ inferiors.rv64gc;
+ rv64gc_zba_zbb = [ "rv64gc" "rv64gc_zba" "rv64gc_zbb" ];
};
predicates = let
diff --git a/pkgs/build-support/cc-wrapper/default.nix b/pkgs/build-support/cc-wrapper/default.nix
index db3efa068c0f..2e75895496a1 100644
--- a/pkgs/build-support/cc-wrapper/default.nix
+++ b/pkgs/build-support/cc-wrapper/default.nix
@@ -128,6 +128,9 @@ let
znver2 = versionAtLeast ccVersion "9.0";
znver3 = versionAtLeast ccVersion "11.0";
znver4 = versionAtLeast ccVersion "13.0";
+
+ # Risc-V
+ rv64gc_zba_zbb = versionAtLeast ccVersion "11.0";
}.${arch} or true
else if isClang then
{ #Generic
@@ -147,6 +150,9 @@ let
znver2 = versionAtLeast ccVersion "9.0";
znver3 = versionAtLeast ccVersion "12.0";
znver4 = versionAtLeast ccVersion "16.0";
+
+ # Risc-V
+ rv64gc_zba_zbb = versionAtLeast ccVersion "14.0";
}.${arch} or true
else
false;
diff --git a/pkgs/stdenv/generic/make-derivation.nix b/pkgs/stdenv/generic/make-derivation.nix
index 745426915987..cf731b618f0c 100644
--- a/pkgs/stdenv/generic/make-derivation.nix
+++ b/pkgs/stdenv/generic/make-derivation.nix
@@ -166,10 +166,8 @@ let
, ... } @ attrs:
let
- # TODO(@oxij, @Ericson2314): This is here to keep the old semantics, remove when
- # no package has `doCheck = true`.
- doCheck' = doCheck && stdenv.buildPlatform.canExecute stdenv.hostPlatform;
- doInstallCheck' = doInstallCheck && stdenv.buildPlatform.canExecute stdenv.hostPlatform;
+ doCheck' = config.doCheckByDefault && stdenv.buildPlatform.canExecute stdenv.hostPlatform;
+ doInstallCheck' = config.doCheckByDefault && stdenv.buildPlatform.canExecute stdenv.hostPlatform;
separateDebugInfo' = separateDebugInfo && stdenv.hostPlatform.isLinux;
outputs' = outputs ++ lib.optional separateDebugInfo' "debug";
diff --git a/pkgs/top-level/impure.nix b/pkgs/top-level/impure.nix
index 4d847e280f4b..874b776c1e16 100644
--- a/pkgs/top-level/impure.nix
+++ b/pkgs/top-level/impure.nix
@@ -9,12 +9,15 @@ let
# Return x if it evaluates, or def if it throws an exception.
try = x: def: let res = builtins.tryEval x; in if res.success then res.value else def;
+ configuredLocalSystem = if builtins.pathExists "/etc/nix/local-system.json" then builtins.fromJSON (builtins.readFile "/etc/nix/local-system.json") else { system = builtins.currentSystem; };
+ localSystemOverriden = args: args ? system && (args.system != configuredLocalSystem);
+ defaultLocalSystem = args: if localSystemOverriden args then { system = args.system; } else configuredLocalSystem;
in
{ # We put legacy `system` into `localSystem`, if `localSystem` was not passed.
# If neither is passed, assume we are building packages on the current
# (build, in GNU Autotools parlance) platform.
- localSystem ? { system = args.system or builtins.currentSystem; }
+ localSystem ? null
# These are needed only because nix's `--arg` command-line logic doesn't work
# with unnamed parameters allowed by ...
@@ -78,6 +81,9 @@ in
, ...
} @ args:
+let
+ localSystem' = if localSystem == null then defaultLocalSystem args else localSystem;
+in
# If `localSystem` was explicitly passed, legacy `system` should
# not be passed, and vice-versa.
@@ -85,5 +91,6 @@ assert args ? localSystem -> !(args ? system);
assert args ? system -> !(args ? localSystem);
import ./. (builtins.removeAttrs args [ "system" ] // {
- inherit config overlays localSystem;
+ inherit config overlays;
+ localSystem = localSystem';
})