From dfff908414d0723e47808f41888cb682d9e3709a Mon Sep 17 00:00:00 2001 From: Ondřej Nosek Date: Nov 24 2025 03:21:38 +0000 Subject: 1.69 Release Signed-off-by: Ondřej Nosek --- diff --git a/doc/source/conf.py b/doc/source/conf.py index e7637be..93d56fc 100644 --- a/doc/source/conf.py +++ b/doc/source/conf.py @@ -59,9 +59,9 @@ author = u'rpkg team' # built documents. # # The short X.Y version. -version = u'1.68' +version = u'1.69' # The full version, including alpha/beta/rc tags. -release = u'1.68' +release = u'1.69' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. diff --git a/doc/source/releases.rst b/doc/source/releases.rst index 3fa06cf..dfcb1e3 100644 --- a/doc/source/releases.rst +++ b/doc/source/releases.rst @@ -6,6 +6,7 @@ Releases .. toctree:: :maxdepth: 1 + releases/1.69 releases/1.68 releases/1.67 releases/1.66 diff --git a/doc/source/releases/1.69.rst b/doc/source/releases/1.69.rst new file mode 100644 index 0000000..43e5699 --- /dev/null +++ b/doc/source/releases/1.69.rst @@ -0,0 +1,120 @@ +.. _release-notes-1.69: + +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. + + + +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`_ + +.. _`fedora_infrastructure_issue`: https://pagure.io/fedora-infrastructure/issue/12812 + +``install``: add rpmbuild arguments ``--with`` and ``--without`` +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Adds two new flags: + +* `--with `: Appends a build condition +* `--without `: 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`_ + +.. _`#751`: https://pagure.io/rpkg/pull-request/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 ` 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) + +.. _`#541`: https://pagure.io/fedpkg/issue/541 +.. _`#600`: https://pagure.io/fedpkg/issue/600 +.. _`#747`: https://pagure.io/rpkg/issue/747 diff --git a/pyproject.toml b/pyproject.toml index 1e85f7d..255a7bc 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -5,7 +5,7 @@ build-backend = "hatchling.build" [project] name = "rpkg" dynamic = ["license"] -version = "1.68" +version = "1.69" description = "A python library and runtime script for managing RPMpackage sources in a git repository" readme = "README.rst" authors = [ @@ -18,7 +18,7 @@ classifiers = [ "License :: OSI Approved :: GNU General Public License v2 or later (GPLv2+)", "Natural Language :: English", "Operating System :: POSIX :: Linux", - "Programming Language :: Python :: 2 :: Only", + "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.6", diff --git a/pyrpkg/__init__.py b/pyrpkg/__init__.py index ee74fdc..57b273d 100644 --- a/pyrpkg/__init__.py +++ b/pyrpkg/__init__.py @@ -2772,7 +2772,7 @@ class Commands(object): Logs the output and returns nothing :param list installargs: Modifiers for rpmbuild defaults (similar to - 'extra_args' but derived from different command-line parsing). + 'extra_args' but derived from different command-line parsing). :param str arch: specify a specific arch. :param list define: specify a list of rpmbuild macros. :param bool short: short-circuit it. @@ -2910,7 +2910,7 @@ class Commands(object): `.build-{version}-{release}.log`. :param list localargs: Modifiers for rpmbuild defaults (similar to - 'extra_args' but derived from different command-line parsing). + 'extra_args' but derived from different command-line parsing). :param str arch: to optionally build for a specific arch. :param list define: optional list of rpmbuild macros. :param str hashtype: an alternative algorithm used for payload file diff --git a/setup.py b/setup.py index 65c71d1..6d68657 100755 --- a/setup.py +++ b/setup.py @@ -35,7 +35,7 @@ with open(readme_rst, 'r') as readme: setup( name="rpkg", - version="1.68", + version="1.69", author="Dennis Gilmore", author_email="ausil@fedoraproject.org", description=("A python library and runtime script for managing RPM" @@ -53,7 +53,7 @@ setup( 'Natural Language :: English', 'License :: OSI Approved :: GNU General Public License v2 or later (GPLv2+)', 'Operating System :: POSIX :: Linux', - 'Programming Language :: Python :: 2 :: Only', + 'Programming Language :: Python :: 2', 'Programming Language :: Python :: 2.7', 'Programming Language :: Python :: 3', 'Programming Language :: Python :: 3.6',