* It seems the changes for 3.0.0 completely broke extranonfree

support. Re-add it.
This commit is contained in:
Steve McIntyre 2007-04-19 23:38:29 +00:00
parent 4a72ff11a1
commit 0d3c11551e
7 changed files with 130 additions and 47 deletions

View File

@ -58,6 +58,7 @@ make_image=$(BASEDIR)/tools/make_image
merge_package_lists=$(BASEDIR)/tools/merge_package_lists
update_popcon=$(BASEDIR)/tools/update_popcon
update_tasks=$(BASEDIR)/tools/update_tasks
grab_source_list=$(BASEDIR)/tools/grab_source_list
BDIR=$(TDIR)/$(CODENAME)
ADIR=$(APTTMP)
@ -350,7 +351,7 @@ image-trees: ok genlist
ARCH=$$ARCH $(list2cds) $(BDIR)/list $(SIZELIMIT); \
done
$(Q)if [ "$(SOURCEONLY)"x = "yes"x ] ; then \
awk '{printf("source:%s\n",$$0)}' $(BDIR)/list > $(BDIR)/packages; \
$(grab_source_list) $(BDIR) $(ADIR) $(BDIR)/list $(BDIR)/packages; \
else \
$(merge_package_lists) $(BDIR) $(ADIR) "$(ARCHES)" $(BDIR)/packages; \
fi

4
debian/changelog vendored
View File

@ -16,8 +16,10 @@ debian-cd (3.0.3) UNRELEASED; urgency=high
* Removed m68k from the list of arches in generate_di+k_list and
generate_di_list to reduce warnings.
* Updated comments in update-cd; potato was a while ago!
* It seems the changes for 3.0.0 completely broke extranonfree
support. Re-add it.
-- Frans Pop <fjp@debian.org> Wed, 11 Apr 2007 01:30:06 +0200
-- Steve McIntyre <93sam@debian.org> Fri, 20 Apr 2007 00:37:09 +0100
debian-cd (3.0.2) unstable; urgency=high

View File

@ -306,7 +306,7 @@ sub add_packages {
}
my $pkg = shift;
my ($arch, $pkgname) = split /:/, $pkg;
my ($arch, $component, $pkgname) = split /:/, $pkg;
msg_ap(0, "Looking at $pkg: arch $arch, package $pkgname, rollback $rollback\n");

50
tools/grab_source_list Executable file
View File

@ -0,0 +1,50 @@
#!/bin/sh
BDIR=$1
ADIR=$2
IN="$3"
OUT="$4"
echo "DONEDONE" > $BDIR/DONE
awk '
/^Package:/ {
srcname=$2
srcs_done++
}
/^Section: non-free/ {
component[srcname]="non-free"
next
}
/^Section: contrib/ {
component[srcname]="contrib"
next
}
/^Section:/ {
component[srcname]="main"
next
}
/^DONEDONE/ {
parsed=1
next
}
/.*/ {
if (parsed) {
printf("source:%s:%s\n", component[$0], $0)
}
}
' $ADIR/$CODENAME-source/apt-state/lists/*Sources $BDIR/DONE $IN > $BDIR/list.mid
if [ "$NONFREE"x = "1"x ] ; then
cat $BDIR/list.mid > $OUT
else
grep -v :non-free: $BDIR/list.mid > $OUT
fi
if [ "$EXTRANONFREE"x = "1"x ] ; then
grep :non-free: $BDIR/list.mid >> $OUT
fi

View File

