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]

Reply via email to