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
This commit is contained in:
parent
2669633053
commit
b086b342bb
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue