package-ipkg.mk: build sysupgrade keepfile hints out of conffiles not yet present...
authorJo-Philipp Wich <jow@openwrt.org>
Tue, 5 Oct 2010 19:20:27 +0000 (19:20 +0000)
committerJo-Philipp Wich <jow@openwrt.org>
Tue, 5 Oct 2010 19:20:27 +0000 (19:20 +0000)
SVN-Revision: 23257

include/package-ipkg.mk

index a07c5cc38c8f7a6b12e524d4ab92ebc9ea18bf45..512e40186de7a99ada91b5d38624648f01156060 100644 (file)
@@ -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)) ]