From: Thomas De Schampheleire <patrickdepinguin@gmail.com>
To: buildroot@busybox.net
Subject: [Buildroot] [PATCH] infra: /usr support: STAGING_DIR can be outside BASE_DIR
Date: Mon, 30 Jun 2014 15:46:30 +0200 [thread overview]
Message-ID: <4f110d39879dacbf50a8.1404135990@localhost> (raw)
If the user sets a custom BR2_HOST_DIR, then STAGING_DIR is not under
BASE_DIR. The .pc/.la file fixup commands incorrectly made this assumption
and thus should be corrected.
Additionally, this patch rewords the comment in pkg-autotools that explains
the replacements.
Signed-off-by: Thomas De Schampheleire <thomas.de.schampheleire@gmail.com>
---
package/pkg-autotools.mk | 23 ++++++++++++-----------
package/pkg-generic.mk | 5 +++--
2 files changed, 15 insertions(+), 13 deletions(-)
diff -r 5471dd6af081 -r 4f110d39879d package/pkg-autotools.mk
--- a/package/pkg-autotools.mk Sun Jun 29 12:39:06 2014 -0300
+++ b/package/pkg-autotools.mk Mon Jun 30 15:46:20 2014 +0200
@@ -267,25 +267,26 @@
# Most autotools packages install libtool .la files alongside any
# installed libraries. These .la files sometimes refer to paths
# relative to the sysroot, which libtool will interpret as absolute
-# paths to host libraries instead of the target libraries. Since we
-# configure with --prefix=/usr, such absolute paths start with
-# /usr. So we add $(STAGING_DIR) in front of any path that starts with
-# /usr.
+# paths to host libraries instead of the target libraries. Since this
+# is not what we want, these paths are fixed by prefixing them with
+# $(STAGING_DIR). As we configure with --prefix=/usr, this fix
+# needs to be applied to any path that starts with /usr.
#
-# To protect against the case that the output directory itself is
-# under /usr, we first substitute away any occurences of the output
-# directory to @BASE_DIR at .
+# To protect against the case that the output or staging directories
+# themselves are under /usr, we first substitute away any occurrences
+# of these directories as @BASE_DIR@ and @STAGING_DIR at . Note that
+# STAGING_DIR can be outside BASE_DIR when the user sets BR2_HOST_DIR
+# to a custom value.
#
ifndef $(2)_INSTALL_STAGING_CMDS
define $(2)_INSTALL_STAGING_CMDS
$$(TARGET_MAKE_ENV) $$($$(PKG)_MAKE_ENV) $$($$(PKG)_MAKE) $$($$(PKG)_INSTALL_STAGING_OPT) -C $$($$(PKG)_SRCDIR)
- for i in $$$$(find $$(STAGING_DIR)/usr/lib* -name "*.la"); do \
+ find $$(STAGING_DIR)/usr/lib* -name "*.la" | xargs \
$$(SED) "s:$$(BASE_DIR):@BASE_DIR@:g" \
+ -e "s:$$(STAGING_DIR):@STAGING_DIR@:g" \
-e "s:\(['= ]\)/usr:\\1 at STAGING_DIR@/usr:g" \
-e "s:@STAGING_DIR@:$$(STAGING_DIR):g" \
- -e "s:@BASE_DIR@:$$(BASE_DIR):g" \
- $$$$i; \
- done
+ -e "s:@BASE_DIR@:$$(BASE_DIR):g"
endef
endif
diff -r 5471dd6af081 -r 4f110d39879d package/pkg-generic.mk
--- a/package/pkg-generic.mk Sun Jun 29 12:39:06 2014 -0300
+++ b/package/pkg-generic.mk Mon Jun 30 15:46:20 2014 +0200
@@ -202,9 +202,10 @@
$(Q)if test -n "$($(PKG)_CONFIG_SCRIPTS)" ; then \
$(call MESSAGE,"Fixing package configuration files") ;\
$(SED) "s,$(BASE_DIR), at BASE_DIR@,g" \
+ -e "s,$(STAGING_DIR), at STAGING_DIR@,g" \
-e "s,^\(exec_\)\?prefix=.*,\1prefix=@STAGING_DIR@/usr,g" \
- -e "s,-I/usr/,-I at STAGING_DIR@/usr/,g" \
- -e "s,-L/usr/,-L at STAGING_DIR@/usr/,g" \
+ -e "s,-I/usr/,-I at STAGING_DIR/usr/,g" \
+ -e "s,-L/usr/,-L at STAGING_DIR/usr/,g" \
-e "s, at STAGING_DIR@,$(STAGING_DIR),g" \
-e "s, at BASE_DIR@,$(BASE_DIR),g" \
$(addprefix $(STAGING_DIR)/usr/bin/,$($(PKG)_CONFIG_SCRIPTS)) ;\
next reply other threads:[~2014-06-30 13:46 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-06-30 13:46 Thomas De Schampheleire [this message]
2014-07-03 5:42 ` [Buildroot] [PATCH] infra: /usr support: STAGING_DIR can be outside BASE_DIR Arnout Vandecappelle
2014-07-03 19:56 ` Thomas De Schampheleire
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=4f110d39879dacbf50a8.1404135990@localhost \
--to=patrickdepinguin@gmail.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.