build: fix STAGING_DIR cleaning for packages
authorJeffery To <jeffery.to@gmail.com>
Wed, 12 Dec 2018 17:33:36 +0000 (01:33 +0800)
committerJo-Philipp Wich <jo@mein.io>
Wed, 30 Jan 2019 11:32:07 +0000 (12:32 +0100)
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 <jeffery.to@gmail.com>
include/package.mk
scripts/clean-package.sh

index a03db11119c454e0967c333bca59359c559754a3..569ad647d6db2392026f8300b951047b4f862220 100644 (file)
@@ -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
index d1a257889d96acceadc098beb5389d4302347e74..e580566a528e0d613f22830012f0801979e13ba1 100755 (executable)
@@ -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