head	1.5;
access;
symbols
	INITIAL:1.1.1.1 VENDOR:1.1.1;
locks; strict;
comment	@# @;


1.5
date	2005.02.24.19.08.22;	author rse;	state dead;
branches;
next	1.4;

1.4
date	2003.09.16.10.21.12;	author rse;	state Exp;
branches;
next	1.3;

1.3
date	2001.11.19.09.17.49;	author rse;	state Exp;
branches;
next	1.2;

1.2
date	2001.10.26.19.31.23;	author rse;	state Exp;
branches;
next	1.1;

1.1
date	2001.08.28.12.57.50;	author rse;	state Exp;
branches
	1.1.1.1;
next	;

1.1.1.1
date	2001.08.28.12.57.50;	author rse;	state Exp;
branches;
next	;


desc
@@


1.5
log
@remove old package repository stuff
@
text
@#!/e/openpkg/sw/bin/perl
##
##  pkg.mkdb -- generate package database from index
##

use IO;
use Data::Dumper;
$Data::Dumper::Purity = 1;
$Data::Dumper::Indent = 1;

my $rpm    = '/e/openpkg/sw/bin/rpm';
my $rpmidx = '/e/openpkg/ftp/current/SRC/00INDEX.rdf.bz2';
my $rpmdir = '/e/openpkg/ftp/current/SRC/';
my $rpmurl = 'ftp://ftp.openpkg.org/current/SRC/';
my $dbfile = '/e/openpkg/web/pkg.db';

#   read XML/RDF index
my $io = new IO::File "bzip2 -d -c $rpmidx |" || die;
my $rdf; { local $/ = undef; $rdf = <$io>; }
$io->close;

#   parse XML/RDF contents
my $db = {};
$rdf =~ s|<rdf:Description\s+about="([^"]+)"[^>]+>(.+?)</rdf:Description>|&rdf_pkg($1, $2), ''|sge;
sub rdf_pkg {
    my ($name, $rdf) = @@_;

    $db->{$name} = {};

    #   parse simple tags
    foreach my $tag (qw(
        Name Version Release Distribution Group License Packager Summary URL Vendor Description
    )) {
        $rdf =~ s|<$tag>(.+?)</$tag>|$db->{$name}->{$tag} = $1, ''|se;
    }

    #   parse source files
    $db->{$name}->{"Source"} = [];
    $rdf =~ s|<Source>(.+?)</Source>|&rdf_source($db, $name, $1), ''|se;
    sub rdf_source {
        my ($db, $name, $rdf) = @@_;
        $rdf =~ s|<rdf:li>(.+?)</rdf:li>|push(@@{$db->{$name}->{"Source"}}, $1), ''|sge;
    }

    #   parse dependencies
    foreach my $tag (qw(
        BuildPreReq PreReq
    )) {
        $db->{$name}->{$tag} = [];
        $rdf =~ s|<$tag(?:\s+cond="([^"]+)")?>(.+?)</$tag>|&rdf_dep($db, $name, $tag, $1, $2), ''|sge;
        sub rdf_dep {
            my ($db, $name, $tag, $cond, $rdf) = @@_;
            $rdf =~ s|<resource(?:\s+(\S+="[^"]+"))?>(.+?)</resource>|&rdf_res($db, $name, $tag, $cond, $1, $2), ''|sge;
            sub rdf_res {
                my ($db, $name, $tag, $cond, $req, $res) = @@_;
                if ($req =~ m/^(|)="([^"]+)"/s) {
                    $res .= " ".$reqop->{$1}." ".$2;
                }
                if ($cond ne '') {
                    $res .= " [$cond]";
                }
                push(@@{$db->{$name}->{$tag}}, $res);
            }
        }
    }
}

#   write database file
my $io = new IO::File ">$dbfile";
$io->print(Data::Dumper::Dumper($db));
$io->close;

@


1.4
log
@flush pending changes
@
text
@@


1.3
log
@ad-hoc and ugly fixes for old repo browsing stuff
@
text
@d3 1
a4 3
##

