From 31e661bebd86209f48b80b093e74d671c97e5a27 Mon Sep 17 00:00:00 2001 From: Felix Fietkau Date: Sun, 23 Feb 2014 17:32:04 +0000 Subject: build: allow packages to declare ABI versions to detect necessary package rebuilds If a package directly depends on another package that recently changed its ABI version, it will be cleaned up and rebuilt (assuming quilt is not used). This helps with packages that have no stable ABI, e.g. libubox, ubus, etc. Signed-off-by: Felix Fietkau git-svn-id: svn://svn.openwrt.org/openwrt/trunk@39720 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- include/package.mk | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'include/package.mk') diff --git a/include/package.mk b/include/package.mk index 79066fe1e2..d14c525506 100644 --- a/include/package.mk +++ b/include/package.mk @@ -39,6 +39,15 @@ include $(INCLUDE_DIR)/host.mk include $(INCLUDE_DIR)/unpack.mk include $(INCLUDE_DIR)/depends.mk +find_library_dependencies = $(wildcard $(patsubst %,$(STAGING_DIR)/pkginfo/%.version, \ + $(filter-out $(BUILD_PACKAGES),$(foreach dep, \ + $(filter-out @%, $(patsubst +%,%,$(1))), \ + $(if $(findstring :,$(dep)), \ + $(word 2,$(subst :,$(space),$(dep))), \ + $(dep) \ + ) \ + )))) + STAMP_NO_AUTOREBUILD=$(wildcard $(PKG_BUILD_DIR)/.no_autorebuild) PREV_STAMP_PREPARED:=$(if $(STAMP_NO_AUTOREBUILD),$(wildcard $(PKG_BUILD_DIR)/.prepared*)) ifneq ($(PREV_STAMP_PREPARED),) @@ -227,6 +236,9 @@ define Package/$(1)/description endef endif + BUILD_PACKAGES += $(1) + $(STAMP_PREPARED): $$(if $(QUILT)$(DUMP),,$(call find_library_dependencies,$(DEPENDS))) + $(foreach FIELD, TITLE CATEGORY SECTION VERSION, ifeq ($($(FIELD)),) $$(error Package/$(1) is missing the $(FIELD) field) -- cgit v1.2.3