View on GitHub

Mock » Release Notes 1.4.1

A 'simple' chroot build environment manager for building RPMs.

There are new features:

There are some bugfixes:


Bootstrap chroot

Mock is calling dnf --installroot to install packages for target architecture into target directory. This works. Mostly. The only problem that use host DNF and rpm to install packages. But this can cause problem when new RPM feature is introduces. Like Soft dependencies or Rich dependencies. When you have EL6 host and try to install Fedora rawhide package with Rich dependency then rpm will fail and you cannot do anything about it. You can upgrade your build machine to Fedora rawhide, but that is often not possible when it is part of critical infrastructure.

So we introduced Boostrap chroot. And ‘we’ actually means Michael Cullen who implement it. And Igor Gnatenko who proposed this idea. Big kudos for both of them.

Bootstrap chroot means that we first create very minimal chroot for target platform and we call DNF/YUM from that platform. For example: when you are on RHEL7 and you want to build package for fedora-26-x86_64, mock will first create chroot called fedora-26-x86_64-bootstrap, it will install DNF and rpm there (fc26 versions). Then it will call DNF from fedora-26-x86_64-bootstrap to install all needed packages to fedora-26-x86_64 chroot.

The disadvantage is that you will need more storage in /var/lib/mock, the build is little bit slower. But you will hardly notice that unless you disabled yum_cache and root_cache plugins for some reasons.

The advantage is that you can use stable version of OS to build packages for even most recent OS. And vice versa.

If you want to preserve previous behaviour you can use --no-bootstrap-chroot command line option or set:

    config_opts['use_bootstrap_container'] = False

in your configuration.