summaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorjow <jow@3c298f89-4303-0410-b956-a3cf2f4a3e73>2010-10-05 19:20:27 +0000
committerjow <jow@3c298f89-4303-0410-b956-a3cf2f4a3e73>2010-10-05 19:20:27 +0000
commit0e8e5d26a0ac5e766b6610e1f305a9877ee89a36 (patch)
tree637210bdd8f8ffe66b0570a87d291ce9ad003265 /include
parent999a4c28918e28bc1dae8c33dc66293a3708dda9 (diff)
[include] package-ipkg.mk: build sysupgrade keepfile hints out of conffiles not yet present in the package.
This applies to config directories or files that do not exist but may be created by the user after package installation. git-svn-id: svn://svn.openwrt.org/openwrt/trunk@23257 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'include')
-rw-r--r--include/package-ipkg.mk15
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)) ]