On Sat, Jan 22, 2005 at 05:42:30PM +0100, Denis Barbier wrote: > On Sat, Jan 22, 2005 at 04:52:46PM +0100, Claus Hindsgaul wrote: > > Hi, > > > > Who wrote/maintains the scripts creating the pages below > > http://www.debian.org/intl/l10n/ ?
Denis and me. > > I want to suggest sorting the untranslated package list on each language > > page after popularity (from popcon.debian.org) instead of > > alphabetically. > > I can do that but I need a sorted list of source packages, any idea on > how to generate it? I think the attached script does the work. It's discutable because it uses the /var/lib/apt/lists files to do the job, but anyway. I'll propose this to the popcon maintainer. Who knows? they may propose a source package list on there web page for us to download directly. Thanks for your time, Mt.
#! /usr/bin/perl
use warnings;
use strict;
my $verbose = 0;
##
## Get information about which bin package is generated from which source one
## result in $source{"toto"} = name of source pkg generating toto
my %source;
my $APTROOT="/var/lib/apt/lists";
opendir APTLIB, $APTROOT || die "Cannot read $APTROOT: $!\n";
my @sources = grep { /source_Sources$/ && -f "$APTROOT/$_" } readdir(APTLIB);
closedir APTLIB;
foreach my $source (@sources) {
print STDERR "Parse $APTROOT/$source\n";
open SOURCE,"$APTROOT/$source" || die "Cannot read $APTROOT/$source: $!\n";
my $pkg;
while (<SOURCE>) {
$pkg = $1 if (/^Package: (.*)$/);
if (/^Binary: (.*)$/) {
map { s/ //g; $source{$_}=$pkg; } split (/,/, $1);
}
}
close SOURCE;
}
# map {print "$_ -> ".$source{$_}."\n"} keys %source;
##
## Get info about src pkg ranking
## $rank{"toto"}= the better position achieved by a package generated from
src:toto
##
my %rank;
open POPCON, "by_inst" || die "Cannot read by_inst. Grab it from
http://popcon.debian.org/by_inst\n";
while (<POPCON>) {
s/ *#.*$//;
next unless /\S/;
next if (/Not in sid/);
unless (m/([0-9]*)\s*(\S*)\s/) {
warn "Unparsable line: $_\n";
next;
}
my ($rank,$pkg)=($1,$2);
my $src = $source{$pkg};
unless (defined($src)) {
warn "Package without source: $pkg\n" if $verbose;
next;
}
$rank{$src} = defined($rank{$src}) ? ($rank{$src} > $rank ? $rank :
$rank{$src})
: $rank;
}
##
## Output the ranking
##
map {print $rank{$_}." $_\n"; } sort {$rank{$a} <=> $rank{$b}} keys %rank;
signature.asc
Description: Digital signature

