Skip to content
Snippets Groups Projects
Verified Commit 51a2fdcc authored by Karel Koci's avatar Karel Koci :metal: Committed by Karel Koci
Browse files

patches/openwrt: remove automatic package release number bumping

This is going to be superseded by LinkSignature in packages.

This implementation was problematic in the way that it touched version
of package after it was used in other places. The result were invalid
dependencies between some packages.
parent c44f60b2
Branches
Tags
1 merge request!196WIP: patches/openwrt: remove automatic package release number bumping
From ad329d92e0847bbe8b22433442fd4a4a0158369a Mon Sep 17 00:00:00 2001
From: Michal Hrusecky <michal.hrusecky@nic.cz>
Date: Wed, 31 Oct 2018 13:14:23 +0100
Subject: [PATCH] build: Automatically bump release when needed
Automatically check whether dependencies or current package changed too much
and bump release number if it did.
Signed-off-by: Michal Hrusecky <michal.hrusecky@nic.cz>
---
config/Config-build.in | 16 ++++++++++++++++
include/kernel.mk | 2 +-
include/package-defaults.mk | 4 ++++
include/package-ipkg.mk | 26 +++++++++++++++++++++++++-
rules.mk | 1 +
5 files changed, 47 insertions(+), 2 deletions(-)
diff --git a/config/Config-build.in b/config/Config-build.in
index 3534183..58441ba 100644
--- a/config/Config-build.in
+++ b/config/Config-build.in
@@ -194,6 +194,22 @@ menu "Global build settings"
bool "libstdc++"
endchoice
+ config AUTOBUMP_PACKAGES
+ default n
+ bool "Automatically bump build number if needed"
+ help
+ When this option is enabled, package release number is automatically bumped
+ whenever needed like on ABI or dependencies change. This requires record
+ of previously used numbers and builds.
+
+ config AUTOBUMP_DB_PATH
+ string
+ prompt "Where to store information about previous builds"
+ depends on AUTOBUMP_PACKAGES
+ default ""
+ help
+ Specifies where autobump function stores its data. Default is staging directory.
+
comment "Hardening build options"
config PKG_CHECK_FORMAT_SECURITY
diff --git a/include/kernel.mk b/include/kernel.mk
index 93be63d..96f6e43 100644
--- a/include/kernel.mk
+++ b/include/kernel.mk
@@ -209,7 +209,7 @@ define KernelPackage
CATEGORY:=Kernel modules
DESCRIPTION:=$(DESCRIPTION)
VERSION:=$(LINUX_VERSION)$(if $(PKG_VERSION),+$(PKG_VERSION))-$(if $(PKG_RELEASE),$(PKG_RELEASE),$(LINUX_RELEASE))-$(LINUX_VERMAGIC)
- EXTRA_DEPENDS:=kernel (=$(LINUX_VERSION)-$(LINUX_RELEASE)-$(LINUX_VERMAGIC))
+ EXTRA_DEPENDS:=kernel (=$(LINUX_VERSION)-$(LINUX_RELEASE)-$(LINUX_VERMAGIC).0)
PKGFLAGS:=$(PKGFLAGS)
$(call KernelPackage/$(1))
$(call KernelPackage/$(1)/$(BOARD))
diff --git a/include/package-defaults.mk b/include/package-defaults.mk
index 31e331b..19b5e6f 100644
--- a/include/package-defaults.mk
+++ b/include/package-defaults.mk
@@ -28,7 +28,11 @@ define Package/Default
ifneq ($(PKG_RELEASE),)
VERSION:=$(PKG_VERSION)-$(PKG_RELEASE)
else
+ ifneq ($$(CONFIG_AUTOBUMP_PACKAGES),)
+ VERSION:=$(PKG_VERSION)-0
+ else
VERSION:=$(PKG_VERSION)
+ endif
endif
else
VERSION:=$(PKG_RELEASE)
diff --git a/include/package-ipkg.mk b/include/package-ipkg.mk
index c6d002a..90bff76 100644
--- a/include/package-ipkg.mk
+++ b/include/package-ipkg.mk
@@ -196,6 +196,11 @@ $(_endef)
fi; \
done; $(Package/$(1)/extra_provides) \
) | sort -u > $(PKG_INFO_DIR)/$(1).provides
+ ifneq ($$(CONFIG_AUTOBUMP_PACKAGES),)
+ mkdir -p "$(AUTOBUMP_DB_PATH)"/new
+ find $$(IDIR_$(1)) -type f -exec $(TARGET_CROSS)nm -C --with-symbol-versions \{\} \; | sed -n 's|^[0-9a-fA-F]\+\ [a-zA-Z]\ \([^[:blank:]]\)|\1|p' | sort -u > "$(AUTOBUMP_DB_PATH)"/new/$(1).symbols
+ find $$(IDIR_$(1)) -type f -print > "$(AUTOBUMP_DB_PATH)"/new/$(1).files
+ endif
$(if $(PROVIDES),@for pkg in $(filter-out $(1),$(PROVIDES)); do cp $(PKG_INFO_DIR)/$(1).provides $(PKG_INFO_DIR)/$$$$pkg.provides; done)
$(CheckDependencies)
@@ -210,8 +215,24 @@ $(_endef)
)
endif
(cd $$(IDIR_$(1))/CONTROL; \
+ if [ -n "$$(CONFIG_AUTOBUMP_PACKAGES)" ]; then \
+ BUILD_VER=0; BUMP=""; \
+ [ \! -f "$(AUTOBUMP_DB_PATH)"/old/$(1).build_num ] || BUILD_VER="`cat "$(AUTOBUMP_DB_PATH)"/old/$(1).build_num`"; \
+ for pkg in $(1) $$(IDEPEND_$(1)); do \
+ [ \! -f "$(AUTOBUMP_DB_PATH)"/old/$(1).symbols ] || diff -q "$(AUTOBUMP_DB_PATH)"/new/$(1).symbols "$(AUTOBUMP_DB_PATH)"/old/$(1).symbols || BUMP=1; \
+ [ \! -f "$(AUTOBUMP_DB_PATH)"/old/$(1).files ] || diff -q "$(AUTOBUMP_DB_PATH)"/new/$(1).files "$(AUTOBUMP_DB_PATH)"/old/$(1).files || BUMP=1; \
+ done; \
+ [ -z "$$$$BUMP" ] || BUILD_VER="`expr $$$$BUILD_VER + 1`"; \
+ echo "$(VERSION)" > "$(AUTOBUMP_DB_PATH)"/new/$(1).base_ver; \
+ diff -q "$(AUTOBUMP_DB_PATH)"/new/$(1).base_ver "$(AUTOBUMP_DB_PATH)"/old/$(1).base_ver 2> /dev/null || BUILD_VER=0; \
+ echo "$$$$BUILD_VER" > "$(AUTOBUMP_DB_PATH)"/new/$(1).build_num; \
+ fi; \
( \
- echo "$$$$CONTROL"; \
+ if [ -n "$$(CONFIG_AUTOBUMP_PACKAGES)" ]; then \
+ echo "$$$$CONTROL" | sed 's|\(Version: .*\)|\1.'"$$$$BUILD_VER|"; \
+ else \
+ echo "$$$$CONTROL"; \
+ fi; \
printf "Description: "; echo "$$$$DESCRIPTION" | sed -e 's,^[[:space:]]*, ,g'; \
) > control; \
chmod 644 control; \
@@ -247,6 +268,9 @@ $(_endef)
$(INSTALL_DIR) $$(PDIR_$(1))
$(IPKG_BUILD) $$(IDIR_$(1)) $$(PDIR_$(1))
+ ifneq ($$(CONFIG_AUTOBUMP_PACKAGES),)
+ mv $$(PDIR_$(1))/$(1)_$(VERSION).*_$(PKGARCH).ipk $$(PDIR_$(1))/$(1)_$(VERSION)_$(PKGARCH).ipk
+ endif
@[ -f $$(IPKG_$(1)) ]
$(1)-clean:
diff --git a/rules.mk b/rules.mk
index 80cb3d6..b0a653f 100644
--- a/rules.mk
+++ b/rules.mk
@@ -161,6 +161,7 @@ STAGING_DIR_ROOT:=$(STAGING_DIR)/root-$(BOARD)
STAGING_DIR_IMAGE:=$(STAGING_DIR)/image
BUILD_LOG_DIR:=$(TOPDIR)/logs
PKG_INFO_DIR := $(STAGING_DIR)/pkginfo
+AUTOBUMP_DB_PATH = $(if $(call qstrip,$(CONFIG_AUTOBUMP_DB_PATH)),$(call qstrip,$(CONFIG_AUTOBUMP_DB_PATH)),$(STAGING_DIR)/autobumpdb)
BUILD_DIR_HOST:=$(if $(IS_PACKAGE_BUILD),$(BUILD_DIR_BASE)/hostpkg,$(BUILD_DIR_BASE)/host)
STAGING_DIR_HOST:=$(TOPDIR)/staging_dir/host
--
2.24.0
From 100a6a0c9c0cb1649086e7eda6c279d621ce4483 Mon Sep 17 00:00:00 2001
From 69e54105161b74714b537ab3b80b0894bfa90fcf Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Karel=20Ko=C4=8D=C3=AD?= <cynerd@email.cz>
Date: Mon, 15 Jun 2020 21:38:58 +0200
Subject: [PATCH] Generate link signature for packages
......@@ -19,10 +19,10 @@ break this dependency.
create mode 100755 scripts/gen-link-signature.sh
diff --git a/include/package-ipkg.mk b/include/package-ipkg.mk
index 90bff76949..5642e2a0d6 100644
index 03c0383..7d5adcc 100644
--- a/include/package-ipkg.mk
+++ b/include/package-ipkg.mk
@@ -83,6 +83,12 @@ ifneq ($(PKG_NAME),toolchain)
@@ -95,6 +95,12 @@ ifneq ($(PKG_NAME),toolchain)
fi; \
)
endef
......@@ -35,24 +35,20 @@ index 90bff76949..5642e2a0d6 100644
endif
_addsep=$(word 1,$(1))$(foreach w,$(wordlist 2,$(words $(1)),$(1)),$(strip $(2) $(w)))
@@ -227,12 +233,14 @@ $(_endef)
diff -q "$(AUTOBUMP_DB_PATH)"/new/$(1).base_ver "$(AUTOBUMP_DB_PATH)"/old/$(1).base_ver 2> /dev/null || BUILD_VER=0; \
echo "$$$$BUILD_VER" > "$(AUTOBUMP_DB_PATH)"/new/$(1).build_num; \
fi; \
@@ -223,8 +229,10 @@ $(_endef)
)
endif
(cd $$(IDIR_$(1))/CONTROL; \
+ $(GenerateLinkSignature) \
( \
if [ -n "$$(CONFIG_AUTOBUMP_PACKAGES)" ]; then \
echo "$$$$CONTROL" | sed 's|\(Version: .*\)|\1.'"$$$$BUILD_VER|"; \
else \
echo "$$$$CONTROL"; \
fi; \
+ echo "LinkSignature:" "$$$$LINK_SIGNATURE"; \
echo "$$$$CONTROL"; \
+ echo "LinkSignature: $$$$LINK_SIGNATURE"; \
printf "Description: "; echo "$$$$DESCRIPTION" | sed -e 's,^[[:space:]]*, ,g'; \
) > control; \
chmod 644 control; \
diff --git a/scripts/gen-link-signature.sh b/scripts/gen-link-signature.sh
new file mode 100755
index 0000000000..e54e712a3b
index 0000000..e54e712
--- /dev/null
+++ b/scripts/gen-link-signature.sh
@@ -0,0 +1,23 @@
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment