Building on 64-bit Linux fails (Arch 2013-05)

Asked by Jon Watte

I'm trying to build on a pure 64-bit Linux, and it fails half-way through configuration of pre-requisites, apparently because of lack of i686 support. The generated config file claims #define HAVE_I686 1 but that's obviously a lie.

Given that you can't even buy i686 CPUs anymore, I assume that x86_64 must be a supported host, so what am I doing wrong here? Is there some option other than --skip_mingw I need to pass to the build-prerequisites.sh script?

I can't find a way to attach log files here, but you can find them here:

http://watte.net/errlog <-- the shell output of build-prerequisites.sh --skip_mingw32
http://watte.net/config.log <-- the config.log generated by that before it fails

Question information

Language:
English Edit question
Status:
Answered
For:
GNU Arm Embedded Toolchain Edit question
Assignee:
No assignee Edit question
Last query:
Last reply:
Revision history for this message
Jon Watte (jwatte) said :
#1

Btw: My Linux is Arch Linux, installed from the 2013-05-01 install CD and updated to the latest with pacman -Syu.

Revision history for this message
Terry Guo (terry.guo) said :
#2

As we stated in manual, the build scripts are for Ubuntu 8.10 32bit on i686 and Mac OS X. The other OS like Arch Linux are not tested. You might need to solve this issue on your own.

Revision history for this message
Joey Ye (jinyun-ye) said :
#3

Jon,

You actually needn't buy an i686 CPU to build. Instead, I'd suggest you install a 32 bit virtual machine on top of your x86_64 box to build.

Thanks - Joey

Revision history for this message
Cody P Schafer (codyps) said :
#4

Hard coding 32 bit is silly. Don't do that.

Here's a nasty, untested patch to build-common.sh to set BUILD properly. I don't know if this is the only issue.

--- build-common.sh.orig 2013-05-16 21:24:46.135364895 -0500
+++ build-common.sh 2013-05-16 21:27:17.162023309 -0500
@@ -329,8 +329,9 @@ BUGURL=""
 # on Ubuntu and Mac OS X.
 uname_string=`uname | sed 'y/LINUXDARWIN/linuxdarwin/'`
 if [ "x$uname_string" == "xlinux" ] ; then
- BUILD=i686-linux-gnu
- HOST_NATIVE=i686-linux-gnu
+ BUILD=$(gcc -v 2>&1 | grep '^Target:')
+ BUILD=${BUILD##Target: }
+ HOST_NATIVE=${BUILD}
     READLINK=readlink
     JOBS=`grep ^processor /proc/cpuinfo|wc -l`
     GCC_CONFIG_OPTS_LCPP="--with-host-libstdcxx=-static-libgcc -Wl,-Bstatic,-lstdc++,-Bdynamic -lm"

Revision history for this message
Terry Guo (terry.guo) said :
#5

Hi Cody,

We know it is silly to hard code something. But we do suffer resource limit like fewer people and fewer available platforms. We do not want to release something that not fully tested. But if you take a look at our PPA release, we are trying to generalize our scripts for Ubuntu-based x86 platforms. In future, maybe more platforms will be added and tested.

Any knowledge sharing on porting build scripts to new platforms are welcome. Thanks for your understanding.

Revision history for this message
Jon Watte (jwatte) said :
#6

Thanks to Cody for the patch; I'll try that!

In my experience, I think it would work better for you if the ARM people worked on the compiler and libraries, with a relatively platform independent configure/make system. Leave the packaging to each individual platform. Structuring your deployment around a PPA just limits your portability and generates busy-work for yourself that is better filled by platform specific people.

Can you help with this problem?

Provide an answer of your own, or ask Jon Watte for more information if necessary.

To post a message you must log in.