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]