All of lore.kernel.org
 help / color / mirror / Atom feed
From: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
To: buildroot@busybox.net
Subject: [Buildroot] [PATCH 05/53] Eliminate $(HOST_DIR)/usr
Date: Wed, 12 Apr 2017 11:38:39 +0200	[thread overview]
Message-ID: <20170412093928.1006-6-arnout@mind.be> (raw)
In-Reply-To: <20170412093928.1006-1-arnout@mind.be>

We currently use $(HOST_DIR)/usr as the prefix for host packages. That
has a few disadvantages:

- There are some things installed in $(HOST_DIR)/etc and
  $(HOST_DIR)/sbin, which is inconsistent.

- To pack a buildroot-built toolchain into a tarball for use as an
  external toolchain, you have to pack output/host/usr instead of the
  more obvious output/host.

- Because of the above, the internal toolchain wrapper breaks which
  forces us to work around it (call the actual toolchain executable
  directly). This is OK for us, but when used in another build system,
  that's a problem.

- Paths are four characters longer.

To allow us to gradually eliminate $(HOST_DIR)/usr while building
packages, replace it with a symlink to .

The symlinks from $(HOST_DIR)/usr/$(GNU_TARGET_NAME) and
$(HOST_DIR)/usr/lib that were added previously are removed again.

Note that the symlink creation will break when $(HOST_DIR)/usr
already exists as a directory, i.e. when rebuilding in an existing
output directory. This is necessary: if we don't break it now, the
following commits (which remove the usr part from various variables)
_will_ break it.

At the same time as creating this symlink, we have to update the
external toolchain wrapper and the external toolchain symlinks to go
one directory less up. Indeed, $(HOST_DIR) is one level less up than
it was before.

Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
---
I intended to also move $(HOST_DIR)/usr/bin in a separate patch, but
that turns out to break the internal toolchain: host-gcc-initial uses
relative paths to find cc1 etc. and these will be broken.
---
 Makefile                                               | 7 +++----
 toolchain/toolchain-external/pkg-toolchain-external.mk | 6 +++---
 toolchain/toolchain-wrapper.c                          | 2 +-
 3 files changed, 7 insertions(+), 8 deletions(-)

diff --git a/Makefile b/Makefile
index 1cfc5695e3..d78985464b 100644
--- a/Makefile
+++ b/Makefile
@@ -552,16 +552,15 @@ world: target-post-image
 	legal-info legal-info-prepare legal-info-clean printvars help \
 	list-defconfigs target-finalize target-post-image source-check
 
-# When creating HOST_DIR, also symlink usr/lib -> ../lib
+# When creating HOST_DIR, also symlink usr -> .
 $(HOST_DIR):
-	@mkdir -p $@/usr $@/lib
-	@ln -snf ../lib $@/usr/lib
+	@mkdir -p $@
+	@ln -snf . $@/usr
 
 # Populating the staging with the base directories is handled by the skeleton package
 $(STAGING_DIR): | $(HOST_DIR)
 	@mkdir -p $(STAGING_DIR)
 	@ln -snf $(STAGING_DIR) $(BASE_DIR)/staging
-	@ln -snf ../$(GNU_TARGET_NAME) $(HOST_DIR)/usr/$(GNU_TARGET_NAME)
 
 RSYNC_VCS_EXCLUSIONS = \
 	--exclude .svn --exclude .git --exclude .hg --exclude .bzr \
diff --git a/toolchain/toolchain-external/pkg-toolchain-external.mk b/toolchain/toolchain-external/pkg-toolchain-external.mk
index 9670350dc0..9dc6e31df3 100644
--- a/toolchain/toolchain-external/pkg-toolchain-external.mk
+++ b/toolchain/toolchain-external/pkg-toolchain-external.mk
@@ -251,18 +251,18 @@ define TOOLCHAIN_EXTERNAL_INSTALL_WRAPPER
 		base=$${i##*/}; \
 		case "$$base" in \
 		*-ar|*-ranlib|*-nm) \
-			ln -sf $$(echo $$i | sed 's%^$(HOST_DIR)%../..%') .; \
+			ln -sf $$(echo $$i | sed 's%^$(HOST_DIR)%..%') .; \
 			;; \
 		*cc|*cc-*|*++|*++-*|*cpp|*-gfortran) \
 			ln -sf toolchain-wrapper $$base; \
 			;; \
 		*gdb|*gdbtui) \
 			if test "$(BR2_PACKAGE_HOST_GDB)" != "y"; then \
-				ln -sf $$(echo $$i | sed 's%^$(HOST_DIR)%../..%') .; \
+				ln -sf $$(echo $$i | sed 's%^$(HOST_DIR)%..%') .; \
 			fi \
 			;; \
 		*) \
-			ln -sf $$(echo $$i | sed 's%^$(HOST_DIR)%../..%') .; \
+			ln -sf $$(echo $$i | sed 's%^$(HOST_DIR)%..%') .; \
 			;; \
 		esac; \
 	done
