From: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
To: buildroot@busybox.net
Subject: [Buildroot] [PATCH next v4 0/6] Per-package host/target directory support
Date: Wed, 14 Nov 2018 11:55:51 +0100 [thread overview]
Message-ID: <20181114105557.12599-1-thomas.petazzoni@bootlin.com> (raw)
Hello,
Here is a fourth iteration of the per-package SDK and target directory
implementation.
If you're interested in testing it, you can find the patch series at:
http://git.bootlin.com/users/thomas-petazzoni/buildroot/log/?h=ppsh-v4
Changes since v4
================
- Dropped patches that have been merged upstream, mainly the "extract
dependency" patches, but also a few other preparation patches.
- Dropped the change of the RPATH handling. As discussed during
previous Buildroot Developers meeting, it is not a big problem if
during the build, the RPATH of a binary points to the library
folder of another package per-package folder. Therefore, instead of
fixing up RPATH at the end of each package installation, we keep
what Buildroot does today: fix them at the very end of the build.
- Made the support for per-package folders optional. Indeed, we
realized there was no way to make sure it would be perfect from day
1. Even if the principle works, there are lots of package-specific
details to solve, and solving all of them before merging the base
per-package folder support is not reasonable. So for now, an option
BR2_PER_PACKAGE_FOLDERS is introduced, which defaults to off. When
this option is enabled, the .NOTPARALLEL statement of the main
Makefile goes away, which allows to do top-level parallel build.
- Addition of a commit that reworks how the top-level directories are
created.
- Introduction of a prepare-per-package-folder function in
pkg-generic.mk to encapsulate the logic to create the per-package
folders from the dependencies of a package.
- Rebased on top of the latest master.
Changes since v3
================
- Dropped patches that have been merged upstream:
pkgconf: use relative path to STAGING_DIR instead of absolute path
toolchain: post-pone evaluation of TOOLCHAIN_EXTERNAL_BIN
- For now, removed the most controversial/complicated patches
(changing the rpath strategy, and switching to per-package
host/target directories). The goal for now is to merge only the
preparation patches.
Changes since v2
================
- Solved the problem of all DEPENDENCIES_HOST_PREREQ targets:
host-ccache, host-tar, host-lzip, host-xz, host-fakedate.
To achieve this, introduced <pkg>_EXTRACT_DEPENDENCIES and used
that to handle the dependencies on host-tar, host-lzip and host-xz.
Used regular dependencies for host-ccache and host-fakedate.
See below for more details.
Changes since v1
================
- Rebased on the latest Buildroot next branch
- The pkg-config changes are reworked according to Arnout's comments:
only @STAGING_SUBDIR@ is replaced in pkg-config.in to generate
pkg-config, the rest of the logic is internal to the script.
- New patch to move the "host skeleton" logic into a proper
host-skeleton package.
- New patch to have the CMake related files generated as part of the
toolchain package.
- New patch to add a new "install" step that depends on the different
install steps (target, staging, images, host). This is needed to
later add some logic that is executed once all install steps of a
package have been done.
- Fix the approach to solve the RPATH logic: instead of using
LD_LIBRARY_PATH, we actually fix with patchelf the RPATH of host
binaries right after their installation.
- Misc other improvements in the per-package SDK implementation.
What is this all about ?
========================
See the cover letter of v3 for details:
http://lists.busybox.net/pipermail/buildroot/2017-December/208384.html
What remains to be done?
========================
The main problem that remains is fixing packages that don't work well
with per-package folders. I have already sent a few fixes (such as
adding missing host-pkgconf dependencies, or fixing the freetype
package), but I have setup a separate autobuilder instance to test
this, and it uncovered a number of other problematic packages:
- apr-util doesn't build, because some hardcoded paths from the "apr"
per-package folders leak into the apr-util build.
- Meson packages currently do not build, because pkg-meson.mk doesn't
use $$(HOST_DIR) to reference cross-compilation.conf, but more
importantly because cross-compilation.conf uses hardcoded paths.
- The qt5 stack is entirely broken, because qmake hardcodes the
installation path to be $(STAGING_DIR), so all qt5 packages install
to the per-package $(STAGING_DIR) of qt5base. I started working on
this topic, and will be sending a separate e-mail about this.
Best regards,
Thomas
Thomas Petazzoni (6):
Makefile: evaluate CCACHE and HOST{CC,CXX} at time of use
support/scripts/check-host-rpath: split condition on two statements
Makefile: rework main directory creation logic
Makefile: move .NOTPARALLEL statement after including .config file
Makefile: define TARGET_DIR_WARNING_FILE relative to TARGET_DIR
core: implement per-package SDK and target
Config.in | 18 ++++++
Makefile | 94 ++++++++++++++++++++------------
fs/common.mk | 3 +-
package/pkg-generic.mk | 27 ++++++++-
support/scripts/check-host-rpath | 8 ++-
5 files changed, 110 insertions(+), 40 deletions(-)
--
2.19.1
next reply other threads:[~2018-11-14 10:55 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-11-14 10:55 Thomas Petazzoni [this message]
2018-11-14 10:55 ` [Buildroot] [PATCH next v4 1/6] Makefile: evaluate CCACHE and HOST{CC, CXX} at time of use Thomas Petazzoni
2018-11-15 20:49 ` Yann E. MORIN
2018-11-14 10:55 ` [Buildroot] [PATCH next v4 2/6] support/scripts/check-host-rpath: split condition on two statements Thomas Petazzoni
2018-11-15 20:58 ` Yann E. MORIN
2018-11-14 10:55 ` [Buildroot] [PATCH next v4 3/6] Makefile: rework main directory creation logic Thomas Petazzoni
2018-11-15 21:09 ` Yann E. MORIN
2018-11-16 14:08 ` Thomas Petazzoni
2018-11-16 1:21 ` Matthew Weber
2018-11-16 14:15 ` Thomas Petazzoni
2018-11-16 15:14 ` Thomas Petazzoni
2018-11-20 22:08 ` Matthew Weber
2018-11-27 6:24 ` Christian Stewart
2018-11-14 10:55 ` [Buildroot] [PATCH next v4 4/6] Makefile: move .NOTPARALLEL statement after including .config file Thomas Petazzoni
2018-11-15 21:37 ` Yann E. MORIN
2018-11-16 8:53 ` Thomas Petazzoni
2018-11-14 10:55 ` [Buildroot] [PATCH next v4 5/6] Makefile: define TARGET_DIR_WARNING_FILE relative to TARGET_DIR Thomas Petazzoni
2018-11-14 10:55 ` [Buildroot] [PATCH next v4 6/6] core: implement per-package SDK and target Thomas Petazzoni
2018-11-15 16:41 ` Andreas Naumann
2018-11-16 13:47 ` Thomas Petazzoni
2018-11-16 15:22 ` Thomas De Schampheleire
2018-11-16 19:57 ` Yann E. MORIN
2018-11-18 21:55 ` Arnout Vandecappelle
2018-11-19 10:48 ` Thomas Petazzoni
2018-11-19 14:27 ` Andreas Naumann
2018-11-19 19:49 ` Yann E. MORIN
2018-11-20 10:22 ` Arnout Vandecappelle
2018-11-20 10:29 ` Thomas Petazzoni
2018-11-20 16:18 ` Thomas Petazzoni
2018-11-20 16:19 ` Thomas Petazzoni
2018-11-15 14:37 ` [Buildroot] [PATCH next v4 0/6] Per-package host/target directory support Thomas Petazzoni
2018-11-15 16:41 ` Andreas Naumann
2018-11-16 14:43 ` Thomas Petazzoni
2018-11-19 14:17 ` Andreas Naumann
2018-11-19 13:30 ` Arnout Vandecappelle
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=20181114105557.12599-1-thomas.petazzoni@bootlin.com \
--to=thomas.petazzoni@bootlin.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox