diff options
author | Arian van Putten <aeroboy94@gmail.com> | 2019-01-15 17:09:17 +0100 |
---|---|---|
committer | Arian van Putten <aeroboy94@gmail.com> | 2019-05-29 16:07:05 +0200 |
commit | b086b342bb5f443d3e98805eed60bbf76d37106c (patch) | |
tree | e722192cb52a963df0cbb28b90442ff03bcf1535 /pkgs/build-support/kernel | |
parent | 2669633053796ac5cb19cec79e96b0933fcf0ec3 (diff) |
build-support/make-initrd: Don't derive derivation name from file name
not all valid file names are valid derivation names. This can cause troubles when, for example, trying to place systemd template unit files, which contain an '@' in their name, in an initrd. Fixes #53987
Diffstat (limited to 'pkgs/build-support/kernel')
-rw-r--r-- | pkgs/build-support/kernel/make-initrd.nix | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/pkgs/build-support/kernel/make-initrd.nix b/pkgs/build-support/kernel/make-initrd.nix index 7ad1affb65a37..7a5642e565de1 100644 --- a/pkgs/build-support/kernel/make-initrd.nix +++ b/pkgs/build-support/kernel/make-initrd.nix @@ -16,10 +16,16 @@ , name ? "initrd" , compressor ? "gzip -9n" , prepend ? [] +, lib }: +let + # !!! Move this into a public lib function, it is probably useful for others + toValidStoreName = x: with builtins; + lib.concatStringsSep "-" (filter (x: !(isList x)) (split "[^a-zA-Z0-9_=.?-]+" x)); -stdenv.mkDerivation rec { +in stdenv.mkDerivation rec { inherit name; + builder = ./make-initrd.sh; makeUInitrd = stdenv.hostPlatform.platform.kernelTarget == "uImage"; @@ -36,8 +42,12 @@ stdenv.mkDerivation rec { # Note: we don't use closureInfo yet, as that won't build with nix-1.x. # See #36268. exportReferencesGraph = - map (x: [("closure-" + baseNameOf x.symlink) x.object]) contents; + lib.zipListsWith + (x: i: [("closure-${toValidStoreName (baseNameOf x.symlink)}-${toString i}") x.object]) + contents + (lib.range 0 (lib.length contents - 1)); pathsFromGraph = ./paths-from-graph.pl; inherit compressor prepend; } + |