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]