mirror of
git://git.openwrt.org/openwrt/openwrt.git
synced 2024-12-22 06:41:17 +00:00
metadata: handle ABI version rebuild tracking for transient dependencies
Extend the packageauxvars database to keep a list of possible package dependencies for each provider, then utilize this information in buildroot to resolve the ABI version dependencies of dependent packages up to five levels deep. This should properly trigger rebuilds for packages indirectly depending on other packages whose ABI_VERSION changed. Signed-off-by: Jo-Philipp Wich <jo@mein.io>
This commit is contained in:
parent
3dc4f59eab
commit
27a4a71c24
@ -53,14 +53,26 @@ endif
|
||||
|
||||
include $(INCLUDE_DIR)/quilt.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) \
|
||||
) \
|
||||
))))
|
||||
find_library_dependencies = \
|
||||
$(wildcard $(patsubst %,$(STAGING_DIR)/pkginfo/%.version, \
|
||||
$(sort $(foreach dep4, \
|
||||
$(sort $(foreach dep3, \
|
||||
$(sort $(foreach dep2, \
|
||||
$(sort $(foreach dep1, \
|
||||
$(sort $(foreach dep0, \
|
||||
$(Package/$(1)/depends), \
|
||||
$(Package/$(dep0)/depends) $(dep0) \
|
||||
)), \
|
||||
$(Package/$(dep1)/depends) $(dep1) \
|
||||
)), \
|
||||
$(Package/$(dep2)/depends) $(dep2) \
|
||||
)), \
|
||||
$(Package/$(dep3)/depends) $(dep3) \
|
||||
)), \
|
||||
$(Package/$(dep4)/depends) $(dep4) \
|
||||
)), \
|
||||
))
|
||||
|
||||
|
||||
PKG_DIR_NAME:=$(lastword $(subst /,$(space),$(CURDIR)))
|
||||
STAMP_NO_AUTOREBUILD=$(wildcard $(PKG_BUILD_DIR)/.no_autorebuild)
|
||||
@ -258,7 +270,7 @@ endef
|
||||
endif
|
||||
|
||||
BUILD_PACKAGES += $(1)
|
||||
$(STAMP_PREPARED): $$(if $(QUILT)$(DUMP),,$(call find_library_dependencies,$(DEPENDS)))
|
||||
$(STAMP_PREPARED): $$(if $(QUILT)$(DUMP),,$(call find_library_dependencies,$(1)))
|
||||
|
||||
$(foreach FIELD, TITLE CATEGORY SECTION VERSION,
|
||||
ifeq ($($(FIELD)),)
|
||||
|
@ -547,6 +547,18 @@ sub gen_package_auxiliary() {
|
||||
print "Package/$n/abiversion = $abiv\n";
|
||||
}
|
||||
}
|
||||
my %depends;
|
||||
foreach my $dep (@{$pkg->{depends} || []}) {
|
||||
if ($dep =~ m!^\+?(?:[^:]+:)?([^@]+)$!) {
|
||||
$depends{$1}++;
|
||||
}
|
||||
}
|
||||
my @depends = sort keys %depends;
|
||||
if (@depends > 0) {
|
||||
foreach my $n (@{$pkg->{provides}}) {
|
||||
print "Package/$n/depends = @depends\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user