OpenPKG CVS Repository
http://cvs.openpkg.org/
____________________________________________________________________________
Server: cvs.openpkg.org Name: Michael van Elst
Root: /e/openpkg/cvs Email: [EMAIL PROTECTED]
Module: openpkg-src Date: 27-Nov-2002 15:55:45
Branch: HEAD Handle: 2002112714554400
Modified files:
openpkg-src/openpkg-tool openpkg-build.pl
Log:
fix path where target requires an upgrade of a dependency
preliminary PROXY package support
Summary:
Revision Changes Path
1.4 +27 -5 openpkg-src/openpkg-tool/openpkg-build.pl
____________________________________________________________________________
Index: openpkg-src/openpkg-tool/openpkg-build.pl
============================================================
$ cvs diff -u -r1.3 -r1.4 openpkg-build.pl
--- openpkg-src/openpkg-tool/openpkg-build.pl 27 Nov 2002 09:26:08 -0000 1.3
+++ openpkg-src/openpkg-tool/openpkg-build.pl 27 Nov 2002 14:55:44 -0000 1.4
@@ -272,7 +272,8 @@
push(@{$map{$1}->{"$2-$3"}}, {
name => $1,
version => (defined $2 ? $2 : '*'),
- release => (defined $3 ? $3 : '*')
+ release => (defined $3 ? $3 : '*'),
+ PROXY => ($3 =~ /\+PROXY$/)
});
}
@@ -429,7 +430,7 @@
die "FATAL: cannot open '$fetch' ($!)\n";
eval {
- require XML::Simple;
+ require XML::Somple;
};
if ($@) {
@@ -926,7 +927,7 @@
print "# rebuilding $target->{name} (dependency)\n";
} elsif ($env->{zero}) {
print "# rebuilding $target->{name} (zero)\n";
- } elsif ($env->{upgrade} && target_newer($target, $env->{installed})) {
+ } elsif (target_newer($target, $env->{installed})) {
print "# rebuilding $target->{name} (upgrade)\n";
} elsif (!target_suitable($t, $env->{with})) {
print "# rebuilding $target->{name} (parameter mismatch)\n";
@@ -936,6 +937,8 @@
}
# use options from installed base
override_options($target->{OPTIONS}, $t->{OPTIONS});
+ # remember this is a rebuild for a proxy package
+ $target->{PROXY} = $t->{PROXY};
$target->{REBUILD} = 1;
}
@@ -1118,6 +1121,18 @@
return \%target;
}
+sub find_proxy ($$) {
+ my($t,$bpkg) = @_;
+ my(@l) = `$RPM_NPRIV -ql sudo`;
+ my($link) = (grep { $_ =~ /\/\.prefix-$t->{name}$/ } @l)[0];
+ return unless defined $link;
+ chomp $link;
+ my($prefix) = readlink($link);
+ return unless defined $prefix;
+ $bpkg =~ s/.*\///;
+ return "$prefix/RPM/PKG/$bpkg";
+}
+
sub make_defines ($$) {
my($old, $new) = @_;
my($with);
@@ -1151,7 +1166,7 @@
sub print_list1 ($$$@$) {
my($list,$c,$uncond,$with,$ignore) = @_;
- my($spkg,$bpkg);
+ my($spkg,$bpkg,$ppkg);
my($opt);
my($cmd1, $cmd2, $mark);
@@ -1176,10 +1191,17 @@
$opt = make_defines($_->{OPTIONS}, $with);
#
+ # proxy packages are rebuilt from their maste
+ # hierachy
+ #
# someone preferred a binary from the repository
# just copy it to the local store
#
- if (defined $_->{platform}) {
+ if ($_->{PROXY}) {
+ $ppkg = find_proxy($_,$bpkg) or
+ die "FATAL: proxy package ",vsn($_)," does not exist\n";
+ $cmd1 = "$RPM_NPRIV$opt --makeproxy -o $bpkg $ppkg";
+ } elsif (defined $_->{platform}) {
$cmd1 = "$CURL -q -s -o $bpkg $spkg";
} else {
$cmd1 = "$RPM_NPRIV$opt --rebuild $spkg";
______________________________________________________________________
The OpenPKG Project www.openpkg.org
CVS Repository Commit List [EMAIL PROTECTED]