Annotation message is meant as official release note, so including it
there makes sense.
(For example, GitHub will use it to create release note under Releases tab.)
If for some reason, user wants to skip a version or two, this will
override version bumping in vbump_* and some checks new and tag
creation in release_*.
although I haven't been able to put my finger on it, git-log must have
changed between Debian's 2.1.4 and Fedora's 2.5.something. The previous
version worked on Fedora but not on Debian; hopefully this solution is
more robust.
This is the last version where we tolerate incompatible changes in
mkit.ini and from now on, all mkit.ini files must have the version line
(in first 3 or last 3 lines).
As per my interpretation of SemVer, if major version is 0, we may
introduce incompatible changes within minor, in that case we check that
as well. Otherwise, we just check the major.
Merge sections lists, debstuff and rpmstuff to dist
They are all about "distribution", rpmstuff and debstuff have basically
just one item, and having "lists" section was ugly and meaningless in
the first place.
Merge all files:group sections into one, where key is name of the group
and value is source name, optionally followed by destination path.
This breaks old mkit.ini's, but significantly simplifies future ones.
1. Only one section is needed,
2. group list is implied from the files section, removing the need
of lists:group,
3. destination path has been made optional (by default, basename of
the source path is used).
Overview of changes:
* Replaced 'vars' key with 'tokens'
* Improved version bumping (won't destroy spaces around '=')
* Improved robustness of token replacing
* Enabled more tokens on single line
* Added tokens: __MKIT_PROJ_VCS_BROWSER__ __MKIT_PROJ_MAINTAINER__ and
__MKIT_PROJ_GIT_LASTHASH__
* Code maintenance and cleanup
It's easier to do quoting at least mediocre-right in sed than in perl;
eg. with Perl, even e-mail address was causing quoting breakage due to
the at sign.
Provide last_hash value as __MKIT_PROJ_GIT_LASTHASH__ token
Note that similar to __MKIT_PROJ_VERSION__, this value cannot be
reliably determined when outside git (e.g. distributor's build dir),
therefore must be kept inside dist source package.
Unlike version, though, user (ie. app developer, ie. mkit.ini
maintainer) most probably does not want to edit it, therefore we're
normally keeping it out of sight.
The value itself is normally just the last git commit's hash (SHA1 these
days), suffixed with ".dirty" mark if there were uncommitted changes
during build. (Just the same as we do with semver())
If we're outside git and the hash could not be determined, that either
means the source package was mangled with or was built with older
version of mkit. In either case, the value provided will be 'UNKNOWN'.
Some parts got a bit confusing over time, also there was repetition.
In this commit:
* the release fact gathering routines have been moved to separate
module,
* some less useful routines have been removed,
* some internal interfaces have been changed to allow for more
readable code.
Fix up the path joining logic:
* For obvious reasons, we panic if group's root is empty.
* DESTDIR can be empty, that's normal for installs such as when MKit
installs its own dogfood.
* Root (which sometimes starts with PREFIX) may or may not start with
slash; relative root such as that is also OK for installs like MKit
or TFKit.
* Furthermore, DESTDIR may or may not end with slash; we have to address
that and avoid joining the names.
Overview of changes:
* Added sanity checks for debstuff target
* Added new tokens: __MKIT_PROJ_PKGNAME__ and __MKIT_SELF_VERSION__
* Minor code and meta-data cleanups