mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-24 07:46:48 +00:00
rules: add AUTORELEASE and COMMITCOUNT variables
The lack of bumped PKG_RELEASE variables is a recurring theme on the mailing list and in GitHub comments. This costs precious review time, a rare good within the OpenWrt project. Instead of relying on a manually set PKG_RELEASE this commit adds a `commitcount` function that uses the number of Git commits to determine the release. The function is called via the variables `$(AUTORELEASE)` or `$(COMMITCOUNT)`. The `PKG_RELEASE` variable can be set to either of the two. - $(AUTORELEASE): Release is automagically set to the number of commits since the last commit containing either ": update to " or ": bump to ". Example below: $ git log packages/foobar/ foobar: fixup file location foobar: disable docs foobar: bump to 5.3.2 foobar: fixup copyright Resulting package name: foobar_5.3.2-3_all.ipk, two package changes since the last upstream version change, using a 1 based counter. - $(COMMITCOUNT): For non-traditional versioning (x.y.z), most prominent `base-files`, this variable contains the total number of package commits. The new functionality can also be used by other feeds like packages.git. In case no build information is available, e.g. when using release tarballs, the SOURCE_DATE_EPOCH is used to have a reproducible release identifier. Suggested-by: Daniel Golle <daniel@makrotopia.org> Signed-off-by: Paul Spooren <mail@aparcar.org>
This commit is contained in:
parent
e779d30f32
commit
9ae3c6f94c
26
rules.mk
26
rules.mk
@ -408,6 +408,32 @@ endef
|
||||
# file extension
|
||||
ext=$(word $(words $(subst ., ,$(1))),$(subst ., ,$(1)))
|
||||
|
||||
# Count Git commits of a package
|
||||
# $(1) => if non-empty: count commits since last ": [uU]pdate to " or ": [bB]ump to " in commit message
|
||||
define commitcount
|
||||
$(shell \
|
||||
if git log -1 >/dev/null 2>/dev/null; then \
|
||||
if [ -n "$(1)" ]; then \
|
||||
last_bump="$$(git log --pretty=format:'%h %s' . | \
|
||||
grep --max-count=1 -e ': [uU]pdate to ' -e ': [bB]ump to ' | \
|
||||
cut -f 1 -d ' ')"; \
|
||||
fi; \
|
||||
if [ -n "$$last_bump" ]; then \
|
||||
echo -n $$(($$(git rev-list --count "$$last_bump..HEAD" .) + 1)); \
|
||||
else \
|
||||
echo -n $$(($$(git rev-list --count HEAD .) + 1)); \
|
||||
fi; \
|
||||
else \
|
||||
secs="$$(($(SOURCE_DATE_EPOCH) % 86400))"; \
|
||||
date="$$(date --utc --date="@$(SOURCE_DATE_EPOCH)" "+%y%m%d")"; \
|
||||
printf '%s.%05d' "$$date" "$$secs"; \
|
||||
fi; \
|
||||
)
|
||||
endef
|
||||
|
||||
COMMITCOUNT = $(if $(DUMP),,$(call commitcount))
|
||||
AUTORELEASE = $(if $(DUMP),,$(call commitcount,1))
|
||||
|
||||
all:
|
||||
FORCE: ;
|
||||
.PHONY: FORCE
|
||||
|
Loading…
Reference in New Issue
Block a user