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:
* Renamed `[tokens]` section to `[macros]`
"Token" is not the right word and might be confusing in some cases.
* Added support for multi-line macros
If a macro expands to multi-line value, line containing macro
reference is expanded by repeating it with each value line.
This allows for assignments such as:
[foo:rpmstuff]
__FOO_REQUIRES__ = foo-libs
__FOO_REQUIRES__ = bar
and source files:
Requires: __FOO_REQUIRES__
expand as:
Requires: foo-libs
Requires: bar
* Added support for rudimentary INCLUDE directive
Useful for development kits: you can include other
file as basis for mkit.ine.
The functionality is very limited, though: only one file can
be included and only one level of incusion is supported (ie. the
included file may not include yet another file).
* Improved debug_var() by using declare builtin
Array variables will now be shown with reasonable syntax (on most
Bash versions, anyway).
* Codebase maintenance and smaller fixes
Note that v0.0.30 was broken but some installations might exist so we
better skip the version.
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:
* Rewrote *newstub* as *stub* meta-command, now with update mode
The script looks promising, let's use the extensible CLI scheme.
* Removed sorting from `ini lskeys`
*stub* can rewrite user's mkit.ini but it does not want to mess it
up more than is necessary.
* User can now override project version with *stub*
* *stub* now Respects MKIT_INI environment variable
* Fixed problems with LICENSE.md and README.md rewriting in *stub*
* Moved MKit version directive to end of file
* Improved MKit's own project README.md
'newstub' was not so far to being able to update meta-data based on
existing mkit.ini. However, in order to keep the CLI sane, it seems
better to switch to meta-command scheme.
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:
* 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.)
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
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
Overview of changes:
* Added debstuff target to help Debian maintainers
* `make clean` removes directories as well
* Rewrote route with sane(r) approach ro targets
Overview of changes:
* Move all project meta-data to mkit.ini (obsolete config.mk)
* Add tagline to common peoject meta-data
* Use more qualified tokens for replacement
* Improve mini-changelog