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:   19-Nov-2002 10:13:26
  Branch: HEAD                             Handle: 2002111909132600

  Modified files:
    openpkg-re              openpkg-build

  Log:
    abort if target_depends or target_keeps don't find the target.
    again rely on valid depends/keeps pointers.
    restrict arguments in rc file to with clauses.
    allow target pattern that selects multiple targets separated
    by whitespace.

  Summary:
    Revision    Changes     Path
    1.30        +29 -24     openpkg-re/openpkg-build
  ____________________________________________________________________________

  Index: openpkg-re/openpkg-build
  ============================================================
  $ cvs diff -u -r1.29 -r1.30 openpkg-build
  --- openpkg-re/openpkg-build  18 Nov 2002 19:34:59 -0000      1.29
  +++ openpkg-re/openpkg-build  19 Nov 2002 09:13:26 -0000      1.30
  @@ -56,7 +56,7 @@
   
   getopts('R:r:f:uUaAzP:N:');
   die "usage: $0 [-R rpm] [-r repository] [-f index.rdf] [-uUz] [-P priv-cmd] [-N 
non-priv-cmd] ( [-aA] | pattern ) [with..]\n"
  -    unless $ARGV[0] =~ /^\S+$/ || $opt_a || $opt_A;
  +    unless $ARGV[0] =~ /\S/ || $opt_a || $opt_A;
   
   ##########################################################################
   
  @@ -94,7 +94,7 @@
   
   ##########################################################################
   
  -my($RPM,$RPM_PRIV,$RPM_NPRIV,$PROG);
  +my($RPM,$RPM_PRIV,$RPM_NPRIV,$PROG,@WITH);
   
   $RPM = $opt_R || $env{''}->{opt}->{'R'} || 'rpm';
   $RPM = (`which $RPM` =~ m{^(/.*)})[0];
  @@ -105,7 +105,7 @@
       while (my($opt,$val) = each %{$env{$env}->{opt}}) {
           eval "\$opt_$opt = '$val' unless defined \$opt_$opt;";
       }
  -    push @ARGV, @{$env{$env}->{argv}};
  +    push @WITH, @{$env{$env}->{argv}};
   }
   
   $RPM_PRIV  = ($opt_P ? $opt_P." ".$RPM : $RPM);
  @@ -614,14 +614,14 @@
   #
   sub target_depends ($$) {
       my($target, $map) = @_;
  -    my($vmap) = $map->{$target->{name}};
  -    my($vers);
  -
  -    return unless $vmap;
  -    return unless defined $target->{version};
  +    my($vmap,$vers);
   
  -    $vers = $vmap->{vs($target)};
  -    return unless $vers && @$vers;
  +    die "FATAL: ",vsn($target)," not in depend map\n"
  +        unless
  +        ( $vmap = $map->{$target->{name}} ) &&
  +        ( defined $target->{version}      ) &&
  +        ( $vers = $vmap->{vs($target)}    ) &&
  +        @$vers;
   
       return $vers->[0]->{depends};
   }
  @@ -631,14 +631,14 @@
   #
   sub target_keeps ($$) {
       my($target, $map) = @_;
  -    my($vmap) = $map->{$target->{name}};
  -    my($vers);
  +    my($vmap,$vers);
   
  -    return unless $vmap;
  -    return unless defined $target->{version};
  -
  -    $vers = $vmap->{vs($target)};
  -    return unless $vers && @$vers;
  +    die "FATAL: ",vsn($target)," not in keep map\n"
  +        unless
  +        ( $vmap = $map->{$target->{name}} ) &&
  +        ( defined $target->{version}      ) &&
  +        ( $vers = $vmap->{vs($target)}    ) &&
  +        @$vers;
   
       return $vers->[0]->{keeps};
   }
  @@ -785,8 +785,8 @@
       # it again
       push(@{$env->{built}->{$target->{name}}->{vs($target)}}, $target);
   
  -    $d = target_depends($target, $env->{repository}) || [];
  -    $k = target_keeps($target, $env->{repository}) || [];
  +    $d = target_depends($target, $env->{repository});
  +    $k = target_keeps($target, $env->{repository});
   
       #
       # recurse over dependencies
  @@ -863,11 +863,16 @@
       my(@todo);
   
       if (defined $pattern) {
  -        if ($pattern =~ s/\*+$//) {
  -            $pattern = '^'.quotemeta($pattern).'';
  -        } else {
  -            $pattern = '^'.quotemeta($pattern).'$';
  +        @todo = ();
  +        foreach (split(/\s+/,$pattern)) {
  +            next unless /\S/;
  +            if (s/\*+$//) {
  +                push @todo, '^'.quotemeta($_).'';
  +            } else {
  +                push @todo, '^'.quotemeta($_).'$';
  +            }
           }
  +        $pattern = join('|',@todo);
           @todo = grep(/$pattern/, keys %{$env->{repository}});
       } else {
           @todo = grep {
  @@ -1035,7 +1040,7 @@
       /([^\s=]+)(?:\=(\S+))?/
       ? ($1 => (defined $2 ? $2 : 'yes'))
       : ()
  -    } @ARGV;
  +    } ( @ARGV, @WITH );
   
   $config         = get_config();
   
______________________________________________________________________
The OpenPKG Project                                    www.openpkg.org
CVS Repository Commit List                     [EMAIL PROTECTED]

Reply via email to