* [Buildroot] [PATCH] Fix TARGET_PATH variable with external toolchain
@ 2009-10-24 0:04 Lionel Landwerlin
2009-10-24 18:37 ` Peter Korsgaard
0 siblings, 1 reply; 10+ messages in thread
From: Lionel Landwerlin @ 2009-10-24 0:04 UTC (permalink / raw)
To: buildroot
Some time ago, an external toolchain improvement patch added
$(HOST_DIR)/bin and $(HOST_DIR)/usr/bin to the TARGET_PATH variable.
This patch also removed $(STAGING_DIR)/bin and $(STAGING_DIR)/usr/bin
to TARGET_PATH which breaks the build of the WebKit package for
example.
WebKit depends on the icu package, and when configuring the package,
there is a need to run icu-config which is installed inside the
staging directory.
Signed-off-by: Lionel Landwerlin <llandwerlin@gmail.com>
---
package/Makefile.in | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/package/Makefile.in b/package/Makefile.in
index ccd7480..57bd6f5 100644
--- a/package/Makefile.in
+++ b/package/Makefile.in
@@ -119,7 +119,7 @@ else
TOOLCHAIN_EXTERNAL_PREFIX:=$(call qstrip,$(BR2_TOOLCHAIN_EXTERNAL_PREFIX))
TOOLCHAIN_EXTERNAL_PATH:=$(call qstrip,$(BR2_TOOLCHAIN_EXTERNAL_PATH))
TOOLCHAIN_DIR=$(BASE_DIR)/toolchain
-TARGET_PATH="$(HOST_DIR)/bin:$(HOST_DIR)/usr/bin:$(TOOLCHAIN_DIR)/bin:$(TOOLCHAIN_EXTERNAL_PATH)/bin:$(PATH)"
+TARGET_PATH="$(HOST_DIR)/bin:$(HOST_DIR)/usr/bin:$(TOOLCHAIN_DIR)/bin:$(TOOLCHAIN_EXTERNAL_PATH)/bin:$(STAGING_DIR)/bin:$(STAGING_DIR)/usr/bin:$(PATH)"
#IMAGE:=$(BINARIES_DIR)/$(BR2_ROOTFS_PREFIX).$(TOOLCHAIN_EXTERNAL_PREFIX)$(ROOTFS_SUFFIX)
IMAGE:=$(BINARIES_DIR)/$(BR2_ROOTFS_PREFIX).$(ARCH)$(ROOTFS_SUFFIX)
--
1.6.4.3
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [Buildroot] [PATCH] Fix TARGET_PATH variable with external toolchain
2009-10-24 0:04 [Buildroot] [PATCH] Fix TARGET_PATH variable with external toolchain Lionel Landwerlin
@ 2009-10-24 18:37 ` Peter Korsgaard
2009-10-24 19:52 ` Lionel Landwerlin
2009-10-27 7:44 ` Thomas Petazzoni
0 siblings, 2 replies; 10+ messages in thread
From: Peter Korsgaard @ 2009-10-24 18:37 UTC (permalink / raw)
To: buildroot
>>>>> "Lionel" == Lionel Landwerlin <llandwerlin@gmail.com> writes:
Lionel> Some time ago, an external toolchain improvement patch added
Lionel> $(HOST_DIR)/bin and $(HOST_DIR)/usr/bin to the TARGET_PATH variable.
Lionel> This patch also removed $(STAGING_DIR)/bin and $(STAGING_DIR)/usr/bin
Lionel> to TARGET_PATH which breaks the build of the WebKit package for
Lionel> example.
Lionel> WebKit depends on the icu package, and when configuring the package,
Lionel> there is a need to run icu-config which is installed inside the
Lionel> staging directory.
I don't like this, as it mixes binaries/scripts for the host and the
target - I think it's better for the icu package to install the host
tool into host/usr/bin as well instead.
--
Bye, Peter Korsgaard
^ permalink raw reply [flat|nested] 10+ messages in thread
* [Buildroot] [PATCH] Fix TARGET_PATH variable with external toolchain
2009-10-24 18:37 ` Peter Korsgaard
@ 2009-10-24 19:52 ` Lionel Landwerlin
2009-10-24 20:22 ` Peter Korsgaard
2009-10-27 7:44 ` Thomas Petazzoni
1 sibling, 1 reply; 10+ messages in thread
From: Lionel Landwerlin @ 2009-10-24 19:52 UTC (permalink / raw)
To: buildroot
Le samedi 24 octobre 2009 ? 20:37 +0200, Peter Korsgaard a ?crit :
> >>>>> "Lionel" == Lionel Landwerlin <llandwerlin@gmail.com> writes:
>
> Lionel> Some time ago, an external toolchain improvement patch added
> Lionel> $(HOST_DIR)/bin and $(HOST_DIR)/usr/bin to the TARGET_PATH variable.
> Lionel> This patch also removed $(STAGING_DIR)/bin and $(STAGING_DIR)/usr/bin
> Lionel> to TARGET_PATH which breaks the build of the WebKit package for
> Lionel> example.
>
> Lionel> WebKit depends on the icu package, and when configuring the package,
> Lionel> there is a need to run icu-config which is installed inside the
> Lionel> staging directory.
>
> I don't like this, as it mixes binaries/scripts for the host and the
> target - I think it's better for the icu package to install the host
> tool into host/usr/bin as well instead.
>
First let me argue that when buildroot is not using an external
toolchain, the $(STAGING_DIR)/bin and $(STAGING_DIR)/usr/bin paths are a
part of the TARGET_PATH variable.
But anyway, you're right, mixing binaries sucks.
Then, in this case, I don't think we can use the host script.
Let's right icu-config on my system :
djdeath at coalu:~$ icu-config --ldflags
-lm -L/usr/lib -licui18n -licuuc -licudata -lm
Same thing inside the staging directory :
djdeath at coalu:~/src/buildroot/buildroot_rebase$ ./output/staging/usr/bin/icu-config --ldflags
-lpthread -lm -L/home/djdeath/src/buildroot/buildroot_rebase/output/staging/usr/lib -licui18n -licuuc -licudata -lpthread -lm
The script returns paths relative to the host. This is going to be a
problem when linking the webkit binaries because the linker will have to
deal with host binaries... That's the same kind of problem we are fixing
with the libtool patch.
I'm wondering whether adding the following to package/webkit/webkit.mk
should fix the problem :
WEBKIT_CONF_ENV = icu_config=$(STAGING_DIR)/usr/bin/icu-config
This way the configure script should use the pre-filled variable and not
try to detect the icu-config's path. And we don't need to add the
staging bin directories to the TARGET_PATH.
A long term fix could be to use pkg-config instead of self made tool.
Patching/contributing to libicu is required.
--
Lionel Landwerlin <llandwerlin@gmail.com>
^ permalink raw reply [flat|nested] 10+ messages in thread
* [Buildroot] [PATCH] Fix TARGET_PATH variable with external toolchain
2009-10-24 19:52 ` Lionel Landwerlin
@ 2009-10-24 20:22 ` Peter Korsgaard
2009-10-25 13:52 ` Lionel Landwerlin
0 siblings, 1 reply; 10+ messages in thread
From: Peter Korsgaard @ 2009-10-24 20:22 UTC (permalink / raw)
To: buildroot
>>>>> "Lionel" == Lionel Landwerlin <llandwerlin@gmail.com> writes:
Lionel> First let me argue that when buildroot is not using an external
Lionel> toolchain, the $(STAGING_DIR)/bin and $(STAGING_DIR)/usr/bin
Lionel> paths are a part of the TARGET_PATH variable.
Hmm, you're right - what a mess. There's no good reason why these should
be different in the regard.
Lionel> The script returns paths relative to the host. This is going to
Lionel> be a problem when linking the webkit binaries because the
Lionel> linker will have to deal with host binaries... That's the same
Lionel> kind of problem we are fixing with the libtool patch.
Yes, but copying the script from staging to host shouldn't change that.
Lionel> I'm wondering whether adding the following to package/webkit/webkit.mk
Lionel> should fix the problem :
Lionel> WEBKIT_CONF_ENV = icu_config=$(STAGING_DIR)/usr/bin/icu-config
If the webkit configure script handles that (didn't check), then that
would certainly be the easiest/cleanest solution.
--
Bye, Peter Korsgaard
^ permalink raw reply [flat|nested] 10+ messages in thread
* [Buildroot] [PATCH] Fix TARGET_PATH variable with external toolchain
2009-10-24 20:22 ` Peter Korsgaard
@ 2009-10-25 13:52 ` Lionel Landwerlin
0 siblings, 0 replies; 10+ messages in thread
From: Lionel Landwerlin @ 2009-10-25 13:52 UTC (permalink / raw)
To: buildroot
Le samedi 24 octobre 2009 ? 22:22 +0200, Peter Korsgaard a ?crit :
> >>>>> "Lionel" == Lionel Landwerlin <llandwerlin@gmail.com> writes:
>
> Lionel> First let me argue that when buildroot is not using an external
> Lionel> toolchain, the $(STAGING_DIR)/bin and $(STAGING_DIR)/usr/bin
> Lionel> paths are a part of the TARGET_PATH variable.
>
> Hmm, you're right - what a mess. There's no good reason why these should
> be different in the regard.
>
> Lionel> The script returns paths relative to the host. This is going to
> Lionel> be a problem when linking the webkit binaries because the
> Lionel> linker will have to deal with host binaries... That's the same
> Lionel> kind of problem we are fixing with the libtool patch.
>
> Yes, but copying the script from staging to host shouldn't change that.
Yeah, that an idea. I don't which one is the cleanest.
>
> Lionel> I'm wondering whether adding the following to package/webkit/webkit.mk
> Lionel> should fix the problem :
>
> Lionel> WEBKIT_CONF_ENV = icu_config=$(STAGING_DIR)/usr/bin/icu-config
>
> If the webkit configure script handles that (didn't check), then that
> would certainly be the easiest/cleanest solution.
>
Ok, I just tested it and it works.
So the next step would probably be to remove $(STAGING_DIR)/bin and
$(STAGING_DIR)/usr/bin from the TARGET_PATH with source built
toolchains, but I'm pretty sure it's going to break some other packages.
Please find a patch as attachment.
Regards,
--
Lionel Landwerlin <llandwerlin@gmail.com>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-package-Set-icu-config-path.patch
Type: text/x-patch
Size: 748 bytes
Desc: not available
URL: <http://lists.busybox.net/pipermail/buildroot/attachments/20091025/02848f92/attachment.bin>
^ permalink raw reply [flat|nested] 10+ messages in thread
* [Buildroot] [PATCH] Fix TARGET_PATH variable with external toolchain
2009-10-24 18:37 ` Peter Korsgaard
2009-10-24 19:52 ` Lionel Landwerlin
@ 2009-10-27 7:44 ` Thomas Petazzoni
2009-10-27 9:45 ` Lionel Landwerlin
1 sibling, 1 reply; 10+ messages in thread
From: Thomas Petazzoni @ 2009-10-27 7:44 UTC (permalink / raw)
To: buildroot
Le Sat, 24 Oct 2009 20:37:57 +0200,
Peter Korsgaard <jacmet@uclibc.org> a ?crit :
> Lionel> Some time ago, an external toolchain improvement patch added
> Lionel> $(HOST_DIR)/bin and $(HOST_DIR)/usr/bin to the TARGET_PATH
> Lionel> variable. This patch also removed $(STAGING_DIR)/bin and
> Lionel> $(STAGING_DIR)/usr/bin to TARGET_PATH which breaks the build
> Lionel> of the WebKit package for example.
>
> Lionel> WebKit depends on the icu package, and when configuring the
> Lionel> package, there is a need to run icu-config which is
> Lionel> installed inside the staging directory.
>
> I don't like this, as it mixes binaries/scripts for the host and the
> target - I think it's better for the icu package to install the host
> tool into host/usr/bin as well instead.
As part of my work on the package infrastructure, I converted icu over
to the new format.
At first, I'd agree with you that icu-config, being executed on the
host, should theorically be installed in $(HOST_DIR). However, this
raises an issue : icu is compiled twice, once for the host, once for
the target.
In the current package/icu/icu.mk, the host icu is not installed at
all, but my package infrastructure work converts it to a more normal
package where the host icu is installed in $(HOST_DIR). Therefore, the
host icu installs its own icu-config in $(HOST_DIR)/usr/bin.
Then, we build the target icu, which also installs its own icu-config,
in $(STAGING_DIR)/usr/bin. It is not possible to install this
icu-config into $(HOST_DIR)/usr/bin, otherwise it would overwrite the
host-icu one.
Therefore, I think we have no other choice than leaving the *-config
stuff into $(STAGING_DIR)/usr/bin and then finding some trick to get
them executed even if $(STAGING_DIR)/usr/bin is not in the PATH.
What do you think about this ?
Sincerly,
Thomas
--
Thomas Petazzoni, Free Electrons
Kernel, drivers and embedded Linux development,
consulting, training and support.
http://free-electrons.com
^ permalink raw reply [flat|nested] 10+ messages in thread
* [Buildroot] [PATCH] Fix TARGET_PATH variable with external toolchain
2009-10-27 7:44 ` Thomas Petazzoni
@ 2009-10-27 9:45 ` Lionel Landwerlin
2009-10-27 9:53 ` Thomas Petazzoni
0 siblings, 1 reply; 10+ messages in thread
From: Lionel Landwerlin @ 2009-10-27 9:45 UTC (permalink / raw)
To: buildroot
Le mardi 27 octobre 2009 ? 08:44 +0100, Thomas Petazzoni a ?crit :
> Le Sat, 24 Oct 2009 20:37:57 +0200,
> Peter Korsgaard <jacmet@uclibc.org> a ?crit :
>
> > Lionel> Some time ago, an external toolchain improvement patch added
> > Lionel> $(HOST_DIR)/bin and $(HOST_DIR)/usr/bin to the TARGET_PATH
> > Lionel> variable. This patch also removed $(STAGING_DIR)/bin and
> > Lionel> $(STAGING_DIR)/usr/bin to TARGET_PATH which breaks the build
> > Lionel> of the WebKit package for example.
> >
> > Lionel> WebKit depends on the icu package, and when configuring the
> > Lionel> package, there is a need to run icu-config which is
> > Lionel> installed inside the staging directory.
> >
> > I don't like this, as it mixes binaries/scripts for the host and the
> > target - I think it's better for the icu package to install the host
> > tool into host/usr/bin as well instead.
>
> As part of my work on the package infrastructure, I converted icu over
> to the new format.
>
> At first, I'd agree with you that icu-config, being executed on the
> host, should theorically be installed in $(HOST_DIR). However, this
> raises an issue : icu is compiled twice, once for the host, once for
> the target.
>
> In the current package/icu/icu.mk, the host icu is not installed at
> all, but my package infrastructure work converts it to a more normal
> package where the host icu is installed in $(HOST_DIR). Therefore, the
> host icu installs its own icu-config in $(HOST_DIR)/usr/bin.
>
> Then, we build the target icu, which also installs its own icu-config,
> in $(STAGING_DIR)/usr/bin. It is not possible to install this
> icu-config into $(HOST_DIR)/usr/bin, otherwise it would overwrite the
> host-icu one.
>
> Therefore, I think we have no other choice than leaving the *-config
> stuff into $(STAGING_DIR)/usr/bin and then finding some trick to get
> them executed even if $(STAGING_DIR)/usr/bin is not in the PATH.
>
> What do you think about this ?
>
Sounds right to me.
Let's add
WEBKIT_CONF_ENV = icu_config=$(STAGING_DIR)/usr/bin/icu-config
to the webkit makefile.
^ permalink raw reply [flat|nested] 10+ messages in thread
* [Buildroot] [PATCH] Fix TARGET_PATH variable with external toolchain
2009-10-27 9:45 ` Lionel Landwerlin
@ 2009-10-27 9:53 ` Thomas Petazzoni
2009-10-27 10:17 ` Lionel Landwerlin
0 siblings, 1 reply; 10+ messages in thread
From: Thomas Petazzoni @ 2009-10-27 9:53 UTC (permalink / raw)
To: buildroot
Le Tue, 27 Oct 2009 10:45:07 +0100,
Lionel Landwerlin <llandwerlin@gmail.com> a ?crit :
> Sounds right to me.
>
> Let's add
>
> WEBKIT_CONF_ENV = icu_config=$(STAGING_DIR)/usr/bin/icu-config
>
> to the webkit makefile.
Sure. But we'll have to remember that this is the solution to apply on
all similar packages... for some of which a xxx_config configure
options might not be present.
Thomas
--
Thomas Petazzoni, Free Electrons
Kernel, drivers and embedded Linux development,
consulting, training and support.
http://free-electrons.com
^ permalink raw reply [flat|nested] 10+ messages in thread
* [Buildroot] [PATCH] Fix TARGET_PATH variable with external toolchain
2009-10-27 9:53 ` Thomas Petazzoni
@ 2009-10-27 10:17 ` Lionel Landwerlin
2009-10-27 16:36 ` Peter Korsgaard
0 siblings, 1 reply; 10+ messages in thread
From: Lionel Landwerlin @ 2009-10-27 10:17 UTC (permalink / raw)
To: buildroot
Le mardi 27 octobre 2009 ? 10:53 +0100, Thomas Petazzoni a ?crit :
> Le Tue, 27 Oct 2009 10:45:07 +0100,
> Lionel Landwerlin <llandwerlin@gmail.com> a ?crit :
>
> > Sounds right to me.
> >
> > Let's add
> >
> > WEBKIT_CONF_ENV = icu_config=$(STAGING_DIR)/usr/bin/icu-config
> >
> > to the webkit makefile.
>
> Sure. But we'll have to remember that this is the solution to apply on
> all similar packages... for some of which a xxx_config configure
> options might not be present.
Right.
In my config I built the following packages :
atk-1.22.0
atk-1.22.0-host
autoconf-2.63-host
automake-1.10-host
buildroot-config
busybox-1.15.1
busybox-1.15.2
cairo-1.6.4
cairo-1.6.4-host
dbus-1.2.16
directfb-1.4.2
directfb-examples-1.2.0
eina-0.0.2.060
enchant-1.5.0
ethtool-6
expat-2.0.1
expat-2.0.1-host
fakeroot-1.9.5
fakeroot-1.9.5-host
fontconfig-2.6.0
fontconfig-2.6.0-host
freetype-2.3.9
freetype-2.3.9-host
gettext-0.16.1
icu
icu-host
iostat-2.2
jpeg-6b
libcurl-7.19.2
libecore-0.9.9.062
libe_dbus-0.5.0.062
libedje-0.9.92.062
libeet-1.2.2
libeina-0.0.2.062
libembryo-0.9.9.062
liberation-fonts-1.04
libevas-0.9.9.062
libglib2-2.20.5
libglib2-2.20.5-host
libgtk2-2.12.12
libgtk2-2.12.12-host
libpng-1.2.38
libsoup-2.26.2
libtool-1.5.24-host
libungif-4.1.4
libxml2-2.7.3
libxslt-1.1.24
lzo-2.03
m4-1.4.9-host
makedevs-host
mtd_orig
openssh-5.1p1
openssl-0.9.8k
pango-1.20.5
pango-1.20.5-host
pixman-0.10.0
pixman-0.10.0-host
pkg-config-0.23-host
sawman-1.4.2
sqlite-3.6.18
strace-4.5.18
sysstat-9.0.5
tiff-3.8.2
udev-114
webkit-r44552
zlib-1.2.3
By the way, is there a set of configuration files that cover the list of
package that are known to work with buildroot ?
It could be interesting to setup some kind of non regression builds :)
--
Lionel Landwerlin <llandwerlin@gmail.com>
^ permalink raw reply [flat|nested] 10+ messages in thread
* [Buildroot] [PATCH] Fix TARGET_PATH variable with external toolchain
2009-10-27 10:17 ` Lionel Landwerlin
@ 2009-10-27 16:36 ` Peter Korsgaard
0 siblings, 0 replies; 10+ messages in thread
From: Peter Korsgaard @ 2009-10-27 16:36 UTC (permalink / raw)
To: buildroot
>>>>> "Lionel" == Lionel Landwerlin <llandwerlin@gmail.com> writes:
Hi,
Lionel> By the way, is there a set of configuration files that cover
Lionel> the list of package that are known to work with buildroot ?
Not a complete list, no. In concept, we would like all packages to work,
but as the number of combinations with 600+ packages / 5+ archs is so
high, there's bound to be issues.
Lionel> It could be interesting to setup some kind of non regression builds :)
Certainly. I have a buildbot instance running at where I work to test
the configs we're using, and I'm planning on setting up a public
buildbot soon.
I recently added make all{yes,no,random}packageconfig targets to make it
easier to test random package combinations.
--
Bye, Peter Korsgaard
^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2009-10-27 16:36 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-10-24 0:04 [Buildroot] [PATCH] Fix TARGET_PATH variable with external toolchain Lionel Landwerlin
2009-10-24 18:37 ` Peter Korsgaard
2009-10-24 19:52 ` Lionel Landwerlin
2009-10-24 20:22 ` Peter Korsgaard
2009-10-25 13:52 ` Lionel Landwerlin
2009-10-27 7:44 ` Thomas Petazzoni
2009-10-27 9:45 ` Lionel Landwerlin
2009-10-27 9:53 ` Thomas Petazzoni
2009-10-27 10:17 ` Lionel Landwerlin
2009-10-27 16:36 ` Peter Korsgaard
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox