Skip to content
Snippets Groups Projects
Verified Commit afd09bd5 authored by Michal Hrusecky's avatar Michal Hrusecky :mouse:
Browse files

Try to automatically bump packages when needed

parent c83f46c7
Branches
Tags
No related merge requests found
From 9fe18947fd91b7ed5b0bca1eae893ad50f7a00a7 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>
---
include/package-defaults.mk | 2 +-
include/package-ipkg.mk | 14 +++++++++++++-
rules.mk | 1 +
3 files changed, 15 insertions(+), 2 deletions(-)
diff --git a/include/package-defaults.mk b/include/package-defaults.mk
index 31e331b..ee8cb5e 100644
--- a/include/package-defaults.mk
+++ b/include/package-defaults.mk
@@ -28,7 +28,7 @@ define Package/Default
ifneq ($(PKG_RELEASE),)
VERSION:=$(PKG_VERSION)-$(PKG_RELEASE)
else
- VERSION:=$(PKG_VERSION)
+ VERSION:=$(PKG_VERSION)-0
endif
else
VERSION:=$(PKG_RELEASE)
diff --git a/include/package-ipkg.mk b/include/package-ipkg.mk
index 457f2e7..535d419 100644
--- a/include/package-ipkg.mk
+++ b/include/package-ipkg.mk
@@ -190,6 +190,8 @@ $(_endef)
fi; \
done; $(Package/$(1)/extra_provides) \
) | sort -u > $(PKG_INFO_DIR)/$(1).provides
+ 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 > "$(PKG_INFO_DIR)"/$(1).symbols
+ find $$(IDIR_$(1)) -type f -print > "$(PKG_INFO_DIR)"/$(1).files
$(if $(PROVIDES),@for pkg in $(filter-out $(1),$(PROVIDES)); do cp $(PKG_INFO_DIR)/$(1).provides $(PKG_INFO_DIR)/$$$$pkg.provides; done)
$(CheckDependencies)
@@ -204,8 +206,18 @@ $(_endef)
)
endif
(cd $$(IDIR_$(1))/CONTROL; \
+ BUILD_VER=0; BUMP=""; \
+ [ \! -f "$(PKG_OLD_INFO_DIR)"/$(1).build_num ] || BUILD_VER="`cat "$(PKG_OLD_INFO_DIR)"/$(1).build_num`"; \
+ for pkg in $(1) $$(IDEPEND_$(1)); do \
+ [ \! -f "$(PKG_OLD_INFO_DIR)"/$(1).symbols ] || diff -q "$(PKG_INFO_DIR)"/$(1).symbols "$(PKG_OLD_INFO_DIR)"/$(1).symbols || BUMP=1; \
+ [ \! -f "$(PKG_OLD_INFO_DIR)"/$(1).files ] || diff -q "$(PKG_INFO_DIR)"/$(1).files "$(PKG_OLD_INFO_DIR)"/$(1).files || BUMP=1; \
+ done; \
+ [ -z "$$$$BUMP" ] || BUILD_VER="`expr $$$$BUILD_VER + 1`"; \
+ echo "$(VERSION)" > "$(PKG_INFO_DIR)"/$(1).base_ver; \
+ diff -q "$(PKG_INFO_DIR)"/$(1).base_ver "$(PKG_OLD_INFO_DIR)"/$(1).base_ver || BUILD_VER=0
+ echo "$$$$BUILD_VER" > "$(PKG_INFO_DIR)"/$(1).build_num; \
( \
- echo "$$$$CONTROL"; \
+ echo "$$$$CONTROL" | sed 's|\(Version: .*\)|\1.'"$$$$BUILD_VER|"; \
printf "Description: "; echo "$$$$DESCRIPTION" | sed -e 's,^[[:space:]]*, ,g'; \
) > control; \
chmod 644 control; \
diff --git a/rules.mk b/rules.mk
index 0f385bd..9974111 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
+PKG_OLD_INFO_DIR := $(STAGING_DIR)/pkginfo-old
BUILD_DIR_HOST:=$(if $(IS_PACKAGE_BUILD),$(BUILD_DIR_BASE)/hostpkg,$(BUILD_DIR_BASE)/host)
STAGING_DIR_HOST:=$(TOPDIR)/staging_dir/host
--
2.19.1
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