Skip to content

Commit

Permalink
Release v5.7 + Core Configs v41.3
Browse files Browse the repository at this point in the history
Created with:
$ ./releng/generate-release-notes --use-version 5.7
$ tito tag (mock-core-configs)
$ tito tag --use-version=5.7 (mock)
  • Loading branch information
praiskup committed Sep 26, 2024
1 parent a0155c5 commit 9041ee3
Show file tree
Hide file tree
Showing 27 changed files with 224 additions and 125 deletions.
2 changes: 1 addition & 1 deletion .tito/packages/mock
Original file line number Diff line number Diff line change
@@ -1 +1 @@
5.6-1 mock/
5.7-1 mock/
2 changes: 1 addition & 1 deletion .tito/packages/mock-core-configs
Original file line number Diff line number Diff line change
@@ -1 +1 @@
41.2-1 mock-core-configs/
41.3-1 mock-core-configs/
189 changes: 189 additions & 0 deletions docs/Release-Notes-5.7.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,189 @@
---
layout: default
title: Release Notes - Mock 5.7
---

## [Release 5.7](https://rpm-software-management.github.io/mock/Release-Notes-5.7) - 2024-09-26

### New features and important changes

- Support for [hermetic builds](feature-hermetic-builds) has [been][PR#1393]
[implemented][PR#1449]. This update introduces two new command-line options:
`--calculate-build-deps` and `--hermetic-build`, along with the new
`mock-hermetic-repo(1)` utility.

Additionally, this change introduces a new [`buildroot_lock`
plugin](Plugin-BuildrootLock), which generates a new artifact in the buildroot—a
buildroot *lockfile*. Users can enable this plugin explicitly by setting
`config_opts["plugin_conf"]["buildroot_lock_enable"] = True`.

- This version addresses [issue#521][], which requested a cleanup option for
all chroots. A [new][PR#1337] option, `--scrub-all-chroots`, has been
added. It can detect leftovers in `/var/lib/mock` or `/var/cache/mock`
and make multiple `mock --scrub=all` calls accordingly.

- Alias `dnf4` added for the `package_manager = dnf`.

The options specific to DNF4, previously prefixed with `dnf_*`, have been
renamed to `dnf4_*` too to avoid confusion with `dnf5_*` options. For backward
compatibility, the `dnf_*` prefixed variants still work, so these config pairs
are equivalent:

```python
config_opts['dnf4_install_cmd'] = 'install python3-dnf python3-dnf-plugins-core'
config_opts['dnf_install_cmd'] = 'install python3-dnf python3-dnf-plugins-core'

config_opts['package_manager'] = 'dnf4'
config_opts['package_manager'] = 'dnf'
```

Some of the `dnf_*` options remain unchanged because they are universal and used
with DNF4, DNF5, or YUM, e.g., `dnf_vars`.

While working on this rename, the rarely used `system_<PM>_command` options have
been changed to `<PM>_system_command` to visually align with the rest of the
package-manager-specific options. The old variants are still accepted.

- The `--addrepo` option has been updated to affect both the bootstrap chroot
installation and the buildroot installation, as requested in [issue#1414][].
However, be cautious, as Mock [aggressively caches the bootstrap][issue#1289].
Always remember to run `mock -r <chroot> --scrub=bootstrap` first.
Additionally, as more chroots are being switched to `bootstrap_image_ready =
True`, you'll likely need to use `--addrepo` **in combination with**
`--no-bootstrap-image`; otherwise, the bootstrap chroot installation will remain
unaffected.

- There's a new `config_opts['bootstrap_image_skip_pull']` option that allows you
to skip image pulling (running the `podman pull` command by Mock) when preparing
the bootstrap chroot. This is useful if `podman pull` is failing, for example,
when the registry is temporarily or permanently unavailable, but the local image
exists, or if the image reference is pointing at a local-only image.

- There's a new [ccache](Plugin-CCache) plugin option
`config_opts['plugin_conf']['ccache_opts']['show_stats']`; if set to `True`,
Mock prints the ccache statistics (hits/misses) to logs.

- A new option `debug` has been [added][PR#1408] to the ccache plugin. Setting
it to `True` creates per-object debug files that are helpful when debugging
unexpected cache misses, see [ccache docs][ccache-docs-debug].

- A new option `hashdir` has been [added][PR#1399] to the ccache plugin. Setting
it to `False` excludes the build working directory from the hash used to
distinguish two compilations when generating debuginfo. While this allows the
compiler cache to be shared across different package NEVRs, it might cause the
debuginfo to be incorrect.
The option can be used for issue bisecting if running the debugger is
unnecessary ([issue#1395][]).

- New Mock RPM package provides the systemd-sysusers drop-in configuration file
for automatic `mock 135` group ID allocation. See [rpm docs][] for more info.


### Bugfixes

- The `installed_pkgs.log` — generated by the `package_state` plugin — was
[previously generated too early][issue#1429], after the static build
requirements were installed but **before** the dynamic build requirements were
resolved and installed. This led to incorrect chroot introspection for the end
user, as the reported set of packages needed to build the given package was
incomplete. The new Mock version generates the `installed_pkgs.log` file after
the dynamic build requirements are installed.


- De-duplicating bootstrap mount points for local repositories used with `--chain`
or `--localrepo=file:///repo/on/host`. Caused eventual problems during
`--scrub=bootstrap`. This bug existed in Mock <= 5.6, but after fixing the
[issue#1414][], it got exposed by our test suite. Related issues include
[issue#357][] ([commit#a0a2cba3][]) and [issue#381][] ([commit#16462acc][]).

- Previously, mock.rpm created file in `/usr/share/doc/mock` directory but did
did own this directory.

- The fuse-overlayfs package is not installed in the Fedora container images
by default. We need to explicitly install it, otherwise running Mock inside of
a container won't work.

- Previously, the `nspawn_args` configuration value was not applied in multiple
internal `doChroot()` calls. This could cause issues when custom nspawn
arguments were needed everywhere (see [PR#1410][]). Now, `doChroot()`
automatically applies `nspawn_args`, shifting the responsibility from callers to
callee.

- Several internal code locations attempt to ensure that the result directory
exists, creating it if necessary. However, these locations handled it
inconsistently, sometimes neglecting to [change the ownership][issue#1467] of
the result directory. Now, all locations use a single method dedicated to
result directory preparation.


### Mock Core Configs changes

- The GPG key locations for the CentOS Stream 10 Appstream debuginfo
and Extras Common repositories were updated to point to the correct
GPG keys.

- Anolis-7 has been EOLed at 2024-06-30. We moved the configs to `eol` directory.

- The CentOS Stream 10 configuration has been updated to use
`quay.io/centos/centos:stream10-development` as its bootstrap image. Since
this image [already has the `python3-dnf-plugins-core` package
installed](https://issues.redhat.com/browse/CS-2506), the configuration is also
updated to set `bootstrap_image_ready = True`. This means the image can be
used "as is" to bootstrap the DNF stack without installing any additional
packages into the prepared bootstrap chroot, significantly speeding up
bootstrap preparation.

- The centos-stream-9 (and transitively centos-stream+epel-9) configuration has
been fixed to rely on "bootstrap image" readiness for Mock builds, see
[issue#1442][].

- OpenSuse Leap 15.4 EOLed at 07 Dec 2023 so we moved the configs to `eol` directory.

- We [updated the configuration][PR#1195] files for chroots that still use older
RPM versions (v4.18 and earlier), which affects RHEL/CentOS 9 and older. These
older RPM versions were built with an incorrect default for the `%_host_cpu`
macro in `ppc64le` chroots, where the macro incorrectly resolved to
`powerpc64le` instead of `ppc64le`.

This incorrect value caused issues during architecture validation, such as when
checking `ExclusiveArch: ppc64le` for `BuildArch: noarch` packages (done
in-chroot by `/bin/rpmbuild`).

The incorrect macro value has now been overridden in the relevant `ppc64le`
configuration files in Mock, ensuring that `ExcludeArch` and `ExclusiveArch`
validations resolve correctly.

#### Following contributors contributed to this release:

- Brian J. Murrell
- Carl George
- Jakub Kadlcik
- Jiri Kyjovsky
- Julian Sikorski
- Miroslav Suchý
- Nils Philippsen
- Thomas Mendorf

Thank you!


[PR#1195]: https://github.com/rpm-software-management/mock/pull/1195
[issue#521]: https://github.com/rpm-software-management/mock/issues/521
[PR#1399]: https://github.com/rpm-software-management/mock/pull/1399
[commit#a0a2cba3]: https://github.com/rpm-software-management/mock/commit/a0a2cba3
[PR#1337]: https://github.com/rpm-software-management/mock/pull/1337
[issue#1429]: https://github.com/rpm-software-management/mock/issues/1429
[commit#16462acc]: https://github.com/rpm-software-management/mock/commit/16462acc
[issue#1442]: https://github.com/rpm-software-management/mock/issues/1442
[PR#1408]: https://github.com/rpm-software-management/mock/pull/1408
[issue#1289]: https://github.com/rpm-software-management/mock/issues/1289
[issue#1414]: https://github.com/rpm-software-management/mock/issues/1414
[issue#381]: https://github.com/rpm-software-management/mock/issues/381
[PR#1393]: https://github.com/rpm-software-management/mock/pull/1393
[issue#357]: https://github.com/rpm-software-management/mock/issues/357
[issue#1467]: https://github.com/rpm-software-management/mock/issues/1467
[issue#1395]: https://github.com/rpm-software-management/mock/issues/1395
[PR#1410]: https://github.com/rpm-software-management/mock/pull/1410
[PR#1449]: https://github.com/rpm-software-management/mock/pull/1449
[ccache-docs-debug]: https://ccache.dev/manual/4.10.html#config_debug
[rpm docs]: https://rpm-software-management.github.io/rpm/manual/users_and_groups.html
3 changes: 2 additions & 1 deletion docs/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,8 @@ Versions in Linux distributions:


## Release Notes
* [Configs 41.1](Release-Notes-Configs-41.1) - EL7 configs EOL. F38 EOL. F41 branched.
* [5.7 and Configs 41.3](Release-Notes-5.7) - Support for isolated builds added. DNF4 = DNF. Option `--scrub-all-chroots` added.
* [Configs 41.1 (and 41.2)](Release-Notes-Configs-41.1) - EL7 configs EOL. F38 EOL. F41 branched.
* [Configs 40.6](Release-Notes-Configs-40.6) - CentOS Stream 10 uses mirrored repositories.
* [Configs 40.5](Release-Notes-Configs-40.5) - Fedora 38 moved to EOL. CentOS Stream 8 moved to vault.
* [5.6](Release-Notes-5.6) - Improved performance of bash completion, don't use `--allowerasing` for commands that doesn't provide it, fixed "no space left" tracebacks, new Circle Linux 9 configs, Mageia Cauldron i686, fixed Fedora ELN.
Expand Down
10 changes: 9 additions & 1 deletion mock-core-configs/mock-core-configs.spec
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
%endif

Name: mock-core-configs
Version: 41.2
Version: 41.3
Release: 1%{?dist}
Summary: Mock core config files basic chroots

Expand Down Expand Up @@ -149,6 +149,14 @@ fi
%ghost %config(noreplace,missingok) %{_sysconfdir}/mock/default.cfg

%changelog
* Thu Sep 26 2024 Pavel Raiskup <[email protected]> 41.3-1
- move anolis-7 to eol directory ([email protected])
- move opensuse-leap-15.4 to eol directory ([email protected])
- configs: the stream9 image is "ready" for Mock bootstrap
- enable bootstrap container for CentOS Stream 10 ([email protected])
- configs: replace `powerpc64le` with `ppc64le` in the `%%_host_cpu` macro
- fix EOL template locations for CentOS7/EPEL7 ([email protected])

* Thu Aug 15 2024 Pavel Raiskup <[email protected]> 41.2-1
- fix centos-stream+epel-10-s390x /bin/sed typo

Expand Down
23 changes: 22 additions & 1 deletion mock/mock.spec
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

Summary: Builds packages inside chroots
Name: mock
Version: 5.6.post1
Version: 5.7
Release: 1%{?dist}
License: GPL-2.0-or-later
# Source is created by
Expand Down Expand Up @@ -313,6 +313,27 @@ pylint-3 py/mockbuild/ py/*.py py/mockbuild/plugins/* || :
%config(noreplace) %{_sysusersdir}/mock.conf

%changelog
* Thu Sep 26 2024 Pavel Raiskup <[email protected]> 5.7-1
- hermetic: new mode to do fully-offline builds
- new --scrub-all-chroots option
- make "dnf4" equivalent to "dnf"
- chroot_scan: create result directory with appropriate permissions
- chain: No need to re-create resultdir
- de-duplicate the local-repo mountpoint in bootstrap
- respect `nspawn_args` whenever `doChroot` is called
- ensure --addrepo option also affects bootstrap
- de-duplicate two opinionated doChroot() calls
- show ccache stats at the end of the build ([email protected])
- add `debug` option to the ccache plugin ([email protected])
- add runtime dependency on fuse-overlayfs ([email protected])
- skip the "podman pull" for bootstrap when not needed
- package_state: the installed_pkgs.log file now covers dynamic builddeps
- don’t ship rpmautospec plugin with main package ([email protected])
- clean up of macros referencing rhel7 ([email protected])
- enable RPM sysusers integration ([email protected])
- add hashdir option to ccache plugin ([email protected])
- own /usr/share/doc/mock ([email protected])

* Tue May 14 2024 Jakub Kadlcik <[email protected]> 5.6-1
- scm: Open stdout in text mode for Git timestamp subprocesses
([email protected])
Expand Down
8 changes: 0 additions & 8 deletions releng/release-notes-next/addrepo-affects-bootstrap.feature

This file was deleted.

1 change: 0 additions & 1 deletion releng/release-notes-next/anolis-7.config

This file was deleted.

5 changes: 0 additions & 5 deletions releng/release-notes-next/bootstrap-skip-image-pull.feature

This file was deleted.

5 changes: 0 additions & 5 deletions releng/release-notes-next/buildroot-mounts-redundancy.bugfix

This file was deleted.

8 changes: 0 additions & 8 deletions releng/release-notes-next/c10s-bootstrap-ready.config.md

This file was deleted.

3 changes: 0 additions & 3 deletions releng/release-notes-next/c9s-image-ready.config

This file was deleted.

3 changes: 0 additions & 3 deletions releng/release-notes-next/ccache-show-stats.feature

This file was deleted.

4 changes: 0 additions & 4 deletions releng/release-notes-next/ccache_debug.feature

This file was deleted.

3 changes: 0 additions & 3 deletions releng/release-notes-next/centos-stream-10-gpg-keys.bugfix

This file was deleted.

21 changes: 0 additions & 21 deletions releng/release-notes-next/dnf4-config-is-alias-to-dnf.feature

This file was deleted.

2 changes: 0 additions & 2 deletions releng/release-notes-next/docdir-ownership.bugfix

This file was deleted.

3 changes: 0 additions & 3 deletions releng/release-notes-next/fuse-overlayfs.bugfix

This file was deleted.

7 changes: 0 additions & 7 deletions releng/release-notes-next/hashdir.feature

This file was deleted.

9 changes: 0 additions & 9 deletions releng/release-notes-next/hermetic-build.feature

This file was deleted.

1 change: 0 additions & 1 deletion releng/release-notes-next/leap-15-4.config

This file was deleted.

5 changes: 0 additions & 5 deletions releng/release-notes-next/nspawn-args-chroot-bootstrap.bugfix

This file was deleted.

This file was deleted.

13 changes: 0 additions & 13 deletions releng/release-notes-next/ppc64le-not-powerpc64le-host-cpu.config

This file was deleted.

4 changes: 0 additions & 4 deletions releng/release-notes-next/scrub-all-chroots.feature

This file was deleted.

Loading

0 comments on commit 9041ee3

Please sign in to comment.