build: clean up stale files from a previous build when installing a package build to the staging dir

Signed-off-by: Felix Fietkau <nbd@openwrt.org>

git-svn-id: svn://svn.openwrt.org/openwrt/trunk@36755 3c298f89-4303-0410-b956-a3cf2f4a3e73
master
Felix Fietkau 2013-05-29 10:31:45 +00:00
parent b8b35e19ba
commit 08f8c7edaf
2 changed files with 29 additions and 0 deletions

View File

@ -171,6 +171,11 @@ define Build/DefaultTargets
$(foreach hook,$(Hooks/InstallDev/Post),\
$(call $(hook),$(TMP_DIR)/stage-$(PKG_NAME),$(TMP_DIR)/stage-$(PKG_NAME)/host)$(sep)\
)
if [ -f $(STAGING_DIR)/packages/$(STAGING_FILES_LIST) ]; then \
$(SCRIPT_DIR)/clean-package.sh \
"$(STAGING_DIR)/packages/$(STAGING_FILES_LIST)" \
"$(STAGING_DIR)"; \
fi
if [ -d $(TMP_DIR)/stage-$(PKG_NAME) ]; then \
(cd $(TMP_DIR)/stage-$(PKG_NAME); find ./ > $(TMP_DIR)/stage-$(PKG_NAME).files); \
$(call locked, \

24
scripts/clean-package.sh Executable file
View File

@ -0,0 +1,24 @@
#!/usr/bin/env bash
[ -n "$1" -a -n "$2" ] || {
echo "Usage: $0 <file> <directory>"
exit 1
}
[ -f "$1" -a -d "$2" ] || {
echo "File/directory not found"
exit 1
}
cat "$1" | (
cd "$2"
while read entry; do
[ -n "$entry" ] || break
[ -f "$entry" ] && rm -f $entry
done
)
cat "$1" | (
cd "$2"
while read entry; do
[ -n "$entry" ] || break
[ -d "$entry" ] && rmdir "$entry" > /dev/null 2>&1
done
)
true