touch $(TARGET_DIR)/usr
+# AFTER ALL FILE-CHANGING ACTIONS:
+# Update timestamps in internal file list to fix attribution of files
+# to packages on subsequent builds
+ $(call step_pkg_size_file_list,$(TARGET_DIR))
+ $(call step_pkg_size_finalize)
+ $(call step_pkg_size_file_list,$(STAGING_DIR),-staging)
+ $(call step_pkg_size_finalize,-staging)
+ $(call step_pkg_size_file_list,$(HOST_DIR),-host)
+ $(call step_pkg_size_finalize,-host)
+
.PHONY: target-post-image
target-post-image: $(TARGETS_ROOTFS) target-finalize staging-finalize
@rm -f $(ROOTFS_COMMON_TAR)
# Hooks to collect statistics about installed files
+# Helper function to create the file list -- also used from target-finalize
+# $(1): base directory to search in
+# $(2): suffix of file (optional)
+define step_pkg_size_file_list
+ cd $(1); \
+ LC_ALL=C find . \( -type f -o -type l \) -printf '%T@:%i:%#m:%y:%s,%p\n' \
+ | LC_ALL=C sort > $(BUILD_DIR)/.files-list$(2).new
+endef
+
+# Helper function to mark the latest file list as the reference for next
+# iteration -- also used from target-finalize
+# $(1): suffix of file (optional)
+define step_pkg_size_finalize
+ mv $(BUILD_DIR)/.files-list$(1).new \
+ $(BUILD_DIR)/.files-list$(1).stat
+endef
+
# The suffix is typically empty for the target variant, for legacy backward
# compatibility.
# $(1): package name
@touch $(BUILD_DIR)/.files-list$(3).stat
@touch $(BUILD_DIR)/packages-file-list$(3).txt
$(SED) '/^$(1),/d' $(BUILD_DIR)/packages-file-list$(3).txt
- cd $(2); \
- LC_ALL=C find . \( -type f -o -type l \) -printf '%T@:%i:%#m:%y:%s,%p\n' \
- | LC_ALL=C sort > $(BUILD_DIR)/.files-list$(3).new
+ $(call step_pkg_size_file_list,$(2),$(3))
LC_ALL=C comm -13 \
$(BUILD_DIR)/.files-list$(3).stat \
$(BUILD_DIR)/.files-list$(3).new \
sed -r -e 's/^[^,]+/$(1)/' \
$($(PKG)_BUILDDIR)/.files-list$(3).txt \
>> $(BUILD_DIR)/packages-file-list$(3).txt
- mv $(BUILD_DIR)/.files-list$(3).new \
- $(BUILD_DIR)/.files-list$(3).stat
+ $(call step_pkg_size_finalize,$(3))
endef
define step_pkg_size