my $rpm = '/e/openpkg/sw/bin/rpm';
d11 4
a15 1
my $rpmdir = '/e/openpkg/ftp/current';
d17 19
a35 1
my $DB = {};
d37 6
a42 23
foreach my $file (glob("$rpmdir/SRC/*.rpm")) {
    if ($file =~ m;^$rpmdir/SRC/((.+?)-([^-]+)-([0-9.]+)\.([^-]+-[^-]+|src)\.rpm)$;) {
        my ($filename, $name, $version, $release, $arch) = ($1, $2, $3, $4, $5);
        my @@stat    = stat($file);
        my $size    = $stat[7];
        my $mtime   = $stat[9];
        my $info    = `$rpm -qpi  $file`;
        my $flist   = `$rpm -qplv $file`;
        my $x       = `$rpm -qp --qf "%{DISTRIBUTION}::%{GROUP}::%{SUMMARY}::%{LICENSE}" $file`;
        my ($distrib, $group, $summary, $license) = ($x =~ m|^(.+)::(.+)::(.+)::(.+)$|);
        # was ist mit $distrib?!
        $DB->{$group} = {} if (not defined($DB->{$group}));
        $DB->{$group}->{$name} = {} if (not defined($DB->{$group}->{$name}));
        $DB->{$group}->{$name}->{SUMMARY} = $summary;
        $DB->{$group}->{$name}->{FILES} = {} if (not defined($DB->{$group}->{$name}->{FILES}));
        $DB->{$group}->{$name}->{FILES}->{$filename} = {};
        $DB->{$group}->{$name}->{FILES}->{$filename}->{SIZE}    = $size;
        $DB->{$group}->{$name}->{FILES}->{$filename}->{MTIME}   = $mtime;
        $DB->{$group}->{$name}->{FILES}->{$filename}->{INFO}    = $info;
        $DB->{$group}->{$name}->{FILES}->{$filename}->{FLIST}   = $flist;
        $DB->{$group}->{$name}->{FILES}->{$filename}->{TYPE}    = 'rpm';
        $DB->{$group}->{$name}->{FILES}->{$filename}->{ARCH}    = $arch;
        $DB->{$group}->{$name}->{FILES}->{$filename}->{LICENSE} = $license;
d44 19
a62 16
}
foreach my $file (glob("$rpmdir/SRC/*.sh")) {
    if ($file =~ m;^$rpmdir/SRC/((.+?)-([^-]+)-([0-9.]+)\.([^-]+-[^-]+|src)\.sh)$;) {
        my ($filename, $name, $version, $release, $arch) = ($1, $2, $3, $4, $5);
        my @@stat    = stat($file);
        my $size    = $stat[7];
        my $mtime   = $stat[9];
        my $group   = '';
        my $summary = '';
        my $info    = '';
        my $flist   = '';
        foreach my $g (keys(%{$DB})) {
            if (defined($DB->{$g}->{$name})) {
                $summary = $DB->{$g}->{$name}->{SUMMARY};
                $group   = $g;
                last;
a64 12
        $DB->{$group} = {} if (not defined($DB->{$group}));
        $DB->{$group}->{$name} = {} if (not defined($DB->{$group}->{$name}));
        $DB->{$group}->{$name}->{SUMMARY} = $summary;
        $DB->{$group}->{$name}->{FILES} = {} if (not defined($DB->{$group}->{$name}->{FILES}));
        $DB->{$group}->{$name}->{FILES}->{$filename} = {};
        $DB->{$group}->{$name}->{FILES}->{$filename}->{SIZE}  = $size;
        $DB->{$group}->{$name}->{FILES}->{$filename}->{MTIME} = $mtime;
        $DB->{$group}->{$name}->{FILES}->{$filename}->{INFO}  = $info;
        $DB->{$group}->{$name}->{FILES}->{$filename}->{FLIST} = $flist;
        $DB->{$group}->{$name}->{FILES}->{$filename}->{TYPE}  = 'sh';
        $DB->{$group}->{$name}->{FILES}->{$filename}->{ARCH}  = $arch;
        $DB->{$group}->{$name}->{FILES}->{$filename}->{LICENSE} = "GPL";
d68 4
a71 3
my $db = new IO::File ">$dbfile";
$db->print(Data::Dumper::Dumper($DB));
$db->close;
@


1.2
log
@fix repository listings after recent changes
@
text
@d1 1
a1 1
#!/usr/bin/perl
d6 1
a6 1
my $rpm = '/cw/bin/rpm';
d13 2
a14 2
my $dbfile = 'pkg.db';
my $rpmdir = 'pkg';
@


1.1
log
@Initial revision
@
text
@d18 2
a19 2
foreach my $file (glob("$rpmdir/*.rpm")) {
    if ($file =~ m;^$rpmdir/((.+?)-([^-]+)-([0-9]+)\.([^-]+-[^-]+|src)\.rpm)$;) {
d43 2
a44 2
foreach my $file (glob("$rpmdir/*.sh")) {
    if ($file =~ m;^$rpmdir/((.+?)-([^-]+)-([0-9]+)\.([^-]+-[^-]+|src)\.sh)$;) {
@


1.1.1.1
log
@Import www.openpkg.org website
@
text
@@
