From 728fb15aff43e37aa3be02fb3d97277f825b504b Mon Sep 17 00:00:00 2001 From: John Crispin Date: Sat, 19 Sep 2026 09:31:58 +0200 Subject: [PATCH] build: use a separate staging directory per build variant All variants of a package collect their InstallDev files in the same directory below $(TMP_DIR) and remove it before and after use. Add the build variant to its name, as for the staging file list, so that the variants of a package do not share it. Signed-off-by: John Crispin --- include/package.mk | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/include/package.mk b/include/package.mk index 0e0cea5f49a..5ab78cac685 100644 --- a/include/package.mk +++ b/include/package.mk @@ -131,6 +131,7 @@ STAMP_BUILT:=$(PKG_BUILD_DIR)/.built STAMP_INSTALLED:=$(STAGING_DIR)/stamp/.$(PKG_DIR_NAME)$(if $(BUILD_VARIANT),.$(BUILD_VARIANT),)_installed STAGING_FILES_LIST:=$(PKG_DIR_NAME)$(if $(BUILD_VARIANT),.$(BUILD_VARIANT),).list +STAGING_TMP_DIR:=$(TMP_DIR)/stage-$(PKG_DIR_NAME)$(if $(BUILD_VARIANT),.$(BUILD_VARIANT),) define CleanStaging rm -f $(STAMP_INSTALLED) @@ -273,28 +274,28 @@ define Build/CoreTargets $(STAMP_INSTALLED) : export PATH=$$(TARGET_PATH_PKG) $(STAMP_INSTALLED): $(STAMP_BUILT) - rm -rf $(TMP_DIR)/stage-$(PKG_DIR_NAME) - mkdir -p $(TMP_DIR)/stage-$(PKG_DIR_NAME)/host $(STAGING_DIR)/packages + rm -rf $(STAGING_TMP_DIR) + mkdir -p $(STAGING_TMP_DIR)/host $(STAGING_DIR)/packages $(foreach hook,$(Hooks/InstallDev/Pre),\ - $(call $(hook),$(TMP_DIR)/stage-$(PKG_DIR_NAME),$(TMP_DIR)/stage-$(PKG_DIR_NAME)/host)$(sep)\ + $(call $(hook),$(STAGING_TMP_DIR),$(STAGING_TMP_DIR)/host)$(sep)\ ) - $(call Build/InstallDev,$(TMP_DIR)/stage-$(PKG_DIR_NAME),$(TMP_DIR)/stage-$(PKG_DIR_NAME)/host) + $(call Build/InstallDev,$(STAGING_TMP_DIR),$(STAGING_TMP_DIR)/host) $(foreach hook,$(Hooks/InstallDev/Post),\ - $(call $(hook),$(TMP_DIR)/stage-$(PKG_DIR_NAME),$(TMP_DIR)/stage-$(PKG_DIR_NAME)/host)$(sep)\ + $(call $(hook),$(STAGING_TMP_DIR),$(STAGING_TMP_DIR)/host)$(sep)\ ) if [ -f $(STAGING_DIR)/packages/$(STAGING_FILES_LIST) ]; then \ $(SCRIPT_DIR)/clean-package.sh \ "$(STAGING_DIR)/packages/$(STAGING_FILES_LIST)" \ "$(STAGING_DIR)"; \ fi - if [ -d $(TMP_DIR)/stage-$(PKG_DIR_NAME) ]; then \ - (cd $(TMP_DIR)/stage-$(PKG_DIR_NAME); find ./ > $(TMP_DIR)/stage-$(PKG_DIR_NAME).files); \ + if [ -d $(STAGING_TMP_DIR) ]; then \ + (cd $(STAGING_TMP_DIR); find ./ > $(STAGING_TMP_DIR).files); \ $(call locked, \ - mv $(TMP_DIR)/stage-$(PKG_DIR_NAME).files $(STAGING_DIR)/packages/$(STAGING_FILES_LIST) && \ - $(CP) $(TMP_DIR)/stage-$(PKG_DIR_NAME)/* $(STAGING_DIR)/; \ + mv $(STAGING_TMP_DIR).files $(STAGING_DIR)/packages/$(STAGING_FILES_LIST) && \ + $(CP) $(STAGING_TMP_DIR)/* $(STAGING_DIR)/; \ ,staging-dir); \ fi - rm -rf $(TMP_DIR)/stage-$(PKG_DIR_NAME) + rm -rf $(STAGING_TMP_DIR) touch $$@ ifdef Build/InstallDev