Releases 40

If the developers have uploaded one or more tarball(s), you will be able to find them in the release folder.

Overview of changes: * Branch name is now sanitized in SemVer build data This was missing for long time ago; some projects use naming conventions that employ slashes, which are not even valid filenames, so that one dangerous use case is not actually too improbable. * Added last git summary to builtin macros __MKIT_PROJ_GIT_LASTSUMMARY__ now contains last commit message summary (first line). This can be especially useful for quick CI usage to avoid confusion. * Switched to branch naming scheme using 'latest' instead of 'last'
Overview of changes: * Made `make clean` re-usable by extensions Some projects add own build targets that won't necessarily write everything to built.lst; eg. directories created by `mkdir -p` won't be listed but still need to be cleaned up. These scripts can now record their paths as part of built.lst, and can do it in a way that ensures the path is removed recursively.
Overview of changes: * Bump commit messages will now contain version number This proved useful when commits are mentioned by bots and generally for orientation along git log. * Made patch convert scrip a bit easier to use
Overview of changes: * Added support for recursive expansion in ini() Values in mkit.ini can now contain references to other keys, but this time *anywhere* in the value; not just as a prefix. This vastly increases possibilities to customize package layout and makes it easier to maintain meta-data in some situations. It also makes it easier to get into infinite loops, so the recursion depth is limited to 10 levels. * Replaced builtin macro __MKIT_SELF_VERSION__ with __MKIT_MKIT_VERSION__ This further reduces confusion which version is the project version and makes the project version more visible in the _mkit_data printout by leaving it as last listed builtin. * Codebase maintenance and cleanup
Overview of changes: * Fixed multiple grep calls to avoid ambiguities At several places, grep calls composed using variables could be ambiguous if the variable content would look like an argument for grep itself. * Updated MKit version in examples * Updated URLs after move from github
Overview of changes: * Fix timestamps compatibility with older git Git v1.7 does not support the unix time format, but `%ct` should be at least roughly equivalent.
Overview of changes: * Fixed up time tags. First, the choice of hexadecimals turned out as wrong: hexadecimals end up sorting in strange ways, at least in version contexts. The format was changed to '+%Y%m%d%H%M%S` (eg. `20180511171502`). Second, 'ctime' value for MKIT_TTAG was added, which is the same as 'btime', but represents commit time rather than build time, so it's more deterministic---for that reason it's now also the new default.
Overview of changes: * Added timestamp to dirty and devel builds Some installers (eg. very old version of yum) will make it hard to force arbitrary version of build. This makes quick development work harder: you want to be able to reinstall build after small fix, but the pesky old yum will keep refusing it. This is solved by inserting a time-based tag into the build data, For example, making a build from branch 'foo', instead of version like 0.0.1+foo.g1cf454d you will get 0.0.1+t5af43362.foo.g1cf454d where the '5af43362' is based on unix timestamp, so it's guarranteed to sort later than the last time (while 0.0.2.anything will still sort even later). This does not affect clean builds and can be turned off by setting MKIT_TTAG to 'none'. * Small readability improvements
Overview of changes: * Fixed bug in macro expansion In last versions, multi-line macros were added, but expaning multiple macros *per line* stopped working. * Fixed comment removal being too hungry Comment removal filter would actually remove any line that merely *contained* hash sign. * Codebase maintenance
Overview of changes: * Fixed caching and versioning logic The logic used to get essential versioning info and retain it for git-less installs was due to rewriting; it's been simplified and cleaned up. * Cleaned up formatting of SPEC file template from stub * Codebase maintenance
Overview of changes: * stub will generate 'install' (not 'PACKAGE'.install) list file The other format is necessary for multi-packages. * Removed override_dh_usrlocal from generated debian/rules * Removed extra newline from generated README.md * Added URL to generated specfile template * Reformatted whitespace in generated specfile template * Fixed typo in MKIT_STUB_README.md
Overview of changes: * Fixed issue that would break release Releases with many commits or many changed files can produce 'Bump version' message so long that it would trigger OS command line limit. This risk has been mitigated by ensuring the message is read from file instead of git argument. * Added "SRC" mode to preserve file modes from repository Sometimes the mode scheme is not easy, so having mode to apply to whole group is not plausible. Setting group mode to a special value `SRC` will cause MKit replicate the mode from source (repo or tarball). * `stub new` will produce "nice" mkit.ini right away Previously, re-formatting of mkit.ini would work only in update mode; now it's nicely re-formatted on creation. * Fixed formatting of INI files If value in INI file contained space, formatting would break it up. This is no longer the case. * Cleaned up specfile template stub New specfile template now does not contain tabs, has fields grouped in more logical way, and omits BuildRequires, which was not all that correct anyway. * Improved README.md
Overview of changes: * Added data-sampler pseudo-target To help developers see what tokens are available, this pseudo-target just prints list of tokens and their values, for built-in tokens as well as for user-defined. * Removed obsolete build_manpages target and 'markdown' type These were not compatible with current design od MKit and will be better off re-implemented as plugins. * Items in changelog template are now delimited by empty line Just for convenience when formatting and extending. * ini() can now list all sections from mkit.ini ('ini lssect') * Refactored internal functions with double underscore * Updated own meta-data * Fixed small typos in comments and docstrings * Quoted $MKIT_DIR properly in mkit.mk * Updated own dogfood
Overview of changes: * build target will now leave file .mkit/semver file Build tools can read this to easily find out version. * semver() caches its output now * Refactored common operations in .mkit * Removed old unnecessary check * Solved or muted last few ShellCheck issues
Overview of changes: * mkit/stub: Removed `[roots]` reference from `[tokens]` example Using '[roots]' as reference can have unpredictable results since it silently depends on DESTDIR, which is only available at install time. Next breaking release (v0.1.0, but could be earlier as we are still in 0.0.z space) should rename 'roots' to 'ROOTS' to reflect its volatile nature (similar to ENV). * mkit/stub: LICENSE.md won't be mentioned in headers if not asked * mkit/stub: PREFIX is set to /usr in packaging templates * mkit/stub: Added notes about file paths in packaging templates * mkit/stub: Fixed bug when empty license name would be accepted * mkit/stub: Fixed double deploy of template.spec * mkit/make: Having relsrc same as reldst is now tolerated (albeit useless) * mkit/make: 'release' and 'vbump' can now be reached directly (without GNU Make) * mkit/make: Added -V option to mkit/make script * Code maintenance
Overview of changes: * Fixed version directive lookup mkit.ini would be refused if version directive was at the end of the file, while first and last 3 lines is what was supposed to work. * Fixed license argument check stub script would ignore license argument due to argument validation error caused by refactoring. * Fixed bad grep advice in MKIT_STUB_README.md * Updated own dogfood
Overview of changes: * Added 'newstub', builder script to help with new projects The script is intended to help start up new MKit project by generating structure necessary for MKit to work, and instructing user which parts to review and how. * Fixed bug when skeletons could be deployed as part of directory If directory targeted in [files] section contained .skel files, they would get deployed along with built files. * Code refactoring Moved global variables to new vars.sh module, improved initialization and importing code and added file headers. * Improved patch importer utility
Overview of changes: * Enabled rpmstuff and debstuff specific tokens These can be used to (somewhat hackishly) try to mitigate differenceds between distros. * Fixed printing error message to stdout * Fixed broken error message * Big code cleanup Only refactoring, but we needed to get up to date with style.
Overview of changes: * Added `vbump` and `release` targets, defaulting to Z
Overview of changes: * Changelog will be included in tag annotation message. The changelog generated by `vbump_*` target will be included in tag annotation message. The annotation message is meant as release note of sorts, so it makes sense to have the changelog there. (For example, GitHub will use the message as release note on Releases tab of a project.)