Using mock to build a chain of packages

Richard W.M. Jones rjones at redhat.com
Sat Mar 22 18:49:58 UTC 2008


I'm sure this must be a common question, but I can't work it out from
the man page and various online mock resources.

I want to build a 'chain' of packages in mock -- packages A, B and C
where after A is built it must be installed because it is a
BuildRequires for B, and similarly B must be installed before C is
built.  None of these packages is in the Fedora verison (8) that I'm
using.

I can build and install package A fine:

  $ mock -r fedora-8-i386 rpmbuild/SRPMS/ocaml-fileutils-0.3.0-3.fc8.src.rpm

  # rpm --root /var/lib/mock/fedora-8-i386/root -Uvh /var/lib/mock/fedora-8-i386/result/ocaml-fileutils-*.i386.rpm
  Preparing...                ########################################### [100%]
     1:ocaml-fileutils        ########################################### [ 50%]
     2:ocaml-fileutils-devel  ########################################### [100%]

Now package B, but the build fails:

  $ mock -r fedora-8-i386 --no-clean /home/rjones/rpmbuild/SRPMS/ocaml-gettext-0.2.0-1rwmj20080321.fc8.src.rpm
  INFO: mock.py version 0.9.7 starting...
  State Changed: init plugins
  State Changed: start
  INFO: Start(/home/rjones/rpmbuild/SRPMS/ocaml-gettext-0.2.0-1rwmj20080321.fc8.src.rpm)  Config(fedora-8-i386)
  State Changed: init
  State Changed: lock buildroot
  INFO: enabled root cache
  INFO: enabled yum cache
  State Changed: cleaning yum metadata
  INFO: enabled ccache
  State Changed: running yum
  State Changed: setup
  ERROR: Exception(/home/rjones/rpmbuild/SRPMS/ocaml-gettext-0.2.0-1rwmj20080321.fc8.src.rpm) Config(fedora-8-i386) 0 minutes 6 seconds
  INFO: Results and/or logs in: /var/lib/mock//fedora-8-i386/result
  ERROR: Bad build req: No Package Found for ocaml-fileutils-devel. Exiting.

But ocaml-fileutils-devel (the A package) _is_ installed in the
buildroot:

  $ rpm --root /var/lib/mock/fedora-8-i386/root -qa | grep fileutils
  ocaml-fileutils-devel-0.3.0-3.fc8
  ocaml-fileutils-0.3.0-3.fc8

What am I doing wrong!?

Also: Is there a way to make this all easier?  What I _really_ want to
do is to pass a lengthy list of SRPMS to mock and have it just work
out the dependencies (including install dependencies) and have it
build & install them.

Rich.

-- 
Richard Jones, Emerging Technologies, Red Hat  http://et.redhat.com/~rjones
virt-p2v converts physical machines to virtual machines.  Boot with a
live CD or over the network (PXE) and turn machines into Xen guests.
http://et.redhat.com/~rjones/virt-p2v




More information about the fedora-devel-list mailing list