Message ID | 20221227154300.10556-1-brandon.maier@collins.com |
---|---|
State | Accepted |
Headers | show |
Series | [v2,1/1] Makefile: fix SDK relocation for per-package-dirs | expand |
On Tue, Dec 27, 2022 at 7:43 AM Brandon Maier via buildroot <buildroot@buildroot.org> wrote: > > 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 <brandon.maier@collins.com> Acked-by: Charles Hardin <ckhardin@gmail.com> Tested and verified the host paths in the shasum as an example > --- > v2: > - drop original implementation in favor of reusing the existing > PPD_FIXUP_PATHS code. > --- > 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 88f90cd2fa..ac3540b36c 100644 > --- a/Makefile > +++ b/Makefile > @@ -598,6 +598,7 @@ prepare-sdk: world > @$(call MESSAGE,"Rendering the SDK relocatable") > PER_PACKAGE_DIR=$(PER_PACKAGE_DIR) $(TOPDIR)/support/scripts/fix-rpath host > 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 f24e03a325..210af1bbef 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 0945e6ed31..f22562fbed 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 > > # > -- > 2.39.0 > > _______________________________________________ > buildroot mailing list > buildroot@buildroot.org > https://lists.buildroot.org/mailman/listinfo/buildroot
On 27/12/2022 16:43, Brandon Maier wrote: > 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 <brandon.maier@collins.com> Applied to master, thanks. And thank you Charles for the review. Regards, Arnout > --- > v2: > - drop original implementation in favor of reusing the existing > PPD_FIXUP_PATHS code. > --- > 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 88f90cd2fa..ac3540b36c 100644 > --- a/Makefile > +++ b/Makefile > @@ -598,6 +598,7 @@ prepare-sdk: world > @$(call MESSAGE,"Rendering the SDK relocatable") > PER_PACKAGE_DIR=$(PER_PACKAGE_DIR) $(TOPDIR)/support/scripts/fix-rpath host > 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 f24e03a325..210af1bbef 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 0945e6ed31..f22562fbed 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 > > #
>>>>> "Arnout" == Arnout Vandecappelle via buildroot <buildroot@buildroot.org> writes: > On 27/12/2022 16:43, Brandon Maier wrote: >> 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 <brandon.maier@collins.com> > Applied to master, thanks. > And thank you Charles for the review. Committed to 2023.02.x and 2023.08.x, thanks.
diff --git a/Makefile b/Makefile index 88f90cd2fa..ac3540b36c 100644 --- a/Makefile +++ b/Makefile @@ -598,6 +598,7 @@ prepare-sdk: world @$(call MESSAGE,"Rendering the SDK relocatable") PER_PACKAGE_DIR=$(PER_PACKAGE_DIR) $(TOPDIR)/support/scripts/fix-rpath host 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 f24e03a325..210af1bbef 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 0945e6ed31..f22562fbed 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 #
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 <brandon.maier@collins.com> --- v2: - drop original implementation in favor of reusing the existing PPD_FIXUP_PATHS code. --- Makefile | 1 + package/pkg-generic.mk | 12 +----------- package/pkg-utils.mk | 15 +++++++++++++++ 3 files changed, 17 insertions(+), 11 deletions(-)