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_pythoneverywhere.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-stagesrequirements file to use Tox 4.x.
Additions
All: added support for Ubuntu 24.04 (
Noble Numbat)Documentation: added
publyncconfiguration to thepyproject.tomlfile.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
vetoxversion 0.1.3.
Rust:
Using the
clap_deriveandserde_derivecrates instead of features for the respectiveclapandserdeonesMinor 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/unstableanyway.Also run the Tox tests with Python 3.12.
Added an expression and a shell helper to run
vetoxwith 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
requiresspecification fortest-stages: recent versions of thetox-stagestool 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
builderattribute 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_versionparameter 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.repoas a public struct member.
Other changes
Python:
Dropped the
cfg-diagdependency for thesp_build_repoandtest_dockerutilities, using Python’slogginglibrary 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.inifile to the Tox 4.x format:Added backslashes for line continuation in multi-line variables.
Added a
minversionspecification and set it to 4.1.Added a
requiresspecification and listtest-stagesso 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
Clippytool from Rust 1.72:Note the
Clippyversion in a code comment in therun-clippy.shfile.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
almalinuxinstead ofalmain theIDfield of theos-releasefile.Catching up with the renaming of the
powertoolsrepository toCodeReadyBuilderin 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_stderrweirdness.Using MyPy 1.5 in the test suite: overridden an “arguments too generic” check for a
NamedTupleinitialization.
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
Architecturesline from the Debian sources list file so thatadd-storpool-repocan also be used on arm64 hosts.Marked Debian 9.x (stretch) as no longer supported.
Dropped the
mcelogpackage 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-toolsandpython2-simplejsonpackages in CentOS 9.x.Added a 0644 default to the
--modeargument 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
Copyfor some structs and enums.Derived
PartialEqandEqfor most structs.Allowed the Makefile Rust build infrastructure to not pass the
--offlineoption to Cargo if theNO_CARGO_OFFLINEenvironment variable is set.Running the Cargo tests in the Makefile
testtarget.
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
setuptoolstohatchlingfor the PEP 517 build.Using Ruff 0.0.277 in the test suite:
Overridden some checks related to the use of the
subprocesslibrary.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
isortimplementation to format the source files and renamed theblackandblack-reformatTox testing environments toformatandreformatrespectively.Hidden some imports behind
TYPE_CHECKINGchecks.Using
ClassVaras needed for singleton data holder classes.Narrowed down the “run Ruff” stage specification in the
test-stagesdefinition.Dropped the
flake8andpylintTox test environments, relying on Ruff.Using
click.Pathinsp_build_repoandtest_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
setuptoolsmetadata.Breaking out the Tox environments’ dependencies into separate files so that they may be reused by external tools.
test_docker: allowed multiple-i imagepatternoptions 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
setuptoolsmetadata to thepyproject.tomlfile.Tested with ruff 0.0.256, dropped a couple of overrides for false positives emitted by earlier versions of Ruff.
Invoked the
tox-stagestool 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-dataclassesdependency for themypyTox test environment;dataclassesare included with Python 3.8.Cleaned up some more Python-related files in the
cleanMakefile 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-8locale for CentOS 7.x and the related variants; we should really specify a UTF-8-capable locale, anden_US.UTF-8is installed by default on most minimal container setups.Using the
C.UTF-8locale for CentOS 8.x/9.x and the related variants; this is the preferred POSIX name of the locale,C.utf8is merely an implementation detail.Using the
appstreamDNF/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
_fieldsmember 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.pyfile as executable.
Additions
Added the
supportedvariant 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
supportedmember.
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-stagesutility instead of thetox-delayone.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
flake86.x with no changes.Using
pylint2.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, andthiserrordependencies to sync them with the StorPoolsp-rust-crates-iopackage.Letting
clippyknow that we do mean to request a blanketclippy::restrictionset of checks.
test-docker: tested the
builder.utf8_localesetting
3.0.0 - 2022-11-09
Incompatible changes
All: Yum/DNF: when installing packages (both via the
package.installandpkgfile.installcommands), disable all the configured repositories, only enable some base system ones and the StorPool ones.Python: dropped Python 2.6 support, using
dictcomprehensions.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.lockfile under version control.
Other changes
All:
Allowing repository definitions to be built using a different
storpool_variantinterpretation, mostly for testing the correctness of the Rust one.Use the simpler container names for AlmaLinux and Rocky Linux.
Python:
Using the
cfg-diag0.4Configclass API.Declared Python 3.10 and 3.11 as supported versions.
Dropped the Rust and POSIX shell implementations from the
sdisttarball.sp_variant: now thatsp_build_repoandtest_dockeruse theclicklibrary, dropped thebase_parser()method.sp_build_repo:Marked the
-roption as required, renamed its long form to--runtime.Overridden a “duplicate code” warning from
pylint.Using the
typedloadlibrary for validating and loading configuration data.Using the
clicklibrary 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
clicklibrary for command-line argument parsing.Running
docker swapfor the CentOS 8 container to switch to the CentOS Stream repositories; maybe we need to start using thequay.iocontainers instead.
Test suite:
Specified version constraints for the library dependencies.
Using
pytest.mark.parametrize()instead of theddtlibrary.Dropped the Python 2.x
mypyand theflake8` + ``hackingtest environments, they do not provide much value nowadays.Dropped the outdated
pytest.pyityping stub.Moved the configuration for the check tools out of the
tox.inifile, mostly intopyproject.toml, but stillsetup.cfgforflake8.
Rust:
Minor refactoring following some suggestions from
clippy.Overridden several
clippylints, mostly for good reasons.Using the
claplibrary for command-line parsing.Using the
thiserrorlibrary instead of thequick-errorone, it is cleaner.Using the
once_celllibrary instead of thelazy_staticone.Using the
anyhowlibrary instead ofexpect-exitin 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_querycommand.Completed the exiting-on-errors fix: two missed invocations.
Minor changes to implement some shellcheck suggestions.
Added a shellcheck test unless
NO_SHELLCHECKis 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_variantcrate 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
Clippylints.
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_variantmay 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
mypyversion used for the test suite to 0.920.Rust: Code clean-up:
Dropped an unused internal
urlfield.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_allcommand 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-certificatespackage 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_variantandsp_build_repotools.build-repo: using
trivverto sortDEBIAN9beforeDEBIAN10.test-docker: running
apt-get updateif necessary.
Additions
All: added a
descrfield to the variant containing a brief human-readable name/description.sh: installing ourselves as
/usr/sbin/sp_variantinrepo addso that other programs may use this helper.Rust: using the new
Variant.descrfield in the documentation.
Other changes
Rust:
Auto-generating the
VariantKindenum.Making the
sp_variant::datamodule private.Created the variants’ data structure directly, do not decode a JSON document.
test-docker:
Added the
-ioption to limit the images to run on.Showing the containers’ output continually.
1.3.0 - 2021-09-15
Started. First public release.