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]