summaryrefslogtreecommitdiffstats
path: root/include/package.mk
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@openwrt.org>2014-02-23 17:32:04 +0000
committerFelix Fietkau <nbd@openwrt.org>2014-02-23 17:32:04 +0000
commit623825103e17a975f36854b362f17f8d26557828 (patch)
treeea2d52a4264b2bdbee20d394b449610bb7f75e48 /include/package.mk
parentf587bacc264012658b9f629300cc9a46100c2e5a (diff)
downloadmaster-31e0f0ae-623825103e17a975f36854b362f17f8d26557828.tar.gz
master-31e0f0ae-623825103e17a975f36854b362f17f8d26557828.tar.bz2
master-31e0f0ae-623825103e17a975f36854b362f17f8d26557828.zip
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 <nbd@openwrt.org> SVN-Revision: 39720
Diffstat (limited to 'include/package.mk')
-rw-r--r--include/package.mk12
1 files changed, 12 insertions, 0 deletions
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)