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]

Reply via email to