From: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
To: buildroot@busybox.net
Subject: [Buildroot] [RFCv3 13/15] core: change host RPATH handling
Date: Fri, 29 Dec 2017 21:20:34 +0100 [thread overview]
Message-ID: <20171229212034.416e8b23@windsurf.lan> (raw)
In-Reply-To: <20171229173118.GP3176@scaer>
Hello,
On Fri, 29 Dec 2017 18:31:18 +0100, Yann E. MORIN wrote:
> > In order to achieve this, the following changes are made:
> >
> > - HOST_LDFLAGS no longer contains -Wl,-rpath,$(HOST_DIR)
> >
> > - The hook that ran at the end of every package installation
> > (check_host_rpath) to verify that our hardcoded RPATH is indeed
> > present in all binaries is removed, as it is no longer needed: we
> > will force $ORIGIN/../LIB as an RPATH in all binaries.
>
> Then you can just get rid of support/scripts/check-host-rpath that is
> now no longer used.
True.
>
> > - host-patchelf is added as a dependency of all packages, except
> > itself. This is necessary as all packages now need to run patchelf
> > at the end of their installation process.
> >
> > TODO: things like host-tar, host-lzip and host-ccache will have to
> > be handled properly.
In fact, this TODO was no longer accurate: I did take care of host-tar,
host-lzip and host-ccache as part of this RFCv3. However...
> Indeed, because the very moment that patchelf is available, the next
> package will trigger patchelf on all executables, which means that
> package will be responsible for touching files from previous packages,
> and thus will trigger the no-two-packages-should-touch-the-same-file
> check.
... I indeed didn't think of this problem. I see two possibilities to
address this:
1. Have host-patchelf built earlier. I.e have only host-tar be a
dependency of host-patchelf and nothing else (in my current patch
series, host-patchelf is built after host-tar, host-xz, host-lzip,
host-ccache). This requires using HOSTCC_NOCCACHE to build host-tar
and host-patchelf, but I don't think it's a big deal. And then do a
special case in fix-rpath to not fix the rpath of the tar program,
since it should not have dependencies on libraries in HOST_DIR/lib
2. Make the RPATH fixing logic smarter, and don't set a RPATH to
$ORIGIN/../lib if the program doesn't use a library that is in
HOST_DIR/lib. This is perhaps the most pretty solution.
> > This change is independent from the per-package SDK functionality, and
> > could be applied separately.
>
> Except it requires the host-tar et al. stuff to be handled first.
Which is why the host-tar and al. stuff is earlier. What I meant with
this sentence is that reworking the host RPATH handling can be applied
*before* we switch to per-package SDK.
Best regards,
Thomas
--
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux and Kernel engineering
http://free-electrons.com
next prev parent reply other threads:[~2017-12-29 20:20 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
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 [this message]
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=20171229212034.416e8b23@windsurf.lan \
--to=thomas.petazzoni@free-electrons.com \
--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.