make-firmware-image: implement firmware/dep11 generation for bookworm and above
Mimic what make_disc_trees.pl does, making it possible for hw-detect to spot not only the /firmware/dep11 directory in netinst images, but also on installation images with firmware added manually. Rename pseudo-option to clarify it returns filenames and indices. Keep generation disabled for bullseye (as an extra safeguard, even if we have separate, per-release branches anyway): That's helpful information but bullseye is a stable release, and changing even unofficial material might not be the best idea. Be cautious by default, it's easy enough to enable if desired.
This commit is contained in:
parent
45db7e1582
commit
95df8ab524
|
@ -65,7 +65,7 @@ sub check_packages($$@) {
|
||||||
print OUT "$pkg\n";
|
print OUT "$pkg\n";
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
print "$filename\n";
|
print "$filename $pkgfile\n";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -141,7 +141,7 @@ if (defined($localdebs)) {
|
||||||
# caller (top-level Makefile) from tools/make-firmware-image which should use
|
# caller (top-level Makefile) from tools/make-firmware-image which should use
|
||||||
# the same logic, but is interested in the Filename for interesting firmware
|
# the same logic, but is interested in the Filename for interesting firmware
|
||||||
# packages:
|
# packages:
|
||||||
my $orig_mode = $outfile ne '--list-filenames' ? 1 : 0;
|
my $orig_mode = $outfile ne '--list-filenames-and-indices' ? 1 : 0;
|
||||||
if ($orig_mode) {
|
if ($orig_mode) {
|
||||||
# Prepare the output file:
|
# Prepare the output file:
|
||||||
open (OUT, "> $outfile") or die "Can't open outfile for writing: $!\n";
|
open (OUT, "> $outfile") or die "Can't open outfile for writing: $!\n";
|
||||||
|
|
|
@ -30,18 +30,41 @@ mkdir -p $TMPDIR/firmware
|
||||||
case $CODENAME in
|
case $CODENAME in
|
||||||
bullseye)
|
bullseye)
|
||||||
export FIRMWARE_COMPONENTS="main contrib non-free"
|
export FIRMWARE_COMPONENTS="main contrib non-free"
|
||||||
|
GENERATE_DEP11=0
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
# FIXME: drop non-free when we no longer need it
|
# FIXME: drop non-free when we no longer need it
|
||||||
export FIRMWARE_COMPONENTS="main non-free non-free-firmware"
|
export FIRMWARE_COMPONENTS="main non-free non-free-firmware"
|
||||||
|
GENERATE_DEP11=1
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
# This tool requires environment variables (exported earlier) and two
|
# Initialize metadata directory:
|
||||||
# parameters; the second one has a special value for us to use:
|
if [ $GENERATE_DEP11 = 1 ]; then
|
||||||
FILES=$($BASEDIR/tools/generate_firmware_task '*' --list-filenames)
|
FW_DEP11_DIR=$TMPDIR/firmware/dep11
|
||||||
for FILE in $FILES; do
|
mkdir $FW_DEP11_DIR
|
||||||
cp ${MIRROR}/${FILE} $TMPDIR/firmware
|
echo "These files help Debian Installer detect helpful firmware packages (via hw-detect)." > $FW_DEP11_DIR/README.txt
|
||||||
|
fi
|
||||||
|
|
||||||
|
# This tool requires environment variables (exported earlier) and two parameters; the second one has
|
||||||
|
# a special value for us to use. Deduplication should happen there, but uniquify to make sure:
|
||||||
|
$BASEDIR/tools/generate_firmware_task '*' --list-filenames-and-indices | sort -u | while read FILE INDICES; do
|
||||||
|
cp ${MIRROR}/$FILE $TMPDIR/firmware
|
||||||
|
|
||||||
|
# Adding metadata for bullseye might be helpful but disruptive, be careful:
|
||||||
|
[ $GENERATE_DEP11 = 0 ] && continue
|
||||||
|
|
||||||
|
# Beware of variable interpolation when using the INDICES variable, it
|
||||||
|
# contains 'binary-*'!
|
||||||
|
COMPONENT=$(echo "$INDICES"|sed 's,/binary-.*,,'|xargs basename)
|
||||||
|
DEP11_DIR=$(echo "$INDICES"|sed 's,/binary-.*,,')/dep11
|
||||||
|
PACKAGE=$(dpkg -f $MIRROR/$FILE Package)
|
||||||
|
|
||||||
|
# Mimic make_disc_trees.pl, except it only passes a single Components-<arch>.yml.gz while
|
||||||
|
# we pass all of them. Differences are unlikely though, as interesting firmware packages
|
||||||
|
# are "Architecture: all".
|
||||||
|
$BASEDIR/tools/generate_firmware_patterns --output-dir $FW_DEP11_DIR --package $PACKAGE $DEP11_DIR/Components-*.yml.gz
|
||||||
|
[ -f $FW_DEP11_DIR/$PACKAGE.patterns ] && printf $COMPONENT > $FW_DEP11_DIR/$PACKAGE.component
|
||||||
done
|
done
|
||||||
|
|
||||||
cd $TMPDIR/firmware
|
cd $TMPDIR/firmware
|
||||||
|
|
Loading…
Reference in New Issue