Changelog
All notable changes to the sp-variant project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
Unreleased
Semi-incompatible changes
- use Python 3.x as
min_sys_pythoneverywhere - drop the definitions for CentOS 6, Debian 9, and Ubuntu 16.04; they will no longer even be recognized
Fixes
- mark Debian 10 and Ubuntu 23.04 as unsupported
- documentation:
- correct the changelog link for version 3.4.2
- python:
- library:
- re-sort the
sp_variant.variant.__all__list
- re-sort the
- test suite:
- do not expect Debian 9 and CentOS 6 to be present in the variant data
- update the
test-stagesrequirements file to use Tox 4.x
- library:
Additions
- documentation:
- add
publyncconfiguration to thepyproject.tomlfile
- add
- python:
- tentatively declare Python 3.13 as supported
Other changes
- documentation:
- use
mkdocstrings0.24 with no changes
- use
- python:
- test suite:
- run the unit tests with pytest 6, 7, and 8, separately
- test with Ruff 0.3.3:
- simplify the Ruff configuration files layout
- override some more checks
- push the linter configuration into the
lint.*TOML hierarchy - use the concise output format even in preview mode
- let Ruff insist on trailing commas
- add the "docs" environment to the second Tox stage
- vendor-import
vetoxversion 0.1.3
- test suite:
- rust:
- use the
clap_deriveandserde_derivecrates instead of features for the respectiveclapandserdeones
- use the
- nix:
- remove 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
- add an expression and a shell helper to run
vetoxwith Python 3.9 through 3.13
3.4.2 - 2023-12-19
Other changes
- python:
- use Ruff 0.1.8 for testing with no changes
- use Ruff instead of Black for source code formatting
- drop the Tox
requiresspecification fortest-stages: recent versions of thetox-stagestool autodetect the need for that - consistently pass
--before positional arguments in commands invoked by Tox - move the "reuse" test to the first Tox stage
- rust:
- refresh the
Cargo.lockfile
- refresh the
3.4.1 - 2023-10-18
Fixes
- all:
- remove the duplicate builder definition for
centos/9; switching to CentOS Stream 9 means that the AlmaLinux 9 one must be dropped
- remove the duplicate builder definition for
- docs:
- use a more descriptive heading for the Python API reference
Additions
- python:
- add some unit tests for the
builderattribute of the variants data - use Ruff 0.1.0 for testing with minor adaptations of the configuration
- sync some docstrings with the ones used in the Rust implementation
- add some more docstrings
- add some unit tests for the
3.4.0 - 2023-10-03
Additions
- all:
- add CentOS Stream 9 as an unsupported distribution
Other changes
- rust:
- specify the features of the
nixcrate that we use ("fs" and "user")
- specify the features of the
3.3.0 - 2023-10-02
Fixes
- python:
- do not pass the
python_versionparameter to mypy, we have other ways of testing with different Python versions
- do not pass the
- rust:
- output a newline character in
storpool_variant show all
- output a newline character in
Additions
- add a Nix expression for running the Python Tox tests
- add a Nix expression for building the Rust implementation
- python:
- add 3.12 to the list of supported Python versions
- rust:
- expose
Variant.supported.repoas a public struct member
- expose
Other changes
- python:
- drop the
cfg-diagdependency for thesp_build_repoandtest_dockerutilities, use Python'slogginglibrary directly - also run the "format" environment in the first Tox stage
- use reuse 2.x for testing with no changes
- bump the black version dependency to 23.7 for "py312" support
- convert the
tox.inifile to the Tox 4.x format:- add backslashes for line continuation in multiline variables
- add a
minversionspecification and set it to 4.1 - add 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
- drop the
- rust:
- bump MSRV to 1.64 to unbreak the compilation now that we may pull clap >= 4.3 in as a dependency
- use the clippy tool from Rust 1.72:
- note the clippy version in a code comment in the
run-clippy.shfile - allow the use of raw strings for the detection regular expressions, those are almost free-form and they may contain special characters
- rename a single-character variable to a more descriptive name
- allow single-call functions, we break some of those out for clarity
- note the clippy version in a code comment in the
3.2.3 - 2023-08-24
Fixes
- data:
- look for "almalinux" instead of "alma" in the
IDfield of theos-releasefile - catch up with the renaming of the powertools repository to CodeReadyBuilder in AlmaLinux 9.x and the like
- look for "almalinux" instead of "alma" in the
Other changes
- python:
- use Ruff 0.0.285 in the test suite:
- override a warning related to the
Config.diag_to_stderrweirdness
- override a warning related to the
- use MyPy 1.5 in the test suite:
- override an "arguments too generic" check for a
NamedTupleinitialization
- override an "arguments too generic" check for a
- use Ruff 0.0.285 in the test suite:
- rust:
- let clippy know that we do use the
refkeyword
- let clippy know that we do use the
3.2.2 - 2023-07-06
Fixes
- docs:
- fix the 3.2.1 GitHub commit log URL
Additions
- docs:
- add a navigational bar-like list of URLs at the top of the index page
- use a link reference for the StorPool support team e-mail address
- python:
- add the repo.storpool.com URL as the project homepage, keep the GitHub one as "Source Code"
3.2.1 - 2023-07-06
Fixes
- python:
- drop the unneeded
hatch-requirements-txtPEP 517 build dependency
- drop the unneeded
3.2.0 - 2023-07-06
Fixes
- data:
- drop the
Architecturesline from the Debian sources list file so thatadd-storpool-repocan also be used on arm64 hosts - mark Debian 9.x (stretch) as no longer supported
- drop the
mcelogpackage definition for Debian, it was only ever present in the unsupported Debian 9.x and Ubuntu 16.04 - refer to the OpenSSL 3.x package for Debian unstable and Ubuntu 22.04
- reflect the removal of the
libcgroup-toolsandpython2-simplejsonpackages in CentOS 9.x - add a 0644 default to the
--modeargument ofsp_build_repo.subst
- drop the
- python:
- add a no-op
_diag_to_stderrproperty 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 let mypy know that they are still not completely forbidden.
- add a no-op
Additions
- data:
- add Debian 12.x (bookworm), mark Debian unstable as Debian 13.x (trixie)
- add Ubuntu 23.04 (Lunar Lobster) as an unsupported variant
- docs:
- add a raw Python API reference
- python:
- install the OS packages defined for each variant during the Docker test
- rust:
- add the
get_all_variants()andget_all_variants_in_order()functions that return all known StorPool build variants - derive
Copyfor some structs and enums - derive
PartialEqandEqfor most structs - allow the Makefile Rust build infrastructure to not pass the
--offlineoption to Cargo if theNO_CARGO_OFFLINEenvironment variable is set - run the Cargo tests in the Makefile
testtarget
- add the
Other changes
- data:
- drop the definitions for the temporary, intermediate, non-LTS Ubuntu 21.10 version
- docs:
- point to version 1.1.0 of the "Keep a Changelog" specification
- python:
- switch from
setuptoolstohatchlingfor the PEP 517 build - use Ruff 0.0.277 in the test suite:
- override some checks related to the use of the
subprocesslibrary - override a "too many parameters" check for the click-decorated main
function of
sp_build_repo - globally disable 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
- override some checks related to the use of the
- pin the Ruff version to avoid failures due to newly-added future checks
- use Ruff's isort implementation to format the source files and
rename the
blackandblack-reformatTox testing environments toformatandreformatrespectively - hide some imports behind
TYPE_CHECKINGchecks - use
ClassVaras needed for singleton data holder classes - narrow down the "run Ruff" stage specification in the
test-stagesdefinition - drop the
flake8andpylintTox test environments, rely on Ruff - use
click.Pathinsp_build_repoandtest_docker
- switch from
- rust:
- import the
VariantErrorstruct directly in the test suite
- import the
3.1.2 - 2023-03-17
Semi-incompatible changes
- python:
- deprecate the
defs.Config._diag_to_stderrmember variable; replace 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.
- deprecate the
Additions
- python:
- add some more PyPI trove classifiers to the setuptools metadata
- break out the Tox environments' dependencies into separate files so that they may be reused by external tools
test_docker: allow multiple-i imagepatternoptions to be specified so that several unrelated Docker images may be tested in a single run
- Start some MkDocs-based documentation with a copy of the README file and the changelog moved there
Other changes
- python:
- move the setuptools metadata to the
pyproject.tomlfile - test with ruff 0.0.256, drop a couple of overrides for false positives emitted by earlier versions of Ruff
- invoke the
tox-stagestool from the directory where the Python 3.x interpreter lives, so that it is virtually certain thattox-stages(and consequenty Tox) will use the same Python interpreter - drop the
types-dataclassesdependency for themypyTox test environment; dataclasses are included with Python 3.8 - clean up some more Python-related files in the
cleanMakefile target
- move the setuptools metadata to the
3.1.1 - 2023-02-28
Fixes
- python:
- do not build a universal wheel
Other changes
- python:
- test with ruff 0.0.253 with no changes
3.1.0 - 2023-02-28
Semi-incompatible changes
- python:
- drop Python 2.x compatibility
- drop 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
- use named arguments for
Fixes
- use 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 - use 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 - use 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:
- fix the way the
_fieldsmember of various named tuples is accessed - fix the format of several module and function docstrings
sp_build_repo: obtain the current date in a better timezone-aware way- mark the
setup.pyfile as executable
- fix the way the
Additions
- all:
- add the
supportedvariant member with a single boolean field,repo, that declares whether StorPool provides a third-party OS packages repository for that variant - bump the variant description format version to 1.4 for the added
supportedmember
- add the
Other changes
- use the "Keep a Changelog" format for the changelog file
- python:
- use the StorPool Python 2.x interpreter for the Tox tests
- use the
tox-stagesutility instead of thetox-delayone - drop 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
- use black 23.x and flake8 6.x with no changes
- use pylint 2.16.x, fix some of the issues it reported
- start using ruff, fix some of the issues it reported
- rust:
- bump the minor versions of the
anyhow,once_cell, andthiserrordependencies to sync them with the StorPoolsp-rust-crates-iopackage - let clippy know that we do mean to request a blanket
clippy::restrictionset of checks
- bump the minor versions of the
- test-docker: test 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
- Yum/DNF: when installing packages (both via the
- python:
- drop Python 2.6 support, use dict comprehensions
- rust:
- all the functions now return our own error enum instead of
Box<dyn error::Error>
- all the functions now return our own error enum instead of
Fixes
- all:
- correctly treat Linux Mint 21.x as a Ubuntu 22.04 equivalent
- make AlmaLinux the principal RPM-based distribution instead of CentOS
- python:
sp_build_repo:- correctly use the
nameandslugfields when generating the repository definitions files
- correctly use the
Additions
- all:
- add some initial support for AlmaLinux 9 and Rocky Linux 9
- python:
sp_build_repo:- allow repository URLs to be overridden using a TOML configuration file;
provide a sample as
examples/build-repo-overrides.toml
- allow repository URLs to be overridden using a TOML configuration file;
provide a sample as
- rust:
- use a separate tool,
run-clippy.sh, to invoke clippy; remove the#![warn(...)]directives from the individual source files - keep the
Cargo.lockfile under version control
- use a separate tool,
Other changes
- all:
- allow 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
- allow repository definitions to be built using a different
- python:
- use the
cfg-diag0.4Configclass API - declare Python 3.10 and 3.11 as supported versions
- drop the Rust and POSIX shell implementations from the sdist tarball
sp_variant:- now that
sp_build_repoandtest_dockeruse theclicklibrary, drop thebase_parser()method
- now that
sp_build_repo:- mark the
-roption as required, rename its long form to--runtime - override a "duplicate code" warning from pylint
- use the
typedloadlibrary for validating and loading configuration data - use the
clicklibrary for command-line argument parsing - use f-strings
- use the Text type instead of str; long overdue
- mark the
test_docker:- install the StorPool Python packages to make sure the repository is indeed accessible and configured correctly
- only use
asyncio.run()for the parts that need to run asynchronously (e.g. not for command-line parsing or trivial queries) - use the
clicklibrary for command-line argument parsing - run
docker swapfor the CentOS 8 container to switch to the CentOS Stream repositories; maybe we need to start using the quay.io containers instead
- test suite:
- specify version constraints for the library dependencies
- use
pytest.mark.parametrize()instead of theddtlibrary - drop the Python 2.x mypy and the
flake8+hackingtest environments, they do not provide much value nowadays - drop the outdated
pytest.pyityping stub - move the configuration for the check tools out of the
tox.inifile, mostly intopyproject.toml, but stillsetup.cfgforflake8
- use the
- rust:
- minor refactoring following some suggestions from clippy
- override several clippy lints, mostly for good reasons
- use the
claplibrary for command-line parsing - use the
thiserrorlibrary instead of thequick-errorone, it is cleaner - use the
once_celllibrary instead of thelazy_staticone - use the
anyhowlibrary instead ofexpect-exitin the command-line tool
2.3.3 - 2022-04-28
Fixes
- all:
- make the quoting style in the Debian/Ubuntu
pkgfile.dep_querycommand consistent with that of the others
- make the quoting style in the Debian/Ubuntu
- sh:
- fix the quoting for the Debian/Ubuntu
pkgfile.dep_querycommand - complete the exiting-on-errors fix: two missed invocations
- fix the quoting for the Debian/Ubuntu
Other changes
- sh:
- minor changes to implement some shellcheck suggestions
- add a shellcheck test unless
NO_SHELLCHECKis specified
2.3.2 - 2022-04-27
Fixes
- sh:
- fix exiting on errors in some situations; local variable declarations and error-checked assignments do not mix
2.3.1 - 2022-04-27
Fixes
- sh:
- fix matching the
VERSION_IDvariable in the/etc/os-releasefile: use a POSIX extended regular expression withgrep -E, not a Perl-compatible one!
- fix matching the
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"
- the structs and enums exported by the
Other changes
- python:
- now that there is a working POSIX shell implementation that is better suited for bootstrapping, split the Python library into several modules
- always require the "typing" module to be installed
- rust:
- import 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
- fix two bugs in the
Additions
- all:
- recognize Ubuntu 22.04 (Jammy Jellyfish)
Other changes
- python:
- reformat with 100 characters per line
- make the ArgumentParser-related type annotations a bit more precise to pass some checks in recent versions of Mypy
- rust:
- change the dependency on nix to a >= relation, hoping they do not break backwards compatibility
2.1.1 - 2021-12-18
Fixes
- all:
- Make sure all the implementations output the same thing for
command run package.list_all.
- Make sure all the implementations output the same thing for
- rust:
- Fix a command.run bug: do not output the command to run, the tools
that invoke
storpool_variantmay use its output!
- Fix a command.run bug: do not output the command to run, the tools
that invoke
Other changes
- all:
- Add two-clause BSD licenses to all the source files.
- python:
- Drop a "type: ignore" comment and bump the mypy version used for the test suite to 0.920.
- rust:
- Code clean-up:
- drop an unused internal "url" field
- simplify a double match
- use
.find_map()instead of reimplementing it - streamline
yai::parse()
- Code clean-up:
2.1.0 - 2021-11-15
Fixes
- all:
- On RedHat-derived distributions, the
package.list_allcommand now displays the full epoch:version-release (EVR) string instead of only the version component.
- On RedHat-derived distributions, the
Additions
- all:
- Add support for Ubuntu 21.10 (Impish Indri).
2.0.0 - 2021-10-24
Incompatible changes
- rust:
- change the return type of
get_program_version()andget_program_version_from()fromStringto&str.
- change the return type of
Fixes
- all:
- Install (or update as necessary) the ca-certificates package on RedHat-derived distributions, too, to take care of the Let's Encrypt certificate expiration debacle.
- python:
- Fix the program name in the usage message of the
sp_variantandsp_build_repotools.
- Fix the program name in the usage message of the
- build-repo:
- Use trivver to sort DEBIAN9 before DEBIAN10.
- test-docker:
- Run
apt-get updateif necessary.
- Run
Additions
- all:
- Add a "descr" field to the variant containing a brief human-readable name/description.
- sh:
- Install ourselves as
/usr/sbin/sp_variantinrepo addso that other programs may use this helper.
- Install ourselves as
- rust:
- Use the new Variant.descr field in the documentation.
Other changes
- rust:
- Autogenerate the VariantKind enum.
- Make the
sp_variant::datamodule private. - Create the variants' data structure directly, do not decode a JSON document.
- test-docker:
- Add the "-i" option to limit the images to run on.
- Show the containers' output continually.
1.3.0 - 2021-09-15
Started
- First public release.