diff --git a/toolchain/toolchain-wrapper.c b/toolchain/toolchain-wrapper.c
index 100aa181c6..3a4455ff82 100644
--- a/toolchain/toolchain-wrapper.c
+++ b/toolchain/toolchain-wrapper.c
@@ -178,7 +178,7 @@ int main(int argc, char **argv)
 			perror(__FILE__ ": malloc");
 			return 2;
 		}
-		sprintf(relbasedir, "%s/../..", argv[0]);
+		sprintf(relbasedir, "%s/..", argv[0]);
 		absbasedir = realpath(relbasedir, NULL);
 	} else {
 		basename = progpath;
-- 
2.11.0

  parent reply	other threads:[~2017-04-12  9:38 UTC|newest]

Thread overview: 58+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-04-12  9:38 [Buildroot] [PATCH 00/53] Eliminate $(HOST_DIR)/usr Arnout Vandecappelle
2017-04-12  9:38 ` [Buildroot] [PATCH 01/53] pkg-rebar: remove redundant / in front of $($(PKG)_ERLANG_LIBDIR) Arnout Vandecappelle
2017-04-12  9:46   ` Thomas Petazzoni
2017-04-12 10:55     ` Arnout Vandecappelle
2017-04-12  9:38 ` [Buildroot] [PATCH 02/53] libsepol: rework host installation Arnout Vandecappelle
2017-04-12  9:38 ` [Buildroot] [PATCH 03/53] Move $(HOST_DIR)/usr/$(GNU_TARGET_NAME) one level up Arnout Vandecappelle
2017-04-12  9:38 ` [Buildroot] [PATCH 04/53] Move $(HOST_DIR)/usr/lib to $(HOST_DIR)/lib Arnout Vandecappelle
2017-04-12  9:38 ` Arnout Vandecappelle [this message]
2017-04-12  9:38 ` [Buildroot] [PATCH 06/53] check-host-rpath: no longer check $(HOST_DIR)/usr/{bin, sbin} Arnout Vandecappelle
2017-04-12  9:38 ` [Buildroot] [PATCH 07/53] Makefile: remove $(HOST_DIR)/usr from BR_PATH Arnout Vandecappelle
2017-04-12  9:38 ` [Buildroot] [PATCH 08/53] package/Makefile.in: remove $(HOST_DIR)/usr part from HOST_LDFLAGS Arnout Vandecappelle
2017-04-12  9:38 ` [Buildroot] [PATCH 09/53] gdb: Remove /usr part from installation path of gdbserver Arnout Vandecappelle
2017-04-12  9:38 ` [Buildroot] [PATCH 10/53] gcc-final: things are no longer installed in $(HOST_DIR)/usr Arnout Vandecappelle
2017-04-12  9:38 ` [Buildroot] [PATCH 11/53] pkg-autotools: use $(HOST_DIR) instead of $(HOST_DIR)/usr as prefix Arnout Vandecappelle
2017-04-12  9:38 ` [Buildroot] [PATCH 12/53] pkg-cmake: " Arnout Vandecappelle
2017-04-12  9:38 ` [Buildroot] [PATCH 13/53] pkg-cmake: move configuration files out of $(HOST_DIR)/usr Arnout Vandecappelle
2017-04-12  9:38 ` [Buildroot] [PATCH 14/53] pkg-cmake: programs are now installed in $(HOST_DIR)/bin Arnout Vandecappelle
2017-04-12  9:38 ` [Buildroot] [PATCH 15/53] pkg-python: use $(HOST_DIR) instead of $(HOST_DIR)/usr as prefix Arnout Vandecappelle
2017-04-12  9:38 ` [Buildroot] [PATCH 16/53] pkg-rebar: " Arnout Vandecappelle
2017-04-12  9:38 ` [Buildroot] [PATCH 17/53] generic packages: " Arnout Vandecappelle
2017-04-12  9:38 ` [Buildroot] [PATCH 18/53] Globally replace $(HOST_DIR)/usr/bin with $(HOST_DIR)/bin Arnout Vandecappelle
2017-04-12  9:38 ` [Buildroot] [PATCH 19/53] Globally replace $(HOST_DIR)/usr/sbin with $(HOST_DIR)/sbin Arnout Vandecappelle
2017-04-12  9:38 ` [Buildroot] [PATCH 20/53] Globally replace $(HOST_DIR)/usr/lib with $(HOST_DIR)/lib Arnout Vandecappelle
2017-04-12  9:38 ` [Buildroot] [PATCH 21/53] Globally replace $(HOST_DIR)/usr/include with $(HOST_DIR)/include Arnout Vandecappelle
2017-04-12  9:38 ` [Buildroot] [PATCH 22/53] Globally replace $(HOST_DIR)/usr/share with $(HOST_DIR)/share Arnout Vandecappelle
2017-04-12  9:38 ` [Buildroot] [PATCH 23/53] Globally replace $(HOST_DIR)/usr with $(HOST_DIR) Arnout Vandecappelle
2017-04-12  9:38 ` [Buildroot] [PATCH 24/53] luarocks: things are no longer installed in $(HOST_DIR)/usr Arnout Vandecappelle
2017-04-12  9:38 ` [Buildroot] [PATCH 25/53] qt: " Arnout Vandecappelle
2017-04-12  9:39 ` [Buildroot] [PATCH 26/53] boards: replace $HOST_DIR/usr/ with $HOST_DIR/ in scripts Arnout Vandecappelle
2017-04-12  9:39 ` [Buildroot] [PATCH 27/53] chromebook snow: remove $(HOST_DIR)/usr reference from README Arnout Vandecappelle
2017-04-12  9:39 ` [Buildroot] [PATCH 28/53] warpboard: " Arnout Vandecappelle
2017-04-12  9:39 ` [Buildroot] [PATCH 29/53] stm32f429-disco: replace $HOST_DIR/usr with $HOST_DIR in flash script Arnout Vandecappelle
2017-04-12  9:39 ` [Buildroot] [PATCH 30/53] stm32f469-disco: " Arnout Vandecappelle
2017-04-12  9:39 ` [Buildroot] [PATCH 31/53] eclipse-register-toolchain: toolchain is no longer installed in $(HOST_DIR)/usr Arnout Vandecappelle
2017-04-12  9:39 ` [Buildroot] [PATCH 32/53] manual: remove references to host/usr paths Arnout Vandecappelle
2017-04-12  9:39 ` [Buildroot] [PATCH 33/53] grub2: remove host/usr reference from help text Arnout Vandecappelle
2017-04-12  9:39 ` [Buildroot] [PATCH 34/53] lttng-tools: " Arnout Vandecappelle
2017-04-12  9:39 ` [Buildroot] [PATCH 35/53] mfgtools: remove host/usr reference from readme.txt Arnout Vandecappelle
2017-04-12  9:39 ` [Buildroot] [PATCH 36/53] lesstif: remove host/usr reference from .mk comment Arnout Vandecappelle
2017-04-12  9:39 ` [Buildroot] [PATCH 37/53] board/gdb/bfin-bf512: remove host/usr reference from readme.txt Arnout Vandecappelle
2017-04-12  9:39 ` [Buildroot] [PATCH 38/53] board/csky: " Arnout Vandecappelle
2017-04-12  9:39 ` [Buildroot] [PATCH 39/53] libffi: avoid $(HOST_DIR)/usr while moving headers Arnout Vandecappelle
2017-04-12  9:39 ` [Buildroot] [PATCH 40/53] genromfs: use $(HOST_DIR) instead of $(HOST_DIR)/usr as prefix Arnout Vandecappelle
2017-04-12  9:39 ` [Buildroot] [PATCH 41/53] libcap: use $(HOST_DIR) as prefix instead of DESTDIR Arnout Vandecappelle
2017-04-12  9:39 ` [Buildroot] [PATCH 42/53] lzip: " Arnout Vandecappelle
2017-04-12  9:39 ` [Buildroot] [PATCH 43/53] opkg-utils: use $(HOST_DIR) as PREFIX " Arnout Vandecappelle
2017-04-12  9:39 ` [Buildroot] [PATCH 44/53] raspberrypi-usbboot: remove /usr from DESTDIR-based install commands Arnout Vandecappelle
2017-04-12  9:39 ` [Buildroot] [PATCH 45/53] dos2unix: use prefix instead of DESTDIR for host installation Arnout Vandecappelle
2017-04-12  9:39 ` [Buildroot] [PATCH 46/53] imx-uxb-loader: " Arnout Vandecappelle
2017-04-12  9:39 ` [Buildroot] [PATCH 47/53] mtd: use PREFIX " Arnout Vandecappelle
2017-04-12  9:39 ` [Buildroot] [PATCH 48/53] grub2: install in $(HOST_DIR) instead of $(HOST_DIR)/usr Arnout Vandecappelle
2017-04-12  9:39 ` [Buildroot] [PATCH 49/53] sepolgen: strip /usr/ part from HOST_DIR Arnout Vandecappelle
2017-04-12  9:39 ` [Buildroot] [PATCH 50/53] libsemanage: rework host installation Arnout Vandecappelle
2017-04-12  9:39 ` [Buildroot] [PATCH 51/53] libselinux: " Arnout Vandecappelle
2017-04-12  9:39 ` [Buildroot] [PATCH 52/53] checkpolicy: " Arnout Vandecappelle
2017-04-12  9:39 ` [Buildroot] [PATCH 53/53] policycoreutils: " Arnout Vandecappelle
2017-04-18 21:49 ` [Buildroot] [PATCH 00/53] Eliminate $(HOST_DIR)/usr Arnout Vandecappelle
2017-07-02 13:54   ` Samuel Martin

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=20170412093928.1006-6-arnout@mind.be \
    --to=arnout@mind.be \
    --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.