From 25e60fbe1cabb678952330a8d8d48efe7f8e5048 Mon Sep 17 00:00:00 2001 From: Brandon Maier Date: Tue, 27 Dec 2022 09:43:00 -0600 Subject: [PATCH] Makefile: fix SDK relocation for per-package-dirs The relocate-sdk.sh script does not work correctly when BR2_PER_PACKAGE_DIRECTORIES is enabled. relocate-sdk.sh expects everything to point at $HOST_DIR, but each package will be pointing at its $(O)/per-package/*/host. Use the same command for scrubing host paths during the build, to scrub to the final host directory location. Signed-off-by: Brandon Maier Acked-by: Charles Hardin Signed-off-by: Arnout Vandecappelle --- Makefile | 1 + package/pkg-generic.mk | 12 +----------- package/pkg-utils.mk | 15 +++++++++++++++ 3 files changed, 17 insertions(+), 11 deletions(-) diff --git a/Makefile b/Makefile index dc4dbc64e1..f87f4458ba 100644 --- a/Makefile +++ b/Makefile @@ -600,6 +600,7 @@ prepare-sdk: world PARALLEL_JOBS=$(PARALLEL_JOBS) \ PER_PACKAGE_DIR=$(PER_PACKAGE_DIR) \ $(TOPDIR)/support/scripts/fix-rpath staging + $(call ppd-fixup-paths,$(BASE_DIR)) $(INSTALL) -m 755 $(TOPDIR)/support/misc/relocate-sdk.sh $(HOST_DIR)/relocate-sdk.sh mkdir -p $(HOST_DIR)/share/buildroot echo $(HOST_DIR) > $(HOST_DIR)/share/buildroot/sdk-location diff --git a/package/pkg-generic.mk b/package/pkg-generic.mk index 6e944dd6b7..e140145ee3 100644 --- a/package/pkg-generic.mk +++ b/package/pkg-generic.mk @@ -92,18 +92,8 @@ endif ifeq ($(BR2_PER_PACKAGE_DIRECTORIES),y) -# Ensure files like .la, .pc, .pri, .cmake, and so on, point to the -# proper staging and host directories for the current package: find -# all text files that contain the PPD root, and replace it with the -# current package's PPD. define PPD_FIXUP_PATHS - $(Q)grep --binary-files=without-match -lrZ '$(PER_PACKAGE_DIR)/[^/]\+/' $(HOST_DIR) \ - |while read -d '' f; do \ - file -b --mime-type "$${f}" | grep -q '^text/' || continue; \ - printf '%s\0' "$${f}"; \ - done \ - |xargs -0 --no-run-if-empty \ - $(SED) 's:$(PER_PACKAGE_DIR)/[^/]\+/:$(PER_PACKAGE_DIR)/$($(PKG)_NAME)/:g' + $(call ppd-fixup-paths,$(PER_PACKAGE_DIR)/$($(PKG)_NAME)) endef # Remove python's pre-compiled "sysconfigdata", as it may contain paths to diff --git a/package/pkg-utils.mk b/package/pkg-utils.mk index bdbdf20c23..ba3da68a7b 100644 --- a/package/pkg-utils.mk +++ b/package/pkg-utils.mk @@ -233,6 +233,21 @@ define prepare-per-package-directory $(call per-package-rsync,$(1),host,$(HOST_DIR)) $(call per-package-rsync,$(1),target,$(TARGET_DIR)) endef + +# Ensure files like .la, .pc, .pri, .cmake, and so on, point to the +# proper staging and host directories for the current package: find +# all text files that contain the PPD root, and replace it with the +# current package's PPD. +# $1: destination root directory containing host and staging +define ppd-fixup-paths + $(Q)grep --binary-files=without-match -lrZ '$(PER_PACKAGE_DIR)/[^/]\+/' $(HOST_DIR) \ + |while read -d '' f; do \ + file -b --mime-type "$${f}" | grep -q '^text/' || continue; \ + printf '%s\0' "$${f}"; \ + done \ + |xargs -0 --no-run-if-empty \ + $(SED) 's:$(PER_PACKAGE_DIR)/[^/]\+/:$(1)/:g' +endef endif #