Release notes
The formatting of the information in this document is based on Keep a Changelog. The project adheres to Semantic Versioning.
3.5.4 - 2025-03-25
Removed expiration from GPG repo key signatures. Keys are unchanged, and previously issued signatures are still valid.
3.5.3 - 2025-02-06
Added support for Oracle 9.
3.5.2 - 2024-06-03
Fixed Oracle 8 support.
3.5.1 - 2024-05-28
Added support for Oracle 8.
3.5.0 - 2024-04-03
Semi-incompatible changes
Using Python 3.x as
min_sys_python
everywhere.Dropped the definitions for CentOS 6, Debian 9, Ubuntu 16.04, and Ubuntu 23.04; they will no longer even be recognized.
Fixes
Marked Debian 10 as unsupported.
Documentation: corrected the changelog link for version 3.4.2.
Python:
Library: Re-sort the
sp_variant.variant.__all__
list.Test suite:
Do not expect Debian 9 and CentOS 6 to be present in the variant data.
Updated the
test-stages
requirements file to use Tox 4.x.
Additions
All: added support for Ubuntu 24.04 (
Noble Numbat
)Documentation: added
publync
configuration to thepyproject.toml
file.Python: tentatively declare Python 3.13 as supported.
Other changes
Documentation: using mkdocstrings
0.24 with no changes.
Python test suite:
Run the unit tests with pytest 6, 7, and 8, separately.
Test with Ruff 0.3.4:
Simplified the Ruff configuration files layout.
Overridden some more checks.
Pushed the linter configuration into the
lint.*
TOML hierarchy.Using the concise output format even in preview mode.
Let Ruff insist on trailing commas.
Added the “docs” environment to the second Tox stage.
Vendor-import
vetox
version 0.1.3.
Rust:
Using the
clap_derive
andserde_derive
crates instead of features for the respectiveclap
andserde
onesMinor fixes and improvements suggested by
Clippy
.
Nix:
Removed an explanation for not running the Tox tests with Python 3.8; it was dropped from
nixpkgs/unstable
anyway.Also run the Tox tests with Python 3.12.
Added an expression and a shell helper to run
vetox
with Python 3.9 through 3.13.
3.4.2 - 2023-12-19
Python:
Using Ruff 0.1.8 for testing with no changes.
Using Ruff instead of Black for source code formatting.
Dropped the Tox
requires
specification fortest-stages
: recent versions of thetox-stages
tool auto-detect the need for that.Consistently pass
--
before positional arguments in commands invoked by Tox.Moved the “reuse” test to the first Tox stage.
Rust: refreshed the Cargo.lock
file.
3.4.1 - 2023-10-18
Fixes:
All: removed the duplicate builder definition for
centos/9
; switching to CentOS Stream 9 means that the AlmaLinux 9 one must be dropped.Docs: using a more descriptive heading for the Python API reference.
Python:
Added some unit tests for the
builder
attribute of the variants data.Using Ruff 0.1.0 for testing, with minor adaptations of the configuration.
Synced some doc strings with the ones used in the Rust implementation.
Added some more doc strings.
3.4.0 - 2023-10-03
Additions: added CentOS Stream 9 as an unsupported distribution.
Rust: specified the features of the nix
crate that we use (fs
and user
).
3.3.0 - 2023-10-02
Fixes
Python: do not pass the
python_version
parameter tomypy
, we have other ways of testing with different Python versions.Rust: - output a newline character in
storpool_variant show all
.
Additions
Added a Nix expression for running the Python Tox tests.
Added a Nix expression for building the Rust implementation.
Python: added 3.12 to the list of supported Python versions.
Rust: exposing
Variant.supported.repo
as a public struct member.
Other changes
Python:
Dropped the
cfg-diag
dependency for thesp_build_repo
andtest_docker
utilities, using Python’slogging
library directly.Also run the “format” environment in the first Tox stage.
Use reuse 2.x for testing with no changes.
Bumped the black version dependency to 23.7 for “py312” support.
Converted the
tox.ini
file to the Tox 4.x format:Added backslashes for line continuation in multi-line variables.
Added a
minversion
specification and set it to 4.1.Added a
requires
specification and listtest-stages
so that it may be installed within the bootstrapped Tox environment to make it possible to be run from the outside.
Rust:
Bumped MSRV to 1.64 to un-break the compilation now that we may pull clap >= 4.3 in as a dependency.
Using the
Clippy
tool from Rust 1.72:Note the
Clippy
version in a code comment in therun-clippy.sh
file.Allowing the use of raw strings for the detection regular expressions, those are almost free-form and they may contain special characters.
Renamed a single-character variable to a more descriptive name.
Allowing single-call functions, we break some of those out for clarity.
3.2.3 - 2023-08-24
Data fixes:
Looking for
almalinux
instead ofalma
in theID
field of theos-release
file.Catching up with the renaming of the
powertools
repository toCodeReadyBuilder
in AlmaLinux 9.x and the like.
Python:
Using Ruff 0.0.285 in the test suite: overridden a warning related to the
Config.diag_to_stderr
weirdness.Using MyPy 1.5 in the test suite: overridden an “arguments too generic” check for a
NamedTuple
initialization.
Rust: letting Clippy
know that we do use the ref
keyword.
3.2.2 - 2023-07-06
Documentation:
Fixed the 3.2.1 GitHub commit log URL.
Added a navigational bar-like list of URLs at the top of the index page.
Using a link reference for the StorPool support team e-mail address.
Python: added the repo.storpool.com
URL as the project homepage, keeping the GitHub one as “Source Code”.
3.2.1 - 2023-07-06
Python: dropped the unneeded hatch-requirements-txt PEP 517 build dependency
3.2.0 - 2023-07-06
Fixes
Data:
Dropped the
Architectures
line from the Debian sources list file so thatadd-storpool-repo
can also be used on arm64 hosts.Marked Debian 9.x (stretch) as no longer supported.
Dropped the
mcelog
package definition for Debian, it was only ever present in the unsupported Debian 9.x and Ubuntu 16.04.Referred to the OpenSSL 3.x package for Debian unstable and Ubuntu 22.04.
Reflected the removal of the
libcgroup-tools
andpython2-simplejson
packages in CentOS 9.x.Added a 0644 default to the
--mode
argument ofsp_build_repo.subst
.
Python: added a no-op _diag_to_stderr
property setter to avoid mypy
errors on (wrong, deprecated) attempts to set that field.
Those attempts are ignored anyway since the changes in version 3.1.2, but letting mypy
know that they are still not completely forbidden.
Additions
Data:
Added Debian 12.x (
bookworm
), marked Debian unstable as Debian 13.x (trixie
).Added Ubuntu 23.04 (Lunar Lobster) as an unsupported variant.
Docs: added a raw Python API reference.
Python: installing the OS packages defined for each variant during the Docker test.
Rust:
Added the
get_all_variants()
andget_all_variants_in_order()
functions that return all known StorPool build variants.Derived
Copy
for some structs and enums.Derived
PartialEq
andEq
for most structs.Allowed the Makefile Rust build infrastructure to not pass the
--offline
option to Cargo if theNO_CARGO_OFFLINE
environment variable is set.Running the Cargo tests in the Makefile
test
target.
Other changes
Data: dropped the definitions for the temporary, intermediate, non-LTS Ubuntu 21.10 version.
Docs: pointed to version 1.1.0 of the “Keep a Changelog” specification.
Python:
Switched from
setuptools
tohatchling
for the PEP 517 build.Using Ruff 0.0.277 in the test suite:
Overridden some checks related to the use of the
subprocess
library.Overridden a “too many parameters” check for the click-decorated main function of
sp_build_repo
.Globally disabled the “performance penalty for try/except in loops” check. We want our exceptions to provide as much context as possible, including the values of the loop variables.
Pinned the Ruff version to avoid failures due to newly-added future checks.
Using Ruff’s
isort
implementation to format the source files and renamed theblack
andblack-reformat
Tox testing environments toformat
andreformat
respectively.Hidden some imports behind
TYPE_CHECKING
checks.Using
ClassVar
as needed for singleton data holder classes.Narrowed down the “run Ruff” stage specification in the
test-stages
definition.Dropped the
flake8
andpylint
Tox test environments, relying on Ruff.Using
click.Path
insp_build_repo
andtest_docker
.
Rust: imported the VariantError
struct directly in the test suite.
3.1.2 - 2023-03-17
Semi-incompatible changes
Python: deprecated the defs.Config._diag_to_stderr
member variable; replaced it with a read-only property that always returns true and a __setattr__()
override that detects and ignores attempts to modify it.
Both will be removed in a future version of sp-variant.
Additions
Python:
Added some more PyPI trove classifiers to the
setuptools
metadata.Breaking out the Tox environments’ dependencies into separate files so that they may be reused by external tools.
test_docker
: allowed multiple-i imagepattern
options to be specified so that several unrelated Docker images may be tested in a single run.
Started some MkDocs-based documentation with a copy of the README file and the changelog moved there.
Other changes
Python:
Moved the
setuptools
metadata to thepyproject.toml
file.Tested with ruff 0.0.256, dropped a couple of overrides for false positives emitted by earlier versions of Ruff.
Invoked the
tox-stages
tool from the directory where the Python 3.x interpreter lives, so that it is virtually certain thattox-stages
(and consequently Tox) will use the same Python interpreter.Dropped the
types-dataclasses
dependency for themypy
Tox test environment;dataclasses
are included with Python 3.8.Cleaned up some more Python-related files in the
clean
Makefile target.
3.1.1 - 2023-02-28
Python
Fix: do not build a universal wheel.
Tested with ruff 0.0.253 with no changes.
3.1.0 - 2023-02-28
Semi-incompatible changes
Python:
Dropped Python 2.x compatibility.
Dropped Python 3.6 and 3.7 compatibility; 3.8 and 3.9 will probably also be dropped in an upcoming release.
Rust: use named arguments for format!(), println!(), etc, and declare a minimum Rust supported version of 1.58.
Fixes
Using the
en_US.UTF-8
locale for CentOS 7.x and the related variants; we should really specify a UTF-8-capable locale, anden_US.UTF-8
is installed by default on most minimal container setups.Using the
C.UTF-8
locale for CentOS 8.x/9.x and the related variants; this is the preferred POSIX name of the locale,C.utf8
is merely an implementation detail.Using the
appstream
DNF/Yum repository for CentOS 8.x/9.x and the related variants; it should be enabled by default at this point in time, and some of the software that the various StorPool packages need has moved there.Python:
Fixed the way the
_fields
member of various named tuples is accessed.Fixed the format of several module and function docstrings.
sp_build_repo
: obtained the current date in a better timezone-aware way.Marked the
setup.py
file as executable.
Additions
Added the
supported
variant member with a single boolean field,repo
, that declares whether StorPool provides a third-party OS packages repository for that variant.Bumped the variant description format version to 1.4 for the added
supported
member.
Other changes
Using the “Keep a Changelog” format for the changelog file.
Python:
Using the StorPool Python 2.x interpreter for the Tox tests.
Using the
tox-stages
utility instead of thetox-delay
one.Dropped the Python 2.x, 3.6, and 3.7 compatibility, use some Python 3.x language features and modules that are in the standard library now.
Using black 23.x and
flake8
6.x with no changes.Using
pylint
2.16.x, fixed some of the issues it reported.Started using ruff, fixed some of the issues it reported.
Rust:
Bumped the minor versions of the
anyhow
,once_cell
, andthiserror
dependencies to sync them with the StorPoolsp-rust-crates-io
package.Letting
clippy
know that we do mean to request a blanketclippy::restriction
set of checks.
test-docker: tested the
builder.utf8_locale
setting
3.0.0 - 2022-11-09
Incompatible changes
All: Yum/DNF: when installing packages (both via the
package.install
andpkgfile.install
commands), disable all the configured repositories, only enable some base system ones and the StorPool ones.Python: dropped Python 2.6 support, using
dict
comprehensions.Rust: all the functions now return our own error enum instead of
Box<dyn error::Error>
.
Fixes
All:
Correctly treat Linux Mint 21.x as a Ubuntu 22.04 equivalent.
Making AlmaLinux the principal RPM-based distribution instead of CentOS.
Python: sp_build_repo
: correctly using the name
and slug
fields when generating the repository definitions files.
Additions
All: added some initial support for AlmaLinux 9 and Rocky Linux 9.
Python:
sp_build_repo
: allowed repository URLs to be overridden using a TOML configuration file; provided a sample asexamples/build-repo-overrides.toml
.Rust:
Using a separate tool,
run-clippy.sh
, to invokeclippy
; removed the#![warn(...)]
directives from the individual source files.Keeping the
Cargo.lock
file under version control.
Other changes
All:
Allowing repository definitions to be built using a different
storpool_variant
interpretation, mostly for testing the correctness of the Rust one.Use the simpler container names for AlmaLinux and Rocky Linux.
Python:
Using the
cfg-diag
0.4Config
class API.Declared Python 3.10 and 3.11 as supported versions.
Dropped the Rust and POSIX shell implementations from the
sdist
tarball.sp_variant
: now thatsp_build_repo
andtest_docker
use theclick
library, dropped thebase_parser()
method.sp_build_repo
:Marked the
-r
option as required, renamed its long form to--runtime
.Overridden a “duplicate code” warning from
pylint
.Using the
typedload
library for validating and loading configuration data.Using the
click
library for command-line argument parsing.Using f-strings.
Using the Text type instead of str; long overdue.
test_docker
:Installing the StorPool Python packages to make sure the repository is indeed accessible and configured correctly.
Only using
asyncio.run()
for the parts that need to run asynchronously (e.g. not for command-line parsing or trivial queries).Using the
click
library for command-line argument parsing.Running
docker swap
for the CentOS 8 container to switch to the CentOS Stream repositories; maybe we need to start using thequay.io
containers instead.
Test suite:
Specified version constraints for the library dependencies.
Using
pytest.mark.parametrize()
instead of theddt
library.Dropped the Python 2.x
mypy
and theflake8` + ``hacking
test environments, they do not provide much value nowadays.Dropped the outdated
pytest.pyi
typing stub.Moved the configuration for the check tools out of the
tox.ini
file, mostly intopyproject.toml
, but stillsetup.cfg
forflake8
.
Rust:
Minor refactoring following some suggestions from
clippy
.Overridden several
clippy
lints, mostly for good reasons.Using the
clap
library for command-line parsing.Using the
thiserror
library instead of thequick-error
one, it is cleaner.Using the
once_cell
library instead of thelazy_static
one.Using the
anyhow
library instead ofexpect-exit
in the command-line tool.
2.3.3 - 2022-04-28
All: making the quoting style in the Debian/Ubuntu pkgfile.dep_query
command consistent with that of the others.
sh updates:
Fixed the quoting for the Debian/Ubuntu
pkgfile.dep_query
command.Completed the exiting-on-errors fix: two missed invocations.
Minor changes to implement some shellcheck suggestions.
Added a shellcheck test unless
NO_SHELLCHECK
is specified.
2.3.2 - 2022-04-27
sh: Fixed exiting on errors in some situations; local variable declarations and error-checked assignments do not mix.
2.3.1 - 2022-04-27
sh: Fixed matching the VERSION_ID
variable in the /etc/os-release
file: using a POSIX extended regular expression with grep -E
, not a Perl-compatible one!
2.3.0 - 2022-04-26
Incompatible changes
Rust:
The structs and enums exported by the
sp_variant
crate are now marked as non-exhaustive.Some functions are now marked as “must use”.
Other changes
Python:
Now that there is a working POSIX shell implementation that is better suited for bootstrapping, splitting the Python library into several modules.
Always requiring the “typing” module to be installed.
Rust:
Imported struct names directory for a more idiomatic Rust style.
Many small improvements, mostly suggested by
Clippy
lints.
2.2.0 - 2022-02-05
Fixes
Python: fix two bugs in the list_all_packages() convenience function:
Do not modify the variant structure’s command list in place!
Correctly recognize installed packages on Debian/Ubuntu systems.
Other changes
All: recognizing Ubuntu 22.04 (Jammy Jellyfish
).
Python:
Reformatting with 100 characters per line.
Making the
ArgumentParser
-related type annotations a bit more precise to pass some checks in recent versions ofmypy
.
Rust: changed the dependency on nix to a >= relation, hoping they do not break backwards compatibility.
2.1.1 - 2021-12-18
Fixes
All: making sure all the implementations output the same thing for
command run package.list_all
.Rust: fixed a command.run bug: do not output the command to run, the tools that invoke
storpool_variant
may use its output!
Other changes
All: added two-clause BSD licenses to all the source files.
Python: dropped a “type: ignore” comment and bumped the
mypy
version used for the test suite to 0.920.Rust: Code clean-up:
Dropped an unused internal
url
field.Simplified a double match.
Using
.find_map()
instead of re-implementing it.Streamlined
yai::parse()
.
2.1.0 - 2021-11-15
All: on RedHat-derived distributions, the
package.list_all
command now displays the full epoch:version-release (EVR
) string instead of only the version component.All: added support for Ubuntu 21.10 (
Impish Indri
).
2.0.0 - 2021-10-24
Incompatible changes
Rust: changed the return type of get_program_version()
and get_program_version_from()
from String
to &str
.
Fixes
All: installed (or updated as necessary) the
ca-certificates
package on RedHat-derived distributions, too, to take care of the Let’s Encrypt certificate expiration debacle.Python: fixed the program name in the usage message of the
sp_variant
andsp_build_repo
tools.build-repo: using
trivver
to sortDEBIAN9
beforeDEBIAN10
.test-docker: running
apt-get update
if necessary.
Additions
All: added a
descr
field to the variant containing a brief human-readable name/description.sh: installing ourselves as
/usr/sbin/sp_variant
inrepo add
so that other programs may use this helper.Rust: using the new
Variant.descr
field in the documentation.
Other changes
Rust:
Auto-generating the
VariantKind
enum.Making the
sp_variant::data
module private.Created the variants’ data structure directly, do not decode a JSON document.
test-docker:
Added the
-i
option to limit the images to run on.Showing the containers’ output continually.
1.3.0 - 2021-09-15
Started. First public release.