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

  Server: cvs.openpkg.org                  Name:   Ralf S. Engelschall
  Root:   /e/openpkg/cvs                   Email:  [EMAIL PROTECTED]
  Module: openpkg-re                       Date:   14-Nov-2002 10:44:26
  Branch: HEAD                             Handle: 2002111409442500

  Modified files:
    openpkg-re              openpkg-build

  Log:
    add support for priviledge/non-priviledge environment switching (think about sudo)

  Summary:
    Revision    Changes     Path
    1.21        +15 -13     openpkg-re/openpkg-build
  ____________________________________________________________________________

  Index: openpkg-re/openpkg-build
  ============================================================
  $ cvs diff -u -r1.20 -r1.21 openpkg-build
  --- openpkg-re/openpkg-build  13 Nov 2002 17:30:03 -0000      1.20
  +++ openpkg-re/openpkg-build  14 Nov 2002 09:44:25 -0000      1.21
  @@ -1,4 +1,4 @@
  -#!/usr/bin/perl
  +#!/usr/opkg/bin/perl
   ##
   ##  openpkg-build -- create build scripts from package index
   ##
  @@ -34,11 +34,11 @@
   ##########################################################################
   
   use Getopt::Std;
  -use vars qw/$opt_R $opt_r $opt_f $opt_u $opt_U $opt_a $opt_A $opt_z/;
  +use vars qw/$opt_R $opt_r $opt_f $opt_u $opt_U $opt_a $opt_A $opt_z $opt_P $opt_N/;
   
   if (open(FH, "< $ENV{'HOME'}/.openpkg-build.rc")) {
       while (<FH>) {
  -        if (my($opt,$val) = /^\-([RfruUaAz])\s*(.*?)\s*$/) {
  +        if (my($opt,$val) = /^\-([RfruUaAzPN])\s*(.*?)\s*$/) {
               $val = 1 unless defined $val;
               eval "\$opt_$opt = '$val';";
           } else {
  @@ -49,8 +49,8 @@
       close(FH);
   }
   
  -getopts('R:r:f:uUaAz');
  -die "usage: $0 [-R rpm] [-r repository] [-f index.rdf] [-uUz] ( [-aA] | pattern ) 
[with..]\n"
  +getopts('R:r:f:uUaAzP:N:');
  +die "usage: $0 [-R rpm] [-r repository] [-f index.rdf] [-uUz] [-P priv-cmd] [-N 
non-priv-cmd] ( [-aA] | pattern ) [with..]\n"
       unless $ARGV[0] =~ /^\S+$/ || $opt_a || $opt_A;
   
   ##########################################################################
  @@ -89,11 +89,13 @@
   
   ##########################################################################
   
  -my($RPM,$PROG);
  +my($RPM,$RPM_PRIV,$RPM_NPRIV,$PROG);
   
   $RPM = $opt_R || 'rpm';
   $RPM = (`which $RPM` =~ m{^(/.*)})[0];
   die "FATAL: cannot locate rpm in path\n" unless $RPM =~ m{^/};
  +$RPM_PRIV  = ($opt_P ? $opt_P." ".$RPM : $RPM);
  +$RPM_NPRIV = ($opt_N ? $opt_N." ".$RPM : $RPM);
   ($PROG) = $0 =~ /(?:.*\/)?(.*)/;
   
   sub version_cmp ($$) {
  @@ -163,7 +165,7 @@
   {
       my($c,@q);
   
  -    $c = `$RPM --eval '%{_rpmdir} %{_rpmfilename} %{_target_os} %{_target_cpu}'`;
  +    $c = `$RPM_NPRIV --eval '%{_rpmdir} %{_rpmfilename} %{_target_os} 
%{_target_cpu}'`;
       chomp($c);
       (@q) = split(/\s+/,$c);
   
  @@ -179,7 +181,7 @@
   sub get_release () {
       my($rel,$url);
   
  -    ($rel) =`$RPM -qi openpkg` =~ /Version:\s*(\S+)/m;
  +    ($rel) =`$RPM_NPRIV -qi openpkg` =~ /Version:\s*(\S+)/m;
   
       if ($rel =~ /^\d+$/) {
           print "# $PROG current($rel)\n";
  @@ -197,7 +199,7 @@
   
   sub get_installed () {
       my(%map);
  -    my(@l) = `$RPM --provides -qa`;
  +    my(@l) = `$RPM_NPRIV --provides -qa`;
   
       foreach (@l) {
           /^(\S+)\s*(?:=\s*([^\s\-]+)-(\S+))?$/;
  @@ -265,7 +267,7 @@
   
   sub get_with ($;$) {
       my($pkg,$fn) = @_;
  -    my(@l) = defined $fn ? `$RPM -qi -p $fn` : `$RPM -qi $pkg`;
  +    my(@l) = defined $fn ? `$RPM_NPRIV -qi -p $fn` : `$RPM_NPRIV -qi $pkg`;
       my(%with);
   
       %with = map { /--define\s*'(\S+)\s+(\S+?)'/ } @l;
  @@ -917,7 +919,7 @@
               !target_suitable(binary_target($_, $bpkg),$with)) {
   
               $opt = make_defines($_->{OPTIONS}, $with);
  -            print "$RPM$opt --rebuild $url$spkg || exit 1\n";
  +            print "$RPM_NPRIV$opt --rebuild $url$spkg || exit 1\n";
           }
   
           #
  @@ -926,7 +928,7 @@
           # files
           #
           $opt = $_->{REBUILD} ? ' --force' : '';
  -        print "$RPM$opt -Uvh $bpkg\n";
  +        print "$RPM_PRIV$opt -Uvh $bpkg\n";
       }
   }
   
  @@ -936,7 +938,7 @@
   
       foreach (@$list) {
           $pkg = "$_->{name}-$_->{version}-$_->{release}";
  -        print "$RPM -e $pkg\n";
  +        print "$RPM_PRIV -e $pkg\n";
       }
   }
   
______________________________________________________________________
The OpenPKG Project                                    www.openpkg.org
CVS Repository Commit List                     [EMAIL PROTECTED]

Reply via email to