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: 18-Nov-2002 17:22:14 Branch: HEAD Handle: 2002111816221300 Modified files: openpkg-re openpkg-build Log: support prefix environments in openpkg-build.rc to select options based on RPM path. Obviously you can only specify -R in the default environment. Summary: Revision Changes Path 1.28 +18 -4 openpkg-re/openpkg-build ____________________________________________________________________________ Index: openpkg-re/openpkg-build ============================================================ $ cvs diff -u -r1.27 -r1.28 openpkg-build --- openpkg-re/openpkg-build 18 Nov 2002 15:23:58 -0000 1.27 +++ openpkg-re/openpkg-build 18 Nov 2002 16:22:13 -0000 1.28 @@ -36,14 +36,19 @@ 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/; +my(%env) = ( '' => { opt => {}, argv => [] } ); if (open(FH, "< $ENV{'HOME'}/.openpkg-build.rc")) { + my($env) = $env{''}; while (<FH>) { - if (my($opt,$val) = /^\-([RfruUaAzPN])\s*(.*?)\s*$/) { + if (/^\s*\[([^\]]*)\]/) { + $env{$1} = { opt => {}, argv => [] } unless $env{$1}; + $env = $env{$1}; + } elsif (my($opt,$val) = /^\-([RfruUaAzPN])\s*(.*?)\s*$/) { $val = 1 unless defined $val; - eval "\$opt_$opt = '$val';"; + $env->{opt}->{$opt} = $val; } else { chomp; - push(@ARGV, split(/\s+/, $_)); + push @{$env->{arg}}, split(/\s+/, $_); } } close(FH); @@ -91,9 +96,18 @@ my($RPM,$RPM_PRIV,$RPM_NPRIV,$PROG); -$RPM = $opt_R || 'rpm'; +$RPM = $opt_R || $env{''}->{opt}->{'R'} || 'rpm'; $RPM = (`which $RPM` =~ m{^(/.*)})[0]; die "FATAL: cannot locate rpm in path\n" unless $RPM =~ m{^/}; + +# augment command line parameters +foreach my $env (sort { $a cmp $b } grep { $RPM =~ /^\Q$_\E/ } keys %env) { + while (my($opt,$val) = each %{$env{$env}->{opt}}) { + eval "\$opt_$opt = '$val' unless defined \$opt_$opt;"; + } + push @ARGV, @{$env{$env}->{argv}}; +} + $RPM_PRIV = ($opt_P ? $opt_P." ".$RPM : $RPM); $RPM_NPRIV = ($opt_N ? $opt_N." ".$RPM : $RPM); ($PROG) = $0 =~ /(?:.*\/)?(.*)/; ______________________________________________________________________ The OpenPKG Project www.openpkg.org CVS Repository Commit List [EMAIL PROTECTED]