diff options
| -rw-r--r-- | include/package-ipkg.mk | 15 | 
1 files changed, 15 insertions, 0 deletions
| diff --git a/include/package-ipkg.mk b/include/package-ipkg.mk index a07c5cc38..512e40186 100644 --- a/include/package-ipkg.mk +++ b/include/package-ipkg.mk @@ -49,6 +49,7 @@ ifeq ($(DUMP),)      IPKG_$(1):=$(PACKAGE_DIR)/$(1)_$(VERSION)_$(PKGARCH).ipk      IDIR_$(1):=$(PKG_BUILD_DIR)/ipkg-$(PKGARCH)/$(1)      INFO_$(1):=$(IPKG_STATE_DIR)/info/$(1).list +    KEEP_$(1):=$(strip $(call Package/$(1)/conffiles))      ifeq ($(if $(VARIANT),$(BUILD_VARIANT)),$(VARIANT))      ifdef Package/$(1)/install @@ -112,6 +113,20 @@ ifeq ($(DUMP),)  	(cd $$(IDIR_$(1))/CONTROL; \  		$($(1)_COMMANDS) \  	) + +    ifneq ($$(KEEP_$(1)),) +		@( \ +			keepfiles=""; \ +			for x in $$(KEEP_$(1)); do \ +				[ -f "$$(IDIR_$(1))/$$$$x" ] || keepfiles="$$$${keepfiles:+$$$$keepfiles }$$$$x"; \ +			done; \ +			[ -z "$keepfiles" ] || { \ +				mkdir -p $$(IDIR_$(1))/lib/upgrade/keep.d; \ +				for x in $$$$keepfiles; do echo $$$$x >> $$(IDIR_$(1))/lib/upgrade/keep.d/$(1); done; \ +			}; \ +		) +    endif +  	$(IPKG_BUILD) $$(IDIR_$(1)) $(PACKAGE_DIR)  	@[ -f $$(IPKG_$(1)) ] | 
