Pull request for branch pre-built-packages
Hello,
Recently, we have had a number of users having issues with external toolchains because those are built for 32 bits Linux, and most developers know use 64 bits build machines. The error message such users get so far is very cryptic "Cannot execute cross-compiler".
So, this set of patches adds a small infrastructure in the form of a Kconfig option and a check in dependencies.sh. The Kconfig option allows packages to tell whether they need 32 bits compatibility libraries, and the check in dependencies.sh verifies that those libraries are installed (simply by checking the presence of the 32 bits dynamic loader).
Then, all pre-built external toolchains as well as the sam-ba tool are modified to use this mechanism.
As a preliminary patch, all the pre-built external toolchains are changed to be visible only if the host architecture is x86 or x86-64.
Thanks,
Thomas
The following changes since commit 4848386446b937d4d0d9d3e9489932ca3fcb1003:
libffi: fix mips build failures (2012-12-28 16:55:09 +0100)
are available in the git repository at:
git://git.free-electrons.com/users/thomas-petazzoni/buildroot.git pre-built-packages
for you to fetch changes up to fbccee70c941bfc2e0c8d0c62cf78e726ae35170:
sam-ba: select BR2_HOSTARCH_NEEDS_IA32_LIBS (2012-12-29 17:06:41 +0100)
----------------------------------------------------------------
Thomas Petazzoni (4):
toolchain-external: add dependency on BR2_HOST_ARCH Infrastructure to warn the user about missing 32 bits libraries
toolchain-external: use BR2_HOSTARCH_NEEDS_IA32_LIBS where needed
sam-ba: select BR2_HOSTARCH_NEEDS_IA32_LIBS
Config.in | 6 ++++ package/sam-ba/Config.in.host | 1 + support/dependencies/dependencies.sh | 11 +++++++ toolchain/toolchain-external/Config.in | 54 ++++++++++++++++++++++++++++++++ 4 files changed, 72 insertions(+)
Thanks,
Signature · 1 line
Thomas Petazzoni
PATCH 1/4 toolchain-external: add dependency on BR2_HOST_ARCH
The pre-build external toolchains are all built for x86, so they are only available if the build machine is a x86 or x86-64 machine.
--- toolchain/toolchain-external/Config.in | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+)
toolchain/toolchain-external/Config.in +27 -0
@@ -7,6 +7,7 @@ config BR2_TOOLCHAIN_EXTERNAL_LINARO_2012_12 bool "Linaro 2012.12" depends on BR2_arm depends on BR2_cortex_a5 || BR2_cortex_a8 || BR2_cortex_a9 || BR2_cortex_a15 + depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" select BR2_TOOLCHAIN_EXTERNAL_GLIBC select BR2_TOOLCHAIN_HAS_NATIVE_RPC select BR2_INSTALL_LIBSTDCPP
@@ -24,6 +25,7 @@ config BR2_TOOLCHAIN_EXTERNAL_LINARO_2012_11 bool "Linaro 2012.11" depends on BR2_arm depends on BR2_cortex_a5 || BR2_cortex_a8 || BR2_cortex_a9 || BR2_cortex_a15 + depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" select BR2_TOOLCHAIN_EXTERNAL_GLIBC select BR2_TOOLCHAIN_HAS_NATIVE_RPC select BR2_INSTALL_LIBSTDCPP
@@ -41,6 +43,7 @@ config BR2_TOOLCHAIN_EXTERNAL_LINARO_2012_10 bool "Linaro 2012.10" depends on BR2_arm depends on BR2_cortex_a5 || BR2_cortex_a8 || BR2_cortex_a9 || BR2_cortex_a15 + depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" select BR2_TOOLCHAIN_EXTERNAL_GLIBC select BR2_TOOLCHAIN_HAS_NATIVE_RPC select BR2_INSTALL_LIBSTDCPP
@@ -61,6 +64,7 @@ comment "Linaro toolchains available for Cortex-A{5,8,9,15}" config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM201203 bool "Sourcery CodeBench ARM 2012.03" depends on BR2_arm + depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" select BR2_TOOLCHAIN_EXTERNAL_GLIBC select BR2_TOOLCHAIN_HAS_NATIVE_RPC select BR2_INSTALL_LIBSTDCPP
@@ -83,6 +87,7 @@ config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM201203 config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM201109 bool "Sourcery CodeBench ARM 2011.09" depends on BR2_arm + depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" select BR2_TOOLCHAIN_EXTERNAL_GLIBC select BR2_TOOLCHAIN_HAS_NATIVE_RPC select BR2_INSTALL_LIBSTDCPP
@@ -105,6 +110,7 @@ config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM201109 config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS201209 bool "Sourcery CodeBench MIPS 2012.09" depends on BR2_mips || BR2_mipsel + depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" select BR2_TOOLCHAIN_EXTERNAL_GLIBC select BR2_TOOLCHAIN_HAS_NATIVE_RPC select BR2_INSTALL_LIBSTDCPP
@@ -173,6 +179,7 @@ config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS201209 config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS201203 bool "Sourcery CodeBench MIPS 2012.03" depends on BR2_mips || BR2_mipsel + depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" select BR2_TOOLCHAIN_EXTERNAL_GLIBC select BR2_TOOLCHAIN_HAS_NATIVE_RPC select BR2_INSTALL_LIBSTDCPP
@@ -241,6 +248,7 @@ config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS201203 config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM201103 bool "Sourcery CodeBench ARM 2011.03" depends on BR2_arm + depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" select BR2_TOOLCHAIN_EXTERNAL_GLIBC select BR2_TOOLCHAIN_HAS_NATIVE_RPC select BR2_INSTALL_LIBSTDCPP
@@ -263,6 +271,7 @@ config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM201103 config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS201109 bool "Sourcery CodeBench MIPS 2011.09" depends on BR2_mips || BR2_mipsel + depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" select BR2_TOOLCHAIN_EXTERNAL_GLIBC select BR2_TOOLCHAIN_HAS_NATIVE_RPC select BR2_INSTALL_LIBSTDCPP
@@ -331,6 +340,7 @@ config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS201109 config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_POWERPC201103 bool "Sourcery CodeBench PowerPC 2011.03" depends on BR2_powerpc + depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" select BR2_TOOLCHAIN_EXTERNAL_GLIBC select BR2_TOOLCHAIN_HAS_NATIVE_RPC select BR2_INSTALL_LIBSTDCPP
@@ -359,6 +369,7 @@ config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_POWERPC201103 config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_POWERPC201009 bool "Sourcery CodeBench PowerPC 2010.09" depends on BR2_powerpc + depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" select BR2_TOOLCHAIN_EXTERNAL_GLIBC select BR2_TOOLCHAIN_HAS_NATIVE_RPC select BR2_INSTALL_LIBSTDCPP
@@ -387,6 +398,7 @@ config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_POWERPC201009 config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_SH201209 bool "Sourcery CodeBench SH 2012.09" depends on BR2_sh4a || BR2_sh4aeb + depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" select BR2_TOOLCHAIN_EXTERNAL_GLIBC select BR2_TOOLCHAIN_HAS_NATIVE_RPC select BR2_INSTALL_LIBSTDCPP
@@ -407,6 +419,7 @@ config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_SH201209 config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_SH201203 bool "Sourcery CodeBench SH 2012.03" depends on BR2_sh4a || BR2_sh4aeb + depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" select BR2_TOOLCHAIN_EXTERNAL_GLIBC select BR2_INSTALL_LIBSTDCPP help
@@ -426,6 +439,7 @@ config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_SH201203 config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_SH201103 bool "Sourcery CodeBench SH 2011.03" depends on BR2_sh4a || BR2_sh4aeb + depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" select BR2_TOOLCHAIN_EXTERNAL_GLIBC select BR2_TOOLCHAIN_HAS_NATIVE_RPC select BR2_INSTALL_LIBSTDCPP
@@ -446,6 +460,7 @@ config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_SH201103 config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_SH2A_201103 bool "Sourcery CodeBench SH 2011.03" depends on BR2_sh2a + depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" select BR2_TOOLCHAIN_EXTERNAL_UCLIBC select BR2_LARGEFILE select BR2_TOOLCHAIN_HAS_NATIVE_RPC
@@ -463,6 +478,7 @@ config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_SH2A_201103 config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_SH2A_201009 bool "Sourcery CodeBench SH 2010.09" depends on BR2_sh2a + depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" select BR2_TOOLCHAIN_EXTERNAL_UCLIBC select BR2_LARGEFILE select BR2_TOOLCHAIN_HAS_NATIVE_RPC
@@ -480,6 +496,7 @@ config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_SH2A_201009 config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_X86_201209 bool "Sourcery CodeBench x86/x86_64 2012.09" depends on BR2_i386 || BR2_x86_64 + depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" select BR2_TOOLCHAIN_EXTERNAL_GLIBC select BR2_TOOLCHAIN_HAS_NATIVE_RPC select BR2_INSTALL_LIBSTDCPP
@@ -502,6 +519,7 @@ config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_X86_201209 config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_X86_201203 bool "Sourcery CodeBench x86/x86_64 2012.03" depends on BR2_i386 || BR2_x86_64 + depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" select BR2_TOOLCHAIN_EXTERNAL_GLIBC select BR2_INSTALL_LIBSTDCPP help
@@ -523,6 +541,7 @@ config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_X86_201203 config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_X86_201109 bool "Sourcery CodeBench x86/x86_64 2011.09" depends on BR2_i386 || BR2_x86_64 + depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" select BR2_TOOLCHAIN_EXTERNAL_GLIBC select BR2_TOOLCHAIN_HAS_NATIVE_RPC select BR2_INSTALL_LIBSTDCPP
@@ -545,6 +564,7 @@ config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_X86_201109 config BR2_TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX_2012R1 bool "Blackfin.uclinux.org 2012R1-BETA1" depends on BR2_bfin + depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" select BR2_TOOLCHAIN_EXTERNAL_UCLIBC select BR2_INSTALL_LIBSTDCPP select BR2_LARGEFILE
@@ -560,6 +580,7 @@ config BR2_TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX_2012R1 config BR2_TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX_2011R1 bool "Blackfin.uclinux.org 2011R1-RC4" depends on BR2_bfin + depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" select BR2_TOOLCHAIN_EXTERNAL_UCLIBC select BR2_INSTALL_LIBSTDCPP select BR2_LARGEFILE
@@ -575,6 +596,7 @@ config BR2_TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX_2011R1 config BR2_TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX_2010RC1 bool "Blackfin.uclinux.org 2010RC1" depends on BR2_bfin + depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" select BR2_TOOLCHAIN_EXTERNAL_UCLIBC select BR2_INSTALL_LIBSTDCPP select BR2_LARGEFILE
@@ -590,6 +612,7 @@ config BR2_TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX_2010RC1 config BR2_TOOLCHAIN_EXTERNAL_XILINX_MICROBLAZEEL_V2 bool "Xilinx Little Endian Microblaze GNU Tools" depends on BR2_microblazeel + depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" select BR2_TOOLCHAIN_EXTERNAL_GLIBC select BR2_TOOLCHAIN_HAS_NATIVE_RPC help
@@ -599,6 +622,7 @@ config BR2_TOOLCHAIN_EXTERNAL_XILINX_MICROBLAZEEL_V2 config BR2_TOOLCHAIN_EXTERNAL_XILINX_MICROBLAZEBE_V2 bool "Xilinx Big Endian Microblaze GNU Tools" depends on BR2_microblazebe + depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" select BR2_TOOLCHAIN_EXTERNAL_GLIBC select BR2_TOOLCHAIN_HAS_NATIVE_RPC help
@@ -608,6 +632,7 @@ config BR2_TOOLCHAIN_EXTERNAL_XILINX_MICROBLAZEBE_V2 config BR2_TOOLCHAIN_EXTERNAL_LINARO_AARCH64_12_12 bool "Linaro AArch64 12.12" depends on BR2_aarch64 + depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" select BR2_TOOLCHAIN_EXTERNAL_GLIBC select BR2_INSTALL_LIBSTDCPP help
@@ -617,6 +642,7 @@ config BR2_TOOLCHAIN_EXTERNAL_LINARO_AARCH64_12_12 config BR2_TOOLCHAIN_EXTERNAL_LINARO_AARCH64_12_11 bool "Linaro AArch64 12.11" depends on BR2_aarch64 + depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" select BR2_TOOLCHAIN_EXTERNAL_GLIBC select BR2_INSTALL_LIBSTDCPP help
@@ -626,6 +652,7 @@ config BR2_TOOLCHAIN_EXTERNAL_LINARO_AARCH64_12_11 config BR2_TOOLCHAIN_EXTERNAL_LINARO_AARCH64_12_10 bool "Linaro AArch64 12.10" depends on BR2_aarch64 + depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" select BR2_TOOLCHAIN_EXTERNAL_GLIBC select BR2_INSTALL_LIBSTDCPP help
Signature · 1 line
1.7.9.5
PATCH 2/4 Infrastructure to warn the user about missing 32 bits libraries
In reply to Thomas PetazzoniMany users trying to use external toolchains on x86-64 machines get a very confusing message:
"Can't execute cross-compiler"
They get this message because they forgot to install the 32 bits compatibility libraries that are needed to run binaries compiled for x86 on x86-64 machines.
Since this is the case for both external toolchains and certain binary-only tools like SAM-BA, we add a new Kconfig option BR2_HOSTARCH_NEEDS_IA32_LIBS, that packages must select if they need the 32 bits compatibility libraries. When this option is enabled, dependencies.sh checks that the 32 bits dynamic library loader is present on the system, and if not, it stops and shows an error.
The path and name of the 32 bits dynamic loader is hardcoded because it is very unlikely to change, as it would break the ABI for all binaries.
Also, it is worth noting that the check will be done even if we're running on a 32 bits machine. This is harmless, as 32 bits machines necessarily have the 32 bits dynamic loader installed, so the error will never show up in this case.
--- Config.in | 6 ++++++ support/dependencies/dependencies.sh | 11 +++++++++++ 2 files changed, 17 insertions(+)
Config.in +6 -0
@@ -14,6 +14,12 @@ config BR2_HOSTARCH string option env="HOSTARCH" +# Hidden boolean selected by pre-built packages for x86, when they +# need to run on x86-64 machines (example: pre-built external +# toolchains, binary tools like SAM-BA, etc.). +config BR2_HOSTARCH_NEEDS_IA32_LIBS + bool + source "arch/Config.in" menu "Build options"
support/dependencies/dependencies.sh +11 -0
@@ -166,3 +166,14 @@ if grep -q ^BR2_PACKAGE_CLASSPATH=y $CONFIG_FILE ; then fi done fi +if grep -q ^BR2_HOSTARCH_NEEDS_IA32_LIBS=y $CONFIG_FILE ; then + if test ! -f /lib/ld-linux.so.2 ; then + /bin/echo -e "\nYour Buildroot configuration uses some pre-built tools for the x86 architecture," + /bin/echo -e "but your build machine uses the x86-64 architecture without the 32 bits compatibility" + /bin/echo -e "library." + /bin/echo -e "If you're running a Debian/Ubuntu distribution, install the libc:i386 package." + /bin/echo -e "For other distributions, refer to the documentation on how to install the 32 bits" + /bin/echo -e "compatibility libraries." + exit 1 + fi +fi
Signature · 1 line
1.7.9.5
PATCH 2/4 Infrastructure to warn the user about missing 32 bits libraries
Quoted 5 lines · Thomas Petazzoni
Many users trying to use external toolchains on x86-64 machines get a very confusing message:
"Can't execute cross-compiler"
Quoted 7 lines
They get this message because they forgot to install the 32 bits compatibility libraries that are needed to run binaries compiled for x86 on x86-64 machines.
Since this is the case for both external toolchains and certain binary-only tools like SAM-BA, we add a new
KconfigoptionBR2_HOSTARCH_NEEDS_IA32_LIBS, that packages must select if they need
Since x86_64 is also an IA32, I would rather call itBR2_HOSTARCH_NEEDS_I386_LIBS.
Quoted 4 lines
the 32 bits compatibility libraries. When this option is enabled,
dependencies.shchecks that the 32 bits dynamic library loader is present on the system, and if not, it stops and shows an error.
Quoted 8 lines
The path and name of the 32 bits dynamic loader is hardcoded because it is very unlikely to change, as it would break the ABI for all binaries.
Also, it is worth noting that the check will be done even if we're running on a 32 bits machine. This is harmless, as 32 bits machines necessarily have the 32 bits dynamic loader installed, so the error will never show up in this case.
Perhaps move these two comments to dependencies.sh so we don't forget
about it?
Quoted 2 lines
Signed-off-by Thomas Petazzoni<[email protected]>
Quoted 27 lines
--- Config.in | 6 ++++++ support/dependencies/dependencies.sh | 11 +++++++++++ 2 files changed, 17 insertions(+)Config.in +6
-0@@ -14,6 +14,12 @@ config BR2_HOSTARCH string option env="HOSTARCH" +# Hidden boolean selected by pre-built packages for x86, when they +# need to run on x86-64 machines (example: pre-built external +# toolchains, binary tools like SAM-BA, etc.). +config BR2_HOSTARCH_NEEDS_IA32_LIBS + bool + source "arch/Config.in" menu "Build options"support/dependencies/dependencies.sh +0
-0
support/dependencies/dependencies.sh if grep -q ^BR2_PACKAGE_CLASSPATH=y $CONFIG_FILE ; then · line 172
Quoted 7 lines
support/dependencies/dependencies.sh +4
-0@@ -166,3 +166,14 @@ if grep -q ^BR2_PACKAGE_CLASSPATH=y $CONFIG_FILE ; then fi done fi +if grep -q ^BR2_HOSTARCH_NEEDS_IA32_LIBS=y $CONFIG_FILE ; then + if test ! -f /lib/ld-linux.so.2 ; then + /bin/echo -e "\nYour Buildroot configuration uses some pre-built tools for the x86 architecture," + /bin/echo -e "but your build machine uses the x86-64 architecture without the 32 bits compatibility"
This line is more than 80 columns.
support/dependencies/dependencies.sh if grep -q ^BR2_PACKAGE_CLASSPATH=y $CONFIG_FILE ; then · line 176
Quoted 4 lines
support/dependencies/dependencies.sh +4
-0+ /bin/echo -e "library." + /bin/echo -e "If you're running a Debian/Ubuntu distribution, install the libc:i386 package." + /bin/echo -e "For other distributions, refer to the documentation on how to install the 32 bits" + /bin/echo -e "compatibility libraries."
"the documentation" sounds as if it is the buildroot documentation, so
make it "refer to your distribution's documentation"
Also this is only for relatively recent Debian/Ubuntu with full
multilib support. Before that it was called libc-i386 IIRC.
Is there anyone out there with a Redhat/Fedora who can tell us how to
install it there?
And finally, it would be good to mention this indocs/manual/prerequisite.txt
Regards,
Arnout
Quoted 3 lines
support/dependencies/dependencies.sh +3
-0+ exit 1 + fi +fi
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 3/4 toolchain-external: use BR2_HOSTARCH_NEEDS_IA32_LIBS where needed
In reply to Thomas PetazzoniAll supported pre-built external toolchains are built for x86 Linux, so we add the BR2_HOSTARCH_NEEDS_IA32_LIBS select.
--- toolchain/toolchain-external/Config.in | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+)
toolchain/toolchain-external/Config.in +27 -0
@@ -11,6 +11,7 @@ config BR2_TOOLCHAIN_EXTERNAL_LINARO_2012_12 select BR2_TOOLCHAIN_EXTERNAL_GLIBC select BR2_TOOLCHAIN_HAS_NATIVE_RPC select BR2_INSTALL_LIBSTDCPP + select BR2_HOSTARCH_NEEDS_IA32_LIBS help Linaro toolchain for the ARM architecture. It uses Linaro GCC 2012.12 (based on gcc 4.7), Linaro GDB 2012.12 (based on
@@ -29,6 +30,7 @@ config BR2_TOOLCHAIN_EXTERNAL_LINARO_2012_11 select BR2_TOOLCHAIN_EXTERNAL_GLIBC select BR2_TOOLCHAIN_HAS_NATIVE_RPC select BR2_INSTALL_LIBSTDCPP + select BR2_HOSTARCH_NEEDS_IA32_LIBS help Linaro toolchain for the ARM architecture. It uses Linaro GCC 2012.11 (based on gcc 4.7), Linaro GDB 2012.10 (based on
@@ -47,6 +49,7 @@ config BR2_TOOLCHAIN_EXTERNAL_LINARO_2012_10 select BR2_TOOLCHAIN_EXTERNAL_GLIBC select BR2_TOOLCHAIN_HAS_NATIVE_RPC select BR2_INSTALL_LIBSTDCPP + select BR2_HOSTARCH_NEEDS_IA32_LIBS help Linaro toolchain for the ARM architecture. It uses Linaro GCC 2012.10 (based on gcc 4.7), Linaro GDB 2012.10 (based on
@@ -68,6 +71,7 @@ config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM201203 select BR2_TOOLCHAIN_EXTERNAL_GLIBC select BR2_TOOLCHAIN_HAS_NATIVE_RPC select BR2_INSTALL_LIBSTDCPP + select BR2_HOSTARCH_NEEDS_IA32_LIBS help Sourcery CodeBench toolchain for the ARM architecture, from Mentor Graphics. It uses gcc 4.6.3, binutils 2.21.53, glibc
@@ -91,6 +95,7 @@ config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM201109 select BR2_TOOLCHAIN_EXTERNAL_GLIBC select BR2_TOOLCHAIN_HAS_NATIVE_RPC select BR2_INSTALL_LIBSTDCPP + select BR2_HOSTARCH_NEEDS_IA32_LIBS help Sourcery CodeBench toolchain for the ARM architecture, from Mentor Graphics. It uses gcc 4.6.1, binutils 2.21.53, glibc
@@ -114,6 +119,7 @@ config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS201209 select BR2_TOOLCHAIN_EXTERNAL_GLIBC select BR2_TOOLCHAIN_HAS_NATIVE_RPC select BR2_INSTALL_LIBSTDCPP + select BR2_HOSTARCH_NEEDS_IA32_LIBS help Sourcery CodeBench toolchain for the MIPS architecture, from Mentor Graphics. It uses gcc 4.7.2, binutils 2.23.51, glibc
@@ -183,6 +189,7 @@ config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS201203 select BR2_TOOLCHAIN_EXTERNAL_GLIBC select BR2_TOOLCHAIN_HAS_NATIVE_RPC select BR2_INSTALL_LIBSTDCPP + select BR2_HOSTARCH_NEEDS_IA32_LIBS help Sourcery CodeBench toolchain for the MIPS architecture, from Mentor Graphics. It uses gcc 4.6.3, binutils 2.21.53, glibc
@@ -252,6 +259,7 @@ config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM201103 select BR2_TOOLCHAIN_EXTERNAL_GLIBC select BR2_TOOLCHAIN_HAS_NATIVE_RPC select BR2_INSTALL_LIBSTDCPP + select BR2_HOSTARCH_NEEDS_IA32_LIBS help Sourcery CodeBench toolchain for the ARM architecture, from Mentor Graphics. It uses gcc 4.5.2, binutils 2.20.51, glibc
@@ -275,6 +283,7 @@ config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS201109 select BR2_TOOLCHAIN_EXTERNAL_GLIBC select BR2_TOOLCHAIN_HAS_NATIVE_RPC select BR2_INSTALL_LIBSTDCPP + select BR2_HOSTARCH_NEEDS_IA32_LIBS help Sourcery CodeBench toolchain for the MIPS architecture, from Mentor Graphics. It uses gcc 4.5.2, binutils 2.21.53, glibc
@@ -344,6 +353,7 @@ config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_POWERPC201103 select BR2_TOOLCHAIN_EXTERNAL_GLIBC select BR2_TOOLCHAIN_HAS_NATIVE_RPC select BR2_INSTALL_LIBSTDCPP + select BR2_HOSTARCH_NEEDS_IA32_LIBS help Sourcery CodeBench toolchain for the PowerPC architecture, from Mentor Graphics. It uses gcc 4.5.2, binutils 2.20.51,
@@ -373,6 +383,7 @@ config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_POWERPC201009 select BR2_TOOLCHAIN_EXTERNAL_GLIBC select BR2_TOOLCHAIN_HAS_NATIVE_RPC select BR2_INSTALL_LIBSTDCPP + select BR2_HOSTARCH_NEEDS_IA32_LIBS help Sourcery CodeBench toolchain for the PowerPC architecture, from Mentor Graphics. It uses gcc 4.5.1, binutils 2.20,
@@ -402,6 +413,7 @@ config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_SH201209 select BR2_TOOLCHAIN_EXTERNAL_GLIBC select BR2_TOOLCHAIN_HAS_NATIVE_RPC select BR2_INSTALL_LIBSTDCPP + select BR2_HOSTARCH_NEEDS_IA32_LIBS help Sourcery CodeBench toolchain for the SuperH architecture, from Mentor Graphics. It uses gcc 4.7.2, binutils 2.23.51,
@@ -422,6 +434,7 @@ config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_SH201203 depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" select BR2_TOOLCHAIN_EXTERNAL_GLIBC select BR2_INSTALL_LIBSTDCPP + select BR2_HOSTARCH_NEEDS_IA32_LIBS help Sourcery CodeBench toolchain for the SuperH architecture, from Mentor Graphics. It uses gcc 4.6.3, binutils 2.21.53,
@@ -443,6 +456,7 @@ config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_SH201103 select BR2_TOOLCHAIN_EXTERNAL_GLIBC select BR2_TOOLCHAIN_HAS_NATIVE_RPC select BR2_INSTALL_LIBSTDCPP + select BR2_HOSTARCH_NEEDS_IA32_LIBS help Sourcery CodeBench toolchain for the SuperH architecture, from Mentor Graphics. It uses gcc 4.5.2, binutils 2.20,
@@ -468,6 +482,7 @@ config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_SH2A_201103 select BR2_TOOLCHAIN_HAS_THREADS select BR2_TOOLCHAIN_HAS_THREADS_DEBUG select BR2_INSTALL_LIBSTDCPP + select BR2_HOSTARCH_NEEDS_IA32_LIBS help Sourcery CodeBench toolchain for the SuperH architecture, from Mentor Graphics. It uses gcc 4.5.2, binutils 2.20,
@@ -486,6 +501,7 @@ config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_SH2A_201009 select BR2_TOOLCHAIN_HAS_THREADS select BR2_TOOLCHAIN_HAS_THREADS_DEBUG select BR2_INSTALL_LIBSTDCPP + select BR2_HOSTARCH_NEEDS_IA32_LIBS help Sourcery CodeBench toolchain for the SuperH architecture, from Mentor Graphics. It uses gcc 4.5.1, binutils 2.20,
@@ -500,6 +516,7 @@ config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_X86_201209 select BR2_TOOLCHAIN_EXTERNAL_GLIBC select BR2_TOOLCHAIN_HAS_NATIVE_RPC select BR2_INSTALL_LIBSTDCPP + select BR2_HOSTARCH_NEEDS_IA32_LIBS help Sourcery CodeBench toolchain for the x86/x86_64 architectures, from Mentor Graphics. It uses gcc 4.7.2,
@@ -522,6 +539,7 @@ config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_X86_201203 depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" select BR2_TOOLCHAIN_EXTERNAL_GLIBC select BR2_INSTALL_LIBSTDCPP + select BR2_HOSTARCH_NEEDS_IA32_LIBS help Sourcery CodeBench toolchain for the x86/x86_64 architectures, from Mentor Graphics. It uses gcc 4.6.3,
@@ -545,6 +563,7 @@ config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_X86_201109 select BR2_TOOLCHAIN_EXTERNAL_GLIBC select BR2_TOOLCHAIN_HAS_NATIVE_RPC select BR2_INSTALL_LIBSTDCPP + select BR2_HOSTARCH_NEEDS_IA32_LIBS help Sourcery CodeBench toolchain for the x86/x86_64 architectures, from Mentor Graphics. It uses gcc 4.6.1,
@@ -573,6 +592,7 @@ config BR2_TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX_2012R1 select BR2_USE_WCHAR select BR2_TOOLCHAIN_HAS_THREADS select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_HOSTARCH_NEEDS_IA32_LIBS help Toolchain for the Blackfin architecture, from http://blackfin.uclinux.org.
@@ -589,6 +609,7 @@ config BR2_TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX_2011R1 select BR2_USE_WCHAR select BR2_TOOLCHAIN_HAS_THREADS select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_HOSTARCH_NEEDS_IA32_LIBS help Toolchain for the Blackfin architecture, from http://blackfin.uclinux.org.
@@ -605,6 +626,7 @@ config BR2_TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX_2010RC1 select BR2_USE_WCHAR select BR2_TOOLCHAIN_HAS_THREADS select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_HOSTARCH_NEEDS_IA32_LIBS help Toolchain for the Blackfin architecture, from http://blackfin.uclinux.org.
@@ -615,6 +637,7 @@ config BR2_TOOLCHAIN_EXTERNAL_XILINX_MICROBLAZEEL_V2 depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" select BR2_TOOLCHAIN_EXTERNAL_GLIBC select BR2_TOOLCHAIN_HAS_NATIVE_RPC + select BR2_HOSTARCH_NEEDS_IA32_LIBS help Toolchain for the Microblaze architecture, from http://wiki.xilinx.com/mb-gnu-tools
@@ -625,6 +648,7 @@ config BR2_TOOLCHAIN_EXTERNAL_XILINX_MICROBLAZEBE_V2 depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" select BR2_TOOLCHAIN_EXTERNAL_GLIBC select BR2_TOOLCHAIN_HAS_NATIVE_RPC + select BR2_HOSTARCH_NEEDS_IA32_LIBS help Toolchain for the Microblaze architecture, from http://wiki.xilinx.com/mb-gnu-tools
@@ -635,6 +659,7 @@ config BR2_TOOLCHAIN_EXTERNAL_LINARO_AARCH64_12_12 depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" select BR2_TOOLCHAIN_EXTERNAL_GLIBC select BR2_INSTALL_LIBSTDCPP + select BR2_HOSTARCH_NEEDS_IA32_LIBS help Toolchain for the AArch64 architecture, from http://www.linaro.org/engineering/armv8/
@@ -645,6 +670,7 @@ config BR2_TOOLCHAIN_EXTERNAL_LINARO_AARCH64_12_11 depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" select BR2_TOOLCHAIN_EXTERNAL_GLIBC select BR2_INSTALL_LIBSTDCPP + select BR2_HOSTARCH_NEEDS_IA32_LIBS help Toolchain for the AArch64 architecture, from http://www.linaro.org/engineering/armv8/
@@ -655,6 +681,7 @@ config BR2_TOOLCHAIN_EXTERNAL_LINARO_AARCH64_12_10 depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" select BR2_TOOLCHAIN_EXTERNAL_GLIBC select BR2_INSTALL_LIBSTDCPP + select BR2_HOSTARCH_NEEDS_IA32_LIBS help Toolchain for the AArch64 architecture, from http://www.linaro.org/engineering/armv8/
Signature · 1 line
1.7.9.5
PATCH 4/4 sam-ba: select BR2_HOSTARCH_NEEDS_IA32_LIBS
In reply to Thomas Petazzonisam-ba is a pre-built binary tool built for x86 Linux, so on x86-64, it requires the 32 bits compatibility libraries to be installed.
--- package/sam-ba/Config.in.host | 1 + 1 file changed, 1 insertion(+)
package/sam-ba/Config.in.host +1 -0
@@ -1,6 +1,7 @@ config BR2_PACKAGE_HOST_SAM_BA bool "host sam-ba" depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" + select BR2_HOSTARCH_NEEDS_IA32_LIBS help Atmel SAM-BA software provides an open set of tools for programming the Atmel SAM3, SAM7 and SAM9 ARM-based
Signature · 1 line
1.7.9.5
Quoted 12 lines · Thomas Petazzoni
Recently, we have had a number of users having issues with external toolchains because those are built for 32 bits Linux, and most developers know use 64 bits build machines. The error message such users get so far is very cryptic "Cannot execute cross-compiler".
So, this set of patches adds a small infrastructure in the form of a
Kconfigoption and a check independencies.sh. TheKconfigoption allows packages to tell whether they need 32 bits compatibility libraries, and the check independencies.shverifies that those libraries are installed (simply by checking the presence of the 32 bits dynamic loader).
Quoted 5 lines
Then, all pre-built external toolchains as well as the sam-ba tool are modified to use this mechanism.
As a preliminary patch, all the pre-built external toolchains are changed to be visible only if the host architecture is x86 or x86-64.
Ping? Any problem with this?
Thanks,
Thomas
Signature · 4 lines
Thomas Petazzoni, Free Electrons Kernel, drivers, real-time and embedded Linux development, consulting, training and support. http://free-electrons.com
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
"Thomas" == Thomas Petazzoni <[email protected]> writes:
Thomas> Hello,
Thomas> Recently, we have had a number of users having issues with external Thomas> toolchains because those are built for 32 bits Linux, and most Thomas> developers know use 64 bits build machines. The error message such Thomas> users get so far is very cryptic "Cannot execute cross-compiler".
Thomas> So, this set of patches adds a small infrastructure in the form of a Thomas> Kconfig option and a check in dependencies.sh. The Kconfig option Thomas> allows packages to tell whether they need 32 bits compatibility Thomas> libraries, and the check in dependencies.sh verifies that those Thomas> libraries are installed (simply by checking the presence of the 32 Thomas> bits dynamic loader).
Thomas> Then, all pre-built external toolchains as well as the sam-ba tool are Thomas> modified to use this mechanism.
Thomas> As a preliminary patch, all the pre-built external toolchains are Thomas> changed to be visible only if the host architecture is x86 or x86-64.
The microblaze ext toolchains are 64bit, so I've fixed that up and committed the series, thanks.
Signature · 1 line
Bye, Peter Korsgaard