base-files: implement -l (--list-backup) sysupgrade parameter to list the files that...
[openwrt.git] / package / Makefile
index eab3f85..f800234 100644 (file)
@@ -16,7 +16,12 @@ else
   $(curdir)/builddirs-prereq:=. $(sort $(prereq-y) $(prereq-m))
 endif
 ifneq ($(IGNORE_ERRORS),)
-  $(curdir)/builddirs-ignore-compile:= $(if $(filter n m y, $(IGNORE_ERRORS)),$(foreach m,$(IGNORE_ERRORS),$(package-$(subst n,,$(m)))),$(package-m) $(package-))
+  package-y-filter := $(package-y)
+  package-m-filter := $(filter-out $(package-y),$(package-m))
+  package-n-filter := $(filter-out $(package-y) $(package-m),$(package-))
+  package-ignore-errors := $(filter n m y,$(IGNORE_ERRORS))
+  package-ignore-errors := $(if $(package-ignore-errors),$(package-ignore-errors),n m)
+  $(curdir)/builddirs-ignore-compile := $(foreach m,$(package-ignore-errors),$(package-$(m)-filter))
 endif
 
 ifdef CONFIG_USE_MKLIBS
@@ -70,8 +75,19 @@ OPKG:= \
        --add-arch all:100 \
        --add-arch $(if $(ARCH_PACKAGES),$(ARCH_PACKAGES),$(BOARD)):200
 
-PACKAGE_INSTALL:=$(sort $(foreach pkg,$(package-y),$(lastword $(subst /,$(space),$(pkg)))))
-PACKAGE_INSTALL_FILES:=$(patsubst %,$(PKG_INFO_DIR)/%.*.install,$(PACKAGE_INSTALL))
+PACKAGE_INSTALL_FILES:= \
+       $(foreach pkg,$(sort $(package-y)), \
+               $(foreach variant, \
+                       $(if $(package/$(pkg)/variants), \
+                               $(package/$(pkg)/variants), \
+                               $(if $(package/$(pkg)/default-variant), \
+                                       $(package/$(pkg)/default-variant), \
+                                       default \
+                               ) \
+                       ), \
+                       $(PKG_INFO_DIR)/$(lastword $(subst /,$(space),$(pkg))).$(variant).install \
+               ) \
+       )
 
 $(curdir)/cleanup: $(TMP_DIR)/.build
        rm -rf $(STAGING_DIR_ROOT)
@@ -89,15 +105,7 @@ $(curdir)/install: $(TMP_DIR)/.build
        done || true
        @-$(MAKE) package/preconfig
        @if [ -d $(TOPDIR)/files ]; then \
-               ( cd $(TOPDIR)/files; find -type f ) | \
-                       ( cd $(TARGET_DIR); while :; do \
-                               read FILE; \
-                               [ -z "$$FILE" ] && break; \
-                               [ -L "$$FILE" ] || continue; \
-                               echo "Removing symlink $(TARGET_DIR)/$$FILE"; \
-                               rm -f "$$FILE"; \
-                       done; ); \
-               $(CP) $(TOPDIR)/files/. $(TARGET_DIR); \
+               $(call file_copy,$(TOPDIR)/files/.,$(TARGET_DIR)); \
        fi
        @mkdir -p $(TARGET_DIR)/etc/rc.d
        @( \