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]