diff options
author | Alyssa Ross <hi@alyssa.is> | 2020-04-01 15:50:50 +0000 |
---|---|---|
committer | Alyssa Ross <hi@alyssa.is> | 2020-04-01 15:50:50 +0000 |
commit | 75eafe97f7df0d653bec67f3962214d7c357831f (patch) | |
tree | 09f2cc901e0e637876cbb78d192dfe2fcfef8156 /nixpkgs/lib | |
parent | a53b121bf4331497da63df3b1b7f1a7897dad146 (diff) | |
parent | a2e06fc3423c4be53181b15c28dfbe0bcf67dd73 (diff) | |
download | nixlib-75eafe97f7df0d653bec67f3962214d7c357831f.tar nixlib-75eafe97f7df0d653bec67f3962214d7c357831f.tar.gz nixlib-75eafe97f7df0d653bec67f3962214d7c357831f.tar.bz2 nixlib-75eafe97f7df0d653bec67f3962214d7c357831f.tar.lz nixlib-75eafe97f7df0d653bec67f3962214d7c357831f.tar.xz nixlib-75eafe97f7df0d653bec67f3962214d7c357831f.tar.zst nixlib-75eafe97f7df0d653bec67f3962214d7c357831f.zip |
Merge commit 'a2e06fc3423c4be53181b15c28dfbe0bcf67dd73'
Diffstat (limited to 'nixpkgs/lib')
-rw-r--r-- | nixpkgs/lib/attrsets.nix | 14 | ||||
-rw-r--r-- | nixpkgs/lib/customisation.nix | 7 | ||||
-rw-r--r-- | nixpkgs/lib/default.nix | 7 | ||||
-rw-r--r-- | nixpkgs/lib/generators.nix | 18 | ||||
-rw-r--r-- | nixpkgs/lib/kernel.nix | 17 | ||||
-rw-r--r-- | nixpkgs/lib/modules.nix | 2 | ||||
-rw-r--r-- | nixpkgs/lib/strings.nix | 2 | ||||
-rw-r--r-- | nixpkgs/lib/systems/default.nix | 5 | ||||
-rw-r--r-- | nixpkgs/lib/systems/inspect.nix | 3 | ||||
-rw-r--r-- | nixpkgs/lib/tests/misc.nix | 14 | ||||
-rw-r--r-- | nixpkgs/lib/tests/release.nix | 2 | ||||
-rw-r--r-- | nixpkgs/lib/trivial.nix | 2 |
12 files changed, 68 insertions, 25 deletions
diff --git a/nixpkgs/lib/attrsets.nix b/nixpkgs/lib/attrsets.nix index 32994432d53d..72430522f7d8 100644 --- a/nixpkgs/lib/attrsets.nix +++ b/nixpkgs/lib/attrsets.nix @@ -473,6 +473,20 @@ rec { /* Pick the outputs of packages to place in buildInputs */ chooseDevOutputs = drvs: builtins.map getDev drvs; + /* Make various Nix tools consider the contents of the resulting + attribute set when looking for what to build, find, etc. + + This function only affects a single attribute set; it does not + apply itself recursively for nested attribute sets. + */ + recurseIntoAttrs = + attrs: attrs // { recurseForDerivations = true; }; + + /* Undo the effect of recurseIntoAttrs. + */ + dontRecurseIntoAttrs = + attrs: attrs // { recurseForDerivations = false; }; + /*** deprecated stuff ***/ zipWithNames = zipAttrsWithNames; diff --git a/nixpkgs/lib/customisation.nix b/nixpkgs/lib/customisation.nix index ac234e3b8c6f..dc5dd7691976 100644 --- a/nixpkgs/lib/customisation.nix +++ b/nixpkgs/lib/customisation.nix @@ -131,7 +131,12 @@ rec { origArgs = auto // args; pkgs = f origArgs; mkAttrOverridable = name: _: makeOverridable (newArgs: (f newArgs).${name}) origArgs; - in lib.mapAttrs mkAttrOverridable pkgs; + in + if lib.isDerivation pkgs then throw + ("function `callPackages` was called on a *single* derivation " + + ''"${pkgs.name or "<unknown-name>"}";'' + + " did you mean to use `callPackage` instead?") + else lib.mapAttrs mkAttrOverridable pkgs; /* Add attributes to each output of a derivation without changing diff --git a/nixpkgs/lib/default.nix b/nixpkgs/lib/default.nix index d2fe018aa6af..a909cefd60f1 100644 --- a/nixpkgs/lib/default.nix +++ b/nixpkgs/lib/default.nix @@ -24,6 +24,7 @@ let # packaging customisation = callLibs ./customisation.nix; maintainers = import ../maintainers/maintainer-list.nix; + teams = callLibs ../maintainers/team-list.nix; meta = callLibs ./meta.nix; sources = callLibs ./sources.nix; versions = callLibs ./versions.nix; @@ -55,6 +56,9 @@ let # back-compat aliases platforms = systems.doubles; + # linux kernel configuration + kernel = callLibs ./kernel.nix; + inherit (builtins) add addErrorContext attrNames concatLists deepSeq elem elemAt filter genericClosure genList getAttr hasAttr head isAttrs isBool isInt isList isString length @@ -73,7 +77,8 @@ let genAttrs isDerivation toDerivation optionalAttrs zipAttrsWithNames zipAttrsWith zipAttrs recursiveUpdateUntil recursiveUpdate matchAttrs overrideExisting getOutput getBin - getLib getDev chooseDevOutputs zipWithNames zip; + getLib getDev chooseDevOutputs zipWithNames zip + recurseIntoAttrs dontRecurseIntoAttrs; inherit (lists) singleton forEach foldr fold foldl foldl' imap0 imap1 concatMap flatten remove findSingle findFirst any all count optional optionals toList range partition zipListsWith zipLists diff --git a/nixpkgs/lib/generators.nix b/nixpkgs/lib/generators.nix index a64e94bd5cbd..240a19789b54 100644 --- a/nixpkgs/lib/generators.nix +++ b/nixpkgs/lib/generators.nix @@ -76,10 +76,14 @@ rec { * mkKeyValue is the same as in toINI. */ toKeyValue = { - mkKeyValue ? mkKeyValueDefault {} "=" - }: attrs: - let mkLine = k: v: mkKeyValue k v + "\n"; - in libStr.concatStrings (libAttr.mapAttrsToList mkLine attrs); + mkKeyValue ? mkKeyValueDefault {} "=", + listsAsDuplicateKeys ? false + }: + let mkLine = k: v: mkKeyValue k v + "\n"; + mkLines = if listsAsDuplicateKeys + then k: v: map (mkLine k) (if lib.isList v then v else [v]) + else k: v: [ (mkLine k v) ]; + in attrs: libStr.concatStrings (lib.concatLists (libAttr.mapAttrsToList mkLines attrs)); /* Generate an INI-style config file from an @@ -106,7 +110,9 @@ rec { # apply transformations (e.g. escapes) to section names mkSectionName ? (name: libStr.escape [ "[" "]" ] name), # format a setting line from key and value - mkKeyValue ? mkKeyValueDefault {} "=" + mkKeyValue ? mkKeyValueDefault {} "=", + # allow lists as values for duplicate keys + listsAsDuplicateKeys ? false }: attrsOfAttrs: let # map function to string for each key val @@ -115,7 +121,7 @@ rec { (libAttr.mapAttrsToList mapFn attrs); mkSection = sectName: sectValues: '' [${mkSectionName sectName}] - '' + toKeyValue { inherit mkKeyValue; } sectValues; + '' + toKeyValue { inherit mkKeyValue listsAsDuplicateKeys; } sectValues; in # map input to ini sections mapAttrsToStringsSep "\n" mkSection attrsOfAttrs; diff --git a/nixpkgs/lib/kernel.nix b/nixpkgs/lib/kernel.nix index 36ea30838289..2ce19f8cb68c 100644 --- a/nixpkgs/lib/kernel.nix +++ b/nixpkgs/lib/kernel.nix @@ -1,12 +1,7 @@ -{ lib, version }: +{ lib }: with lib; { - # Common patterns/legacy - whenAtLeast = ver: mkIf (versionAtLeast version ver); - whenOlder = ver: mkIf (versionOlder version ver); - # range is (inclusive, exclusive) - whenBetween = verLow: verHigh: mkIf (versionAtLeast version verLow && versionOlder version verHigh); # Keeping these around in case we decide to change this horrible implementation :) @@ -18,4 +13,14 @@ with lib; module = { tristate = "m"; }; freeform = x: { freeform = x; }; + /* + Common patterns/legacy used in common-config/hardened-config.nix + */ + whenHelpers = version: { + whenAtLeast = ver: mkIf (versionAtLeast version ver); + whenOlder = ver: mkIf (versionOlder version ver); + # range is (inclusive, exclusive) + whenBetween = verLow: verHigh: mkIf (versionAtLeast version verLow && versionOlder version verHigh); + }; + } diff --git a/nixpkgs/lib/modules.nix b/nixpkgs/lib/modules.nix index 2b1faf4f0c28..6cbef5632bd7 100644 --- a/nixpkgs/lib/modules.nix +++ b/nixpkgs/lib/modules.nix @@ -389,7 +389,7 @@ rec { let # Process mkMerge and mkIf properties. defs' = concatMap (m: - map (value: { inherit (m) file; inherit value; }) (dischargeProperties m.value) + map (value: { inherit (m) file; inherit value; }) (builtins.addErrorContext "while evaluating definitions from `${m.file}':" (dischargeProperties m.value)) ) defs; # Process mkOverride properties. diff --git a/nixpkgs/lib/strings.nix b/nixpkgs/lib/strings.nix index 6dbb3d3a3e8b..4f9509ffe7c0 100644 --- a/nixpkgs/lib/strings.nix +++ b/nixpkgs/lib/strings.nix @@ -244,7 +244,7 @@ rec { Also note that Nix treats strings as a list of bytes and thus doesn't handle unicode. - Type: stringtoCharacters :: string -> [string] + Type: stringToCharacters :: string -> [string] Example: stringToCharacters "" diff --git a/nixpkgs/lib/systems/default.nix b/nixpkgs/lib/systems/default.nix index 026117cc34fd..4ca932d17921 100644 --- a/nixpkgs/lib/systems/default.nix +++ b/nixpkgs/lib/systems/default.nix @@ -36,9 +36,8 @@ rec { else if final.isUClibc then "uclibc" else if final.isAndroid then "bionic" else if final.isLinux /* default */ then "glibc" - else if final.isMsp430 then "newlib" - else if final.isVc4 then "newlib" else if final.isAvr then "avrlibc" + else if final.isNone then "newlib" else if final.isNetBSD then "nblibc" # TODO(@Ericson2314) think more about other operating systems else "native/impure"; @@ -84,7 +83,7 @@ rec { else final.parsed.cpu.name; qemuArch = - if final.isArm then "arm" + if final.isAarch32 then "arm" else if final.isx86_64 then "x86_64" else if final.isx86 then "i386" else { diff --git a/nixpkgs/lib/systems/inspect.nix b/nixpkgs/lib/systems/inspect.nix index d1980c6dff81..01dcf0787dfa 100644 --- a/nixpkgs/lib/systems/inspect.nix +++ b/nixpkgs/lib/systems/inspect.nix @@ -55,9 +55,6 @@ rec { isEfi = map (family: { cpu.family = family; }) [ "x86" "arm" "aarch64" ]; - - # Deprecated after 18.03 - isArm = isAarch32; }; matchAnyAttrs = patterns: diff --git a/nixpkgs/lib/tests/misc.nix b/nixpkgs/lib/tests/misc.nix index 59ed1e507e24..739c5d5fe15d 100644 --- a/nixpkgs/lib/tests/misc.nix +++ b/nixpkgs/lib/tests/misc.nix @@ -148,7 +148,7 @@ runTests { "${builtins.storeDir}/d945ibfx9x185xf04b890y4f9g3cbb63-python-2.7.11"; in { storePath = isStorePath goodPath; - storePathDerivation = isStorePath (import ../.. {}).hello; + storePathDerivation = isStorePath (import ../.. { system = "x86_64-linux"; }).hello; storePathAppendix = isStorePath "${goodPath}/bin/python"; nonAbsolute = isStorePath (concatStrings (tail (stringToCharacters goodPath))); @@ -348,6 +348,18 @@ runTests { ''; }; + testToINIDuplicateKeys = { + expr = generators.toINI { listsAsDuplicateKeys = true; } { foo.bar = true; baz.qux = [ 1 false ]; }; + expected = '' + [baz] + qux=1 + qux=false + + [foo] + bar=true + ''; + }; + testToINIDefaultEscapes = { expr = generators.toINI {} { "no [ and ] allowed unescaped" = { diff --git a/nixpkgs/lib/tests/release.nix b/nixpkgs/lib/tests/release.nix index 737d142d2532..069c015d783a 100644 --- a/nixpkgs/lib/tests/release.nix +++ b/nixpkgs/lib/tests/release.nix @@ -2,7 +2,7 @@ pkgs.runCommandNoCC "nixpkgs-lib-tests" { buildInputs = [ pkgs.nix (import ./check-eval.nix) ]; - NIX_PATH="nixpkgs=${pkgs.path}"; + NIX_PATH = "nixpkgs=${toString pkgs.path}"; } '' datadir="${pkgs.nix}/share" export TEST_ROOT=$(pwd)/test-tmp diff --git a/nixpkgs/lib/trivial.nix b/nixpkgs/lib/trivial.nix index a281cd70fb0e..5788dd435e59 100644 --- a/nixpkgs/lib/trivial.nix +++ b/nixpkgs/lib/trivial.nix @@ -171,7 +171,7 @@ rec { On each release the first letter is bumped and a new animal is chosen starting with that new letter. */ - codeName = "Markhor"; + codeName = "Nightingale"; /* Returns the current nixpkgs version suffix as string. */ versionSuffix = |