From: Yann E. MORIN <yann.morin.1998@free.fr>
To: buildroot@busybox.net
Subject: [Buildroot] [RFCv3 05/15] pkg-generic: add .stamp_installed step
Date: Fri, 29 Dec 2017 16:30:48 +0100 [thread overview]
Message-ID: <20171229153048.GG3176@scaer> (raw)
In-Reply-To: <20171201205352.24287-6-thomas.petazzoni@free-electrons.com>
Thomas, All,
On 2017-12-01 21:53 +0100, Thomas Petazzoni spake thusly:
> The installation to target, staging and images as well as the host
> installation are all done in 4 different make targets. We don't have
> any place currently to run something at the end of a package
> installation, i.e once all of target/staging/images (for target) or
> host (for host) installation have completed.
>
> We will need such a step to fix the RPATH of binaries in the host
> directory. Indeed, while normally only host packages should install
> things in $(HOST_DIR), in practice a number of target packages (ex:
> qt4, qt5base) do install things in $(HOST_DIR).
>
> Therefore, we want to run our RPATH fixing logic at the end of all
> installation steps. To achieve this, this commit introduces a new make
> target, .stamp_installed, which depends on
> .stamp_{target,staging,images}_installed for target packages and
> .stamp_host_installed for host packages.
>
> This new step currently doesn't do anything, but the actual logic is
> added in a follow-up commit.
>
> This change in fact makes the overall step sequencing more logical:
> for all steps the dependencies were done on the stamp file targets,
> except for the install step where we were using phony targets to make
> $(1)-install depends on $(1)-install-{target,staging,images,host}. So
> now, the phony targets $(1)-install-{target,staging,images,host} are
> only human-readable targets that are shortcuts to the corresponding
> stamp file targets, and not usded anymore for the step
> sequencing. This makes them more consistent with the other phony
> $(1)-{build,configure,patch,...} phony targets.
>
> It also makes $(1)-install-host more consistent with other phony
> targets: $(1)-install-target only existed if the package had
> <pkg>_INSTALL_TARGET = YES, but $(1)-install-host existed
> unconditionally. Now it only exists if it's a host package.
>
> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Reviewed-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Regards,
Yann E. MORIN.
> ---
> Changes since v2:
> - None
> Changes since v1:
> - New patch.
> ---
> package/pkg-generic.mk | 44 +++++++++++++++++++++++++++-----------------
> 1 file changed, 27 insertions(+), 17 deletions(-)
>
> diff --git a/package/pkg-generic.mk b/package/pkg-generic.mk
> index 0019814276..2b821e9bdf 100644
> --- a/package/pkg-generic.mk
> +++ b/package/pkg-generic.mk
> @@ -340,6 +340,12 @@ $(BUILD_DIR)/%/.stamp_target_installed:
> @$(call step_end,install-target)
> $(Q)touch $@
>
> +# Finalize installation
> +$(BUILD_DIR)/%/.stamp_installed:
> + @$(call step_start,install)
> + @$(call step_end,install)
> + $(Q)touch $@
> +
> # Remove package sources
> $(BUILD_DIR)/%/.stamp_dircleaned:
> rm -Rf $(@D)
> @@ -595,6 +601,7 @@ $(2)_TARGET_INSTALL_TARGET = $$($(2)_DIR)/.stamp_target_installed
> $(2)_TARGET_INSTALL_STAGING = $$($(2)_DIR)/.stamp_staging_installed
> $(2)_TARGET_INSTALL_IMAGES = $$($(2)_DIR)/.stamp_images_installed
> $(2)_TARGET_INSTALL_HOST = $$($(2)_DIR)/.stamp_host_installed
> +$(2)_TARGET_INSTALL = $$($(2)_DIR)/.stamp_installed
> $(2)_TARGET_BUILD = $$($(2)_DIR)/.stamp_built
> $(2)_TARGET_CONFIGURE = $$($(2)_DIR)/.stamp_configured
> $(2)_TARGET_RSYNC = $$($(2)_DIR)/.stamp_rsynced
> @@ -642,38 +649,40 @@ $(2)_ROOTFS_POST_CMD_HOOKS ?=
> # human-friendly targets and target sequencing
> $(1): $(1)-install
>
> +$(1)-install: $$($(2)_TARGET_INSTALL)
> +
> ifeq ($$($(2)_TYPE),host)
> -$(1)-install: $(1)-install-host
> -else
> -$(1)-install: $(1)-install-staging $(1)-install-target $(1)-install-images
> -endif
> +
> +$(1)-install-host: $$($(2)_TARGET_INSTALL_HOST)
> +$$($(2)_TARGET_INSTALL): $$($(2)_TARGET_INSTALL_HOST)
> +
> +else # host vs. target
>
> ifeq ($$($(2)_INSTALL_TARGET),YES)
> $(1)-install-target: $$($(2)_TARGET_INSTALL_TARGET)
> -$$($(2)_TARGET_INSTALL_TARGET): $$($(2)_TARGET_BUILD)
> -else
> -$(1)-install-target:
> +$$($(2)_TARGET_INSTALL): $$($(2)_TARGET_INSTALL_TARGET)
> endif
>
> ifeq ($$($(2)_INSTALL_STAGING),YES)
> -$(1)-install-staging: $$($(2)_TARGET_INSTALL_STAGING)
> -$$($(2)_TARGET_INSTALL_STAGING): $$($(2)_TARGET_BUILD)
> -# Some packages use install-staging stuff for install-target
> -$$($(2)_TARGET_INSTALL_TARGET): $$($(2)_TARGET_INSTALL_STAGING)
> -else
> -$(1)-install-staging:
> +$(1)-install-staging: $$($(2)_TARGET_INSTALL_STAGING)
> +$$($(2)_TARGET_INSTALL): $$($(2)_TARGET_INSTALL_STAGING)
> endif
>
> ifeq ($$($(2)_INSTALL_IMAGES),YES)
> $(1)-install-images: $$($(2)_TARGET_INSTALL_IMAGES)
> -$$($(2)_TARGET_INSTALL_IMAGES): $$($(2)_TARGET_BUILD)
> -else
> -$(1)-install-images:
> +$$($(2)_TARGET_INSTALL): $$($(2)_TARGET_INSTALL_IMAGES)
> endif
>
> -$(1)-install-host: $$($(2)_TARGET_INSTALL_HOST)
> +endif # host vs.target
> +
> +$$($(2)_TARGET_INSTALL_TARGET): $$($(2)_TARGET_BUILD)
> +$$($(2)_TARGET_INSTALL_STAGING):$$($(2)_TARGET_BUILD)
> +$$($(2)_TARGET_INSTALL_IMAGES): $$($(2)_TARGET_BUILD)
> $$($(2)_TARGET_INSTALL_HOST): $$($(2)_TARGET_BUILD)
>
> +# Some packages use install-staging stuff for install-target
> +$$($(2)_TARGET_INSTALL_TARGET): $$($(2)_TARGET_INSTALL_STAGING)
> +
> $(1)-build: $$($(2)_TARGET_BUILD)
> $$($(2)_TARGET_BUILD): $$($(2)_TARGET_CONFIGURE)
>
> @@ -813,6 +822,7 @@ $(1)-reconfigure: $(1)-clean-for-reconfigure $(1)
>
> # define the PKG variable for all targets, containing the
> # uppercase package variable prefix
> +$$($(2)_TARGET_INSTALL): PKG=$(2)
> $$($(2)_TARGET_INSTALL_TARGET): PKG=$(2)
> $$($(2)_TARGET_INSTALL_STAGING): PKG=$(2)
> $$($(2)_TARGET_INSTALL_IMAGES): PKG=$(2)
> --
> 2.13.6
>
--
.-----------------.--------------------.------------------.--------------------.
| Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ |
| +33 223 225 172 `------------.-------: X AGAINST | \e/ There is no |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. |
'------------------------------^-------^------------------^--------------------'
next prev parent reply other threads:[~2017-12-29 15:30 UTC|newest]
Thread overview: 56+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-12-01 20:53 [Buildroot] [RFCv3 00/15] Per-package host/target directory support Thomas Petazzoni
2017-12-01 20:53 ` [Buildroot] [RFCv3 01/15] pkgconf: use relative path to STAGING_DIR instead of absolute path Thomas Petazzoni
2017-12-29 15:22 ` Yann E. MORIN
2017-12-31 17:24 ` Thomas Petazzoni
2017-12-01 20:53 ` [Buildroot] [RFCv3 02/15] toolchain: post-pone evaluation of TOOLCHAIN_EXTERNAL_BIN Thomas Petazzoni
2017-12-29 15:22 ` Yann E. MORIN
2017-12-31 17:24 ` Thomas Petazzoni
2017-12-01 20:53 ` [Buildroot] [RFCv3 03/15] Makefile, skeleton: move the host skeleton logic to host-skeleton package Thomas Petazzoni
2017-12-03 22:22 ` Yann E. MORIN
2017-12-01 20:53 ` [Buildroot] [RFCv3 04/15] pkg-cmake: install CMake files as part of a package Thomas Petazzoni
2017-12-03 22:34 ` Yann E. MORIN
2017-12-03 22:55 ` Thomas Petazzoni
2017-12-29 15:27 ` Yann E. MORIN
2017-12-01 20:53 ` [Buildroot] [RFCv3 05/15] pkg-generic: add .stamp_installed step Thomas Petazzoni
2017-12-29 15:30 ` Yann E. MORIN [this message]
2018-02-22 21:48 ` Matthew Weber
2018-02-22 22:27 ` Thomas Petazzoni
2017-12-01 20:53 ` [Buildroot] [RFCv3 06/15] package/pkg-generic: add the concept of extract dependency Thomas Petazzoni
2017-12-29 15:33 ` Yann E. MORIN
2017-12-01 20:53 ` [Buildroot] [RFCv3 07/15] package/pkg-generic: handle host-tar as an " Thomas Petazzoni
2017-12-02 15:06 ` Yann E. MORIN
2017-12-02 20:19 ` Thomas Petazzoni
2017-12-29 15:34 ` Yann E. MORIN
2017-12-01 20:53 ` [Buildroot] [RFCv3 08/15] package/pkg-generic: handle host-xz " Thomas Petazzoni
2017-12-02 15:08 ` Yann E. MORIN
2017-12-02 20:16 ` Thomas Petazzoni
2017-12-03 8:32 ` Yann E. MORIN
2017-12-03 9:29 ` Thomas Petazzoni
2017-12-03 9:34 ` Yann E. MORIN
2017-12-29 15:36 ` Yann E. MORIN
2017-12-01 20:53 ` [Buildroot] [RFCv3 09/15] package/pkg-generic: handle host-lzip " Thomas Petazzoni
2017-12-02 15:12 ` Yann E. MORIN
2017-12-02 20:13 ` Thomas Petazzoni
2017-12-29 15:36 ` Yann E. MORIN
2017-12-01 20:53 ` [Buildroot] [RFCv3 10/15] package/pkg-generic: handle host-ccache as a regular dependency Thomas Petazzoni
2017-12-29 15:42 ` Yann E. MORIN
2017-12-29 15:48 ` Thomas Petazzoni
2017-12-01 20:53 ` [Buildroot] [RFCv3 11/15] package/pkg-generic: handle host-fakedate " Thomas Petazzoni
2017-12-29 15:50 ` Yann E. MORIN
2017-12-01 20:53 ` [Buildroot] [RFCv3 12/15] core: kill DEPENDENCIES_HOST_PREREQ Thomas Petazzoni
2017-12-29 15:53 ` Yann E. MORIN
2017-12-01 20:53 ` [Buildroot] [RFCv3 13/15] core: change host RPATH handling Thomas Petazzoni
2017-12-29 17:31 ` Yann E. MORIN
2017-12-29 20:20 ` Thomas Petazzoni
2017-12-30 13:56 ` Yann E. MORIN
2018-02-06 0:00 ` Matthew Weber
2018-02-06 22:04 ` Matthew Weber
2018-02-06 23:19 ` Arnout Vandecappelle
2018-02-07 6:30 ` Matthew Weber
2017-12-01 20:53 ` [Buildroot] [RFCv3 14/15] Makefile: evaluate CCACHE and HOST{CC, CXX} at time of use Thomas Petazzoni
2017-12-29 17:32 ` Yann E. MORIN
2017-12-01 20:53 ` [Buildroot] [RFCv3 15/15] core: implement per-package SDK and target Thomas Petazzoni
2018-02-06 14:45 ` Matthew Weber
2018-02-06 22:00 ` Arnout Vandecappelle
2018-02-06 22:39 ` Matthew Weber
2018-01-08 22:41 ` [Buildroot] [RFCv3 00/15] Per-package host/target directory support Thomas Petazzoni
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=20171229153048.GG3176@scaer \
--to=yann.morin.1998@free.fr \
--cc=buildroot@busybox.net \
/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.