X-Git-Url: https://git.deb.at/?a=blobdiff_plain;f=bin%2Fparse-packages;h=c411d340c6800fe4f6b9a2de8af79beaa4454f11;hb=38aca122efcdfa5282e2fb1ec911d4085a6067bf;hp=e441515c8708bbfcb59939630c611c69a07caab8;hpb=a3e6aa1e34000d0a7faa1773bd6bc32c32cfa625;p=deb%2Fpackages.git diff --git a/bin/parse-packages b/bin/parse-packages index e441515..c411d34 100755 --- a/bin/parse-packages +++ b/bin/parse-packages @@ -50,15 +50,15 @@ my %priorities = (); $/ = ""; -for my $archive (@ARCHIVES) { - for my $suite (@SUITES) { +for my $suite (@SUITES) { + my %package_names_suite = (); + my %packages_all_db; + tie %packages_all_db, "DB_File", "$DBDIR/packages_all_$suite.db.new", + O_RDWR|O_CREAT, 0666, $DB_BTREE + or die "Error creating DB: $!"; - my %package_names_suite = (); + for my $archive (@ARCHIVES) { print "Reading $archive/$suite...\n"; - my %packages_all_db; - tie %packages_all_db, "DB_File", "$DBDIR/packages_all_$suite.db.new", - O_RDWR|O_CREAT, 0666, $DB_BTREE - or die "Error creating DB: $!"; open PKG, "zcat $TOPDIR/archive/$archive/$suite/$what/{,debian-installer/}binary-*/Packages.gz|"; while () { next if /^\s*$/; @@ -74,10 +74,14 @@ for my $archive (@ARCHIVES) { } # 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'}) { $virtual_packages{$_}{$suite}{$data{'package'}}++; + $packages_small{$_} ||= {}; } } $package_names{$data{'package'}} = 1; @@ -115,19 +119,19 @@ for my $archive (@ARCHIVES) { $data{'section'} = $section; $data{'subsection'} = $subsection; $data{'priority'} ||= '-'; - $sections{$suite}{$archive}{$section}++; - $subsections{$suite}{$archive}{$subsection}++; - $priorities{$suite}{$archive}{$data{priority}}++; + $sections{$suite}{$section}++; + $subsections{$suite}{$subsection}++; + $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; @@ -141,16 +145,16 @@ for my $archive (@ARCHIVES) { $packages_all_db{"$data{'package'} $data{'architecture'} $data{'version'}"} = $data; } + } - open NAMES, '>>', "$DBDIR/package_names_$suite.txt.new" - or die "Error creating package names list: $!"; - foreach (sort keys %package_names_suite) { - print NAMES "$_\n"; - } - close NAMES; - - untie %packages_all_db; + open NAMES, '>', "$DBDIR/package_names_$suite.txt.new" + or die "Error creating package names list: $!"; + foreach (sort keys %package_names_suite) { + print NAMES "$_\n"; } + close NAMES; + + untie %packages_all_db; } print "Writing databases...\n";