treewide: set PKG_RELEASE automatically
Backport support for COMMITCOUNT and AUTORELEASE from OpenWrt. COMMITCOUNT allows to have the PKG_RELEASE calculated automatically based on the number of commits for the package folder. AUTORELEASE will count the number of commits since the last upstream bump. This is relevant for packages with PKG_VERSION or PKG_SOURCE_DATE set, but will not work for us since it assumes the use of certain identifiers in commit titles. COMMITCOUNT works fine for most of our packages, with the following exceptions: * fff-nodewatcher would yield a commit count of 55, while the current PKG_RELEASE is 61. Thus, we do not touch it for now. * Packages that have been renamed will start counting from 1 after the rename, since folder renames are not tracked by git. This will result in descreasing PKG_RELEASE after the change for these packages. However, since moving essentially creates a new package anyway, counting from 1 makes sense conceptually, and PKG_RELEASE is still replaced for these packages. * alfred-json and fff-macnock use upstream code and thus would normally require AUTORELEASE. As discussed above, this will not work for us, so just leave these two untouched. Note that all this is quite irrelevant for the way we use packages currently, as without opkg PKG_RELEASE does not matter to us anyway. So, let's just be happy about not having to bump PKG_RELEASE anymore, while keeping the basic functionality intact. The only package where the PKG_RELEASE is actually used for something is fff-nodewatcher, where the version will be displayed in the Monitoring. Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
This commit is contained in:
parent
51d3858ed4
commit
537e864a37
|
@ -0,0 +1,82 @@
|
|||
From: Paul Spooren <mail@aparcar.org>
|
||||
Date: Fri, 1 Jan 2021 14:02:12 -1000
|
||||
Subject: 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>
|
||||
(cherry picked from commit 9ae3c6f94c616cfbf854d3ec749c7fafc9893942)
|
||||
|
||||
diff --git a/rules.mk b/rules.mk
|
||||
index 41ed9bafd01b458a1ff3bf7b7b43cc6c48cca845..7c1f39ccf4023601a7647f4eaf648b6392f480b9 100644
|
||||
--- a/rules.mk
|
||||
+++ b/rules.mk
|
||||
@@ -404,6 +404,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
|
|
@ -0,0 +1,34 @@
|
|||
From: Paul Spooren <mail@aparcar.org>
|
||||
Date: Tue, 26 Jan 2021 17:16:36 -1000
|
||||
Subject: rules: fix COMMITCOUNT logic
|
||||
|
||||
The newly added $(COMMITCOUNT) variable was wrongly increased by plus
|
||||
one. The addition should have been only added to $(AUTORELEASE) as
|
||||
OpenWrt traditionally starts counting at one rather than zero.
|
||||
|
||||
$(AUTORELEASE) counts the commits since the last bump, which is zero on
|
||||
the version bump commit itself.
|
||||
|
||||
This commit increases $(AUTORELEASE) by one while leaving $(COMMITCOUNT)
|
||||
as is.
|
||||
|
||||
The base-files package is the only package using $(COMMITCOUNT) so far
|
||||
and requires a pseudo commit to keep the PKG_RELEASE correct. A non
|
||||
functional change (Copyright bump) is done in the next commit.
|
||||
|
||||
Signed-off-by: Paul Spooren <mail@aparcar.org>
|
||||
(cherry picked from commit 513f7171a3e509bba54ecc2af2d6259c7cbff221)
|
||||
|
||||
diff --git a/rules.mk b/rules.mk
|
||||
index 7c1f39ccf4023601a7647f4eaf648b6392f480b9..8bfc67fb2cd43e3ce4330fd28b398722858d3493 100644
|
||||
--- a/rules.mk
|
||||
+++ b/rules.mk
|
||||
@@ -417,7 +417,7 @@ $(shell \
|
||||
if [ -n "$$last_bump" ]; then \
|
||||
echo -n $$(($$(git rev-list --count "$$last_bump..HEAD" .) + 1)); \
|
||||
else \
|
||||
- echo -n $$(($$(git rev-list --count HEAD .) + 1)); \
|
||||
+ git rev-list --count HEAD .; \
|
||||
fi; \
|
||||
else \
|
||||
secs="$$(($(SOURCE_DATE_EPOCH) % 86400))"; \
|
|
@ -0,0 +1,39 @@
|
|||
From: Paul Spooren <mail@aparcar.org>
|
||||
Date: Thu, 28 Jan 2021 23:17:10 -1000
|
||||
Subject: rules: fix empty COMMITCOUNT/AUTORELEASE
|
||||
|
||||
Packages that are in-tree only often lack a PKG_VERSION and only use the
|
||||
PKG_RELEASE to mark changes. Using COMMITCOUNT/AUTORELEASE variables
|
||||
causes an issue as both variables are empty during the metadata DUMP
|
||||
phase.
|
||||
|
||||
Instead of leaving these variables empty and causing an error message
|
||||
like below, set the variables to 0 during dumping. On actual building
|
||||
the variable is evaluated causing in a value above 0.
|
||||
|
||||
ERROR: please fix package/utils/px5g-wolfssl/Makefile - \
|
||||
see logs/package/utils/px5g-wolfssl/dump.txt for details
|
||||
|
||||
Makefile:48: *** Package/px5g-wolfssl is missing the VERSION field. Stop.
|
||||
|
||||
Reported-by: Daniel Golle <daniel@makrotopia.org>
|
||||
Reported-by: Stijn Segers <foss@volatilesystems.org>
|
||||
Reported-by: Stijn Tintel <stijn@linux-ipv6.be>
|
||||
Signed-off-by: Paul Spooren <mail@aparcar.org>
|
||||
(cherry picked from commit ddab795b370da986149f8c8e6b3455bf9c1066fe)
|
||||
|
||||
diff --git a/rules.mk b/rules.mk
|
||||
index 8bfc67fb2cd43e3ce4330fd28b398722858d3493..ee586bf989498b564b4de03b10b68cf66506d3d5 100644
|
||||
--- a/rules.mk
|
||||
+++ b/rules.mk
|
||||
@@ -427,8 +427,8 @@ $(shell \
|
||||
)
|
||||
endef
|
||||
|
||||
-COMMITCOUNT = $(if $(DUMP),,$(call commitcount))
|
||||
-AUTORELEASE = $(if $(DUMP),,$(call commitcount,1))
|
||||
+COMMITCOUNT = $(if $(DUMP),0,$(call commitcount))
|
||||
+AUTORELEASE = $(if $(DUMP),0,$(call commitcount,1))
|
||||
|
||||
all:
|
||||
FORCE: ;
|
|
@ -1,7 +1,7 @@
|
|||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=fff-alfred-monitoring-proxy
|
||||
PKG_RELEASE:=4
|
||||
PKG_RELEASE:=$(COMMITCOUNT)
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=fff-alfred
|
||||
PKG_RELEASE:=2
|
||||
PKG_RELEASE:=$(COMMITCOUNT)
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=fff-babeld
|
||||
PKG_RELEASE:=7
|
||||
PKG_RELEASE:=$(COMMITCOUNT)
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=fff-batman-adv
|
||||
PKG_RELEASE:=4
|
||||
PKG_RELEASE:=$(COMMITCOUNT)
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=fff-boardname
|
||||
PKG_RELEASE:=8
|
||||
PKG_RELEASE:=$(COMMITCOUNT)
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=fff-config
|
||||
PKG_RELEASE:=2
|
||||
PKG_RELEASE:=$(COMMITCOUNT)
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=fff-dhcp
|
||||
PKG_RELEASE:=5
|
||||
PKG_RELEASE:=$(COMMITCOUNT)
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=fff-fastd
|
||||
PKG_RELEASE:=3
|
||||
PKG_RELEASE:=$(COMMITCOUNT)
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=fff-firewall
|
||||
PKG_RELEASE:=6
|
||||
PKG_RELEASE:=$(COMMITCOUNT)
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=fff-hoods
|
||||
PKG_RELEASE:=19
|
||||
PKG_RELEASE:=$(COMMITCOUNT)
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=fff-hoodutils
|
||||
PKG_RELEASE:=2
|
||||
PKG_RELEASE:=$(COMMITCOUNT)
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=fff-layer3-config
|
||||
PKG_RELEASE:=6
|
||||
PKG_RELEASE:=$(COMMITCOUNT)
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=fff-layer3
|
||||
PKG_RELEASE:=8
|
||||
PKG_RELEASE:=$(COMMITCOUNT)
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=fff-network
|
||||
PKG_RELEASE:=36
|
||||
PKG_RELEASE:=$(COMMITCOUNT)
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=fff-node
|
||||
PKG_RELEASE:=3
|
||||
PKG_RELEASE:=$(COMMITCOUNT)
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=fff-ra
|
||||
PKG_RELEASE:=3
|
||||
PKG_RELEASE:=$(COMMITCOUNT)
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=fff-random
|
||||
PKG_RELEASE:=3
|
||||
PKG_RELEASE:=$(COMMITCOUNT)
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=fff-simple-tc
|
||||
PKG_RELEASE:=2
|
||||
PKG_RELEASE:=$(COMMITCOUNT)
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=fff-support
|
||||
PKG_RELEASE:=7
|
||||
PKG_RELEASE:=$(COMMITCOUNT)
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=fff-sysupgrade
|
||||
PKG_RELEASE:=12
|
||||
PKG_RELEASE:=$(COMMITCOUNT)
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=fff-timeserver
|
||||
PKG_RELEASE:=3
|
||||
PKG_RELEASE:=$(COMMITCOUNT)
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=fff-uradvd
|
||||
PKG_RELEASE:=2
|
||||
PKG_RELEASE:=$(COMMITCOUNT)
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=fff-vpn-select
|
||||
PKG_RELEASE:=5
|
||||
PKG_RELEASE:=$(COMMITCOUNT)
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=fff-web-hood
|
||||
PKG_RELEASE:=2
|
||||
PKG_RELEASE:=$(COMMITCOUNT)
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=fff-web-ui
|
||||
PKG_RELEASE:=18
|
||||
PKG_RELEASE:=$(COMMITCOUNT)
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=fff-wireguard
|
||||
PKG_RELEASE:=5
|
||||
PKG_RELEASE:=$(COMMITCOUNT)
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=fff-wireless
|
||||
PKG_RELEASE:=20
|
||||
PKG_RELEASE:=$(COMMITCOUNT)
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=fff
|
||||
PKG_RELEASE:=9
|
||||
PKG_RELEASE:=$(COMMITCOUNT)
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
|
||||
|
|
Loading…
Reference in New Issue