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: 19-Nov-2002 13:11:45 Branch: HEAD Handle: 2002111912114500 Modified files: openpkg-re openpkg-build Log: get rid of Getopt::Std dependency. get rid of use of LWP module, curl works fine. get rid of manual spawning of bzip2, use popen feature. now runs under microperl. Summary: Revision Changes Path 1.32 +48 -79 openpkg-re/openpkg-build ____________________________________________________________________________ Index: openpkg-re/openpkg-build ============================================================ $ cvs diff -u -r1.31 -r1.32 openpkg-build --- openpkg-re/openpkg-build 19 Nov 2002 09:42:51 -0000 1.31 +++ openpkg-re/openpkg-build 19 Nov 2002 12:11:45 -0000 1.32 @@ -33,8 +33,39 @@ ########################################################################## -use Getopt::Std; -use vars qw/$opt_R $opt_r $opt_f $opt_u $opt_U $opt_a $opt_A $opt_z $opt_P $opt_N/; +sub getopts ($) { + my($opts) = @_; + my(%opts) = map { /(\w)/; $1 => $_ } $opts =~ /(\w:|\w)/g; + my(@argv,$optarg); + + foreach (@ARGV) { + if (@argv) { + push @argv, $_; + } elsif (defined $optarg) { + eval "\$opt_$optarg = \"".quotemeta($_)."\";"; + $optarg = undef; + } elsif (/^-(\w)/) { + if (exists $opts{$1}) { + if (length($opts{$1}) > 1) { + $optarg = $1; + } else { + eval "\$opt_$1 = 1;"; + } + } else { + warn "warning: unknown option $_\n"; + } + } else { + push @argv, $_; + } + } + if (defined $optarg) { + warn "warning: option $optarg requires an argument\n"; + } + + @ARGV = @argv; +} + +#use vars qw/$opt_R $opt_r $opt_f $opt_u $opt_U $opt_a $opt_A $opt_z $opt_P $opt_N/; my(%env) = ( '' => { opt => {}, argv => [] } ); if (open(FH, "< $ENV{'HOME'}/.openpkg-build.rc")) { @@ -290,43 +321,10 @@ return \%with; } -sub spawn ($@) { - my($source,@argv) = @_; - my($pid); - - pipe RFH, WFH - or die "FATAL: cannot create pipe ($!)\n"; - - print "# uncompressing\n"; - - $pid = fork; - die "FATAL: cannot fork ($!)\n" unless defined $pid; - - if ($pid == 0) { - close(RFH); - open STDOUT,'>&='.fileno(WFH) or die; - - if (ref $source) { - # filehandle - open STDIN,'<&='.fileno($source) or die; - exec @argv; - } else { - # buffer - open FH, '| '.join(' ',@argv) or die; - print FH $source or die; - close FH or die; - } - exit 0; - } - close WFH; - - return $pid; -} - sub get_index ($$$) { my($url,$fn,$with) = @_; my($ua,$req,$res,$rdf); - my($pid,$bzip2,$curl); + my($bzip2,$curl,$path); my(%map); $url = $fn if defined $fn; @@ -340,58 +338,30 @@ or die "FATAL: $bzip2 not found\n"; if ($url =~ /^\w+:/) { # looks like URL scheme + $curl = $RPM; + $curl =~ s/bin\/rpm$/lib\/openpkg\/curl/ + or die "FATAL: cannot deduce curl path from $RPM\n"; + -x $curl + or die "FATAL: $curl not found\n"; - eval { - require LWP; - }; - if ($@) { - - print "# curling index $url\n"; - - $curl = $RPM; - $curl =~ s/bin\/rpm$/lib\/openpkg\/curl/ - or die "FATAL: cannot deduce curl path from $RPM\n"; - -x $curl - or die "FATAL: $curl not found\n"; - - if ($url =~ /\.bz2$/) { - open(FH, "$curl -q -s -o - \"$url\" |") - or die "FATAL: cannot curl '$url' ($!)\n"; - $pid = spawn(\*FH,$bzip2,'-dc'); - close(FH); - } else { - open(RFH, "$curl -q -s -o - \"$url\" |") - or die "FATAL: cannot curl '$url' ($!)\n"; - } + print "# curling index $url\n"; + if ($url =~ /\.bz2$/) { + $path = "$curl -q -s -o - \"$url\" | $bzip2 -dc |"; } else { - print "# fetching index $url\n"; - - $ua = new LWP::UserAgent; - $req = new HTTP::Request GET => $url; - $res = $ua->request($req); - - die "FATAL: cannot read build index\n" unless $res->is_success; - - if ($url =~ /\.bz2$/) { - $pid = spawn($res->content,$bzip2,'-dc'); - } else { - $pid = cat($res->content,'cat'); - } + $path = "$curl -q -s -o - \"$url\" |"; } } 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); + $path = "$bzip2 -dc $url |"; } else { - open(RFH, "< $url") or - die "FATAL: cannot read file '$url' ($!)\n"; + $path = "< $url"; } } + open(RFH, $path) or + die "FATAL: cannot open '$url' ($!)\n"; + eval { require XML::Simple; }; @@ -528,7 +498,6 @@ } close(RFH); - waitpid $pid,0 if $pid; return \%map; } ______________________________________________________________________ The OpenPKG Project www.openpkg.org CVS Repository Commit List [EMAIL PROTECTED]