X-Git-Url: https://git.deb.at/?a=blobdiff_plain;f=bin%2Fparse-packages;h=189ea0267ea78e946f1b3def780ea1561b1c149d;hb=4a749eda2ed95dbc3180fcdbe5590e2bb2f04198;hp=ca77fbc7c66b86e1f0666c9eef54242d44a7f849;hpb=e2c7b40f0b9352498a642dd8aeae7912b4a00733;p=deb%2Fpackages.git diff --git a/bin/parse-packages b/bin/parse-packages index ca77fbc..189ea02 100755 --- a/bin/parse-packages +++ b/bin/parse-packages @@ -31,6 +31,7 @@ my $MAX_PACKAGE_POSTFIXES = 100; use DB_File; use Storable; +use File::Path; use Deb::Versions; use Packages::Config qw( $TOPDIR $DBDIR @ARCHIVES @SUITES ); &Packages::Config::init( './' ); @@ -50,6 +51,8 @@ my %priorities = (); $/ = ""; +-d $DBDIR || mkpath( $DBDIR ); + for my $suite (@SUITES) { my %package_names_suite = (); my %packages_all_db; @@ -59,6 +62,10 @@ for my $suite (@SUITES) { for my $archive (@ARCHIVES) { print "Reading $archive/$suite...\n"; + if (!-d "$TOPDIR/archive/$archive/$suite/") { + print "\tseems not to exist, skipping...\n"; + next; + } open PKG, "zcat $TOPDIR/archive/$archive/$suite/$what/{,debian-installer/}binary-*/Packages.gz|"; while () { next if /^\s*$/; @@ -74,6 +81,9 @@ for my $suite (@SUITES) { } # Skip double package next if exists($packages_all_db{"$data{'package'} $data{'architecture'} $data{'version'}"}); + # Skip arch:all for amd64&kfreebsd, too often broken + next if ($archive eq 'amd64' or $archive eq 'kfreebsd') + and $data{architecture} eq 'all'; if ($data{'provides'}) { foreach (split /\s*,\s*/, $data{'provides'}) { @@ -121,14 +131,14 @@ for my $suite (@SUITES) { $priorities{$suite}{$data{priority}}++; my $pkgitem = "$archive $suite $data{'architecture'} ". "$section $subsection $data{'priority'} $data{'version'} $sdescr\0"; - my $previtem = $packages_small{$data{'package'}}{$suite}{$data{'architecture'}} - || $pkgitem; + my $previtem = ($packages_small{$data{'package'}}{$suite}{$data{'architecture'}} + ||= $pkgitem); $packages_small{$data{'package'}}{$suite}{$data{'architecture'}} = $pkgitem - if version_cmp($data{'version'}, (split /\s/o, $previtem)[6]) >= 0; - $previtem = $packages_small{$data{'package'}}{$suite}{'any'} - || $pkgitem; + if version_cmp($data{'version'}, (split /\s/o, $previtem)[6]) > 0; + $previtem = ($packages_small{$data{'package'}}{$suite}{'any'} + ||= $pkgitem); $packages_small{$data{'package'}}{$suite}{'any'} = $pkgitem - if version_cmp($data{'version'}, (split /\s/o, $previtem)[6]) >= 0; + if version_cmp($data{'version'}, (split /\s/o, $previtem)[6]) > 0; $sources_packages{$src} .= "$archive $suite $data{'package'} $data{'version'} $data{'architecture'}\000"; $data{archive} = $archive;