diff options
author | Thomas De Schampheleire <patrickdepinguin@gmail.com> | 2014-06-21 17:01:47 +0200 |
---|---|---|
committer | Thomas Petazzoni <thomas.petazzoni@free-electrons.com> | 2014-06-29 12:38:17 +0200 |
commit | 7701fc53d19be7cab8bddba72046a39e8421fd9e (patch) | |
tree | 2208fec6c1f239d47bd3c09d2c1182be213ed37d /package/pkg-generic.mk | |
parent | 2bdc3d6113dd87108dd0d73e3f2689c001fba13f (diff) |
infra: support buildroot being located in /usr
pkg-generic and pkg-autotools both perform sed replacements of /usr to
$(STAGING_DIR)/usr, in .pc and .la files respectively. However, if buildroot
itself is located in /usr, then STAGING_DIR also starts with /usr, and naive
replacements of '/usr' can result in paths of the form:
/usr/buildroot/.../sysroot/usr/buildroot/.../sysroot/...
This patch makes the replacements more careful, by first replacing the known
paths BASE_DIR and STAGING_DIR to tokens, then performing the actual
replacement, and finally replacing the tokens with the corresponding paths.
Additionally it removes the unnecessary making of a backup copy in
pkg-autotools.
Partially fixes bug #5750 (https://bugs.busybox.net/show_bug.cgi?id=5750)
[Thomas: improve pkg-autotools.mk by including the explanation comment
proposed by Arnout.]
Partially-based-on-a-patch-from: Ben Stoltz <benstoltz@gmail.com>
Signed-off-by: Thomas De Schampheleire <thomas.de.schampheleire@gmail.com>
Reviewed-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Diffstat (limited to 'package/pkg-generic.mk')
-rw-r--r-- | package/pkg-generic.mk | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/package/pkg-generic.mk b/package/pkg-generic.mk index 78fe1346c..54193d25a 100644 --- a/package/pkg-generic.mk +++ b/package/pkg-generic.mk @@ -201,9 +201,12 @@ $(BUILD_DIR)/%/.stamp_staging_installed: $(foreach hook,$($(PKG)_POST_INSTALL_STAGING_HOOKS),$(call $(hook))$(sep)) $(Q)if test -n "$($(PKG)_CONFIG_SCRIPTS)" ; then \ $(call MESSAGE,"Fixing package configuration files") ;\ - $(SED) "s,^\(exec_\)\?prefix=.*,\1prefix=$(STAGING_DIR)/usr,g" \ - -e "s,-I/usr/,-I$(STAGING_DIR)/usr/,g" \ - -e "s,-L/usr/,-L$(STAGING_DIR)/usr/,g" \ + $(SED) "s,$(BASE_DIR),@BASE_DIR@,g" \ + -e "s,^\(exec_\)\?prefix=.*,\1prefix=@STAGING_DIR@/usr,g" \ + -e "s,-I/usr/,-I@STAGING_DIR@/usr/,g" \ + -e "s,-L/usr/,-L@STAGING_DIR@/usr/,g" \ + -e "s,@STAGING_DIR@,$(STAGING_DIR),g" \ + -e "s,@BASE_DIR@,$(BASE_DIR),g" \ $(addprefix $(STAGING_DIR)/usr/bin/,$($(PKG)_CONFIG_SCRIPTS)) ;\ fi $(Q)touch $@ |