Package: debian-cd Version: 3.1.3 Tags: patch User: debian-...@lists.debian.org UserTags: debian-edu
In Debian Edu, I have discovered that the set of packages installed when we install using our DVD is not the same set of packages installed when installing using the netinst CD. I've tracked down the cause, and it is the fact that the packages we want on the DVD do not get all their recommended packages added to the DVD, making apt fail to find all the packages it find when using the netinst CD. The NORECOMMENDS=0 setting in debian-cd only take effect for the packages directly listed in the task lists. Their recommended packages do not get their recommended packages included on the DVD. I have written this (untested) patch to try to get debian-cd to behave more like apt, and include recommended packages recursively when the NORECOMMENDS=0 flag is set. Including it here for feedback and comments. I'll test the patch and see how it affect the Debian Edu DVD build. :) --- debian-cd.unpatched.squeeze/tools/sort_deps (revision 2074) +++ debian-cd.new/tools/sort_deps (working copy) @@ -477,7 +477,7 @@ if ($add_rec) { #TODO: Look for recommends (not yet included !!) - add_recommends (\...@dep); + add_recommends (\...@dep, $add_rec); # Check again but doesn't fail if one of the package cannot be # installed, just ignore it (it will be removed from @dep) ($ok, $reasons) = check_list (\...@dep, 0); @@ -527,11 +527,12 @@ sub add_recommends { my $list = shift; + my $add_rec = shift; # Do we look for recommends my $p; # = shift; my @copy = @{$list}; # A copy is needed since I'll modify the array foreach $p (@copy) { - add_missing($list, $packages{$p}{"Recommends"}, $p); + add_missing($list, $packages{$p}{"Recommends"}, $p, $add_rec); } } @@ -554,6 +555,7 @@ my $list = shift; my $new = shift; my $pkgin = shift; + my $add_rec = shift; # Do we look for recommends my @backup = @{$list}; my $ok = 1; @@ -596,7 +598,7 @@ # Stop after the first package that is # added successfully push (@{$list}, $pkg); - if (add_missing ($list, $packages{$pkg}{"Depends"}, $pkg)) { + if (add_missing ($list, $packages{$pkg}{"Depends"}, $pkg, $add_rec)) { $or_ok = 1; remove_entry($pkg, $list); push @{$list}, $pkg; @@ -622,11 +624,14 @@ next if $included{lc $_}; # Already included, don't worry next if is_in (lc $_, $list); push @{$list}, lc $_; - if (not add_missing ($list, $packages{lc $_}{"Depends"}, lc $_)) { + if (not add_missing ($list, $packages{lc $_}{"Depends"}, lc $_, $add_rec)) { msg(1, "couldn't add $_ ...\n"); msg(1, "$pkgin failed, couldn't satisfy dep on $_\n"); pop @{$list}; $ok = 0; + } elsif ($add_rec) { + # depends added successfully, add recommends too + missing ($list, $packages{lc $_}{"Recommends"}, lc $_, $add_rec); } remove_entry(lc $_, $list); push @{$list}, lc $_; Happy hacking, -- Petter Reinholdtsen -- To UNSUBSCRIBE, email to debian-cd-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org Archive: http://lists.debian.org/2flr5ffdeex....@login1.uio.no