From: Jeffery To Date: Wed, 12 Dec 2018 17:33:36 +0000 (+0800) Subject: build: fix STAGING_DIR cleaning for packages X-Git-Tag: v18.06.2~4 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=b98b55a64fb633d7901f9db5529e52e3175300e9;p=oweals%2Fopenwrt.git build: fix STAGING_DIR cleaning for packages This fixes two issues with cleaning package files from STAGING_DIR: * CleanStaging currently can only remove files and not directories. This changes CleanStaging to use clean-package.sh, which does remove directories. * Because of the way directories are ordered in the staging files list, clean-package.sh currently tries (and fails) to remove parent directories before removing subdirectories. This changes clean-package.sh to process the staging files list in reverse, so that subdirectories are removed first. Signed-off-by: Jeffery To (cherry picked from commit a1170936798e519776de605d6986ccb72f04cb06) --- diff --git a/include/package.mk b/include/package.mk index a03db11119..569ad647d6 100644 --- a/include/package.mk +++ b/include/package.mk @@ -81,9 +81,10 @@ STAGING_FILES_LIST:=$(PKG_DIR_NAME)$(if $(BUILD_VARIANT),.$(BUILD_VARIANT),).lis define CleanStaging rm -f $(STAMP_INSTALLED) @-(\ - cd "$(STAGING_DIR)"; \ - if [ -f packages/$(STAGING_FILES_LIST) ]; then \ - cat packages/$(STAGING_FILES_LIST) | xargs -r rm -f 2>/dev/null; \ + if [ -f $(STAGING_DIR)/packages/$(STAGING_FILES_LIST) ]; then \ + $(SCRIPT_DIR)/clean-package.sh \ + "$(STAGING_DIR)/packages/$(STAGING_FILES_LIST)" \ + "$(STAGING_DIR)"; \ fi; \ ) endef diff --git a/scripts/clean-package.sh b/scripts/clean-package.sh index d1a257889d..e580566a52 100755 --- a/scripts/clean-package.sh +++ b/scripts/clean-package.sh @@ -14,7 +14,7 @@ cat "$1" | ( [ -f "$entry" ] && rm -f $entry done ) -cat "$1" | ( +sort -r "$1" | ( cd "$2" while read entry; do [ -n "$entry" ] || break