#!/usr/bin/perl -w # Generate a list of packages required for debian-installer # This script makes use of the following variables that need to be preset: # MIRROR, DI_CODENAME, BASEDIR my @ARCHES=qw{alpha arm hppa hurd-i386 i386 ia64 m68k mips mipsel powerpc s390 sparc sh}; my $DATE=`date`; chomp $DATE; open(OUT, ">debian-installer") || die "write: $!"; print OUT << "EOF"; /* List of udebs to be included so that debian-installer works fine * * This list can be generated with the command: * ../tools/generate_di_list * * Last update: $DATE */ EOF my @common_excludes = read_exclude("exclude-udebs"); foreach my $arch (@ARCHES) { print OUT "#ifdef ARCH_$arch\n"; my @exclude = @common_excludes; push @exclude, read_exclude("exclude-udebs-$arch") if -e exclude_path("exclude-udebs-$arch"); my $packagefile="$ENV{MIRROR}/dists/$ENV{DI_CODENAME}/main/debian-installer/binary-$arch/Packages"; UDEB: foreach my $udeb (map { chomp; $_ } `grep-dctrl -n -s Package '' $packagefile`) { foreach my $pattern (@exclude) { if ($udeb =~ /^$pattern$/) { next UDEB; } } print OUT "$udeb\n"; } print OUT "#endif /* ARCH_$arch */\n"; } sub read_exclude { my $file=exclude_path(shift); open (IN, "<$file") || warn "failed to read exclude file $file"; my @ret; while () { chomp; s/^#.*//; next unless length; $_=quotemeta($_); $_=~s/\\\*/.*/g; push @ret, $_; } close IN; return @ret; } sub exclude_path { my $file=shift; return "$ENV{BASEDIR}/data/$ENV{DI_CODENAME}/$file"; }