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 openpkg-web Date: 18-Feb-2003 17:20:36
Branch: HEAD Handle: 2003021816203402
Modified files:
openpkg-src/openpkg-tool
openpkg-build.pl openpkg-tool.spec openpkg.pod
openpkg-web news.txt
Log:
allow downgrades using -e, clean up update decision code a bit
Summary:
Revision Changes Path
1.56 +40 -14 openpkg-src/openpkg-tool/openpkg-build.pl
1.38 +2 -2 openpkg-src/openpkg-tool/openpkg-tool.spec
1.13 +6 -0 openpkg-src/openpkg-tool/openpkg.pod
1.3349 +1 -0 openpkg-web/news.txt
____________________________________________________________________________
patch -p0 <<'@@ .'
Index: openpkg-src/openpkg-tool/openpkg-build.pl
============================================================================
$ cvs diff -u -r1.55 -r1.56 openpkg-build.pl
--- openpkg-src/openpkg-tool/openpkg-build.pl 15 Feb 2003 08:53:59 -0000 1.55
+++ openpkg-src/openpkg-tool/openpkg-build.pl 18 Feb 2003 16:20:36 -0000 1.56
@@ -33,8 +33,8 @@
$opt_R $opt_r $opt_f $opt_u $opt_U $opt_a $opt_A
$opt_z $opt_Z $opt_P $opt_N $opt_E $opt_i $opt_D
$opt_p $opt_q $opt_s $opt_S $opt_X $opt_M $opt_L
- $opt_W $opt_K/;
-my $getopts = 'R:r:f:uUaAzZP:N:E:iD:p:qsSXMLWK';
+ $opt_W $opt_K $opt_e/;
+my $getopts = 'R:r:f:uUaAzZP:N:E:iD:p:qsSXMLWKe';
getopts($getopts);
##########################################################################
@@ -112,7 +112,7 @@
close(FH);
}
-die "openpkg:build:USAGE: $0 [-R rpm] [-r repository] [-f index.rdf]
[-uUzZiqsSXMLWK] [-P priv-cmd] [-N non-priv-cmd] [-p platform] [-Dwith ...] [-Ename
...] ( [-aA] | patternlist )\n"
+die "openpkg:build:USAGE: $0 [-R rpm] [-r repository] [-f index.rdf]
[-uUzZiqsSXMLWKe] [-P priv-cmd] [-N non-priv-cmd] [-p platform] [-Dwith ...] [-Ename
...] ( [-aA] | patternlist )\n"
unless $#ARGV >= 0 || ($#ARGV == -1 && ($opt_a || $opt_A));
##########################################################################
@@ -1248,16 +1248,41 @@
}
#
-# test wether target could be upgraded
+# determine wether target should be rebuild
#
-sub target_newer ($$) {
- my($target, $map) = @_;
+sub target_better ($$$) {
+ my($env, $target, $map) = @_;
my($vs) = vs($target);
my($vmap) = $map->{$target->{name}};
- return 1 unless $vmap;
+ #
+ # rebuild if target isn't installed
+ #
+ return 'new' unless $vmap;
+
+ #
+ # always update GOALs
+ #
+ if ($target->{GOAL} && !grep { vcmp($vs, $_) <= 0; } keys %$vmap) {
+ return 'goal';
+ }
+ #
+ # if -e then
+ # always update if installed version is different from repository
+ #
+ if ($env->{exact} && !grep { vcmp($vs, $_) == 0; } keys %$vmap) {
+ return 'exact';
+ }
+ #
+ # if -U then
+ # always update if installed version is older than repository
+ #
+ if ($env->{upgrade} && !grep { vcmp($vs, $_) <= 0; } keys %$vmap) {
+ return 'upgrade';
+ }
- return !grep { vcmp($vs, $_) <= 0; } keys %$vmap;
+ # keep installed target
+ return;
}
#
@@ -1366,8 +1391,7 @@
$t = chose_source($env, $name, undef, $r, get_versions($r, $cond));
if ($t) {
- if (!$tdef ||
- ($env->{upgrade} && target_newer($t, $env->{installed}))) {
+ if (!$tdef || target_better($env, $t, $env->{installed})) {
return ($t, 0);
}
}
@@ -1385,7 +1409,7 @@
sub make_dep ($$$$$$$) {
my($who,$target,$depth,$env,$list,$blist,$clist) = @_;
my($d,$k,%d,%k,$t,$old);
- my(@deps,$conflict);
+ my(@deps,$conflict,$why);
if (target_exists($target, $env->{built})) {
print "# $target->{name} is already in list\n";
@@ -1421,9 +1445,9 @@
} elsif ($env->{zero}) {
target_setstatus($target,'ZERO',1);
print "# rebuilding $target->{name} (zero)\n";
- } elsif (target_newer($target, $env->{installed})) {
- target_setstatus($target,'UPGRADE',3);
- print "# rebuilding $target->{name} (upgrade)\n";
+ } elsif ($why = target_better($env, $target, $env->{installed})) {
+ target_setstatus($target,'UPDATE',3);
+ print "# rebuilding $target->{name} ($why)\n";
} elsif (!target_suitable($t, $env->{with})) {
target_setstatus($target,'MISMATCH',2);
print "# rebuilding $target->{name} (parameter mismatch)\n";
@@ -1623,6 +1647,7 @@
if ($t) {
warn_about_options($t, $env->{with}, $env->{config});
+ $t->{GOAL} = 1;
push(@goals, $t);
} else {
if ($env->{status}) {
@@ -2044,6 +2069,7 @@
exclude => \%exclude,
upgrade => ($opt_a || $opt_U),
zero => ($opt_z || $opt_Z),
+ exact => $opt_e,
quick => $opt_q,
status => ($opt_s || $opt_S),
fatal => [],
@@ .
patch -p0 <<'@@ .'
Index: openpkg-src/openpkg-tool/openpkg-tool.spec
============================================================================
$ cvs diff -u -r1.37 -r1.38 openpkg-tool.spec
--- openpkg-src/openpkg-tool/openpkg-tool.spec 15 Feb 2003 08:54:00 -0000
1.37
+++ openpkg-src/openpkg-tool/openpkg-tool.spec 18 Feb 2003 16:20:36 -0000
1.38
@@ -32,8 +32,8 @@
Distribution: OpenPKG [PLUS]
Group: Bootstrapping
License: GPL
-Version: 20030215
-Release: 20030215
+Version: 20030218
+Release: 20030218
# list of sources
Source0: openpkg.sh
@@ .
patch -p0 <<'@@ .'
Index: openpkg-src/openpkg-tool/openpkg.pod
============================================================================
$ cvs diff -u -r1.12 -r1.13 openpkg.pod
--- openpkg-src/openpkg-tool/openpkg.pod 24 Jan 2003 09:57:54 -0000 1.12
+++ openpkg-src/openpkg-tool/openpkg.pod 18 Feb 2003 16:20:36 -0000 1.13
@@ -64,6 +64,7 @@
[B<-W>]
[B<-X>]
[B<-K>]
+[B<-e>]
[B<-P> I<priv-cmd>]
[B<-N> I<non-priv-cmd>]
[B<-p> I<platform>]
@@ -282,6 +283,11 @@
=item B<-K>
Keep packages that were installed temporarily during the build process.
+
+=item B<-e>
+
+Rebuild exact version from repository even when you have installed
+a newer version from another repository.
=item B<-P> I<priv-cmd>
@@ .
patch -p0 <<'@@ .'
Index: openpkg-web/news.txt
============================================================================
$ cvs diff -u -r1.3348 -r1.3349 news.txt
--- openpkg-web/news.txt 18 Feb 2003 15:32:55 -0000 1.3348
+++ openpkg-web/news.txt 18 Feb 2003 16:20:34 -0000 1.3349
@@ -1,3 +1,4 @@
+18-Feb-2003: Upgraded package: P<openpkg-tool-20030218-20030218>
18-Feb-2003: Upgraded package: P<honeyd-0.5-20030218>
18-Feb-2003: Upgraded package: P<libevent-0.6-20030218>
18-Feb-2003: Upgraded package: P<graphviz-1.9-20030218>
@@ .
______________________________________________________________________
The OpenPKG Project www.openpkg.org
CVS Repository Commit List [EMAIL PROTECTED]