Add a Contents-firmware file
to help with looking up firmware packages in d-i
This commit is contained in:
parent
e57aa6fa72
commit
32291d88a3
|
@ -11,6 +11,8 @@ debian-cd (3.1.36) UNRELEASED; urgency=medium
|
||||||
* Add non-free-firmware support
|
* Add non-free-firmware support
|
||||||
+ Add an extra config variable NONFREE_COMPONENTS to declare where
|
+ Add an extra config variable NONFREE_COMPONENTS to declare where
|
||||||
to look for non-free packages.
|
to look for non-free packages.
|
||||||
|
* Add a Contents-firmware file to help with looking up firmware
|
||||||
|
packages in d-i.
|
||||||
|
|
||||||
[ Cyril Brulebois ]
|
[ Cyril Brulebois ]
|
||||||
* generate_firmware_patterns: Drop support for the temporary --test
|
* generate_firmware_patterns: Drop support for the temporary --test
|
||||||
|
|
|
@ -1188,6 +1188,8 @@ sub add_firmware_stuff {
|
||||||
m/^Section: (\S+)/m and $section = $1;
|
m/^Section: (\S+)/m and $section = $1;
|
||||||
m/^Filename: (\S+)/mi and $file = $1;
|
m/^Filename: (\S+)/mi and $file = $1;
|
||||||
|
|
||||||
|
my $base_file = basename($file);
|
||||||
|
|
||||||
if ($file =~ /\/main\//) {
|
if ($file =~ /\/main\//) {
|
||||||
$dist = "main";
|
$dist = "main";
|
||||||
} elsif ($file =~ /\/contrib\//) {
|
} elsif ($file =~ /\/contrib\//) {
|
||||||
|
@ -1206,7 +1208,7 @@ sub add_firmware_stuff {
|
||||||
}
|
}
|
||||||
|
|
||||||
msg_ap(0, "Symlink fw package $p into /firmware\n");
|
msg_ap(0, "Symlink fw package $p into /firmware\n");
|
||||||
symlink("../$file", "$dir/firmware/" . basename($file));
|
symlink("../$file", "$dir/firmware/$base_file");
|
||||||
msg_ap(0, "Symlink ../$file $dir/firmware/.\n");
|
msg_ap(0, "Symlink ../$file $dir/firmware/.\n");
|
||||||
if (! -d "$dir/firmware") {
|
if (! -d "$dir/firmware") {
|
||||||
mkdir "$dir/firmware" or die "mkdir $dir/firmware failed $!\n";
|
mkdir "$dir/firmware" or die "mkdir $dir/firmware failed $!\n";
|
||||||
|
@ -1228,6 +1230,28 @@ sub add_firmware_stuff {
|
||||||
$blocks_added += get_file_blocks("$dir/firmware/dep11/$p.patterns");
|
$blocks_added += get_file_blocks("$dir/firmware/dep11/$p.patterns");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Find the current size of the firmware Contents file
|
||||||
|
my $contents_blocks_old = 0;
|
||||||
|
my $cont_file = "$dir/firmware/Contents-firmware";
|
||||||
|
if (-f "$cont_file") {
|
||||||
|
$contents_blocks_old = get_file_blocks("$cont_file");
|
||||||
|
}
|
||||||
|
# Add new contents stuff, and count it
|
||||||
|
open(OFILE, ">> $cont_file");
|
||||||
|
open(DPKGC, "dpkg --contents $dir/firmware/$base_file |")
|
||||||
|
or die "Can't find contents of $dir/firmware/$base_file: $!";
|
||||||
|
while (defined(my $line = <DPKGC>)) {
|
||||||
|
chomp $line;
|
||||||
|
if ($line =~ m,^[-|l]\S+\s+\S+\s+\d+\s+\S+\s+\S+\s+./(\S+/firmware/\S+)$,) {
|
||||||
|
printf OFILE "%-55s %s\n", $1, $base_file;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
close DPKGC;
|
||||||
|
close OFILE;
|
||||||
|
|
||||||
|
my $contents_blocks_new = get_file_blocks($cont_file);
|
||||||
|
$blocks_added += $contents_blocks_new - $contents_blocks_old;
|
||||||
|
|
||||||
return $blocks_added;
|
return $blocks_added;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1441,8 +1465,10 @@ sub remove_firmware_stuff {
|
||||||
m/^Package: (\S+)/mi and $p = $1;
|
m/^Package: (\S+)/mi and $p = $1;
|
||||||
m/^Filename: (\S+)/mi and $file = $1;
|
m/^Filename: (\S+)/mi and $file = $1;
|
||||||
|
|
||||||
|
my $base_file = basename($file);
|
||||||
|
|
||||||
msg_ap(0, "Remove symlink for fw package $p in /firmware\n");
|
msg_ap(0, "Remove symlink for fw package $p in /firmware\n");
|
||||||
unlink("$dir/firmware/" . basename($file));
|
unlink("$dir/firmware/$base_file");
|
||||||
|
|
||||||
if (-f "$dir/firmware/dep11/$p.patterns") {
|
if (-f "$dir/firmware/dep11/$p.patterns") {
|
||||||
$blocks_removed += get_file_blocks("$dir/firmware/dep11/$p.patterns");
|
$blocks_removed += get_file_blocks("$dir/firmware/dep11/$p.patterns");
|
||||||
|
@ -1450,6 +1476,27 @@ sub remove_firmware_stuff {
|
||||||
unlink("$dir/firmware/dep11/$p.patterns");
|
unlink("$dir/firmware/dep11/$p.patterns");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Find the current size of the firmware Contents file, and grep
|
||||||
|
# out from the current data
|
||||||
|
my $contents_blocks_old = 0;
|
||||||
|
my $cont_file = "$dir/firmware/Contents-firmware";
|
||||||
|
open(OFILE, "> $cont_file.1");
|
||||||
|
if (-f $cont_file) {
|
||||||
|
$contents_blocks_old = get_file_blocks($cont_file);
|
||||||
|
open(IFILE, "< $cont_file");
|
||||||
|
while (defined(my $line = <IFILE>)) {
|
||||||
|
chomp $line;
|
||||||
|
if ($line !~ /\b$base_file$/) {
|
||||||
|
print OFILE "$line\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
close IFILE;
|
||||||
|
}
|
||||||
|
close OFILE;
|
||||||
|
rename "$cont_file.1", "$cont_file";
|
||||||
|
my $contents_blocks_new = get_file_blocks($cont_file);
|
||||||
|
$blocks_removed += $contents_blocks_new - $contents_blocks_old;
|
||||||
|
|
||||||
return $blocks_removed;
|
return $blocks_removed;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue