OpenPKG CVS Repository
http://cvs.openpkg.org/
____________________________________________________________________________
Server: cvs.openpkg.org Name: Michael van Elst
Root: /e/openpkg/cvs Email: [EMAIL PROTECTED]
Module: openpkg-re Date: 17-Nov-2002 13:05:52
Branch: HEAD Handle: 2002111712055200
Modified files:
openpkg-re openpkg-build
Log:
cleaned up upgrade logic. Now shows decisions in output.
Ignore openpkg reverse dependencies because thats everything, you
can get an all.all update with -z.
Summary:
Revision Changes Path
1.25 +44 -39 openpkg-re/openpkg-build
____________________________________________________________________________
Index: openpkg-re/openpkg-build
============================================================
$ cvs diff -u -r1.24 -r1.25 openpkg-build
--- openpkg-re/openpkg-build 17 Nov 2002 09:20:42 -0000 1.24
+++ openpkg-re/openpkg-build 17 Nov 2002 12:05:52 -0000 1.25
@@ -716,20 +716,21 @@
return;
}
- if ($env->{zero}) {
- $target->{REBUILD} = 1;
- } elsif ($env->{installed}->{$target->{name}}) {
- if (target_exists($target, $env->{installed})) {
- if (target_suitable($target, $env->{with})) {
- unless ($env->{upgrade} ||
- target_newer($target, $env->{installed})) {
- print "# $target->{name} is already installed\n";
- return;
- }
- print "# forced upgrading $target->{name}\n";
- } else {
- print "# rebuilding $target->{name}\n";
- }
+ #
+ # see if a target is already installed and requires a rebuild
+ #
+ if ($env->{installed}->{$target->{name}}) {
+ if ($target->{REBUILD}) {
+ print "# rebuilding $target->{name} (dependency)\n";
+ } elsif ($env->{zero}) {
+ print "# rebuilding $target->{name} (zero)\n";
+ } elsif ($env->{upgrade} && target_newer($target, $env->{installed})) {
+ print "# rebuilding $target->{name} (upgrade)\n";
+ } elsif (!target_suitable($target, $env->{with})) {
+ print "# rebuilding $target->{name} (parameter mismatch)\n";
+ } else {
+ print "# $target->{name} is already installed\n";
+ return;
}
$target->{REBUILD} = 1;
}
@@ -737,33 +738,37 @@
$d = target_depends($target, $env->{repository});
$k = target_keeps($target, $env->{repository});
- %d = map { $_ => 1 } @$d, @$k;
- return unless %d;
-
- %k = map { $_ => 1 } @$k;
-
- foreach (keys %d) {
-
- # old index misses a OpenPKG provider in the index... skip it
- next if $_ eq 'OpenPKG';
-
- ($t,$old) = dep2target($_, $env);
- if ($t) {
- if ($old) {
- print "# $target->{name} uses ".vsn($t)." for $_\n";
- next;
- }
+ #
+ # recurse over dependencies
+ #
+ if (@$d || @$k) {
+
+ %d = map { $_ => 1 } @$d, @$k;
+ %k = map { $_ => 1 } @$k;
+
+ foreach (keys %d) {
+
+ # old index misses a OpenPKG provider in the index... skip it
+ next if $_ eq 'OpenPKG';
+
+ ($t,$old) = dep2target($_, $env);
+ if ($t) {
+ if ($old) {
+ print "# $target->{name} uses ".vsn($t)." for $_\n";
+ next;
+ }
- # record which targets to keep in blist
- if ($k{$_}) {
- push(@$blist,$t);
- print "# $target->{name} installs ".vsn($t)." for $_\n";
+ # record which targets to keep in blist
+ if ($k{$_}) {
+ push(@$blist,$t);
+ print "# $target->{name} installs ".vsn($t)." for $_\n";
+ } else {
+ print "# $target->{name} requires ".vsn($t)." for $_\n";
+ }
+ make_dep($t,$depth+1,$env,$list,$blist);
} else {
- print "# $target->{name} requires ".vsn($t)." for $_\n";
+ die "FATAL: $target->{name} searches for a frood called '$_'\n";
}
- make_dep($t,$depth+1,$env,$list,$blist);
- } else {
- die "FATAL: $target->{name} searches for a frood called '$_'\n";
}
}
@@ -771,7 +776,7 @@
push(@$list, $target);
push(@{$env->{built}->{$target->{name}}->{vs($target)}}, $target);
- if ($target->{REBUILD}) {
+ if ($target->{name} ne 'openpkg' && $target->{REBUILD}) {
unless ($env->{revdep}) {
$env->{revdep} = get_revdep($env);
______________________________________________________________________
The OpenPKG Project www.openpkg.org
CVS Repository Commit List [EMAIL PROTECTED]