From: "Yann E. MORIN" <yann.morin.1998@free.fr>
To: Adam Duskett <aduskett@gmail.com>
Cc: Thomas Petazzoni <thomas.petazzoni@bootlin.com>, buildroot@buildroot.org
Subject: Re: [Buildroot] [PATCH v4 1/1] package/pkg-generic.mk: fix absolute paths in per-package config files
Date: Sat, 8 Jan 2022 19:22:19 +0100 [thread overview]
Message-ID: <20220108182219.GE1881783@scaer> (raw)
In-Reply-To: <20220106171720.12857-1-aduskett@gmail.com>
Adam, All,
On 2022-01-06 09:17 -0800, Adam Duskett spake thusly:
> Some packages (notably qmake packages) generate .cmake, .pc, and .pri files
> with absolute paths. Unfortunately, doing so breaks per-package builds because
> the paths in those files point outside the per-package sysroot for packages
> that have rsynced those same files.
>
> - Rename FIXUP_PYTHON_SYSCONFIGDATA to FIXUP_PER_PACKAGE_FILES in pkg-generic.mk
> to avoid more calls to ifeq ($(BR2_PER_PACKAGE_DIRECTORIES),y)
>
> - Add .cmake, .pc, and .pri files to the files of which to find to sed the
> per-package paths.
>
> This simple fix allows qt5 submodule packages to build with per-package enabled.
>
> Based off of Louis-Paul's earlier work found here:
> https://lore.kernel.org/buildroot/a339f273-33f3-f232-eac4-6e50427abf6d@cordier.org/
>
> And Yann Morin's feedback found here:
> https://patchwork.ozlabs.org/project/buildroot/patch/20200217212350.29750-21-anaumann@ultratronik.de/
>
> Signed-off-by: Adam Duskett <aduskett@gmail.com>
Thanks for this iteration!
While discussing with the otehr maintainers int he room, we concluded
that we did want an even more generic soltuion, so I've sent a further
series;
https://lore.kernel.org/buildroot/cover.1641663315.git.yann.morin.1998@free.fr/T/#t
Thanks for your persistence! ;-)
Regards,
Yann E. MORIN.
> ---
> changes v3 -> v4:
> - Further compress the method by simply adding the files to the already
> existing find command. (Yann)
>
> changes v2 -> v3:
> - Rename FIXUP_PYTHON_SYSCONFIGDATA to FIXUP_PER_PACKAGE_FILES in
> pkg-generic.mk (Yann)
>
> - Combine FIXUP_CONFIG_FILES_ABSOLUTE_PATHS with FIXUP_PER_PACKAGE_FILES (Yann)
>
> changes v1 -> v2
> - Drop patches 2 and 3 and combine them into a single macro in pkg-generic.mk
> - Move the PRE_CONFIGURE_HOOK to inner-generic-package so it actually runs
> - Rename FIXUP_PC_FILES_ABSOLUTE_PATHS to FIXUP_CONFIG_FILES_ABSOLUTE_PATHS
> - Use $(HOST_DIR) instead of $(STAGING_DIR) to cover both stagin and host
> directories in a single step.
>
> package/pkg-generic.mk | 15 +++++++++++++--
> 1 file changed, 13 insertions(+), 2 deletions(-)
>
> diff --git a/package/pkg-generic.mk b/package/pkg-generic.mk
> index 6a5fe5507b..9952ff1963 100644
> --- a/package/pkg-generic.mk
> +++ b/package/pkg-generic.mk
> @@ -113,8 +113,16 @@ endif
> # fail.
> # So we just use HOST_DIR as a starting point, and filter on the two directories
> # of interest.
> +#
> +# When per-package is enabled, packages may generate files with absolute paths
> +# that point to the packages per-package sysroot. However, this breaks
> +# per-package isolation when the files are rsynced to a new package that depends
> +# on the first package. because the hard-coded paths point to directories
> +# outside the packages sysroot. Run sed on all .cmake, .pc, and .pri files in a
> +# given packages sysroot containing the word "per-package" and replace the path
> +# with the appropriate per-package directory.
> ifeq ($(BR2_PER_PACKAGE_DIRECTORIES),y)
> -define FIXUP_PYTHON_SYSCONFIGDATA
> +define FIXUP_PER_PACKAGE_FILES
> $(Q)find $(HOST_DIR) \
> \( -path '$(HOST_DIR)/lib/python*' \
> -o -path '$(STAGING_DIR)/usr/lib/python*' \
> @@ -122,6 +130,9 @@ define FIXUP_PYTHON_SYSCONFIGDATA
> \( \( -name "_sysconfigdata*.pyc" -delete \) \
> -o \( -name "_sysconfigdata*.py" -print0 \) \
> \) \
> + -o -name "*.cmake" -print0 \
> + -o -name "*.pc" -print0 \
> + -o -name "*.pri" -print0 \
> | xargs -0 --no-run-if-empty \
> $(SED) 's:$(PER_PACKAGE_DIR)/[^/]\+/:$(PER_PACKAGE_DIR)/$($(PKG)_NAME)/:g'
> endef
> @@ -836,7 +847,7 @@ $(2)_EXTRACT_CMDS ?= \
> $$(TAR_OPTIONS) -)
>
> # pre/post-steps hooks
> -$(2)_POST_PREPARE_HOOKS += FIXUP_PYTHON_SYSCONFIGDATA
> +$(2)_POST_PREPARE_HOOKS += FIXUP_PER_PACKAGE_FILES
>
> ifeq ($$($(2)_TYPE),target)
> ifneq ($$(HOST_$(2)_KCONFIG_VAR),)
> --
> 2.33.1
>
> _______________________________________________
> buildroot mailing list
> buildroot@buildroot.org
> https://lists.buildroot.org/mailman/listinfo/buildroot
--
.-----------------.--------------------.------------------.--------------------.
| Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ |
| +33 561 099 427 `------------.-------: X AGAINST | \e/ There is no |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. |
'------------------------------^-------^------------------^--------------------'
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
prev parent reply other threads:[~2022-01-08 18:22 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-01-06 17:17 [Buildroot] [PATCH v4 1/1] package/pkg-generic.mk: fix absolute paths in per-package config files Adam Duskett
2022-01-08 18:22 ` Yann E. MORIN [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20220108182219.GE1881783@scaer \
--to=yann.morin.1998@free.fr \
--cc=aduskett@gmail.com \
--cc=buildroot@buildroot.org \
--cc=thomas.petazzoni@bootlin.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.