image: fix CONFIG_CLEAN_IPKG with CONFIG_TARGET_PER_DEVICE_ROOTFS
authorMatthias Schiffer <mschiffer@universe-factory.net>
Sun, 25 Sep 2016 07:30:55 +0000 (09:30 +0200)
committerMatthias Schiffer <mschiffer@universe-factory.net>
Sun, 25 Sep 2016 07:30:55 +0000 (09:30 +0200)
Running prepare_rootfs on TARGET_DIR deletes the opkg state when
CONFIG_CLEAN_IPKG is enabled, making the per-device rootfs package install
fail.

To avoid this, create a copy of the TARGET_DIR before prepare_rootfs is run
and use this as basis for per-device rootfs generation.

Signed-off-by: Matthias Schiffer <mschiffer@universe-factory.net>
include/image.mk
include/rootfs.mk
package/Makefile

index b963735266f9f79c5e315cf4d3472419be18f442..d48b1f6abf4db74e2c339e177684cc67b7da2abb 100644 (file)
@@ -297,7 +297,7 @@ opkg_target = \
 
 target-dir-%: FORCE
        rm -rf $(mkfs_cur_target_dir) $(mkfs_cur_target_dir).opkg
-       $(CP) $(TARGET_DIR) $(mkfs_cur_target_dir)
+       $(CP) $(TARGET_DIR_ORIG) $(mkfs_cur_target_dir)
        -mv $(mkfs_cur_target_dir)/etc/opkg $(mkfs_cur_target_dir).opkg
        echo 'src default file://$(PACKAGE_DIR_ALL)' > $(mkfs_cur_target_dir).conf
        $(if $(call opkg_package_files,$(mkfs_packages_add)), \
index 6ca7c9c322690e391e393d761c78661b170df488..6a6610019f6a4fb6c07c9c45feea338e202df1fa 100644 (file)
@@ -52,6 +52,8 @@ opkg_package_files = $(wildcard \
        $(foreach dir,$(PACKAGE_SUBDIRS), \
          $(foreach pkg,$(1), $(dir)/$(pkg)_*.ipk)))
 
+TARGET_DIR_ORIG := $(TARGET_ROOTFS_DIR)/root.orig-$(BOARD)
+
 define prepare_rootfs
        @if [ -d $(TOPDIR)/files ]; then \
                $(call file_copy,$(TOPDIR)/files/.,$(1)); \
index 9f39395bae6a7ef5e912c62300285d14f575ec12..8726e2eae9c741ca073a56bfd279e8cd8661ee75 100644 (file)
@@ -54,7 +54,7 @@ $(curdir)/merge-index: $(curdir)/merge
 
 $(curdir)/install: $(TMP_DIR)/.build $(curdir)/system/opkg/host/install $(curdir)/merge $(if $(CONFIG_TARGET_PER_DEVICE_ROOTFS),$(curdir)/merge-index)
        - find $(STAGING_DIR_ROOT) -type d | $(XARGS) chmod 0755
-       rm -rf $(TARGET_DIR)
+       rm -rf $(TARGET_DIR) $(TARGET_DIR_ORIG)
        [ -d $(TARGET_DIR)/tmp ] || mkdir -p $(TARGET_DIR)/tmp
        $(call opkg,$(TARGET_DIR)) install \
                $(call opkg_package_files,$(shell cat $(PACKAGE_INSTALL_FILES) 2>/dev/null))
@@ -65,6 +65,9 @@ $(curdir)/install: $(TMP_DIR)/.build $(curdir)/system/opkg/host/install $(curdir
                done; \
        done || true
        @-$(MAKE) package/preconfig
+
+       $(CP) $(TARGET_DIR) $(TARGET_DIR_ORIG)
+
        $(call prepare_rootfs,$(TARGET_DIR))
 
 PASSOPT=""