OpenPKG CVS Repository
  http://cvs.openpkg.org/
  ____________________________________________________________________________

  Server: cvs.openpkg.org                  Name:   Michael van Elst
  Root:   /e/openpkg/cvs                   Email:  [EMAIL PROTECTED]
  Module: openpkg-re                       Date:   12-Nov-2002 09:42:49
  Branch: HEAD                             Handle: 2002111208424800

  Modified files:
    openpkg-re              openpkg-build

  Log:
    -r option selects source repository (and index path).
    -f option selects index path (url or file path)
    -R option determines path to RPM binary (environment $RPM is no longer used)
    the file $HOME/.openpkg-build.rc is read to set command line options.

  Summary:
    Revision    Changes     Path
    1.3         +53 -25     openpkg-re/openpkg-build
  ____________________________________________________________________________

  Index: openpkg-re/openpkg-build
  ============================================================
  $ cvs diff -u -r1.2 -r1.3 openpkg-build
  --- openpkg-re/openpkg-build  12 Nov 2002 08:15:36 -0000      1.2
  +++ openpkg-re/openpkg-build  12 Nov 2002 08:42:48 -0000      1.3
  @@ -31,13 +31,29 @@
   
   use strict;
   
  +##########################################################################
  +
   use Getopt::Std;
  -use vars qw/$opt_f $opt_u/;
  -getopts('f:u');
  +use vars qw/$opt_R $opt_r $opt_f $opt_u/;
  +
  +if (open(FH, "< $ENV{'HOME'}/.openpkg-build.rc")) {
  +    while (<FH>) {
  +        my($opt,$val) = /^\-([Rfru])\s*(.*?)\s*$/;
  +        $val = 1 unless defined $val;
  +        eval "\$opt_$opt = '$val';";
  +    }
  +    close(FH);
  +}
  +
  +getopts('R:r:f:u');
  +die "usage: $0 [-R rpm] [-r repository] [-f index.rdf] [-u] package\n"
  +    unless $ARGV[0] =~ /^\S+$/;
  +
  +##########################################################################
   
   my($RPM,$PROG);
   
  -$RPM = $ENV{'RPM'} || 'rpm';
  +$RPM = $opt_R || 'rpm';
   $RPM = (`which $RPM` =~ m{^(/.*)})[0];
   die "FATAL: cannot locate rpm in path\n" unless $RPM =~ m{^/};
   ($PROG) = $0 =~ /(?:.*\/)?(.*)/;
  @@ -122,8 +138,8 @@
       return \%map;
   }
   
  -sub bunzip ($) {
  -    my($source) = @_;
  +sub spawn ($@) {
  +    my($source,@argv) = @_;
       my($pid);
   
       pipe RFH, WFH
  @@ -141,10 +157,10 @@
           if (ref $source) {
               # filehandle
               open STDIN,'<&='.fileno($source) or die;
  -            exec 'bzip2','-dc';
  +            exec @argv;
           } else {
               # buffer
  -            open FH, '| bzip2 -dc' or die;
  +            open FH, '| '.join(' ',@argv) or die;
               print FH $source or die;
               close FH or die;
           }
  @@ -161,21 +177,10 @@
       my($pid);
       my(%map);
   
  -    $url .= '00INDEX.rdf.bz2';
  +    $url = $fn if defined $fn;
  +    $url .= '00INDEX.rdf.bz2' if $url =~ /\/$/;
   
  -    if (defined $fn) {
  -        print "# reading index file $fn\n";
  -
  -        if ($fn =~ /\.bz2$/) {
  -            open(FH, "< $fn") or
  -                die "FATAL: cannot read file '$fn' ($!)\n";
  -            $pid = bunzip(\*FH);
  -            close(FH);
  -        } else {
  -            open(RFH, "< $fn") or
  -                die "FATAL: cannot read file '$fn' ($!)\n";
  -        }
  -    } else {
  +    if ($url =~ /^\w+:/) { # looks like URL scheme
           print "# fetching index $url\n";
   
           eval {
  @@ -191,7 +196,23 @@
   
           die "FATAL: cannot read build index\n" unless $res->is_success;
   
  -        $pid = bunzip($res->content);
  +        if ($url =~ /\.bz2$/) {
  +            $pid = spawn($res->content,'bzip2','-dc');
  +        } else {
  +            $pid = cat($res->content,'cat');
  +        }
  +    } else {
  +        print "# reading index file $fn\n";
  +
  +        if ($url =~ /\.bz2$/) {
  +            open(FH, "< $url") or
  +                die "FATAL: cannot read file '$url' ($!)\n";
  +            $pid = spawn(\*FH,'bzip2','-dc');
  +            close(FH);
  +        } else {
  +            open(RFH, "< $url") or
  +                die "FATAL: cannot read file '$url' ($!)\n";
  +        }
       }
   
       eval {
  @@ -565,6 +586,8 @@
       my($list,$c,$url,$uncond) = @_;
       my($spkg,$bpkg);
   
  +    $url .= '/' unless $url =~ m{/$}s;
  +
       foreach (@$list) {
           $spkg = $_->{href};
           $bpkg = target2rpm($_, $c);
  @@ -589,10 +612,15 @@
   
   my($config,$url,$repository,$installed,$list,$bonly);
   
  -die "usage: $0 [-f index.rdf] [-u] package\n" unless $ARGV[0] =~ /^\S+$/;
  -
   $config         = get_config();
  -$url            = get_release();
  +
  +if (defined $opt_r) {
  +    $url = $opt_r;
  +    $url .= '/' unless $url =~ /\/$/;
  +} else {
  +    $url = get_release();
  +}
  +
   $installed      = get_installed();
   $repository     = get_index($url,$opt_f);
   
______________________________________________________________________
The OpenPKG Project                                    www.openpkg.org
CVS Repository Commit List                     [EMAIL PROTECTED]

Reply via email to