summaryrefslogtreecommitdiffstats
path: root/include/package.mk
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@openwrt.org>2007-12-25 01:39:15 +0000
committerFelix Fietkau <nbd@openwrt.org>2007-12-25 01:39:15 +0000
commit957103c3377fe2736da11dafdddd287579d76f9a (patch)
treed08e934bf4cf808524ba18d0cc626c07b1faf792 /include/package.mk
parenta09f80dfdaedb91db6919df2de02b9996835dffd (diff)
downloadmaster-31e0f0ae-957103c3377fe2736da11dafdddd287579d76f9a.tar.gz
master-31e0f0ae-957103c3377fe2736da11dafdddd287579d76f9a.tar.bz2
master-31e0f0ae-957103c3377fe2736da11dafdddd287579d76f9a.zip
add automatic file tracking and uninstallation for files installed in $(STAGING_DIR) and $(STAGING_DIR_HOST)
SVN-Revision: 9905
Diffstat (limited to 'include/package.mk')
-rw-r--r--include/package.mk30
1 files changed, 25 insertions, 5 deletions
diff --git a/include/package.mk b/include/package.mk
index 9ab3a2cd5c..c3e2b6f481 100644
--- a/include/package.mk
+++ b/include/package.mk
@@ -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)