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.