|
| 1 | +--- |
| 2 | +layout: default |
| 3 | +title: Release Notes - Mock 6.8 |
| 4 | +--- |
| 5 | + |
| 6 | +## [Release 6.8](https://rpm-software-management.github.io/mock/Release-Notes-6.8) - 2026-08-11 |
| 7 | + |
| 8 | + |
| 9 | +### Breaking changes |
| 10 | + |
| 11 | +- The `%{pkgid}` field has been removed from the `package_state` plugin output |
| 12 | + in both `available_pkgs.log` and `installed_pkgs.log`. |
| 13 | + |
| 14 | +### New features |
| 15 | + |
| 16 | +- New `separate_check` config option to run `%check` as a separate rpmbuild |
| 17 | + phase (`-bk --short-circuit`). This prevents `%check` scripts from modifying |
| 18 | + already built RPM artifacts. Supported values: `off` (default), |
| 19 | + `best_effort`, and `enforce`. |
| 20 | + |
| 21 | +- New `system_monitor` plugin for collecting various statistics during the build |
| 22 | + phase. |
| 23 | + |
| 24 | +- Build-time opt-in: Polkit support files can be included and installed with |
| 25 | + Mock when built `--with=polkit`. |
| 26 | + |
| 27 | +- Bash completion for `--localrepo` now offers directory completions. |
| 28 | + |
| 29 | +- For AlmaLinux targets, Podman container image pulls now pass `--platform` |
| 30 | + for x86_64 sub-architecture variants (x86_64_v2, x86_64_v3, x86_64_v4). |
| 31 | + This is a temporary workaround for Podman not being able to auto-detect |
| 32 | + sub-architecture variants in OCI images. The `oci_platform_map` config |
| 33 | + option is set unconditionally in the AlmaLinux templates; this means |
| 34 | + that e.g. a v2 bootstrap image is unintuitively pulled even on a v4 host |
| 35 | + when the target architecture is x86_64_v2 (normally bootstrap should be |
| 36 | + host-native). |
| 37 | + |
| 38 | +- New `pivot_root_chroot` configuration option uses `pivot_root(2)` inside a |
| 39 | + private mount namespace to atomically swap the mount-namespace root to the |
| 40 | + chroot path. This satisfies the kernel check that blocks |
| 41 | + `unshare(CLONE_NEWUSER)` after plain `chroot()`, allowing tools like |
| 42 | + pasta/passt that require user namespaces to work inside Mock buildroots. |
| 43 | + This is the same approach used by bubblewrap and other container runtimes. |
| 44 | + Requires `CAP_SYS_ADMIN` (available in `--privileged` containers); falls back |
| 45 | + to plain `chroot()` on failure. |
| 46 | + Set `config_opts['pivot_root_chroot'] = True` to enable. |
| 47 | + |
| 48 | +- On newer build hosts (Fedora 44+ and EL 11+), Mock uses the |
| 49 | + [`useradd --root` option][issue#1285] instead of `--prefix` to better isolate |
| 50 | + it from the host system. Specifically, this correctly resolves |
| 51 | + [subuid/subgid issues][issue#1354] (previously, we had to work around this |
| 52 | + problem by using in-chroot shadow-utils). |
| 53 | + |
| 54 | +- The `unbreq` plugin now detects if a `BuildRequires` field is not installed on |
| 55 | + the system and in that case does not report it as unused. This can happen if |
| 56 | + the `BuildRequires` field is a more complex logic formula (e.g. `(foo if bar)` |
| 57 | + and `bar` is not installed on the system). This scenario is no longer reported |
| 58 | + as a warning but as info. |
| 59 | + |
| 60 | +- System architecture detection now prefers `python3-libdnf5` over the |
| 61 | + deprecated `python3-dnf`. If `python3-libdnf5` is not available, Mock falls |
| 62 | + back to `python3-dnf`, preserving functionality on both modern and older |
| 63 | + systems. |
| 64 | + |
| 65 | +### Bugfixes |
| 66 | + |
| 67 | +- Fix bash completion `--chain` handling — it is an option with no argument, not |
| 68 | + a synonym for `--root` ([issue#1729][]). |
| 69 | + |
| 70 | +- The `buildroot_lock` plugin no longer crashes when the bootstrap image is |
| 71 | + unavailable. The lockfile is now only populated with bootstrap metadata when |
| 72 | + `use_bootstrap_image` is enabled. Also, `--calculate-build-dependencies` no |
| 73 | + longer overrides an explicit `--disable-plugin buildroot_lock` |
| 74 | + ([issue#1758][]). |
| 75 | + |
| 76 | +- Mock now decodes percent-escaped local `file://` repository paths before |
| 77 | + checking them for bootstrap bind mounts. This fixes bootstrap package-manager |
| 78 | + access to host-local repositories whose paths contain characters such as `@` |
| 79 | + and therefore appear escaped in file URIs ([PR#1728][]). |
| 80 | + |
| 81 | +- The existence of `repoquery` is now tested in the bootstrap image instead of |
| 82 | + on the host. |
| 83 | + |
| 84 | +- The `--allowerasing` argument is no longer passed to the dnf5 `download` |
| 85 | + command, which does not accept it. This invalid argument is now excluded |
| 86 | + when invoking dnf `download` operations using `--dnf-cmd` or `--pm-cmd`. |
| 87 | + |
| 88 | +- Fix the `package_state` plugin so `available_pkgs.log` is generated when |
| 89 | + `package_manager` is set to `dnf5` or `dnf4`, not only `dnf` or `microdnf` |
| 90 | + ([#1190][]). |
| 91 | + |
| 92 | +- Podman image pull now has a per-attempt timeout (configurable via |
| 93 | + `bootstrap_image_pull_timeout` and `buildroot_image_pull_timeout`, default |
| 94 | + 120 seconds) to prevent indefinite hangs and allow the retry logic to work. |
| 95 | + |
| 96 | +- Mock now preserves the timestamp of `dnf.conf` and `yum.conf` inside the |
| 97 | + chroot when their content has not changed. Previously, every Mock invocation |
| 98 | + rewrote these files unconditionally, which — combined with DNF's default |
| 99 | + `check_config_file_age=True` — caused repository metadata to be re-downloaded |
| 100 | + even when it was still valid ([issue#216][]). |
| 101 | + |
| 102 | +- The `uidManager` is now reloaded with `chrootuid`/`chrootgid` from |
| 103 | + config after the configuration is loaded. Previously, privilege |
| 104 | + dropping always used the calling user's identity, ignoring the |
| 105 | + configured chroot user ([#1731][]). |
| 106 | + |
| 107 | +- Consolidate NS resolver munging logic, which was previously scattered across |
| 108 | + multiple locations. This duplication made the logic difficult to follow and |
| 109 | + led to bugs, such as the one addressed in [PR#1697][]. |
| 110 | + |
| 111 | +- The `--spec` option now works with spec files that have restrictive |
| 112 | + permissions (e.g. `0600`). Previously, `shutil.copy2()` preserved the |
| 113 | + source permissions inside the chroot, making the file unreadable by the |
| 114 | + `mockbuild` user ([#1300][]). |
| 115 | + |
| 116 | +- The `unbreq` plugin no longer caches the mapping of a source RPM file to its |
| 117 | + `BuildRequires` fields, fixing a logic error where it would ignore later |
| 118 | + automatically generated `BuildRequires` fields when `BuildRequires` |
| 119 | + autogeneration is used. Source RPMs are now scanned after each installation |
| 120 | + of `BuildRequires` fields. |
| 121 | + |
| 122 | +- The `--verbose` option no longer duplicates the build log output into the root |
| 123 | + log. |
| 124 | + |
| 125 | +- Mock defaults were changed to not pass `--allowerasing` option to the |
| 126 | + `dnf5 list` command. |
| 127 | + |
| 128 | +- The `mock-hermetic-repo` tool now retries HTTP 503 (Service Unavailable) |
| 129 | + responses with exponential backoff, matching the existing retry handling for |
| 130 | + other transient HTTP errors. Previously, a single 503 from an upstream |
| 131 | + repository (e.g. S3 throttling) would cause the entire RPM download to fail |
| 132 | + ([PR#1769][]). |
| 133 | + |
| 134 | +### Mock Core Configs changes |
| 135 | + |
| 136 | +- Add the Extensions repo to the Fedora ELN config (disabled by default). |
| 137 | + |
| 138 | +- Use `cdn.opensuse.org` for baseurl repositories, matching the real |
| 139 | + distribution. |
| 140 | + |
| 141 | +- Branch Fedora 45 configuration files from Rawhide, per the |
| 142 | + [Fedora 45 Schedule](https://fedorapeople.org/groups/schedule/f-45/f-45-all-tasks.html). |
| 143 | + |
| 144 | +- Add configuration for Fedora 45 RISC-V. |
| 145 | + |
| 146 | +- Add Mageia 10 (stable) and Mageia 11 (development) configs. Move Mageia 8 |
| 147 | + configs to EOL. |
| 148 | + |
| 149 | +- Update openEuler 24.03 LTS chroot to SP4 and fix the source and |
| 150 | + update-source metalink repositories across all openEuler templates |
| 151 | + (20.03, 22.03, 24.03): the `path=` metalink form does not translate the |
| 152 | + `$releasever` dnf variable into the full mirror directory name, so it |
| 153 | + resolved to a non-existent path and silently broke `mock --sources`. |
| 154 | + |
| 155 | +### Contributors |
| 156 | + |
| 157 | +Following contributors contributed to this release: |
| 158 | + |
| 159 | + * Andrea Bolognani |
| 160 | + * Andrew Lukoshko |
| 161 | + * Chris Adams |
| 162 | + * Jani Välimaa |
| 163 | + * lichaoran |
| 164 | + * Lukáš Lipinský |
| 165 | + * Marian Koncek |
| 166 | + * Miroslav Suchý |
| 167 | + * Pavel Raiskup |
| 168 | + * Rahman Ajibade |
| 169 | + * Scott Hebert |
| 170 | + * Scott K Logan |
| 171 | + * Simone Caronni |
| 172 | + * Tomas Kopecek |
| 173 | + * Yaakov Selkowitz |
| 174 | + * Yanko Kaneti |
| 175 | + |
| 176 | +Thank you! |
| 177 | + |
| 178 | +[#1190]: https://github.com/rpm-software-management/mock/issues/1190 |
| 179 | +[#1300]: https://github.com/rpm-software-management/mock/issues/1300 |
| 180 | +[#1731]: https://github.com/rpm-software-management/mock/issues/1731 |
| 181 | +[issue#216]: https://github.com/rpm-software-management/mock/issues/216 |
| 182 | +[issue#1285]: https://github.com/rpm-software-management/mock/issues/1285 |
| 183 | +[issue#1354]: https://github.com/rpm-software-management/mock/issues/1354 |
| 184 | +[issue#1729]: https://github.com/rpm-software-management/mock/issues/1729 |
| 185 | +[issue#1758]: https://github.com/rpm-software-management/mock/issues/1758 |
| 186 | +[PR#1697]: https://github.com/rpm-software-management/mock/pull/1697 |
| 187 | +[PR#1728]: https://github.com/rpm-software-management/mock/pull/1728 |
| 188 | +[PR#1769]: https://github.com/rpm-software-management/mock/pull/1769 |
0 commit comments