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 openpkg-web Date: 24-Jan-2003 10:57:55 Branch: HEAD Handle: 2003012409575301 Modified files: openpkg-src/openpkg-tool openpkg-build.pl openpkg-tool.spec openpkg.pod openpkg-web news.txt Log: support optional discriminator prefix to pattern Summary: Revision Changes Path 1.44 +30 -18 openpkg-src/openpkg-tool/openpkg-build.pl 1.30 +2 -2 openpkg-src/openpkg-tool/openpkg-tool.spec 1.12 +7 -1 openpkg-src/openpkg-tool/openpkg.pod 1.3027 +1 -0 openpkg-web/news.txt ____________________________________________________________________________ patch -p0 <<'@@ .' Index: openpkg-src/openpkg-tool/openpkg-build.pl ============================================================================ $ cvs diff -u -r1.43 -r1.44 openpkg-build.pl --- openpkg-src/openpkg-tool/openpkg-build.pl 22 Jan 2003 13:55:39 -0000 1.43 +++ openpkg-src/openpkg-tool/openpkg-build.pl 24 Jan 2003 09:57:54 -0000 1.44 @@ -1048,8 +1048,8 @@ # # there can be multiple sources for a target release # -sub chose_source ($$@) { - my($env, $name, $vmap, @vers) = @_; +sub chose_source ($$$$@) { + my($env, $name, $select, $vmap, @vers) = @_; my(@recs,@nrecs,$rec); return unless @vers; @@ -1067,6 +1067,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}} || @@ -1092,12 +1098,14 @@ } return; - } else { + } elsif (@recs) { if ($env->{upgrade}) { $rec = $recs[-1]; } else { $rec = $recs[0]; } + } else { + return; } print "# source for $name is ".vsn($rec)."\n"; @@ -1312,7 +1320,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}))) { @@ -1496,19 +1504,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 @@ -1532,7 +1542,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); @@ -1541,6 +1551,8 @@ # chose sources for goals from repository # foreach $name (@$todo) { + $select = undef; + $select = $1 if $name =~ s/,([^\s,]+)$//; $t = undef; # @@ -1554,14 +1566,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); } } @@ . patch -p0 <<'@@ .' Index: openpkg-src/openpkg-tool/openpkg-tool.spec ============================================================================ $ cvs diff -u -r1.29 -r1.30 openpkg-tool.spec --- openpkg-src/openpkg-tool/openpkg-tool.spec 22 Jan 2003 10:46:56 -0000 1.29 +++ openpkg-src/openpkg-tool/openpkg-tool.spec 24 Jan 2003 09:57:54 -0000 1.30 @@ -32,8 +32,8 @@ Distribution: OpenPKG [PLUS] Group: Bootstrapping License: GPL -Version: 20030122 -Release: 20030122 +Version: 20030124 +Release: 20030124 # list of sources Source0: openpkg.sh @@ . patch -p0 <<'@@ .' Index: openpkg-src/openpkg-tool/openpkg.pod ============================================================================ $ cvs diff -u -r1.11 -r1.12 openpkg.pod --- openpkg-src/openpkg-tool/openpkg.pod 21 Jan 2003 13:25:06 -0000 1.11 +++ openpkg-src/openpkg-tool/openpkg.pod 24 Jan 2003 09:57:54 -0000 1.12 @@ -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 @@ . patch -p0 <<'@@ .' Index: openpkg-web/news.txt ============================================================================ $ cvs diff -u -r1.3026 -r1.3027 news.txt --- openpkg-web/news.txt 24 Jan 2003 09:45:15 -0000 1.3026 +++ openpkg-web/news.txt 24 Jan 2003 09:57:53 -0000 1.3027 @@ -1,3 +1,4 @@ +24-Jan-2003: Upgraded package: P<openpkg-tool-20030124-20030124> 24-Jan-2003: Upgraded package: P<mysql-3.23.55-20030124> 24-Jan-2003: Upgraded package: P<vim-6.1.301-20030124> 24-Jan-2003: Upgraded package: P<postgresql-7.3.1-20030124> @@ . ______________________________________________________________________ The OpenPKG Project www.openpkg.org CVS Repository Commit List [EMAIL PROTECTED]