diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/generators.nix | 2 | ||||
-rw-r--r-- | lib/licenses.nix | 7 | ||||
-rw-r--r-- | lib/strings.nix | 3 | ||||
-rw-r--r-- | lib/systems/architectures.nix | 39 | ||||
-rwxr-xr-x | lib/tests/modules.sh | 6 | ||||
-rw-r--r-- | lib/tests/modules/types.nix | 6 | ||||
-rw-r--r-- | lib/trivial.nix | 2 |
7 files changed, 45 insertions, 20 deletions
diff --git a/lib/generators.nix b/lib/generators.nix index 496845fc9ae4d..a2dddedd2d3a7 100644 --- a/lib/generators.nix +++ b/lib/generators.nix @@ -168,7 +168,7 @@ rec { mkKeyValue ? mkKeyValueDefault {} "=", # allow lists as values for duplicate keys listsAsDuplicateKeys ? false - }: { globalSection, sections }: + }: { globalSection, sections ? {} }: ( if globalSection == {} then "" else (toKeyValue { inherit mkKeyValue listsAsDuplicateKeys; } globalSection) diff --git a/lib/licenses.nix b/lib/licenses.nix index 8836ab912e631..ee71488263a93 100644 --- a/lib/licenses.nix +++ b/lib/licenses.nix @@ -650,6 +650,13 @@ in mkLicense lset) ({ free = true; }; + fairsource09 = { + fullName = "Fair Source License, version 0.9"; + url = "https://fair.io/v0.9.txt"; + free = false; + redistributable = true; + }; + issl = { fullName = "Intel Simplified Software License"; url = "https://software.intel.com/en-us/license/intel-simplified-software-license"; diff --git a/lib/strings.nix b/lib/strings.nix index bb07f40d7a559..1eb6cf9c1afbe 100644 --- a/lib/strings.nix +++ b/lib/strings.nix @@ -18,6 +18,7 @@ rec { elemAt filter fromJSON + genList head isInt isList @@ -346,7 +347,7 @@ rec { => [ "�" "�" "�" "�" ] */ stringToCharacters = s: - map (p: substring p 1 s) (lib.range 0 (stringLength s - 1)); + genList (p: substring p 1 s) (stringLength s); /* Manipulate a string character by character and replace them by strings before concatenating the results. diff --git a/lib/systems/architectures.nix b/lib/systems/architectures.nix index 11668ae59a71a..9be8c80e3f117 100644 --- a/lib/systems/architectures.nix +++ b/lib/systems/architectures.nix @@ -3,8 +3,15 @@ rec { # gcc.arch to its features (as in /proc/cpuinfo) features = { + # x86_64 Generic + # Spec: https://gitlab.com/x86-psABIs/x86-64-ABI/ default = [ ]; + x86-64 = [ ]; + x86-64-v2 = [ "sse3" "ssse3" "sse4_1" "sse4_2" ]; + x86-64-v3 = [ "sse3" "ssse3" "sse4_1" "sse4_2" "avx" "avx2" "fma" ]; + x86-64-v4 = [ "sse3" "ssse3" "sse4_1" "sse4_2" "avx" "avx2" "avx512" "fma" ]; # x86_64 Intel + nehalem = [ "sse3" "ssse3" "sse4_1" "sse4_2" "aes" ]; westmere = [ "sse3" "ssse3" "sse4_1" "sse4_2" "aes" ]; sandybridge = [ "sse3" "ssse3" "sse4_1" "sse4_2" "aes" "avx" ]; ivybridge = [ "sse3" "ssse3" "sse4_1" "sse4_2" "aes" "avx" ]; @@ -41,22 +48,32 @@ rec { # a superior CPU has all the features of an inferior and is able to build and test code for it inferiors = { + # x86_64 Generic + default = [ ]; + x86-64 = [ ]; + x86-64-v2 = [ "x86-64" ]; + x86-64-v3 = [ "x86-64-v2" ] ++ inferiors.x86-64-v2; + x86-64-v4 = [ "x86-64-v3" ] ++ inferiors.x86-64-v3; + # x86_64 Intel # https://gcc.gnu.org/onlinedocs/gcc/x86-Options.html - default = [ ]; - westmere = [ ]; - sandybridge = [ "westmere" ] ++ inferiors.westmere; - ivybridge = [ "sandybridge" ] ++ inferiors.sandybridge; - haswell = [ "ivybridge" ] ++ inferiors.ivybridge; - broadwell = [ "haswell" ] ++ inferiors.haswell; - skylake = [ "broadwell" ] ++ inferiors.broadwell; - skylake-avx512 = [ "skylake" ] ++ inferiors.skylake; + nehalem = [ "x86-64-v2" ] ++ inferiors.x86-64-v2; + westmere = [ "nehalem" ] ++ inferiors.nehalem; + sandybridge = [ "westmere" ] ++ inferiors.westmere; + ivybridge = [ "sandybridge" ] ++ inferiors.sandybridge; + + haswell = lib.unique ([ "ivybridge" "x86-64-v3" ] ++ inferiors.ivybridge ++ inferiors.x86-64-v3); + broadwell = [ "haswell" ] ++ inferiors.haswell; + skylake = [ "broadwell" ] ++ inferiors.broadwell; + + skylake-avx512 = lib.unique ([ "skylake" "x86-64-v4" ] ++ inferiors.skylake ++ inferiors.x86-64-v4); cannonlake = [ "skylake-avx512" ] ++ inferiors.skylake-avx512; icelake-client = [ "cannonlake" ] ++ inferiors.cannonlake; icelake-server = [ "icelake-client" ] ++ inferiors.icelake-client; - cascadelake = [ "skylake-avx512" ] ++ inferiors.cannonlake; + cascadelake = [ "cannonlake" ] ++ inferiors.cannonlake; cooperlake = [ "cascadelake" ] ++ inferiors.cascadelake; tigerlake = [ "icelake-server" ] ++ inferiors.icelake-server; + # CX16 does not exist on alderlake, while it does on nearly all other intel CPUs alderlake = [ ]; @@ -87,10 +104,10 @@ rec { # https://gcc.gnu.org/onlinedocs/gcc/x86-Options.html # https://en.wikichip.org/wiki/amd/microarchitectures/zen # https://en.wikichip.org/wiki/intel/microarchitectures/skylake - znver1 = [ "skylake" ] ++ inferiors.skylake; + znver1 = [ "skylake" ] ++ inferiors.skylake; # Includes haswell and x86-64-v3 znver2 = [ "znver1" ] ++ inferiors.znver1; znver3 = [ "znver2" ] ++ inferiors.znver2; - znver4 = [ "znver3" ] ++ inferiors.znver3; + znver4 = lib.unique ([ "znver3" "x86-64-v4" ] ++ inferiors.znver3 ++ inferiors.x86-64-v4); # other armv5te = [ ]; diff --git a/lib/tests/modules.sh b/lib/tests/modules.sh index c81febb4156fb..f5f0701c63a49 100755 --- a/lib/tests/modules.sh +++ b/lib/tests/modules.sh @@ -64,9 +64,9 @@ checkConfigOutput '^"one two"$' config.result ./shorthand-meta.nix checkConfigOutput '^true$' config.result ./test-mergeAttrDefinitionsWithPrio.nix # types.pathInStore -checkConfigOutput '".*/store/5lz9p8xhf89kb1c1kk6jxrzskaiygnlh-bash-5.2-p15.drv"' config.pathInStore.ok1 ./types.nix -checkConfigOutput '".*/store/xfb3ykw9r5hpayd05sr0cizwadzq1d8q-bash-5.2-p15"' config.pathInStore.ok2 ./types.nix -checkConfigOutput '".*/store/xfb3ykw9r5hpayd05sr0cizwadzq1d8q-bash-5.2-p15/bin/bash"' config.pathInStore.ok3 ./types.nix +checkConfigOutput '".*/store/0lz9p8xhf89kb1c1kk6jxrzskaiygnlh-bash-5.2-p15.drv"' config.pathInStore.ok1 ./types.nix +checkConfigOutput '".*/store/0fb3ykw9r5hpayd05sr0cizwadzq1d8q-bash-5.2-p15"' config.pathInStore.ok2 ./types.nix +checkConfigOutput '".*/store/0fb3ykw9r5hpayd05sr0cizwadzq1d8q-bash-5.2-p15/bin/bash"' config.pathInStore.ok3 ./types.nix checkConfigError 'A definition for option .* is not of type .path in the Nix store.. Definition values:\n\s*- In .*: ""' config.pathInStore.bad1 ./types.nix checkConfigError 'A definition for option .* is not of type .path in the Nix store.. Definition values:\n\s*- In .*: ".*/store"' config.pathInStore.bad2 ./types.nix checkConfigError 'A definition for option .* is not of type .path in the Nix store.. Definition values:\n\s*- In .*: ".*/store/"' config.pathInStore.bad3 ./types.nix diff --git a/lib/tests/modules/types.nix b/lib/tests/modules/types.nix index 576db6b5b9ef9..7c43a6819e0e8 100644 --- a/lib/tests/modules/types.nix +++ b/lib/tests/modules/types.nix @@ -12,9 +12,9 @@ in pathInStore = mkOption { type = types.lazyAttrsOf types.pathInStore; }; }; config = { - pathInStore.ok1 = "${storeDir}/5lz9p8xhf89kb1c1kk6jxrzskaiygnlh-bash-5.2-p15.drv"; - pathInStore.ok2 = "${storeDir}/xfb3ykw9r5hpayd05sr0cizwadzq1d8q-bash-5.2-p15"; - pathInStore.ok3 = "${storeDir}/xfb3ykw9r5hpayd05sr0cizwadzq1d8q-bash-5.2-p15/bin/bash"; + pathInStore.ok1 = "${storeDir}/0lz9p8xhf89kb1c1kk6jxrzskaiygnlh-bash-5.2-p15.drv"; + pathInStore.ok2 = "${storeDir}/0fb3ykw9r5hpayd05sr0cizwadzq1d8q-bash-5.2-p15"; + pathInStore.ok3 = "${storeDir}/0fb3ykw9r5hpayd05sr0cizwadzq1d8q-bash-5.2-p15/bin/bash"; pathInStore.bad1 = ""; pathInStore.bad2 = "${storeDir}"; pathInStore.bad3 = "${storeDir}/"; diff --git a/lib/trivial.nix b/lib/trivial.nix index 26e4b32400f24..34c100959e6ff 100644 --- a/lib/trivial.nix +++ b/lib/trivial.nix @@ -179,7 +179,7 @@ rec { they take effect as soon as the oldest release reaches end of life. */ oldestSupportedRelease = # Update on master only. Do not backport. - 2211; + 2305; /* Whether a feature is supported in all supported releases (at the time of release branch-off, if applicable). See `oldestSupportedRelease`. */ |