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]

Reply via email to