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]