rpkg 1.69 Release Notes
Released on November 24, 2025
Python compatibility
rpkg works with Python 2.7, 3.6, 3.9, 3.12, 3.13 and 3.14.
What’s new in rpkg 1.69
Not everything listed here is strictly “new”: many changes below were previously shipped as patches after the 1.68 release. The following sections summarize all changes since the previous version.
Lookaside upload/download: progress bar changes
Only update the progress bar when meaningfully changed. Remember the last reported progress in per mille (tenths of a percent) and only update the progress bar when this integer value changes. This should fix high CPU usage (to the extent the upload is CPU-limited rather than network-limited) in large file uploads. Don’t set up upload progress when stdout isn’t a tty. This saves effort compared to setting up the progress callback and then always checking if stdout is a tty.
Add mock configuration option to build and srpm commands
Adds a mock configuration option to build and srpm commands for use together with the srpm mock option, just like in the mockbuild command. Adds arguments separator for mock rpm shell in load_nameverrel_mock to ensure rpm args go to rpm and not mock.
Accept auto-generated sources in pre-push-check
The patch-git tool creates source files during spec file parsing.
<https://gitlab.com/redhat/centos-stream/rpms/glibc/-/blob/c10s/patch-git.lua>
With this change, the pre-push-check recognizes the “auto-generated-/” source file prefix, so that patch-git can use it to bypass the check. (The rpmbuild tool ignores directory names.)
sources: set “Accept-Encoding: identity” header on HTTP requests
Setting this header is always correct, even though it is not always necessary. But it is necessary sometimes to prevent servers from sending gz-compressed files in a way that causes them to get decompressed on-the-fly on download (i.e. “Content-Encoding: gz”).
see also fedora_infrastructure_issue
install: add rpmbuild arguments --with and --without
Adds two new flags:
–with <bcond>: Appends a build condition
–without <bcond>: Removes or disables a build condition
similar to what the local command has.
Resolves: #541
srpm: man page generation fixed
Usage wasn’t generated properly for this command. The usage was overridden with fixed text instead of automatic generation.
Relates: #751
pre-push-check: bogus error – file wasn’t listed
Pre-push-check falsely marked a file as not listed in the specfile because the patch was named ./0001-some-fix.patch (rarely seen in the specfile). Normalization now removes the ./ prefix.
Fixes: #747
Switch to %pyproject_* macros
Drops setuptools support and performs cleanup. Only Python 3.6 and older environments still rely on setuptools, so it is not completely removed yet. Adds Python 3.14 classifiers and test environment.
Use the spec name to assemble src.rpm name
Uses the spec file name (without .spec) instead of repository directory name to generate the source rpm name. Improves correctness when repo name differs from spec name. Several optimizations were added: when assembling nvr, name/version/release are not re-evaluated and a precomputed method is used.
srpm: --offline arg to prevent connecting to Koji
Koji is queried for stored macros and correct target release. For branches where this is not needed, users may now pass –offline to avoid Koji access (for example when Koji is unresponsive). Applies to srpm and sources.
Fixes: #600
mockbuild won’t show incorrect --target hint
When build target is not found, previous hint suggested –target which is not supported for mockbuild. Corrected to suggest –release instead.
Other small fixes
Fix specfile_path in mockbuild –srpm-mock
patch: Execute subprocess in text mode - prevents fedpkg patch <suffix> from aborting with: “Could not execute patch: write() argument must be str, not bytes”.
mockbuild: -r alias argument as shortcut for –root.
Jenkinsfile: use local declaration instead of global
Fix unittests for Python 3.14 - Missing library for building all required dependencies.
Change Logs
Only update the progress bar when meaningfully changed (code@musicinmybrain.net)
Don’t set up upload progress when stdout isn’t a tty (code@musicinmybrain.net)
Fix unittests for Python 3.14 (onosek)
sources: set “Accept-Encoding: identity” header (decathorpe@gmail.com)
Accept auto-generated sources in pre-push checks (fweimer)
Add mock configuration option to build and srpm commands (abobrov)
srpm: man page generation fixed (onosek)
install: add rpmbuild arguments –with and –without – #541 (gleiro)
type: fix typo in requirements README (gleiro)
patch: Execute subprocess in text mode (ferdnyc@gmail.com)
Fix mockbuild –srpm-mock specfile_path (wngtk@outlook.com)
pre-push-check: bogus error – file wasn’t listed – #747 (onosek)
Switch to %pyproject_* macros (onosek)
Use the spec name to assemble src.rpm name (sergio@serjux.com)
Jenkinsfile: use local declaration instead of global (onosek)
srpm: –offline arg to prevent connecting to Koji – #600 (onosek)
mockbuild: -r argument as shortcut of –root (sergio@serjux.com)
rhpkg mockbuild won’t show incorrect hint (onosek)