To follow up - I also run into this problem when I install an RPM from
current and then later want to go back to the main release (say when current
changes have been merged back to an update of the main openpkg release).
What I am looking for is a way to make "openpkg build" demand exact matching
on versions. I rolled my sleeves up and added the "-e" option to do this:

openpkg@ultra3$ rpm -q openpkg-tool
openpkg-tool-20030204-20030204

openpkg@ultra3$ openpkg build openpkg-tool
# openpkg-build.pl release(1.2)
# curling index ftp://ftp.openpkg.org/release/1.2/00INDEX.rdf
# using XML parser
# curling index ftp://ftp.openpkg.org/release/1.2/SRC/00INDEX.rdf.bz2
# using XML parser
# curling index ftp://ftp.openpkg.org/release/1.2/SRC/PLUS/00INDEX.rdf.bz2
# using XML parser
# curling index ftp://ftp.openpkg.org/release/1.2/UPD/00INDEX.rdf.bz2
# using XML parser
# curling index ftp://ftp.openpkg.org/release/1.2/BIN/00INDEX.rdf
# using XML parser
# source for openpkg-tool is openpkg-tool-1.2.0-1.2.0
# recursing over dependencies for openpkg-tool-1.2.0-1.2.0
# openpkg-tool is already installed

openpkg@ultra3$ openpkg build -e openpkg-tool
# openpkg-build.pl release(1.2)
# curling index ftp://ftp.openpkg.org/release/1.2/00INDEX.rdf
# using XML parser
# curling index ftp://ftp.openpkg.org/release/1.2/SRC/00INDEX.rdf.bz2
# using XML parser
# curling index ftp://ftp.openpkg.org/release/1.2/SRC/PLUS/00INDEX.rdf.bz2
# using XML parser
# curling index ftp://ftp.openpkg.org/release/1.2/UPD/00INDEX.rdf.bz2
# using XML parser
# curling index ftp://ftp.openpkg.org/release/1.2/BIN/00INDEX.rdf
# using XML parser
# source for openpkg-tool is openpkg-tool-1.2.0-1.2.0
# recursing over dependencies for openpkg-tool-1.2.0-1.2.0
# rebuilding openpkg-tool (upgrade)
# openpkg-tool uses openpkg-1.2.0-1.2.0 for openpkg
# adding openpkg-tool-1.2.0-1.2.0 to list
# computing reverse dependencies
echo ::::
ftp://ftp.openpkg.org/release/1.2/SRC/PLUS/openpkg-tool-1.2.0-1.2.0.sr
c.rpm ::::
/opt/openpkg/bin/rpm --rebuild
ftp://ftp.openpkg.org/release/1.2/SRC/PLUS/openpk
g-tool-1.2.0-1.2.0.src.rpm || exit $?
/opt/openpkg/bin/rpm --force -Uvh
/opt/openpkg/RPM/PKG/openpkg-tool-1.2.0-1.2.0.
sparc64-solaris2.9-oo.rpm || exit $?
echo ::::
ftp://ftp.openpkg.org/release/1.2/SRC/PLUS/openpkg-tool-1.2.0-1.2.0.sr
c.rpm = $? ::::

Here is the patch.

openpkg@ultra3$ diff -u openpkg-build.pl~ openpkg-build.pl
--- openpkg-build.pl~   Tue Feb 18 09:16:34 2003
+++ openpkg-build.pl    Tue Feb 18 09:37:15 2003
@@ -33,9 +33,10 @@
     $opt_R $opt_r $opt_f $opt_u $opt_U $opt_a $opt_A
     $opt_z $opt_Z $opt_P $opt_N $opt_E $opt_i $opt_D
     $opt_p $opt_q $opt_s $opt_S $opt_X $opt_M $opt_L
-    $opt_W $opt_K/;
-my $getopts = 'R:r:f:uUaAzZP:N:E:iD:p:qsSXMLWK';
+    $opt_W $opt_K $opt_e/;
+my $getopts = 'R:r:f:uUaAzZP:N:eE:iD:p:qsSXMLWK';
 getopts($getopts);
+my $exact = $opt_e;

 ##########################################################################

@@ -112,7 +113,7 @@
     close(FH);
 }

-die "openpkg:build:USAGE: $0 [-R rpm] [-r repository] [-f index.rdf]
[-uUzZiqS]
 [-P priv-cmd] [-N non-priv-cmd] [-p platform] [-Dwith ...] [-Ename ...] (
[-aA]
 | patternlist )\n"
+die "openpkg:build:USAGE: $0 [-R rpm] [-r repository] [-f index.rdf]
[-euUzZiqS
] [-P priv-cmd] [-N non-priv-cmd] [-p platform] [-Dwith ...] [-Ename ...] (
[-aA
] | patternlist )\n"
     unless $#ARGV >= 0 || ($#ARGV == -1 && ($opt_a || $opt_A));

 ##########################################################################
@@ -1260,6 +1261,9 @@

     return 1 unless $vmap;

+    if ($exact) {
+        return !grep { vcmp($vs, $_) == 0; } keys %$vmap;
+    }
     return !grep { vcmp($vs, $_) <= 0; } keys %$vmap;
 }

openpkg@ultra3$

> -----Original Message-----
> From: Andrews, Martin [mailto:[EMAIL PROTECTED]]
> Sent: Monday, February 17, 2003 9:36 AM
> To: '[EMAIL PROTECTED]'
> Subject: RE: openpkg build precisely following version from 
> repository?
> 
> 
> I do archive the binary rpm's - I have no problem restoring 
> the central
> repository so that it has the downgraded RPM. The problem is 
> that I am using
> "openpkg build" to sync all my hosts to the binary repository 
> and that won't
> pull down the old RPM if they already have a newer one.
> 
> Martin
> 
> > -----Original Message-----
> > From: Michael van Elst [mailto:[EMAIL PROTECTED]]
> > Sent: Monday, February 17, 2003 9:26 AM
> > To: [EMAIL PROTECTED]
> > Subject: Re: openpkg build precisely following version from 
> > repository?
> > 
> > 
> > On Mon, Feb 17, 2003, Andrews, Martin wrote:
> > 
> > > Without forcing recompiles of everything, is there a way to 
> > have "openpkg
> > > build" track the versions from a repository exactly? 
> > Specifically, I want my
> > > various end hosts to downgrade if the main binary 
> > repository downgrades a
> > > package. Right now it seems that "openpkg build" will keep 
> > a new version
> > > installed unless I use -z - but I don't want most of my 
> > hosts recompiling.
> > 
> > Simple answer: no. openpkg build knows how to upgrade but not how to
> > downgrade. There is also the issue that a downgrade would not 
> > necessarily
> > reverse the effect of an upgrade.
> > 
> > You might archive the binary RPMs after a build so that you 
> > can downgrade
> > without recompiling. This would also ensure that you go back 
> > exactly to the
> > state (regarding versions, not regarding configuration 
> > files!) before an
> > upgrade.
> ______________________________________________________________________
> The OpenPKG Project                                    www.openpkg.org
> User Communication List                      [EMAIL PROTECTED]
> 
______________________________________________________________________
The OpenPKG Project                                    www.openpkg.org
User Communication List                      [EMAIL PROTECTED]

Reply via email to