add automatic file tracking and uninstallation for files installed in $(STAGING_DIR...
authornbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Tue, 25 Dec 2007 01:39:15 +0000 (01:39 +0000)
committernbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Tue, 25 Dec 2007 01:39:15 +0000 (01:39 +0000)
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@9905 3c298f89-4303-0410-b956-a3cf2f4a3e73

include/package.mk

index 9ab3a2cd5c8fe7a8bc955d74d9138e7d1402c6ee..c3e2b6f481b908ee3d08874e8201cec032d97e94 100644 (file)
@@ -70,7 +70,18 @@ define Build/DefaultTargets
        touch $$@
 
   $(STAMP_INSTALLED): $(STAMP_BUILT)
-       $(call Build/InstallDev,$(STAGING_DIR),$(STAGING_DIR_HOST))
+       $(NO_TRACE_MAKE) clean-staging
+       rm -rf $(TMP_DIR)/stage-$(PKG_NAME)
+       mkdir -p $(TMP_DIR)/stage-$(PKG_NAME) $(STAGING_DIR)/packages $(STAGING_DIR_HOST)/packages
+       $(call Build/InstallDev,$(TMP_DIR)/stage-$(PKG_NAME)/target,$(TMP_DIR)/stage-$(PKG_NAME)/host)
+       if [ -d $(TMP_DIR)/stage-$(PKG_NAME)/target ]; then \
+               (cd $(TMP_DIR)/stage-$(PKG_NAME)/target; find > $(STAGING_DIR)/packages/$(PKG_NAME).list); \
+               $(CP) $(TMP_DIR)/stage-$(PKG_NAME)/target/* $(STAGING_DIR)/; \
+       fi
+       if [ -d $(TMP_DIR)/stage-$(PKG_NAME)/host ]; then \
+               (cd $(TMP_DIR)/stage-$(PKG_NAME)/host; find > $(STAGING_DIR_HOST)/packages/$(PKG_NAME).list); \
+               $(CP) $(TMP_DIR)/stage-$(PKG_NAME)/host/* $(STAGING_DIR_HOST)/; \
+       fi
        touch $$@
 
   ifdef Build/InstallDev
@@ -152,15 +163,24 @@ endef
 
 $(PACKAGE_DIR):
        mkdir -p $@
-               
+       
 dumpinfo:
 download:
 prepare:
 configure:
 compile:
 install:
-clean: FORCE
+clean-staging: FORCE
+       rm -f $(STAMP_INSTALLED)
+       for dir in "$(STAGING_DIR)" "$(STAGING_DIR_HOST)"; do (\
+               cd $$dir; \
+               if [ -f packages/$(PKG_NAME).list ]; then \
+                       cat packages/$(PKG_NAME).list | xargs -r rm -f 2>/dev/null; \
+               fi; \
+       ) done;
+
+clean: clean-staging FORCE
        $(call Build/UninstallDev,$(STAGING_DIR),$(STAGING_DIR_HOST))
        $(Build/Clean)
-       @rm -f $(STAGING_DIR)/stamp/.$(PKG_NAME)-installed
-       @rm -rf $(PKG_BUILD_DIR)
+       rm -f $(STAGING_DIR)/packages/$(PKG_NAME).list $(STAGING_DIR_HOST)/packages/$(PKG_NAME).list
+       rm -rf $(PKG_BUILD_DIR)