- Add mock-specific build artifacts (chroot/, mock-*, mockroot/) - Include package build files (*.deb, *.changes, *.buildinfo) - Add development tools (.coverage, .pytest_cache, .tox) - Include system files (.DS_Store, Thumbs.db, ._*) - Add temporary and backup files (*.tmp, *.bak, *.backup) - Include local configuration overrides (config.local.yaml, .env.local) - Add test artifacts and documentation builds - Comprehensive coverage for Python build system project This ensures build artifacts, chroot environments, and development tools are properly ignored in version control.
4.1 KiB
| layout | title |
|---|---|
| default | Release Notes - Mock v5.3 |
Released on 2023-12-13.
Mock 5.3 new features
-
A new plugin to pre-process spec files with rpmautospec has been implemented.
If this plugin is enabled, mock pre-processes spec files that use rpmautospec features (for automatic release numbering and changelog generation) before building a source RPM.
-
Only run the
%prepsection once when running%generate_buildrequiresmultiple times. Previously Mock run%preprepeatedly before each%generate_buildrequiresround except for the last one. This was inconsistent and unnecessary slow/wasteful.When the original support for
%generate_buildrequireslanded into Mock, the intention was to only call%preponce. However when Mock added support for multiple rounds of%generate_buildrequires,%prepended up only being skipped in the finalrpmbuildcall. This was an oversight.%prepis now only called once, as originally intended.Some RPM packages might be affected by the change, especially if a dirty working directory after running
%generate_buildrequiresaffects the results of subsequent rounds of%generate_buildrequires. However, such behavior was undefined and quite buggy even previously, due to the lack of the%prepsection in the finalrpmbuildcall.Packages that need to run commands before every round of
%generate_buildrequiresshould place those commands in the%generate_buildrequiressection itself rather than%prep. -
The automatic killing feature for orphan processes within the chroot environment was improved to also provide the user with information about the command-line arguments of the terminated process:
WARNING: Leftover process 1331205 is being killed with signal 15: daemon --with-arg -
The info about package management tooling used to install the target buildroot has been updated to provide the info earlier, before the buildroot installation happens. Mock newly informs also about dnf5 presence.
Bugfixes
-
The Bash completion bug in Mock for options accepting multiple arguments, tracked in the long-standing issue, has been resolved through PR#1262.
-
If DNF 5 sees an "interactive" TTY on stdout, it will try to draw progress bars and cause the Mock logs to be garbled. This release brings a fix that simply sets the output of DNF5 to a pipe instead of a PTY.
-
When Mock completes the installation of all the requirements generated by
%generate_buildrequries, it callsrpmbuild -bato perform a final build of the package.During the final build,
%generate_buildrequriesruns again in order to generate a list ofBuildRequiresto be added to the built SRPM metadata. An arbitrary%generate_buildrequriessection may generate different requirements that may not have been installed.Previously, the
rpmbuild -bacall used the--nodepsoption, hence it was possible to successfully build a package with unsatisfiable BuildRequires in the built SRPM metadata.When a bootstrap chroot is used, the
--nodepsoption is no longer used in the finalrpmbuild -bacall. If%generate_buildrequriesattempts to generate new unsatisfied requirements during the final build, the build will fail. When a bootstrap chroot is not used, the--nodepsoption remains because Mock cannot know if the RPM in chroot can read the RPM database.
Following contributors contributed to this release:
- Evan Goode
- Jakub Kadlcik
- Miro Hrončok
- Orion Poplawski
- Stephen Gallagher
Thank you!