debian-cd-clone/tools/check_backports_packages

80 lines
2.2 KiB
Plaintext
Raw Permalink Normal View History

#!/usr/bin/perl -w
use strict;
# Now check to see if we've been told to use backports versions of any
# of the packages in our list of packages.
my $listin = shift;
my $listout = shift;
my $backports_list = read_env('BACKPORTS', "");
my $codename = read_env('CODENAME', "");
my %backports;
sub read_env {
my $env_var = shift;
my $default = shift;
if (exists($ENV{$env_var})) {
return $ENV{$env_var};
}
# else
return $default;
}
# If not configured to use backports, bail
if ($backports_list =~ /^$/) {
exit 0;
}
# Read in the backports list
open (BACKPORTS, "< $backports_list") or die "ERROR: Can't read configured backports list file $backports_list: $!\n";
while (defined($_=<BACKPORTS>)) {
chomp;
# Define to 1 here to say it needs to be included
$backports{$_} = 1;
}
close BACKPORTS;
print "Checking for desired backports in $backports_list\n";
open (LISTIN, "< $listin") or die "ERROR: Can't read the current list file $listin: $!\n";
open (LISTOUT, "> $listout") or die "ERROR: Can't write to $listout: $!\n";
2018-08-13 14:26:54 +00:00
# For any packages in our input list that are listed in the backports
# file, switch to $pkg/backports
while (defined($_=<LISTIN>)) {
chomp;
if (exists $backports{$_}) {
# Horrible to hard-code stuff here, but for now I don't see a
# better way. Keep the normal kernel on media *as well as* a
# backports kernel. d-i will install the normal one first,
# then later upgrade it.
if (m/^linux-image-/) {
print LISTOUT "$_/$codename-backports\n";
print LISTOUT "$_\n";
print " Keeping both $_ and $_/$codename-backports in $listout\n";
delete $backports{$_};
} else {
print LISTOUT "$_/$codename-backports\n";
print " Replaced $_ with $_/$codename-backports in $listout\n";
delete $backports{$_};
}
} else {
print LISTOUT "$_\n";
}
}
close LISTIN;
# Finally, any further packages in our backports list are explicitly
# requested even if they weren't in the original list. Append to the
# output file to force inclusion. This is before sort_deps will get
# run, so dependencies will get resolved later
foreach my $p (keys %backports) {
print LISTOUT "$p/$codename-backports\n";
print " Appended $p/$codename-backports\n";
}
close LISTOUT;
exit 0;