diff --git a/package/pkg-generic.mk b/package/pkg-generic.mk index 8fb6f97be8..f22b6e981a 100644 --- a/package/pkg-generic.mk +++ b/package/pkg-generic.mk @@ -231,29 +231,13 @@ $(BUILD_DIR)/%/.stamp_rsynced: $(Q)touch $@ # Patch -# -# The RAWNAME variable is the lowercased package name, which allows to -# find the package directory (typically package/) and the -# prefix of the patches -# -# For BR2_GLOBAL_PATCH_DIR, only generate if it is defined -$(BUILD_DIR)/%/.stamp_patched: PATCH_BASE_DIRS = $(PKGDIR) -$(BUILD_DIR)/%/.stamp_patched: PATCH_BASE_DIRS += $(addsuffix /$(RAWNAME),$(call qstrip,$(BR2_GLOBAL_PATCH_DIR))) $(BUILD_DIR)/%/.stamp_patched: @$(call step_start,patch) @$(call MESSAGE,"Patching") $(foreach hook,$($(PKG)_PRE_PATCH_HOOKS),$(call $(hook))$(sep)) $(foreach p,$($(PKG)_PATCH),$(APPLY_PATCHES) $(@D) $($(PKG)_DL_DIR) $(notdir $(p))$(sep)) - $(Q)( \ - for D in $(PATCH_BASE_DIRS); do \ - if test -d $${D}; then \ - if test -d $${D}/$($(PKG)_VERSION); then \ - $(APPLY_PATCHES) $(@D) $${D}/$($(PKG)_VERSION) \*.patch || exit 1; \ - else \ - $(APPLY_PATCHES) $(@D) $${D} \*.patch || exit 1; \ - fi; \ - fi; \ - done; \ + $(foreach dir,$(call pkg-patches-dirs,$(PKG)),\ + $(Q)$(APPLY_PATCHES) $(@D) $(dir) \*.patch$(sep)\ ) $(foreach hook,$($(PKG)_POST_PATCH_HOOKS),$(call $(hook))$(sep)) @$(call step_end,patch) @@ -517,7 +501,7 @@ $(2)_VERSION := $$(call sanitize,$$($(2)_DL_VERSION)) $(2)_HASH_FILES = \ $$(strip \ - $$(foreach d, $$($(2)_PKGDIR) $$(addsuffix /$$($(2)_RAWNAME), $$(call qstrip,$$(BR2_GLOBAL_PATCH_DIR))),\ + $$(foreach d, $$(call pkg-patch-hash-dirs,$(2)),\ $$(if $$(wildcard $$(d)/$$($(2)_VERSION)/$$($(2)_RAWNAME).hash),\ $$(d)/$$($(2)_VERSION)/$$($(2)_RAWNAME).hash,\ $$(d)/$$($(2)_RAWNAME).hash\ diff --git a/package/pkg-utils.mk b/package/pkg-utils.mk index a0dbeac18e..ca736da597 100644 --- a/package/pkg-utils.mk +++ b/package/pkg-utils.mk @@ -156,6 +156,18 @@ define _json-info-pkg ) endef +# The RAWNAME variable is the lowercased package name, which allows to +# find the package directory (typically package/) and the +# prefix of the patches +pkg-patch-hash-dirs = \ + $($(1)_PKGDIR) $(addsuffix /$($(1)_RAWNAME),$(call qstrip,$(BR2_GLOBAL_PATCH_DIR))) + +pkg-patches-dirs = \ + $(foreach dir, $(call pkg-patch-hash-dirs,$(1)),\ + $(wildcard $(if $($(1)_VERSION),\ + $(or $(wildcard $(dir)/$($(1)_VERSION)),$(dir)),\ + $(dir)))) + define _json-info-pkg-details "version": $(call mk-json-str,$($(1)_DL_VERSION)), "licenses": $(call mk-json-str,$($(1)_LICENSE)),