Skip to content

Commit

Permalink
Makefile: fix SDK relocation for per-package-dirs
Browse files Browse the repository at this point in the history
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 <[email protected]>
Acked-by: Charles Hardin <[email protected]>
Signed-off-by: Arnout Vandecappelle <[email protected]>
  • Loading branch information
blmaier authored and arnout committed Oct 15, 2023
1 parent 708eb34 commit 25e60fb
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 11 deletions.
1 change: 1 addition & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
12 changes: 1 addition & 11 deletions package/pkg-generic.mk
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
15 changes: 15 additions & 0 deletions package/pkg-utils.mk
Original file line number Diff line number Diff line change
Expand Up @@ -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

#
Expand Down

0 comments on commit 25e60fb

Please sign in to comment.