koji weirdness

Mike Bonnet mikeb at redhat.com
Fri Jun 8 16:48:47 UTC 2007


On Fri, 2007-06-01 at 15:09 -0700, Toshio Kuratomi wrote:
> On Thu, 2007-05-31 at 15:32 -0400, Mike Bonnet wrote:
> > I just checked in an alternate chain-build implementation to
> > Makefile.common, based on a target we were using internally (and have
> > tested rather extensively).  Update your common/ directories and run
> > "make help" to see the chain-build usage.
> > 
> > You specify the packages that the current package depends on using the
> > CHAIN= parameter to "make chain-build".  The packages specified in the
> > CHAIN= parameter will be checked out into a temp directory and "make
> > cvsurl" will be called to get their CVS URL (this will reference the
> > latest tag that was applied to the package on the current branch, and
> > that tag must not have been built in Koji already).  The CVS URLs from
> > each CHAIN= package and the current package will be used to generate the
> > appropriate koji command-line to build each package in order (the
> > current package will be built last, and should not appear in the CHAIN=
> > parameter).
> 
> What do you do if you have several packages that have a common
> dependency?
> 
> For instance:
> bzrtools Requires: bzr >= %{majorver} bzr < %{nextver}
> bzr-gtk  Requires: bzr >= %{majorver} bzr < %{nextver}
> 
> Does cd bzr-gtk/devel ; make chain-build CHAIN='bzr bzrtools'
> build bzr, then bzrtools when bzr is ready, then bzr-gtk when bzrtools
> is ready?  Or does it attempt to make bzr and bzr-gtk independently
> followed by bzr-gtk?
> 
> Related to this is specifying more than one package.
> 
> foo Requires: bar, bar Requires: baz.
> 
> An update of baz requires an update of bar which requires an update of
> foo.  Does cd foo/devel ; make chain-build CHAIN='baz bar' do the right
> thing?

You want to run "make chain-build" from the last package in the chain.
This makes sense because you will have needed to bump the revision in
the spec and run "make tag" for each of the previous packages in the
chain already.  So, if foo BuildRequires bar and bar BuildRequires baz:

cd foo/devel
<bump spec and commit>
make tag
cd ../../bar/devel
<bump spec and commit>
make tag
cd ../../baz/devel
<bump spec and commit>
make tag
make chain-build BUILD="foo bar"

Which will build foo, wait until it appears in the repo to build bar,
and then wait until bar appears in the repo to build baz.

I'm going to see about rolling ajax's chain-build-expert patch in, for
finer control of build groupings.





More information about the fedora-devel-list mailing list