mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-11-21 22:43:01 +00:00
tree-wide: switch initrd generators back to gnu cpio
Originally, we switched to bsdtar from libarchive to solve a reproducibility issue related to hardlinks As of gnu cpio 2.14 the --ignore-dirnlink option is introduced and now included in --reproducible, which solves this issue By switching back, we are in turn solving an issue in libarchive >=3.7.5 erroring out with "Error reading archive -: (null)" Change-Id: Ib6140d599b6547d8e941b0251ce996e303c41fa6
This commit is contained in:
parent
faf294a656
commit
0f216e2578
@ -405,7 +405,7 @@ let
|
|||||||
${lib.optionalString (config.boot.initrd.secrets == {})
|
${lib.optionalString (config.boot.initrd.secrets == {})
|
||||||
"exit 0"}
|
"exit 0"}
|
||||||
|
|
||||||
export PATH=${pkgs.coreutils}/bin:${pkgs.libarchive}/bin:${pkgs.gzip}/bin:${pkgs.findutils}/bin
|
export PATH=${pkgs.coreutils}/bin:${pkgs.cpio}/bin:${pkgs.gzip}/bin:${pkgs.findutils}/bin
|
||||||
|
|
||||||
function cleanup {
|
function cleanup {
|
||||||
if [ -n "$tmp" -a -d "$tmp" ]; then
|
if [ -n "$tmp" -a -d "$tmp" ]; then
|
||||||
@ -426,7 +426,7 @@ let
|
|||||||
}
|
}
|
||||||
|
|
||||||
# mindepth 1 so that we don't change the mode of /
|
# mindepth 1 so that we don't change the mode of /
|
||||||
(cd "$tmp" && find . -mindepth 1 | xargs touch -amt 197001010000 && find . -mindepth 1 -print0 | sort -z | bsdtar --uid 0 --gid 0 -cnf - -T - | bsdtar --null -cf - --format=newc @-) | \
|
(cd "$tmp" && find . -mindepth 1 | xargs touch -amt 197001010000 && find . -mindepth 1 -print0 | sort -z | cpio --quiet -o -H newc -R +0:+0 --reproducible --null) | \
|
||||||
${compressorExe} ${lib.escapeShellArgs initialRamdisk.compressorArgs} >> "$1"
|
${compressorExe} ${lib.escapeShellArgs initialRamdisk.compressorArgs} >> "$1"
|
||||||
'';
|
'';
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ let
|
|||||||
# compression type and filename extension.
|
# compression type and filename extension.
|
||||||
compressorName = fullCommand: builtins.elemAt (builtins.match "([^ ]*/)?([^ ]+).*" fullCommand) 1;
|
compressorName = fullCommand: builtins.elemAt (builtins.match "([^ ]*/)?([^ ]+).*" fullCommand) 1;
|
||||||
in
|
in
|
||||||
{ stdenvNoCC, libarchive, ubootTools, lib, pkgsBuildHost, makeInitrdNGTool, binutils, runCommand
|
{ stdenvNoCC, cpio, ubootTools, lib, pkgsBuildHost, makeInitrdNGTool, binutils, runCommand
|
||||||
# Name of the derivation (not of the resulting file!)
|
# Name of the derivation (not of the resulting file!)
|
||||||
, name ? "initrd"
|
, name ? "initrd"
|
||||||
|
|
||||||
@ -74,7 +74,7 @@ in
|
|||||||
passAsFile = ["contents"];
|
passAsFile = ["contents"];
|
||||||
contents = builtins.toJSON contents;
|
contents = builtins.toJSON contents;
|
||||||
|
|
||||||
nativeBuildInputs = [makeInitrdNGTool libarchive] ++ lib.optional makeUInitrd ubootTools ++ lib.optional strip binutils;
|
nativeBuildInputs = [makeInitrdNGTool cpio] ++ lib.optional makeUInitrd ubootTools ++ lib.optional strip binutils;
|
||||||
|
|
||||||
STRIP = if strip then "${pkgsBuildHost.binutils.targetPrefix}strip" else null;
|
STRIP = if strip then "${pkgsBuildHost.binutils.targetPrefix}strip" else null;
|
||||||
}) ''
|
}) ''
|
||||||
@ -85,7 +85,7 @@ in
|
|||||||
for PREP in $prepend; do
|
for PREP in $prepend; do
|
||||||
cat $PREP >> $out/initrd
|
cat $PREP >> $out/initrd
|
||||||
done
|
done
|
||||||
(cd root && find . -print0 | sort -z | bsdtar --uid 0 --gid 0 -cnf - -T - | bsdtar --null -cf - --format=newc @- | eval -- $compress >> "$out/initrd")
|
(cd root && find . -print0 | sort -z | cpio --quiet -o -H newc -R +0:+0 --reproducible --null | eval -- $compress >> "$out/initrd")
|
||||||
|
|
||||||
if [ -n "$makeUInitrd" ]; then
|
if [ -n "$makeUInitrd" ]; then
|
||||||
mkimage -A "$uInitrdArch" -O linux -T ramdisk -C "$uInitrdCompression" -d "$out/initrd" $out/initrd.img
|
mkimage -A "$uInitrdArch" -O linux -T ramdisk -C "$uInitrdCompression" -d "$out/initrd" $out/initrd.img
|
||||||
|
@ -18,7 +18,7 @@ let
|
|||||||
# compression type and filename extension.
|
# compression type and filename extension.
|
||||||
compressorName = fullCommand: builtins.elemAt (builtins.match "([^ ]*/)?([^ ]+).*" fullCommand) 1;
|
compressorName = fullCommand: builtins.elemAt (builtins.match "([^ ]*/)?([^ ]+).*" fullCommand) 1;
|
||||||
in
|
in
|
||||||
{ stdenvNoCC, perl, libarchive, ubootTools, lib, pkgsBuildHost
|
{ stdenvNoCC, perl, cpio, ubootTools, lib, pkgsBuildHost
|
||||||
# Name of the derivation (not of the resulting file!)
|
# Name of the derivation (not of the resulting file!)
|
||||||
, name ? "initrd"
|
, name ? "initrd"
|
||||||
|
|
||||||
@ -80,7 +80,7 @@ in stdenvNoCC.mkDerivation (rec {
|
|||||||
|
|
||||||
builder = ./make-initrd.sh;
|
builder = ./make-initrd.sh;
|
||||||
|
|
||||||
nativeBuildInputs = [ perl libarchive ]
|
nativeBuildInputs = [ perl cpio ]
|
||||||
++ lib.optional makeUInitrd ubootTools;
|
++ lib.optional makeUInitrd ubootTools;
|
||||||
|
|
||||||
compress = "${_compressorExecutable} ${lib.escapeShellArgs _compressorArgsReal}";
|
compress = "${_compressorExecutable} ${lib.escapeShellArgs _compressorArgsReal}";
|
||||||
|
@ -40,7 +40,7 @@ for PREP in $prepend; do
|
|||||||
cat $PREP >> $out/initrd
|
cat $PREP >> $out/initrd
|
||||||
done
|
done
|
||||||
(cd root && find * .[^.*] -exec touch -h -d '@1' '{}' +)
|
(cd root && find * .[^.*] -exec touch -h -d '@1' '{}' +)
|
||||||
(cd root && find * .[^.*] -print0 | sort -z | bsdtar --uid 0 --gid 0 -cnf - -T - | bsdtar --null -cf - --format=newc @- | eval -- $compress >> "$out/initrd")
|
(cd root && find * .[^.*] -print0 | sort -z | cpio --quiet -o -H newc -R +0:+0 --reproducible --null | eval -- $compress >> "$out/initrd")
|
||||||
|
|
||||||
if [ -n "$makeUInitrd" ]; then
|
if [ -n "$makeUInitrd" ]; then
|
||||||
mkimage -A "$uInitrdArch" -O linux -T ramdisk -C "$uInitrdCompression" -d "$out/initrd" $out/initrd.img
|
mkimage -A "$uInitrdArch" -O linux -T ramdisk -C "$uInitrdCompression" -d "$out/initrd" $out/initrd.img
|
||||||
|
Loading…
Reference in New Issue
Block a user