autotools-package: also handle pre-installed external toolchain in .la fixup
PATCH 1/1 autotools-package: also handle pre-installed external toolchain in .la fixup
The .la fixup handling looks for paths starting with /usr and assumes that they are missing the installation prefix (i.e. $(STAGING_DIR)). It already handles the cases that $(STAGING_DIR) itself and $(BASE_DIR) are under /usr, but it does not yet handle the case that a pre-installed external toolchain is under /usr (and tracks that fact in some .la file). For instance, if you use buildroot to generate a toolchain with HOST_DIR=/usr/local/some_path, this problem will occur.
Fix this in the same way as $(STAGING_DIR) and $(BASE_DIR), but in addition check that TOOLCHAIN_EXTERNAL_INSTALL_DIR is non-empty. For internal toolchains, it is empty and the sed expression would fail.
---
I haven't been able to test this very extensively because it's not so easy to find .la files where it goes wrong.
Carlos, can you check if this patch solves the problem for you?
--- package/pkg-autotools.mk | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-)
package/pkg-autotools.mk +11 -4
@@ -304,10 +304,13 @@ endif # needs to be applied to any path that starts with /usr. # # 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. +# or the pre-installed external toolchain themselves are under /usr, +# we first substitute away any occurrences of these directories as +# @BASE_DIR@, @STAGING_DIR@ and @TOOLCHAIN_EXTERNAL_INSTALL_DIR@ respectively. +# Note that STAGING_DIR can be outside BASE_DIR when the user sets +# BR2_HOST_DIR to a custom value. Note that TOOLCHAIN_EXTERNAL_INSTALL_DIR +# can be under @BASE_DIR@ when it's a downloaded toolchain, and can be empty +# when we use an internal toolchain. # ifndef $(2)_INSTALL_STAGING_CMDS define $(2)_INSTALL_STAGING_CMDS
@@ -315,7 +318,11 @@ define $(2)_INSTALL_STAGING_CMDS find $$(STAGING_DIR)/usr/lib* -name "*.la" | xargs --no-run-if-empty \ $$(SED) "s:$$(BASE_DIR):@BASE_DIR@:g" \ -e "s:$$(STAGING_DIR):@STAGING_DIR@:g" \ + $$(if $$(TOOLCHAIN_EXTERNAL_INSTALL_DIR),\ + -e "s:$$(TOOLCHAIN_EXTERNAL_INSTALL_DIR):@TOOLCHAIN_EXTERNAL_INSTALL_DIR@:g") \ -e "s:\(['= ]\)/usr:\\1 at STAGING_DIR@/usr:g" \ + $$(if $$(TOOLCHAIN_EXTERNAL_INSTALL_DIR),\ + -e "s:@TOOLCHAIN_EXTERNAL_INSTALL_DIR@:$$(TOOLCHAIN_EXTERNAL_INSTALL_DIR):g") \ -e "s:@STAGING_DIR@:$$(STAGING_DIR):g" \ -e "s:@BASE_DIR@:$$(BASE_DIR):g" endef
Signature · 1 line
2.1.4
PATCH 1/1 autotools-package: also handle pre-installed external toolchain in .la fixup
Arnout, All,
On 2015-05-02 23:50 +0200, Arnout Vandecappelle (Essensium/Mind) spake thusly:
Quoted 8 lines
The .la fixup handling looks for paths starting with /usr and assumes that they are missing the installation prefix (i.e. $(STAGING_DIR)). It already handles the cases that $(STAGING_DIR) itself and $(BASE_DIR) are under /usr, but it does not yet handle the case that a pre-installed external toolchain is under /usr (and tracks that fact in some .la file). For instance, if you use buildroot to generate a toolchain with HOST_DIR=/usr/local/some_path, this problem will occur.
Quoted 7 lines
Fix this in the same way as $(STAGING_DIR) and $(BASE_DIR), but in addition check that
TOOLCHAIN_EXTERNAL_INSTALL_DIRis non-empty. For internal toolchains, it is empty and the sed expression would fail.Reported-by Carlos Soto <[email protected]>Cc Carlos Soto <[email protected]>
I however wonder: shouldn't we do that .la munging in a hook that we forcibly add to the list of post-staging-install hooks, so that it is run even for those packages that redefine their _INSTALL_STAGING_CMDS ?
Regards,
Yann E. MORIN.
Quoted 50 lines
---
I haven't been able to test this very extensively because it's not so easy to find .la files where it goes wrong.Carlos, can you check if this patch solves the problem for you?
--- package/pkg-autotools.mk | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-)package/pkg-autotools.mk +11
-4@@ -304,10 +304,13 @@ endif # needs to be applied to any path that starts with /usr. # # 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. +# or the pre-installed external toolchain themselves are under /usr, +# we first substitute away any occurrences of these directories as +# @BASE_DIR@, @STAGING_DIR@ and @TOOLCHAIN_EXTERNAL_INSTALL_DIR@ respectively. +# Note that STAGING_DIR can be outside BASE_DIR when the user sets +# BR2_HOST_DIR to a custom value. Note that TOOLCHAIN_EXTERNAL_INSTALL_DIR +# can be under @BASE_DIR@ when it's a downloaded toolchain, and can be empty +# when we use an internal toolchain. # ifndef $(2)_INSTALL_STAGING_CMDS define $(2)_INSTALL_STAGING_CMDS@@ -315,7 +318,11 @@ define $(2)_INSTALL_STAGING_CMDS find $$(STAGING_DIR)/usr/lib* -name "*.la" | xargs --no-run-if-empty \ $$(SED) "s:$$(BASE_DIR):@BASE_DIR@:g" \ -e "s:$$(STAGING_DIR):@STAGING_DIR@:g" \ + $$(if $$(TOOLCHAIN_EXTERNAL_INSTALL_DIR),\ + -e "s:$$(TOOLCHAIN_EXTERNAL_INSTALL_DIR):@TOOLCHAIN_EXTERNAL_INSTALL_DIR@:g") \ -e "s:\(['= ]\)/usr:\\1 at STAGING_DIR@/usr:g" \ + $$(if $$(TOOLCHAIN_EXTERNAL_INSTALL_DIR),\ + -e "s:@TOOLCHAIN_EXTERNAL_INSTALL_DIR@:$$(TOOLCHAIN_EXTERNAL_INSTALL_DIR):g") \ -e "s:@STAGING_DIR@:$$(STAGING_DIR):g" \ -e "s:@BASE_DIR@:$$(BASE_DIR):g" endefSignature · 6 lines
2.1.4 _______________________________________________ buildroot mailing list buildroot at busybox.net http://lists.busybox.net/mailman/listinfo/buildroot
Signature · 6 lines
.-----------------.--------------------.------------------.--------------------. | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: | | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ | | +33 223 225 172 `------------.-------: X AGAINST | \e/ There is no | | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. | '------------------------------^-------^------------------^--------------------'
PATCH 1/1 autotools-package: also handle pre-installed external toolchain in .la fixup
Quoted 19 lines · Yann E. MORIN
Arnout, All,
On 2015-05-02 23:50 +0200, Arnout Vandecappelle (Essensium/Mind) spake thusly:
Quoted 8 lines
The .la fixup handling looks for paths starting with /usr and assumes that they are missing the installation prefix (i.e. $(STAGING_DIR)). It already handles the cases that $(STAGING_DIR) itself and $(BASE_DIR) are under /usr, but it does not yet handle the case that a pre-installed external toolchain is under /usr (and tracks that fact in some .la file). For instance, if you use buildroot to generate a toolchain with HOST_DIR=/usr/local/some_path, this problem will occur.
Quoted 7 lines
Fix this in the same way as $(STAGING_DIR) and $(BASE_DIR), but in addition check that
TOOLCHAIN_EXTERNAL_INSTALL_DIRis non-empty. For internal toolchains, it is empty and the sed expression would fail.Reported-by Carlos Soto <[email protected]>Cc Carlos Soto <[email protected]>
Quoted 5 lines
Reviewed-by "Yann E. MORIN" <[email protected]>I however wonder: shouldn't we do that .la munging in a hook that we forcibly add to the list of post-staging-install hooks, so that it is run even for those packages that redefine their
_INSTALL_STAGING_CMDS?
I had the same thought... Even more: it is not really tied to autotools-package
because generic packages may also use libtool, so it could go directly into the .stamp_staging_installed code.
Regards,
Arnout
Signature · 6 lines
Arnout Vandecappelle arnout at mind be Senior Embedded Software Architect +32-16-286500 Essensium/Mind http://www.mind.be G.Geenslaan 9, 3001 Leuven, Belgium BE 872 984 063 RPR Leuven LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle GPG fingerprint: 7CB5 E4CC 6C2E EFD4 6E3D A754 F963 ECAB 2450 2F1F
PATCH 1/1 autotools-package: also handle pre-installed external toolchain in .la fixup
Arnout, All,
On 2015-05-03 11:43 +0200, Arnout Vandecappelle spake thusly:
Quoted 20 lines · Yann E. MORIN
Quoted 19 lines
On 2015-05-02 23:50 +0200, Arnout Vandecappelle (Essensium/Mind) spake thusly:
Quoted 8 lines
The .la fixup handling looks for paths starting with /usr and assumes that they are missing the installation prefix (i.e. $(STAGING_DIR)). It already handles the cases that $(STAGING_DIR) itself and $(BASE_DIR) are under /usr, but it does not yet handle the case that a pre-installed external toolchain is under /usr (and tracks that fact in some .la file). For instance, if you use buildroot to generate a toolchain with HOST_DIR=/usr/local/some_path, this problem will occur.
Quoted 7 lines
Fix this in the same way as $(STAGING_DIR) and $(BASE_DIR), but in addition check that
TOOLCHAIN_EXTERNAL_INSTALL_DIRis non-empty. For internal toolchains, it is empty and the sed expression would fail.Reported-by Carlos Soto <[email protected]>Cc Carlos Soto <[email protected]>Reviewed-by "Yann E. MORIN" <[email protected]>
Quoted 7 lines
Quoted 3 lines
I however wonder: shouldn't we do that .la munging in a hook that we forcibly add to the list of post-staging-install hooks, so that it is run even for those packages that redefine their
_INSTALL_STAGING_CMDS?I had the same thought... Even more: it is not really tied to autotools-package
because generic packages may also use libtool, so it could go directly into the .stamp_staging_installed code.
Agreed. Shall I do it, or do you already have something on your side?
Regards,
Yann E. MORIN.
Signature · 6 lines
.-----------------.--------------------.------------------.--------------------. | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: | | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ | | +33 223 225 172 `------------.-------: X AGAINST | \e/ There is no | | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. | '------------------------------^-------^------------------^--------------------'
PATCH 1/1 autotools-package: also handle pre-installed external toolchain in .la fixup
In reply to Arnout Vandecappelle (Essensium/Mind)2015-05-02 23:50 GMT+02:00 Arnout Vandecappelle (Essensium/Mind) < [email protected]>:
Quoted 12 lines
The .la fixup handling looks for paths starting with /usr and assumes that they are missing the installation prefix (i.e. $(STAGING_DIR)). It already handles the cases that $(STAGING_DIR) itself and $(BASE_DIR) are under /usr, but it does not yet handle the case that a pre-installed external toolchain is under /usr (and tracks that fact in some .la file). For instance, if you use buildroot to generate a toolchain with HOST_DIR=/usr/local/some_path, this problem will occur.
Fix this in the same way as $(STAGING_DIR) and $(BASE_DIR), but in addition check that
TOOLCHAIN_EXTERNAL_INSTALL_DIRis non-empty. For internal toolchains, it is empty and the sed expression would fail.
Quoted 9 lines
Reported-by Carlos Soto <[email protected]>Cc Carlos Soto <[email protected]>---
I haven't been able to test this very extensively because it's not so easy to find .la files where it goes wrong.Carlos, can you check if this patch solves the problem for you?
Hi Arnout,
I'm afraid it does not work. I've tried patching buildroot but it gave me
errors. So I've applied manually the changes to pkg-autotools.mk and that's
what happened after a make clean && make
find /home/starsl/iMX6/buildroot/output/host/usr/arm-buildroot-linux-gnueabihf/sysroot/usr/lib* -name "*.la" | xargs --no-run-if-empty /bin/sed -i -e "s:/home/starsl/iMX6/buildroot/output:@BASE_DIR@:g" -e "s:/home/starsl/iMX6/buildroot/output/host/usr/arm-buildroot-linux-gnueabihf/sysroot:@STAGING_DIR@:g" -e "s:/usr/local/xtools/arm-cortexa9_neon-linux-gnueabihf:@TOOLCHAIN_EXTERNAL_INSTALL_DIR@:g" -e "s:\(['= ]\)/usr:\\1 at STAGING_DIR@/usr:g" -e "s:@TOOLCHAIN_EXTERNAL_INSTALL_DIR@:/usr/local/xtools/arm-cortexa9_neon-linux-gnueabihf:g" \/bin/sed: can't read : No such file or directory
make: *** [/home/starsl/iMX6/buildroot/output/build/alsa-lib-1.0.28/.stamp_staging_installed] Error 123
Quoted 43 lines
--- package/pkg-autotools.mk | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-)package/pkg-autotools.mk +3
-4@@ -304,10 +304,13 @@ endif # needs to be applied to any path that starts with /usr. # # 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. +# or the pre-installed external toolchain themselves are under /usr, +# we first substitute away any occurrences of these directories as +# @BASE_DIR@, @STAGING_DIR@ and @TOOLCHAIN_EXTERNAL_INSTALL_DIR@respectively.
package/pkg-autotools.mk +3
-0+# Note that STAGING_DIR can be outside BASE_DIR when the user sets +# BR2_HOST_DIR to a custom value. Note that TOOLCHAIN_EXTERNAL_INSTALL_DIR +# can be under @BASE_DIR@ when it's a downloaded toolchain, and can beempty
package/pkg-autotools.mk +5
-1+# when we use an internal toolchain. # ifndef $(2)_INSTALL_STAGING_CMDS define $(2)_INSTALL_STAGING_CMDS@@ -315,7 +318,11 @@ define $(2)_INSTALL_STAGING_CMDS find $$(STAGING_DIR)/usr/lib* -name "*.la" | xargs --no-run-if-empty \ $$(SED) "s:$$(BASE_DIR):@BASE_DIR@:g" \ -e "s:$$(STAGING_DIR):@STAGING_DIR@:g" \ + $$(if $$(TOOLCHAIN_EXTERNAL_INSTALL_DIR),\ + -e "s:$$(TOOLCHAIN_EXTERNAL_INSTALL_DIR):@TOOLCHAIN_EXTERNAL_INSTALL_DIR@:g") \ -e "s:\(['= ]\)/usr:\\1 at STAGING_DIR@/usr:g" \ + $$(if $$(TOOLCHAIN_EXTERNAL_INSTALL_DIR),\ + -e "s:@TOOLCHAIN_EXTERNAL_INSTALL_DIR@:$$(TOOLCHAIN_EXTERNAL_INSTALL_DIR):g")\ -e "s:@STAGING_DIR@:$$(STAGING_DIR):g" \ -e "s:@BASE_DIR@:$$(BASE_DIR):g"
Quoted 5 lines
endef
--
2.1.4
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.busybox.net/pipermail/buildroot/attachments/20150503/6ac25091/attachment.html>
PATCH 1/1 autotools-package: also handle pre-installed external toolchain in .la fixup
Quoted 26 lines · Carlos Soto
2015-05-02 23:50 GMT+02:00 Arnout Vandecappelle (Essensium/Mind) <[email protected] <mailto:[email protected]>>:
The .la fixup handling looks for paths starting with /usr and assumes that they are missing the installation prefix (i.e. $(STAGING_DIR)). It already handles the cases that $(STAGING_DIR) itself and $(BASE_DIR) are under /usr, but it does not yet handle the case that a pre-installed external toolchain is under /usr (and tracks that fact in some .la file). For instance, if you use buildroot to generate a toolchain with HOST_DIR=/usr/local/some_path, this problem will occur.
Fix this in the same way as $(STAGING_DIR) and $(BASE_DIR), but in addition check that
TOOLCHAIN_EXTERNAL_INSTALL_DIRis non-empty. For internal toolchains, it is empty and the sed expression would fail.Signed-off-by Arnout Vandecappelle (Essensium/Mind) <[email protected]<mailto:[email protected]>>
Reported-by Carlos Soto <csotoalonso at gmail.com <mailto:[email protected]>>Cc Carlos Soto <csotoalonso at gmail.com <mailto:[email protected]>>---
I haven't been able to test this very extensively because it's not so easy to find .la files where it goes wrong.Carlos, can you check if this patch solves the problem for you?
Quoted 14 lines
Hi Arnout,
I'm afraid it does not work. I've tried patching buildroot but it gave me
errors. So I've applied manually the changes to pkg-autotools.mk
<http://pkg-autotools.mk> and that's what happened after a make clean && make
find/home/starsl/iMX6/buildroot/output/host/usr/arm-buildroot-linux-gnueabihf/sysroot/usr/lib*-name "*.la" | xargs --no-run-if-empty/bin/sed-i -e "s:/home/starsl/iMX6/buildroot/output:@BASE_DIR@:g" -e "s:/home/starsl/iMX6/buildroot/output/host/usr/arm-buildroot-linux-gnueabihf/sysroot:@STAGING_DIR@:g" -e "s:/usr/local/xtools/arm-cortexa9_neon-linux-gnueabihf:@TOOLCHAIN_EXTERNAL_INSTALL_DIR@:g" -e "s:\(['= ]\)/usr:\\1 at STAGING_DIR@/usr:g" -e "s:@TOOLCHAIN_EXTERNAL_INSTALL_DIR@:/usr/local/xtools/arm-cortexa9_neon-linux-gnueabihf:g" \
You did something wrong when manually applying the patch: there's a spurious \
at the end. At least, I think that that's the problem. Can you post the relevant part of pkg-autotools.mk to be sure?
Regards,
Arnout
Quoted 7 lines
/bin/sed: can't read : No such file or directory
make: *** [/home/starsl/iMX6/buildroot/output/build/alsa-lib-1.0.28/.stamp_staging_installed] Error 123
[snip]
Signature · 6 lines
Arnout Vandecappelle arnout at mind be Senior Embedded Software Architect +32-16-286500 Essensium/Mind http://www.mind.be G.Geenslaan 9, 3001 Leuven, Belgium BE 872 984 063 RPR Leuven LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle GPG fingerprint: 7CB5 E4CC 6C2E EFD4 6E3D A754 F963 ECAB 2450 2F1F
PATCH 1/1 autotools-package: also handle pre-installed external toolchain in .la fixup
2015-05-03 18:26 GMT+02:00 Arnout Vandecappelle <[email protected]>:
Quoted 54 lines · Carlos Soto
Quoted 1 line
2015-05-02 23:50 GMT+02:00 Arnout Vandecappelle (Essensium/Mind) <
arnout at mind.be
Quoted 4 lines
<mailto:[email protected]>>:
The .la fixup handling looks for paths starting with /usr and assumes that they are missing the installation prefix (i.e. $(STAGING_DIR)).
It
Quoted 5 lines
already handles the cases that $(STAGING_DIR) itself and $(BASE_DIR) are under /usr, but it does not yet handle the case that a pre-installed external toolchain is under /usr (and tracks that fact in some .la file). For instance, if you use buildroot to generate a toolchain with HOST_DIR=/usr/local/some_path, this problem will
occur.
Quoted 8 lines
Fix this in the same way as $(STAGING_DIR) and $(BASE_DIR), but in addition check that
TOOLCHAIN_EXTERNAL_INSTALL_DIRis non-empty. For internal toolchains, it is empty and the sed expression would fail.Signed-off-by Arnout Vandecappelle (Essensium/Mind) <[email protected]<mailto:[email protected]>>
Reported-by Carlos Soto <[email protected] <mailto:csotoalonso at gmail.com>>
Quoted 6 lines
Cc Carlos Soto <csotoalonso at gmail.com <mailto:[email protected]Quoted 1 line
---
I haven't been able to test this very extensively because it's not so easy to find .la files where it goes wrong.Quoted 7 lines
Carlos, can you check if this patch solves the problem for you?
Hi Arnout,
I'm afraid it does not work. I've tried patching buildroot but it gave me errors. So I've applied manually the changes to pkg-autotools.mk
<http://pkg-autotools.mk> and that's what happened after a make clean&& make
Quoted 2 lines
find
/home/starsl/iMX6/buildroot/output/host/usr/arm-buildroot-linux-gnueabihf/sysroot/usr/lib*Quoted 3 lines
-name "*.la" | xargs --no-run-if-empty
/bin/sed-i -e "s:/home/starsl/iMX6/buildroot/output:@BASE_DIR@:g" -e"s:/home/starsl/iMX6/buildroot/output/host/usr/arm-buildroot-linux-gnueabihf/sysroot:@STAGING_DIR @:g"
Quoted 2 lines
-e
"s:/usr/local/xtools/arm-cortexa9_neon-linux-gnueabihf:@TOOLCHAIN_EXTERNAL_INSTALL_DIR @:g"
Quoted 2 lines
-e "s:\(['= ]\)/usr:\\1 at STAGING_DIR@/usr:g" -e "s:@TOOLCHAIN_EXTERNAL_INSTALL_DIR
@:/usr/local/xtools/arm-cortexa9_neon-linux-gnueabihf:g"
Quoted 1 line
\
Quoted 10 lines
You did something wrong when manually applying the patch: there's a
spurious \
at the end. At least, I think that that's the problem. Can you post the relevant
part of pkg-autotools.mk to be sure?Regards,
Arnout
Sure, here it is:
# or the pre-installed external toolchain themselves are under /usr,
# we first substitute away any occurrences of these directories as
# @BASE_DIR@, @STAGING_DIR@ and @TOOLCHAIN_EXTERNAL_INSTALL_DIR@
respectively.
# Note that STAGING_DIR can be outside BASE_DIR when the user sets
# BR2_HOST_DIR to a custom value. Note that TOOLCHAIN_EXTERNAL_INSTALL_DIR
# can be under @BASE_DIR@ when it's a downloaded toolchain, and can be empty
# when we use an internal toolchain.
#
ifndef $(2)_INSTALL_STAGING_CMDS
define $(2)_INSTALL_STAGING_CMDS
$$(TARGET_MAKE_ENV) $$($$(PKG)_MAKE_ENV) $$($$(PKG)_MAKE)
$$($$(PKG)_INSTALL_STAGING_OPTS) -C $$($$(PKG)_SRCDIR)
find $$(STAGING_DIR)/usr/lib* -name "*.la" | xargs --no-run-if-empty \
$$(SED) "s:$$(BASE_DIR):@BASE_DIR@:g" \
-e "s:$$(STAGING_DIR):@STAGING_DIR@:g" \
$$(if $$(TOOLCHAIN_EXTERNAL_INSTALL_DIR),\
-e
"s:$$(TOOLCHAIN_EXTERNAL_INSTALL_DIR):@TOOLCHAIN_EXTERNAL_INSTALL_DIR@:g") \
-e "s:\(['= ]\)/usr:\\1 at STAGING_DIR@/usr:g" \
$$(if $$(TOOLCHAIN_EXTERNAL_INSTALL_DIR),\
-e
"s:@TOOLCHAIN_EXTERNAL_INSTALL_DIR@:$$(TOOLCHAIN_EXTERNAL_INSTALL_DIR):g")
\
-e "s:@STAGING_DIR@:$$(STAGING_DIR):g" \
-e "s:@BASE_DIR@:$$(BASE_DIR):g"
endef
endifQuoted 10 lines
[snip]
--
Arnout Vandecappelle arnout at mind be Senior Embedded Software Architect +32-16-286500 Essensium/Mind http://www.mind.be G.Geenslaan 9, 3001 Leuven, Belgium BE 872 984 063 RPR Leuven LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle GPG fingerprint: 7CB5 E4CC 6C2E EFD4 6E3D A754 F963 ECAB 2450 2F1F
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.busybox.net/pipermail/buildroot/attachments/20150503/ab2872d8/attachment.html>
PATCH 1/1 autotools-package: also handle pre-installed external toolchain in .la fixup
Quoted 71 lines · Carlos Soto
2015-05-03 18:26 GMT+02:00 Arnout Vandecappelle <[email protected] <mailto:[email protected]>>:
On 03/05/15 18:11, Carlos Soto wrote:
> 2015-05-02 23:50 GMT+02:00 Arnout Vandecappelle (Essensium/Mind) <arnout at mind.be <mailto:[email protected]> > <mailto:arnout at mind.be <mailto:[email protected]>>>:
>
> The .la fixup handling looks for paths starting with /usr and assumes
> that they are missing the installation prefix (i.e. $(STAGING_DIR)). It
> already handles the cases that $(STAGING_DIR) itself and $(BASE_DIR)
> are under /usr, but it does not yet handle the case that a
> pre-installed external toolchain is under /usr (and tracks that fact
> in some .la file). For instance, if you use buildroot to generate a
> toolchain with HOST_DIR=/usr/local/some_path, this problem will occur.
>
> Fix this in the same way as $(STAGING_DIR) and $(BASE_DIR), but in
> addition check thatTOOLCHAIN_EXTERNAL_INSTALL_DIRis non-empty. For
> internal toolchains, it is empty and the sed expression would fail.
>
> Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout at mind.be <mailto:[email protected]>
> <mailto:arnout at mind.be <mailto:[email protected]>>>
> Reported-by: Carlos Soto <[email protected]
<mailto:[email protected]> <mailto:[email protected] <mailto:[email protected]>>>
> Cc: Carlos Soto <csotoalonso at gmail.com <mailto:[email protected]>
<mailto:csotoalonso at gmail.com <mailto:[email protected]>>>
> ---
> I haven't been able to test this very extensively because it's not so
> easy to find .la files where it goes wrong.
>
> Carlos, can you check if this patch solves the problem for you?
>
>
> Hi Arnout,
> I'm afraid it does not work. I've tried patching buildroot but it gave me
> errors. So I've applied manually the changes to pkg-autotools.mk <http://pkg-autotools.mk>
> <http://pkg-autotools.mk> and that's what happened after a make clean && make
> find
>/home/starsl/iMX6/buildroot/output/host/usr/arm-buildroot-linux-gnueabihf/sysroot/usr/lib*> -name "*.la" | xargs --no-run-if-empty/bin/sed-i -e
> "s:/home/starsl/iMX6/buildroot/output:@BASE_DIR@:g" -e
> "s:/home/starsl/iMX6/buildroot/output/host/usr/arm-buildroot-linux-gnueabihf/sysroot:@STAGING_DIR@:g" > -e
> "s:/usr/local/xtools/arm-cortexa9_neon-linux-gnueabihf:@TOOLCHAIN_EXTERNAL_INSTALL_DIR@:g" > -e "s:\(['= ]\)/usr:\\1 at STAGING_DIR@/usr:g" -e
> "s:@TOOLCHAIN_EXTERNAL_INSTALL_DIR@:/usr/local/xtools/arm-cortexa9_neon-linux-gnueabihf:g" > \You did something wrong when manually applying the patch: there's a spurious \
at the end. At least, I think that that's the problem. Can you post the relevant part of pkg-autotools.mk <http://pkg-autotools.mk> to be sure?Regards,
ArnoutSure, here it is:
# or the pre-installed external toolchain themselves are under /usr, # we first substitute away any occurrences of these directories as # @BASE_DIR@, @STAGING_DIR@ and @TOOLCHAIN_EXTERNAL_INSTALL_DIR@ respectively. # Note that STAGING_DIR can be outside BASE_DIR when the user sets # BR2_HOST_DIR to a custom value. Note that TOOLCHAIN_EXTERNAL_INSTALL_DIR # can be under @BASE_DIR@ when it's a downloaded toolchain, and can be empty # when we use an internal toolchain. # ifndef $(2)_INSTALL_STAGING_CMDS define $(2)_INSTALL_STAGING_CMDS $$(TARGET_MAKE_ENV) $$($$(PKG)_MAKE_ENV) $$($$(PKG)_MAKE) $$($$(PKG)_INSTALL_STAGING_OPTS) -C $$($$(PKG)_SRCDIR) find $$(STAGING_DIR)/usr/lib* -name "*.la" | xargs --no-run-if-empty \ $$(SED) "s:$$(BASE_DIR):@BASE_DIR@:g" \
Quoted 9 lines
-e "s:$$(STAGING_DIR):@STAGING_DIR@:g" \
$$(if $$(TOOLCHAIN_EXTERNAL_INSTALL_DIR),\
-e
"s:$$(TOOLCHAIN_EXTERNAL_INSTALL_DIR):@TOOLCHAIN_EXTERNAL_INSTALL_DIR@:g") \
-e "s:\(['= ]\)/usr:\\1 at STAGING_DIR@/usr:g" \
$$(if $$(TOOLCHAIN_EXTERNAL_INSTALL_DIR),\
-e
"s:@TOOLCHAIN_EXTERNAL_INSTALL_DIR@:$$(TOOLCHAIN_EXTERNAL_INSTALL_DIR):g") \ Can you double-check that there is no space behind the \ here?
Regards,
Arnout
Quoted 20 lines
-e "s:@STAGING_DIR@:$$(STAGING_DIR):g" \ -e "s:@BASE_DIR@:$$(BASE_DIR):g"endef
endif[snip]
--
Arnout Vandecappelle arnout at mind be
Senior Embedded Software Architect +32-16-286500
Essensium/Mind http://www.mind.be
G.Geenslaan 9, 3001 Leuven, Belgium BE 872 984 063 RPR Leuven
LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
GPG fingerprint: 7CB5 E4CC 6C2E EFD4 6E3D A754 F963 ECAB 2450 2F1F
Signature · 6 lines
Arnout Vandecappelle arnout at mind be Senior Embedded Software Architect +32-16-286500 Essensium/Mind http://www.mind.be G.Geenslaan 9, 3001 Leuven, Belgium BE 872 984 063 RPR Leuven LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle GPG fingerprint: 7CB5 E4CC 6C2E EFD4 6E3D A754 F963 ECAB 2450 2F1F
PATCH 1/1 autotools-package: also handle pre-installed external toolchain in .la fixup
2015-05-03 18:38 GMT+02:00 Arnout Vandecappelle <[email protected]>:
Quoted 109 lines · Carlos Soto
Quoted 5 lines
2015-05-03 18:26 GMT+02:00 Arnout Vandecappelle <[email protected] <mailto:[email protected]>>:
On 03/05/15 18:11, Carlos Soto wrote: > 2015-05-02 23:50 GMT+02:00 Arnout Vandecappelle (Essensium/Mind) <arnout at mind.be <mailto:[email protected]>
Quoted 3 lines
Quoted 3 lines
<mailto:arnout at mind.be <mailto:[email protected]>>>:
The .la fixup handling looks for paths starting with /usr and
assumes
Quoted 1 line
Quoted 1 line
that they are missing the installation prefix (i.e.
$(STAGING_DIR)). It
Quoted 1 line
Quoted 1 line
already handles the cases that $(STAGING_DIR) itself and$(BASE_DIR)
Quoted 2 lines
Quoted 2 lines
are under /usr, but it does not yet handle the case that a pre-installed external toolchain is under /usr (and tracks
that fact
Quoted 1 line
Quoted 1 line
in some .la file). For instance, if you use buildroot to
generate a
Quoted 1 line
Quoted 1 line
toolchain with HOST_DIR=/usr/local/some_path, this problem
will occur.
Quoted 2 lines
Quoted 2 lines
Fix this in the same way as $(STAGING_DIR) and $(BASE_DIR),but in
Quoted 1 line
Quoted 1 line
addition check that
TOOLCHAIN_EXTERNAL_INSTALL_DIRisnon-empty. For
Quoted 1 line
Quoted 1 line
internal toolchains, it is empty and the sed expression would
fail.
Quoted 2 lines
Quoted 2 lines
Signed-off-by Arnout Vandecappelle (Essensium/Mind) <arnout at mind.be <mailto:[email protected]>
Quoted 5 lines
Quoted 2 lines
<mailto:arnout at mind.be <mailto:[email protected]>>>
Reported-by Carlos Soto <[email protected]<mailto:[email protected]> <mailto:[email protected] <mailto:[email protected]>>>
> Cc: Carlos Soto <[email protected] <mailto:csotoalonso at gmail.com>
Quoted 3 lines
<mailto:csotoalonso at gmail.com <mailto:[email protected]>>>
> ---
> I haven't been able to test this very extensively because it'snot so
Quoted 7 lines
Quoted 7 lines
easy to find .la files where it goes wrong.
Carlos, can you check if this patch solves the problem for you?
Hi Arnout,
I'm afraid it does not work. I've tried patching buildroot but itgave me
Quoted 1 line
Quoted 1 line
errors. So I've applied manually the changes to pkg-autotools.mk <
Quoted 1 line
Quoted 1 line
<http://pkg-autotools.mk> and that's what happened after a make
clean && make
Quoted 2 lines
Quoted 2 lines
find
/home/starsl/iMX6/buildroot/output/host/usr/arm-buildroot-linux-gnueabihf/sysroot/usr/lib*Quoted 3 lines
Quoted 3 lines
-name "*.la" | xargs --no-run-if-empty
/bin/sed-i -e "s:/home/starsl/iMX6/buildroot/output:@BASE_DIR@:g" -e"s:/home/starsl/iMX6/buildroot/output/host/usr/arm-buildroot-linux-gnueabihf/sysroot:@STAGING_DIR @:g"
Quoted 2 lines
Quoted 2 lines
-e
"s:/usr/local/xtools/arm-cortexa9_neon-linux-gnueabihf:@TOOLCHAIN_EXTERNAL_INSTALL_DIR @:g"
Quoted 2 lines
Quoted 2 lines
-e "s:\(['= ]\)/usr:\\1 at STAGING_DIR@/usr:g" -e "s:@TOOLCHAIN_EXTERNAL_INSTALL_DIR
@:/usr/local/xtools/arm-cortexa9_neon-linux-gnueabihf:g"
Quoted 3 lines
Quoted 1 line
\
You did something wrong when manually applying the patch: there's a
spurious \
Quoted 1 line
at the end. At least, I think that that's the problem. Can you post
the relevant
Quoted 10 lines
part of pkg-autotools.mk <http://pkg-autotools.mk> to be sure?
Regards,
ArnoutSure, here it is:
# or the pre-installed external toolchain themselves are under /usr, # we first substitute away any occurrences of these directories as # @BASE_DIR@, @STAGING_DIR@ and @TOOLCHAIN_EXTERNAL_INSTALL_DIR@respectively.
Quoted 2 lines
# Note that
STAGING_DIRcan be outsideBASE_DIRwhen the user sets #BR2_HOST_DIRto a custom value. Note that
TOOLCHAIN_EXTERNAL_INSTALL_DIRQuoted 1 line
# can be under @BASE_DIR@ when it's a downloaded toolchain, and can beempty
Quoted 7 lines
# when we use an internal toolchain. # ifndef $(2)_INSTALL_STAGING_CMDS define $(2)_INSTALL_STAGING_CMDS $$(TARGET_MAKE_ENV) $$($$(PKG)_MAKE_ENV) $$($$(PKG)_MAKE) $$($$(PKG)_INSTALL_STAGING_OPTS) -C $$($$(PKG)_SRCDIR) find $$(STAGING_DIR)/usr/lib* -name "*.la" | xargs --no-run-if-empty\
Quoted 5 lines
$$(SED) "s:$$(BASE_DIR):@BASE_DIR@:g" \ -e "s:$$(STAGING_DIR):@STAGING_DIR@:g" \ $$(if $$(TOOLCHAIN_EXTERNAL_INSTALL_DIR),\ -e"s:$$(TOOLCHAIN_EXTERNAL_INSTALL_DIR):@TOOLCHAIN_EXTERNAL_INSTALL_DIR@:g")
\
Quoted 4 lines
-e "s:\(['= ]\)/usr:\\1 at STAGING_DIR@/usr:g" \ $$(if $$(TOOLCHAIN_EXTERNAL_INSTALL_DIR),\ -e"s:@TOOLCHAIN_EXTERNAL_INSTALL_DIR@:$$(TOOLCHAIN_EXTERNAL_INSTALL_DIR):g")
Quoted 8 lines
\
Quoted 1 line
Can you double-check that there is no space behind the \ here?
Regards,
Arnout
Yes, that was the problem. I removed the trailing spaces and now the .la files in the staging directory all have the right path. Sorry about that Arnaut, and thank you very much for your help.
Regards,
Carlos
Quoted 24 lines
Quoted 10 lines
-e "s:@STAGING_DIR@:$$(STAGING_DIR):g" \ -e "s:@BASE_DIR@:$$(BASE_DIR):g"endef
endifQuoted 7 lines
[snip] -- Arnout Vandecappelle arnout at mind be Senior Embedded Software Architect +32-16-286500 Essensium/Mind http://www.mind.be G.Geenslaan 9, 3001 Leuven, Belgium BE 872 984 063 RPRLeuven
Quoted 4 lines
LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
GPG fingerprint: 7CB5 E4CC 6C2E EFD4 6E3D A754 F963 ECAB 2450 2F1F
Quoted 8 lines
--
Arnout Vandecappelle arnout at mind be Senior Embedded Software Architect +32-16-286500 Essensium/Mind http://www.mind.be G.Geenslaan 9, 3001 Leuven, Belgium BE 872 984 063 RPR Leuven LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle GPG fingerprint: 7CB5 E4CC 6C2E EFD4 6E3D A754 F963 ECAB 2450 2F1F
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.busybox.net/pipermail/buildroot/attachments/20150503/bbef456c/attachment.html>