@ -16,8 +16,6 @@ my $limit = $ENV{'SIZELIMIT1'} || $deflimit;
my $nonfree = $ENV{'NONFREE'} || 0;
my $extranonfree = $ENV{'EXTRANONFREE'} || 0;
my $nonus = $ENV{'NONUS'} || 0;
my $forcenonusoncd1 = $ENV{'FORCENONUSONCD1'} || 0;
my $local = $ENV{'LOCAL'} || 0;
my $complete = $ENV{'COMPLETE'} || 0;
my $exclude = "$list.exclude";
@ -60,8 +58,6 @@ msg(1, "Complete selected packages with all the rest: ");
msg(1, yesno($complete)."\n");
msg(1, "Include non-free packages: ");
msg(1, yesno($nonfree)."\n");
msg(1, "Include non-US packages: ");
msg(1, yesno($nonus)."\n");
msg(1, "======================================================================
");
@ -83,6 +79,14 @@ while (defined($_=<AVAIL>)) {
$packages{$p}{"Suggests"} = [];
$packages{$p}{"Recommends"} = [];
$packages{$p}{"IsUdeb"} = ($packages{$p}{"Filename"} =~ /.udeb$/) ? 1 : 0;
if ($packages{$p}{"Section"} =~ /contrib\//) {
$packages{$p}{"Component"} = "contrib";
} elsif ($packages{$p}{"Section"} =~ /non-free\//) {
$packages{$p}{"Component"} = "non-free";
} else {
$packages{$p}{"Component"} = "main";
}
}
close AVAIL or die "apt-cache failed : $@ ($!)\n";
$/ = $oldrs;
@ -91,7 +95,7 @@ $/ = $oldrs;
%excluded = %included;
my $count_excl = 0;
# Now exclude packages because of the non-free and non-us rules
# Now exclude packages because of the non-free rules
if (not $nonfree) {
foreach (grep { $packages{$_}{"Section"} =~ /non-free/ }
(keys %packages)) {
@ -99,13 +103,6 @@ if (not $nonfree) {
$count_excl++;
}
}
if (not $nonus) {
foreach (grep { $packages{$_}{"Section"} =~ /non-US/ }
(keys %packages)) {
$excluded{$_} = 'nonus';
$count_excl++;
}
}
msg(1, "Statistics:
Number of packages: @{ [scalar(keys %packages)] }
@ -223,6 +220,8 @@ if ($extranonfree and (! $nonfree))
{
my ($p, @toinclude);
msg(0, " Adding non-free packages now\n");
# Finally accept non-free packages ...
foreach $p (grep { $excluded{$_} eq "nonfree" } (keys %excluded))
{
@ -230,16 +229,10 @@ if ($extranonfree and (! $nonfree))
push @toinclude, $p;
}
# Start a new CD
$cd++;
$cd_size = 0;
$limit = $ENV{"SIZELIMIT$cd"} || $deflimit;
msg(0, "Limit for non-free CD $cd is $limit.\n");
# Include non-free packages
foreach $p (@toinclude)
{
add_package($p, 1, 1);
add_package(lc $p, 1, 1);
}
# If a contrib package was listed in the list of packages to
@ -259,7 +252,11 @@ if ($extranonfree and (! $nonfree))
"(ignored)\n");
next;
}
add_package (lc $_, 1, 1);
if ($packages{lc $p}{"IsUdeb"}) {
msg(2, " Ignoring udeb $p ...\n");
} else {
add_package (lc $_, 1, 1);
}
}
close LIST;
@ -272,8 +269,12 @@ if ($extranonfree and (! $nonfree))
grep { not ($included{$_} or $excluded{$_}) }
keys %packages)
{
add_package ($p, 0, 0);
}
if ($packages{lc $p}{"IsUdeb"}) {
msg(2, " Ignoring udeb $p ...\n");
} else {
add_package (lc $p, 0, 0);
}
}
}
# msg(0, "CD $cd will only be filled with $cd_size bytes ...\n");
@ -297,7 +298,8 @@ foreach (sort { $a <=> $b } keys %cds) {
open(CDLIST, "> $dir/packages.$arch")
|| die "Can't write in $dir/$_.packages.$arch: $!\n";
foreach (@{$cds{$_}}) {
print CDLIST "$arch:$_\n";
my $component = $packages{$_}{"Component"};
print CDLIST "$arch:$component:$_\n";
$count++;
}
close CDLIST;

View File

@ -9,7 +9,7 @@ use Digest::MD5;
use File::stat;
use File::Find;
my ($basedir, $mirror, $tdir, $codename, $archlist, $mkisofs, $maxcds);
my ($basedir, $mirror, $tdir, $codename, $archlist, $mkisofs, $maxcds, $extranonfree);
my $mkisofs_opts = "";
my $mkisofs_dirs = "";
my (@arches, @arches_nosrc, @overflowlist, @pkgs_added);
@ -34,6 +34,12 @@ if (defined($ENV{'MAXCDS'})) {
} else {
$maxcds = 0;
}
if (defined($ENV{'EXTRANONFREE'})) {
$extranonfree = $ENV{'EXTRANONFREE'};
} else {
$extranonfree = 1;
}
my $list = "$tdir/list";
my $list_ex = "$tdir/list.exclude";
@ -157,7 +163,7 @@ while (defined (my $pkg = <INLIST>)) {
# lists intersect and we should re-include some packages
if (scalar @unexclude_packages && scalar @excluded_package_list) {
foreach my $reinclude_pkg (@excluded_package_list) {
my ($arch, $pkgname) = split /:/, $reinclude_pkg;
my ($arch, $component, $pkgname) = split /:/, $reinclude_pkg;
foreach my $entry (@unexclude_packages) {
if (($pkgname =~ /^\Q$entry\E$/m)) {
print LOG "Re-including $reinclude_pkg due to match on \"\^$entry\$\"\n";
@ -179,14 +185,23 @@ while (defined (my $pkg = <INLIST>)) {
$pkgs_this_cd++;
$pkgs_done++;
}
}
} # end of creating new CD dir
if (should_exclude_package($pkg)) {
push(@excluded_package_list, $pkg);
} elsif (should_start_extra_nonfree($pkg)) {
print LOG "Starting on extra non-free CDs\n";
finish_disc($cddir, "");
# And reset, to start the next disc
$size = 0;
$disknum++;
undef(@pkgs_added);
# Put this package first on the next disc
push (@overflowlist, $pkg);
} else {
$guess_size = int($hfs_mult * add_packages($cddir, $pkg));
$size += $guess_size;
push (@pkgs_added, $pkg);
push (@pkgs_added, $pkg);
print LOG "CD $disknum: GUESS_TOTAL is $size after adding $pkg\n";
if (($size > $maxdiskblocks) ||
(($size > $size_swap_check) &&
@ -197,22 +212,22 @@ while (defined (my $pkg = <INLIST>)) {
print LOG "CD $disknum: Real current size is $size blocks after adding $pkg\n";
}
if ($size > $maxdiskblocks) {
while ($size > $maxdiskblocks) {
$pkg = pop(@pkgs_added);
print LOG "CD $disknum over-full ($size > $maxdiskblocks). Rollback!\n";
$guess_size = int($hfs_mult * add_packages("--rollback", $cddir, $pkg));
$size=`$size_check $cddir`;
chomp $size;
print LOG "CD $disknum: Real current size is $size blocks after rolling back $pkg\n";
# Put this package first on the next disc
push (@overflowlist, $pkg);
}
while ($size > $maxdiskblocks) {
$pkg = pop(@pkgs_added);
print LOG "CD $disknum over-full ($size > $maxdiskblocks). Rollback!\n";
$guess_size = int($hfs_mult * add_packages("--rollback", $cddir, $pkg));
$size=`$size_check $cddir`;
chomp $size;
print LOG "CD $disknum: Real current size is $size blocks after rolling back $pkg\n";
# Put this package first on the next disc
push (@overflowlist, $pkg);
}
finish_disc($cddir, "");
# And reset, to start the next disc
$size = 0;
$disknum++;
undef(@pkgs_added);
undef(@pkgs_added);
} else {
$pkgs_this_cd++;
$pkgs_done++;
@ -237,9 +252,21 @@ close(LOG);
# Local helper functions
#
#############################################
sub should_start_extra_nonfree {
my $pkg = shift;
my ($arch, $component, $pkgname) = split /:/, $pkg;
if ( ($component eq "non-free") && $extranonfree) {
$extranonfree = 0; # Flag that we don't need to start new next time!
return 1;
}
return 0;
}
sub should_exclude_package {
my $pkg = shift;
my ($arch, $pkgname) = split /:/, $pkg;
my ($arch, $component, $pkgname) = split /:/, $pkg;
my $should_exclude = 0;
foreach my $entry (@exclude_packages) {

View File

@ -10,7 +10,7 @@
#
# expects multiple files containing lines of the form, one arch per file
#
# <arch>:<pkgname>
# <arch>:<component>:<pkgname>
#
# and will output similar
#
@ -89,7 +89,8 @@ if [ $source = "yes" ] ; then
if (parsed) {
split($0,fields,":")
arch=fields[1]
pkg=fields[2]
component=fields[2]
pkg=fields[3]
source=bin2src[pkg]
if (!included[source]) {
printf("# Adding source %s at %d because of %s:%s\n",
@ -129,12 +130,12 @@ echo "# Ending merge pass 1 at "`date` >> $BDIR/list.mid
# again
grep -v ^# $BDIR/list.mid | awk -F : '
{
if (!($3 in add))
if (!($4 in add))
{
pkgname[number_packages++] = $3
pkgname[number_packages++] = $4
}
gsub("aaaaaaaaaaaaaaaaaa", "source", $2) # Undo the source sorting hack
add[$3] = add[$3] $2 ":" $3 " "
add[$4] = add[$4] $2 ":" $3 ":" $4 " "
}
END {
for (i = 0; i < number_packages; i++)