kentauros 1.0.0
I am proud to announce the release of version 1.0.0
of kentauros!
This release is the result of about 9 months of development with more than 200 commits since the kentauros-0.9
branch has been split off.
Notable Changes
Tab completion for bash
It is now possible to use tab-completion for flags, action names, and package configuration names (which is the whole CLI!). The obvious limitation is, of course, that tab completion of package configuration names only works if the current working directory is a kentauros root directory (it contains a configs
folder).
Pretty output
It is now possible to print the "package status" via the status
action, which lists values from all known database fields in a pretty format per package.
Additionally, kentauros now generally prints better readable console output for all actions (particularly when running actions on multiple packages).
JSON State Database
For better tracking of package version, release, VCS status (etc.), a small, local database in human-readable JSON format has been introduced. It is automatically populated from "fallback" values before the first action is run.
For better control (and double-checking the JSON file for errors, it's possible to run the import
action on its own: ktr -v import PACKAGE
.
This simple state database allows for easier tracking of, for example, bzr revision numbers or git commit hashes, without having to keep a source checkout around.
To make life easier for "human readers" and VCS systems, the JSON file is indented and formatted nicely (also, keys are always inserted alphabetically) - so generated diffs are as small as possible and look nice.
Variables in the Package configuration file
This change allows the %{name}
and %{version}
macros to be used in the URL of source tarballs (other variables are not implemented yet). The variables are only parsed for the tarball download (where the parsed URL is passed to wget
), but passed to the RPM .spec
as is (which is nice!).
Modularization
The code for handling different types of sources, package constructors, local and remote package builders has been refactored to make it easier to add new modules (which is something to look forward to - for example a new remote builder for koji
scratch builds).
This change required an incompatible change to the package configuration file layout - the new layout, expected sections and keys can be seen in the data/template.conf
file.
Configuration Simplification
It is no longer possible to use kentauros configuration files that are placed all over the system. Now, only the current directory is checked for a kentaurosrc
file (which may specify a custom project root). If that file is not present, the current directory is presumed to be the desired kentauros root directory.
The configuration file layout has (incompatibly) changed since the kentauros-0.9
series to accommodate the new modularity features, which includes packages being able to be built without sources (meta-packages, etc). The data/template.conf file contains documentation about expected keys and expected format of values.
Additionally, the expected directory layout has changed to allow different configurations for the same "base package name" to co-exist (for example, mesa-12.0
and mesa-git
configurations). Look at the examples folder to see how the new layout is obviously better.
The verify
action might prove useful in checking configuration file validity, as it prints errors about missing sections and keys (and missing binaries).
Code Quality
The kentauros
module has a code quality level of 10.00/10
with the current pylint configuration, which I am quite proud of - this includes correctly PEP8 formatted code, no cyclic imports, no duplicate code, no uber-complicated methods and classes, etc.
Notable bug fixes, cleanups and other improvements
- Cancelling a
mock
build byCtrl-C
no longer crashes kentauros - the raisedPermissionError
is now handled correctly. - Usage of the
ujson
python package (a very fast JSON implementation) is now recommended. - The amount of
\n
characters at the end of.spec
files is now preserved in all cases.