OpenPKG CVS Repository
http://cvs.openpkg.org/
____________________________________________________________________________
Server: cvs.openpkg.org Name: Ralf S. Engelschall
Root: /e/openpkg/cvs Email: [EMAIL PROTECTED]
Module: openpkg-src Date: 05-Feb-2003 17:21:32
Branch: OPENPKG_1_STABLE Handle: 2003020516212901
Modified files: (Branch: OPENPKG_1_STABLE)
openpkg-src/openpkg-tool
openpkg-build.pl openpkg-tool.spec openpkg.pod
Log:
MFC: all latest changes from HEAD
Summary:
Revision Changes Path
1.39.2.2 +226 -127 openpkg-src/openpkg-tool/openpkg-build.pl
1.27.2.5 +3 -3 openpkg-src/openpkg-tool/openpkg-tool.spec
1.10.2.2 +7 -1 openpkg-src/openpkg-tool/openpkg.pod
____________________________________________________________________________
patch -p0 <<'@@ .'
Index: openpkg-src/openpkg-tool/openpkg-build.pl
============================================================================
$ cvs diff -u -r1.39.2.1 -r1.39.2.2 openpkg-build.pl
--- openpkg-src/openpkg-tool/openpkg-build.pl 21 Jan 2003 14:00:27 -0000
1.39.2.1
+++ openpkg-src/openpkg-tool/openpkg-build.pl 5 Feb 2003 16:21:29 -0000
1.39.2.2
@@ -102,7 +102,11 @@
$env = $env{$1};
} elsif (my($opt,$val) = /^\-([$go])\s*(.*?)\s*$/) {
$val = 1 unless defined $val;
- $env->{$opt} = $val;
+ if (exists $env->{$opt}) {
+ $env->{$opt} = " $val";
+ } else {
+ $env->{$opt} = $val;
+ }
}
}
close(FH);
@@ -255,7 +259,7 @@
{
my($c,@q,@g);
- $c = run("$RPM --eval '%{_rpmdir} %{_rpmfilename} %{_target_os} %{_target_cpu}
%{_prefix}'");
+ $c = run("$RPM --eval \"%{_rpmdir} %{_rpmfilename} %{_target_os} %{_target_cpu}
%{_prefix}\"");
chomp($c);
(@q) = split(/\s+/,$c);
@@ -308,7 +312,7 @@
#
if (($pre,$with) = $nam =~ /^(\S+?)::(\S*)$/) {
$val =~ s/(?:\%([0-9a-fA-F][0-9a-fA-F]))/chr(hex($1))/eg;
- ($ver,$rel,$pxy) = ($val, '', undef);
+ ($ver,$rel,$pxy) = ($val, undef, undef);
} else {
($ver,$rel,$pxy) = $val =~ /^([^\s\-]+)-([^\s\+]+)(\+PROXY)?$/;
}
@@ -436,7 +440,7 @@
$options{$p->{prefix}}->{$p->{with}} = $p->{version}
}
- push @{$map{$p->{name}}->{"$p->{version}-$p->{release}"}}, {
+ push @{$map{$p->{name}}->{vs($p)}}, {
name => $p->{name},
version => (defined $p->{version} ? $p->{version} : '*'),
release => (defined $p->{release} ? $p->{release} : '*'),
@@ -525,7 +529,7 @@
sub parse_options ($) {
my($l) = @_;
$l = join("\n", @$l) if ref $l;
- return if ($l !~ m/(--define|\%option\s+)/s);
+ return {} if ($l !~ m/(--define|\%option\s+)/s);
my $with = {};
$l =~ s/--define\s*'(\S+)\s+(\S+?)'/$with->{$1} = $2, ''/sge; # before
openpkg-20021230
$l =~ s/\%option\s+(\S+)\s+(\S+)/$with->{$1} = $2, ''/sge; # after
openpkg-20021230
@@ -541,28 +545,46 @@
my($old, $new, $reg) = @_;
foreach my $k (keys %$new) {
- $old->{$k} = $new->{$k} if exists $old->{$k} || $k =~ /^$reg$/;
+ if ((exists $old->{$k} && $old->{$k} ne $new->{$k}) || $k =~ /^$reg$/) {
+ $old->{$k} = $new->{$k};
+ }
}
}
#
+# merge any number of options together
+#
+sub combine_options {
+ my($old) = shift;
+ my($new) = { %$old };
+ foreach (grep { defined $_ } @_) {
+ override_options($new,$_,''),
+ }
+ return $new;
+}
+
+#
# pull in OPTIONS for a package or an RPM file
#
-sub get_with ($$;$) {
- my($env,$t,$fn) = @_;
+sub get_with ($;$) {
+ my($t,$fn) = @_;
my(@l,%with);
my($opt);
- if (($env && $env->{zero}) || $t->{OPTIONS}) {
+ if ($t->{OPTIONS}) {
$opt = $t->{OPTIONS};
} else {
if (defined $fn) {
@l = run("$RPM -qi -p $fn");
+ $opt = parse_options(\@l);
+ # don't write back result, this is just
+ # for testing compatibility of a binary
+ # package
} else {
@l = run("$RPM -qi $t->{name}");
+ $opt = parse_options(\@l);
+ $t->{OPTIONS} = $opt;
}
- $opt = parse_options(\@l);
- $t->{OPTIONS} = $opt if $env;
}
return $opt;
}
@@ -626,7 +648,7 @@
# grep XML Bag against condition
# return as flat list
#
-sub with_list ($$) {
+sub xwith ($$) {
my($bags,$with) = @_;
my($bag,$li,$el);
my(@out);
@@ -642,26 +664,44 @@
return \@out;
}
+#
+# grep simple parser bag against condition
+# return as flat list
+#
+sub swith ($$$) {
+ my($bags,$name,$with) = @_;
+ my($cond);
+ my(@out);
+
+ foreach $cond (keys %$bags) {
+ next unless conditional($cond, $with);
+ if (exists $bags->{$cond}->{$name}) {
+ push @out, @{$bags->{$cond}->{$name}};
+ }
+ }
+
+ return \@out;
+}
+
sub goodpf ($$) {
my($l,$p) = @_;
return 1 if $l eq '';
return $l =~ /(?:^|\s)\Q$p\E(?:\s|$)/;
}
-sub simple_text_parser ($$$$$) {
- my($fh,$url,$with,$map,$pfmatch) = @_;
+sub simple_text_parser ($$$$$$) {
+ my($fh,$url,$with,$map,$pfmatch,$installed) = @_;
my(@include);
my($section);
my($name,$version);
- my($href,$release,$desc);
- my(@prereq,@bprereq);
- my(@provides,@conflicts,@source,@nosource);
- my(%options);
+ my($href,$release,$desc,$bags);
+ my(%options,@provides);
my($platform,$prefix);
my($rec);
my($tag,$cond,$attrname,$attrval,$body);
- my($useit);
+ my($usecond);
+ my($options, $mywith);
print "# using simple text parser\n";
@@ -678,12 +718,7 @@
$desc = '';
$platform = undef;
$prefix = undef;
- @prereq = ();
- @bprereq = ();
- @provides = ();
- @conflicts = ();
- @source = ();
- @nosource = ();
+ $bags = {};
}
if (!(defined $href) &&
@@ -709,37 +744,49 @@
$
/mx;
- $useit = conditional($cond,$with);
-
if ($tag eq 'Description') {
+ $usecond = $cond;
$section = 'description';
} elsif ($tag eq '/Description') {
+ $usecond = $cond;
$section = undef;
} elsif ($section eq 'description') {
$desc .= $_;
} elsif ($tag eq 'PreReq') {
- $section = 'prereq' if $useit;
+ $usecond = $cond;
+ $section = 'prereq';
} elsif ($tag eq '/PreReq') {
+ $usecond = undef;
$section = undef;
} elsif ($tag eq 'BuildPreReq') {
- $section = 'bprereq' if $useit;
+ $usecond = $cond;
+ $section = 'bprereq';
} elsif ($tag eq '/BuildPreReq') {
+ $usecond = undef;
$section = undef;
} elsif ($tag eq 'Provides') {
- $section = 'provides' if $useit;
+ $usecond = $cond;
+ $section = 'provides';
} elsif ($tag eq '/Provides') {
+ $usecond = undef;
$section = undef;
} elsif ($tag eq 'Conflicts') {
- $section = 'conflicts' if $useit;
+ $usecond = $cond;
+ $section = 'conflicts';
} elsif ($tag eq '/Conflicts') {
+ $usecond = undef;
$section = undef;
} elsif ($tag eq 'NoSource') {
- $section = 'nosource' if $useit;
+ $usecond = $cond;
+ $section = 'nosource';
} elsif ($tag eq '/NoSource') {
+ $usecond = undef;
$section = undef;
} elsif ($tag eq 'Source') {
- $section = 'source' if $useit;
+ $usecond = $cond;
+ $section = 'source';
} elsif ($tag eq '/Source') {
+ $usecond = undef;
$section = undef;
} elsif ($tag eq 'Name') {
$name = $body;
@@ -758,18 +805,10 @@
content => $body
};
}
- if ($section eq 'prereq') {
- push(@prereq, $body);
- } elsif ($section eq 'bprereq') {
- push(@bprereq, $body);
- } elsif ($section eq 'provides') {
- push(@provides, $body);
- } elsif ($section eq 'conflicts') {
- push(@conflicts, $body);
- } elsif ($section eq 'source') {
- push(@source, $body);
- } elsif ($section eq 'nosource') {
- push(@nosource, $body);
+ if ($section eq 'provides') {
+ push @provides, $body;
+ } elsif ($section ne '') {
+ push @{$bags->{"$usecond"}->{$section}}, $body;
}
} elsif ($tag eq '/rdf:Description') {
@@ -796,26 +835,38 @@
});
}
+ $options = %options
+ ? { %options }
+ : parse_options($desc);
+
+ if ($options) {
+ my(@t) = get_targets($installed->{$name},sub { 1; });
+ $mywith = combine_options(
+ $options,
+ @t ? get_with($t[0]) : undef,
+ $with
+ );
+ } else {
+ $mywith = $with;
+ }
+
$rec = {
href => (relurl($url, undef, $href))[0],
name => $name,
version => $version,
release => $release,
- depends => depend_list([ @bprereq ]),
- keeps => depend_list([ @prereq ]),
- conflicts => [ @conflicts ],
- source => [ @source ],
- nosource => [ @nosource ],
+ depends => depend_list(swith($bags,'bprereq',$mywith)),
+ keeps => depend_list(swith($bags,'prereq',$mywith)),
+ conflicts => swith($bags,'conflicts',$mywith),
+ source => swith($bags,'source',$mywith),
+ nosource => swith($bags,'nosource',$mywith),
desc => $desc,
platform => $platform,
- prefix => $prefix
+ prefix => $prefix,
+ OPTIONS => $options,
+ DEFOPTS => { %$options }
};
- $rec->{OPTIONS} =
- %options
- ? { %options }
- : parse_options($rec->{desc});
-
foreach (@provides) {
push(@{$map->{$_->{name}}->{vs($_)}}, $rec);
}
@@ -828,21 +879,22 @@
return \@include;
}
-sub xml_parser ($$$$$) {
- my($fh, $url, $with, $map,$pfmatch) = @_;
+sub xml_parser ($$$$$$) {
+ my($fh, $url, $with, $map, $pfmatch, $installed) = @_;
my(@include);
- my($xml,$desc,$sub);
+ my($xml,$rep,$sub);
my($provides,@provides,%options,$rec);
- my($href,$name,$version,$release);
+ my($href,$name,$version,$release,$desc);
+ my($options, $mywith);
print "# using XML parser\n";
- $xml = XML::Simple::XMLin($fh, forcearray => 1);
- $desc = $xml->{'Repository'}->[0]->{'rdf:Description'};
- $sub = $xml->{'Repository'}->[0]->{'Repository'};
+ $xml = XML::Simple::XMLin($fh, forcearray => 1);
+ $rep = $xml->{'Repository'}->[0]->{'rdf:Description'};
+ $sub = $xml->{'Repository'}->[0]->{'Repository'};
- foreach (@$desc) {
+ foreach (@$rep) {
$href = $_->{'href'};
$name = xel($_->{'Name'});
@@ -878,6 +930,22 @@
});
}
+ $desc = xel($_->{'Description'});
+ $options = %options
+ ? { %options }
+ : parse_options($desc);
+
+ if ($options) {
+ my(@t) = get_targets($installed->{$name},sub { 1; });
+ $mywith = combine_options(
+ $options,
+ @t ? get_with($t[0]) : undef,
+ $with
+ );
+ } else {
+ $mywith = $with;
+ }
+
$rec = {
href => (relurl($url, undef, $href))[0],
name => $name,
@@ -885,19 +953,16 @@
release => $release,
platform => xel($_->{'Platform'}),
prefix => xel($_->{'Prefixes'}),
- depends => depend_list(with_list($_->{'BuildPreReq'}, $with)),
- keeps => depend_list(with_list($_->{'PreReq'}, $with)),
- conflicts => with_list($_->{'Conflicts'}, $with),
- source => with_list($_->{'Source'}, $with),
- nosource => with_list($_->{'NoSource'}, $with),
- desc => xel($_->{'Description'})
+ depends => depend_list(xwith($_->{'BuildPreReq'}, $mywith)),
+ keeps => depend_list(xwith($_->{'PreReq'}, $mywith)),
+ conflicts => xwith($_->{'Conflicts'}, $mywith),
+ source => xwith($_->{'Source'}, $mywith),
+ nosource => xwith($_->{'NoSource'}, $mywith),
+ desc => $desc,
+ OPTIONS => $options,
+ DEFOPTS => { %$options }
};
- $rec->{OPTIONS} =
- %options
- ? { %options }
- : parse_options($rec->{desc});
-
foreach (@provides) {
push(@{$map->{$_->{name}}->{vs($_)}}, $rec);
}
@@ -952,8 +1017,8 @@
# fetch index from file or URL
# recursively fetch sub-indexes
#
-sub get_index ($$$$$) {
- my($url,$fn,$with,$noxml,$pfmatch) = @_;
+sub get_index ($$$$$$) {
+ my($url,$fn,$with,$noxml,$pfmatch,$installed) = @_;
my(%map,$include);
open_index($url,$fn);
@@ -966,9 +1031,11 @@
}
if ($noxml) {
- $include = simple_text_parser(\*RFH, $url, $with, \%map, $pfmatch);
+ $include = simple_text_parser(\*RFH, $url, $with,
+ \%map, $pfmatch, $installed);
} else {
- $include = xml_parser(\*RFH, $url, $with, \%map, $pfmatch);
+ $include = xml_parser(\*RFH, $url, $with,
+ \%map, $pfmatch, $installed);
}
close(RFH)
@@ -981,7 +1048,7 @@
foreach (@$include) {
my($submap);
my($suburl,$subfn) = relurl($url,$fn,$_);
- $submap = get_index($suburl,$subfn,$with,$noxml,$pfmatch);
+ $submap = get_index($suburl,$subfn,$with,$noxml,$pfmatch,$installed);
while (my($name,$vmap) = each %$submap) {
while (my($vs,$recs) = each %$vmap) {
push @{$map{$name}->{$vs}}, @$recs;
@@ -1005,11 +1072,22 @@
}
#
+# fetch targets of a name that
+# satisfies a condition
+#
+sub get_targets ($$) {
+ my($relmap, $cond) = @_;
+ return map {
+ @{$relmap->{$_}}
+ } get_versions($relmap, $cond);
+}
+
+#
# there can be multiple sources for a target release
#
-sub chose_source ($$@) {
- my($env, $name, $vmap, @vers) = @_;
- my(@recs,@nrecs,$rec);
+sub chose_source ($$$$@) {
+ my($env, $name, $select, $vmap, @vers) = @_;
+ my(@recs,@nrecs,$rec,%nam);
return unless @vers;
@@ -1026,6 +1104,12 @@
} map { @{$vmap->{$_}} } @vers;
return unless @recs;
+ if (defined $select) {
+ @recs = grep {
+ vsn($_) =~ /^\Q$select\E/
+ } @recs;
+ }
+
if (scalar(@recs) > 1) {
@nrecs = grep {
$env->{built}->{$_->{name}} ||
@@ -1034,6 +1118,13 @@
@recs = @nrecs if @nrecs;
}
+ if (scalar(@recs) > 1) {
+ @nrecs = grep {
+ $name eq $_->{name}
+ } @recs;
+ @recs = @nrecs if @nrecs;
+ }
+
if (scalar(@recs) > 1 && !$env->{sourceonly}) {
@nrecs = grep {
defined $_->{'platform'}
@@ -1042,21 +1133,26 @@
}
if (scalar(@recs) > 1) {
-
- print "# ambigous sources for $name\n";
- my($i) = 0;
- foreach (@recs) {
- print "# $i: ".vsn($_)." = $_->{href}\n";
- $i++;
+ %nam = map { $_->{name} => 1 } @recs;
+ if (scalar(keys %nam) > 1) {
+ print "# ambigous sources for $name\n";
+ my($i) = 0;
+ foreach (@recs) {
+ print "# $i: ".vsn($_)." = $_->{href}\n";
+ $i++;
+ }
+ return;
}
- return;
-
- } else {
+ }
+
+ if (@recs) {
if ($env->{upgrade}) {
$rec = $recs[-1];
} else {
$rec = $recs[0];
}
+ } else {
+ return;
}
print "# source for $name is ".vsn($rec)."\n";
@@ -1258,7 +1354,7 @@
if ($i && (@vers = get_versions($i, $cond))) {
foreach (@vers) {
$t = $i->{$_}->[0];
- get_with($env,$t);
+ get_with($t);
if (target_suitable($t, $env->{with})) {
$tdef = $t;
unless ($env->{upgrade}) {
@@ -1271,7 +1367,7 @@
return ($b->{$vers[0]}->[0], 1);
}
- $t = chose_source($env, $name, $r, get_versions($r, $cond));
+ $t = chose_source($env, $name, undef, $r, get_versions($r, $cond));
if ($t) {
if (!$tdef ||
($env->{upgrade} && target_newer($t, $env->{installed}))) {
@@ -1339,7 +1435,7 @@
return;
}
# use options from installed base
- override_options(get_with($env,$target), get_with($env,$t),
+ override_options(get_with($target), get_with($t),
$env->{config}->{optreg});
# remember this is a rebuild for a proxy package
$target->{PROXY} = $t->{PROXY};
@@ -1455,19 +1551,21 @@
# handle various patterns
#
if (defined $pattern) {
- @todo = ();
- foreach (split(/\s+/,$pattern)) {
- next unless /\S/;
- if (s/\*+$//) {
- push @todo, '^'.quotemeta($_).'';
- } else {
- push @todo, '^'.quotemeta($_).'$';
- }
- }
@todo = map {
my($p) = $_;
- grep(/$p/, keys %{$env->{repository}})
- } @todo;
+ my($s);
+ $s = $1 if $p =~ s/(,[^\s,]+)$//;
+ if ($p =~ s/\*+$//) {
+ $p = '^'.quotemeta($p).'';
+ } else {
+ $p = '^'.quotemeta($p).'$';
+ }
+ map {
+ "$_$s"
+ } grep {
+ /$p/
+ } keys %{$env->{repository}}
+ } split(/\s+/,$pattern);
} else {
#
# undefined pattern means -a option that selects
@@ -1491,7 +1589,7 @@
sub build_list ($$) {
my($pattern, $env) = @_;
my(@goals,@targets,@keeps,@conflicts,@bonly,$t);
- my($name,$r,$i,@vers);
+ my($name,$select,$r,$i,@vers);
my($todo,%keep);
$todo = search_pattern($pattern, $env);
@@ -1500,6 +1598,8 @@
# chose sources for goals from repository
#
foreach $name (@$todo) {
+ $select = undef;
+ $select = $1 if $name =~ s/,([^\s,]+)$//;
$t = undef;
#
@@ -1513,14 +1613,14 @@
#unless ($env->{upgrade}) {
# $i = $env->{installed}->{$name};
# if (@vers = get_versions($i, sub { 1; })) {
- # $t = chose_source($env, $name, $i, @vers);
+ # $t = chose_source($env, $name, $select, $i, @vers);
# }
#}
unless ($t) {
$r = $env->{repository}->{$name};
if (@vers = get_versions($r, sub { 1; })) {
- $t = chose_source($env, $name, $r, @vers);
+ $t = chose_source($env, $name, $select, $r, @vers);
}
}
@@ -1641,7 +1741,7 @@
my(%target) = %$t;
# pull in options from binary RPM file
- get_with(undef,\%target, $fn);
+ get_with(\%target, $fn);
return \%target;
}
@@ -1670,32 +1770,30 @@
# then map the result to --define command line arguments
# suitable for rpm
#
-sub make_defines ($$$) {
- my($old, $new, $c) = @_;
+sub make_defines ($$$$) {
+ my($old, $new, $def, $c) = @_;
my($with);
+ $old = {} unless $old;
+ $def = {} unless $def;
+
#
# override old parameters with new parameters
# drop new parameters that do not exist in old set
#
- # if there is no old set at all (which happens if there
- # is no template and no installed package), just use the
- # new parameters and assume these are useful.
- #
- if ($old) {
- $old = { %$old };
- override_options($old, $new, $c->{optreg});
- } else {
- $old = $new;
- }
+ $old = { %$old };
+ override_options($old, $new, $c->{optreg});
#
# convert parameters to --define command line options
# skip parameter templates from index
+ # skip parameters that are identical to defaults
#
$with = join(' ',map { "--define '$_ $old->{$_}'" }
- sort grep { $old->{$_} =~ /\S/ &&
- $old->{$_} !~ /^%/
+ sort grep {
+ $old->{$_} =~ /\S/ &&
+ $old->{$_} !~ /^%/ &&
+ $old->{$_} ne $def->{$_}
} keys %$old);
$with = ' '.$with if $with ne '';
@@ -1732,10 +1830,10 @@
# OR existing binary package doesn't satisfy wanted options
#
$cmd1 = undef;
- if ($uncond || !-f $bpkg || $_->{REBUILD} ||
+ if ($uncond || !-f $bpkg ||
!target_suitable(binary_target($_, $bpkg),$with)) {
- $opt = make_defines($_->{OPTIONS}, $with, $c);
+ $opt = make_defines($_->{OPTIONS}, $with, $_->{DEFOPTS}, $c);
#
# proxy packages are rebuilt from their maste
@@ -1936,7 +2034,8 @@
$opt_f,
($opt_W ? undef : \%with),
$opt_X,
- $config->{platform});
+ $config->{platform},
+ $installed);
$env = {
config => $config,
@@ .
patch -p0 <<'@@ .'
Index: openpkg-src/openpkg-tool/openpkg-tool.spec
============================================================================
$ cvs diff -u -r1.27.2.4 -r1.27.2.5 openpkg-tool.spec
--- openpkg-src/openpkg-tool/openpkg-tool.spec 21 Jan 2003 14:00:27 -0000
1.27.2.4
+++ openpkg-src/openpkg-tool/openpkg-tool.spec 5 Feb 2003 16:21:30 -0000
1.27.2.5
@@ -9,7 +9,7 @@
## the above copyright notice and this permission notice appear in all
## copies.
##
-## THIS SOFTWARE IS PROVIDED AS IS'' AND ANY EXPRESSED OR IMPLIED
+## THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
## WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
## MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
## IN NO EVENT SHALL THE AUTHORS AND COPYRIGHT HOLDERS AND THEIR
@@ -32,8 +32,8 @@
Distribution: OpenPKG [PLUS]
Group: Bootstrapping
License: GPL
-Version: 1.20030121
-Release: 1.20030121
+Version: 1.20030205
+Release: 1.20030205
# list of sources
Source0: openpkg.sh
@@ .
patch -p0 <<'@@ .'
Index: openpkg-src/openpkg-tool/openpkg.pod
============================================================================
$ cvs diff -u -r1.10.2.1 -r1.10.2.2 openpkg.pod
--- openpkg-src/openpkg-tool/openpkg.pod 21 Jan 2003 14:00:27 -0000
1.10.2.1
+++ openpkg-src/openpkg-tool/openpkg.pod 5 Feb 2003 16:21:30 -0000
1.10.2.2
@@ -138,6 +138,12 @@
on the upgraded package ("reverse dependencies"). The dependency
information is read from an index generated by B<openpkg index>.
+Packages are selected by providing a list of name patterns. Each
+pattern is either a package name or a prefix followed by a '*'
+character. Additionally you can append a discrimation prefix separated
+by a comma that matches against the full name-version-revision
+string.
+
The following command line options exist:
=over 4
@@ -320,7 +326,7 @@
=item B<-A>
Select all packages in the repository. Do not specify a pattern list together
-with the B<-a> option.
+with the B<-A> option.
=back
@@ .
______________________________________________________________________
The OpenPKG Project www.openpkg.org
CVS Repository Commit List [EMAIL PROTECTED]