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]

Reply via email to