Bug 6614 - eglibc: fails to build for qemuarm if dir structure contains 'yes' (broken hard-float abi check?)
Summary: eglibc: fails to build for qemuarm if dir structure contains 'yes' (broken ha...
Status: RESOLVED FIXED
Alias: None
Product: OE-Core
Classification: Build System, Metadata & Runtime
Component: core (show other bugs)
Version: 1.5.2
Hardware: x86 Multiple
: Medium normal
Target Milestone: 1.8 M3
Assignee: Benjamin Esquivel
QA Contact:
URL:
Whiteboard:
Depends on:
Blocks:
 
Reported: 2014-08-06 22:21 UTC by Jesse Gilles
Modified: 2015-03-10 19:23 UTC (History)
3 users (show)

See Also:
OS type for building Yocto: ---
Type of Regression: ---
Verified:
Documentation change: No (bug/feature does not impact docs)


Attachments
log.do_configure (41.71 KB, application/octet-stream)
2014-08-06 22:21 UTC, Jesse Gilles
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Jesse Gilles 2014-08-06 22:21:00 UTC
Created attachment 2076 [details]
log.do_configure

If any component of the directory structure contains the string 'yes', eglibc will fail to build properly because the configure script incorrectly thinks it is being built for hard-float ABI.  This causes the configure part of do_populate_sysroot to later fail.  It seems that the check for hard-float ABI is broken or at least broken the way it is invoked by bitbake?

I initially hit this error when a certain user could not build, but all others on the same build server could.  I narrowed it down to the fact that the username contained the string 'yes' (and therefore the home dir) and was able to reproduce it with any directory containing 'yes' in the name.

Version tested:
http://downloads.yoctoproject.org/releases/yocto/yocto-1.5.2/poky-dora-10.0.2.tar.bz2

Build system: Ubuntu 12.04 x86_64

Steps to reproduce:
mkdir diryes
cd diryes; tar xzvf poky-dora-10.0.2.tar.bz2
cd poky-dora-10.0.2
MACHINE=qemuarm bitbake eglibc


log.do_configure is attached.

Error output of MACHINE=qemuarm bitbake eglibc
-----------------------------------------------------------------
ERROR: Function failed: do_siteconfig_gencache (log file is located at /home/jjg/projectsyes/poky-dora-10.0.2/build/tmp/work/armv5te-poky-linux-gnueabi/eglibc/2.18-r0/temp/log.do_populate_sysroot.20105)
ERROR: Logfile of failure stored in: /home/jjg/projectsyes/poky-dora-10.0.2/build/tmp/work/armv5te-poky-linux-gnueabi/eglibc/2.18-r0/temp/log.do_populate_sysroot.20105
Log data follows:
| DEBUG: Executing python function sstate_task_prefunc
| DEBUG: Python function sstate_task_prefunc finished
| DEBUG: Executing python function do_populate_sysroot
| DEBUG: SITE files ['endian-little', 'bit-32', 'arm-common', 'common-linux', 'common-glibc', 'arm-linux', 'arm-linux-gnueabi', 'common']
| DEBUG: Executing shell function sysroot_stage_all
| DEBUG: Shell function sysroot_stage_all finished
| DEBUG: Python function do_populate_sysroot finished
| DEBUG: Executing python function do_qa_staging
| NOTE: QA checking staging
| DEBUG: Python function do_qa_staging finished
| DEBUG: Executing python function sstate_task_postfunc
| DEBUG: Staging files from /home/jjg/projectsyes/poky-dora-10.0.2/build/tmp/work/armv5te-poky-linux-gnueabi/eglibc/2.18-r0/sysroot-destdir to /home/jjg/projectsyes/poky-dora-10.0.2/build/tmp/sysroots/qemuarm
| DEBUG: Executing python function do_siteconfig
| DEBUG: Executing python function siteconfig_do_siteconfig
| DEBUG: Executing shell function do_siteconfig_gencache
| configure: WARNING: unrecognized options: --disable-silent-rules, --disable-dependency-tracking, --with-libtool-sysroot
| configure: creating cache eglibc_cache
| checking for arm-poky-linux-gnueabi-gcc... arm-poky-linux-gnueabi-gcc  -march=armv5te -marm -mthumb-interwork --sysroot=/home/jjg/projectsyes/poky-dora-10.0.2/build/tmp/sysroots/qemuarm-tcbootstrap
| checking whether the C compiler works... yes
| checking for C compiler default output file name... a.out
| checking for suffix of executables...
| checking whether we are cross compiling... yes
| checking for suffix of object files... o
| checking whether we are using the GNU C compiler... yes
| checking whether arm-poky-linux-gnueabi-gcc  -march=armv5te -marm -mthumb-interwork --sysroot=/home/jjg/projectsyes/poky-dora-10.0.2/build/tmp/sysroots/qemuarm-tcbootstrap accepts -g... yes
| checking for arm-poky-linux-gnueabi-gcc  -march=armv5te -marm -mthumb-interwork --sysroot=/home/jjg/projectsyes/poky-dora-10.0.2/build/tmp/sysroots/qemuarm-tcbootstrap option to accept ISO C89... unsupported
| checking how to run the C preprocessor... arm-poky-linux-gnueabi-gcc -E --sysroot=/home/jjg/projectsyes/poky-dora-10.0.2/build/tmp/sysroots/qemuarm-tcbootstrap  -march=armv5te -marm -mthumb-interwork
| configure: error: in `/home/jjg/projectsyes/poky-dora-10.0.2/build/tmp/work/armv5te-poky-linux-gnueabi/eglibc/2.18-r0/site_config_qemuarm':
| configure: error: C preprocessor "arm-poky-linux-gnueabi-gcc -E --sysroot=/home/jjg/projectsyes/poky-dora-10.0.2/build/tmp/sysroots/qemuarm-tcbootstrap  -march=armv5te -marm -mthumb-interwork" fails sanity check
| See `config.log' for more details
| WARNING: /home/jjg/projectsyes/poky-dora-10.0.2/build/tmp/work/armv5te-poky-linux-gnueabi/eglibc/2.18-r0/temp/run.do_siteconfig_gencache.20105:1 exit 1 from
|   CONFIG_SITE="" CFLAGS='-I/home/jjg/projectsyes/poky-dora-10.0.2/build/tmp/sysroots/qemuarm/usr/include -O2 -pipe -g -feliminate-unused-debug-types -Wl,-L/home/jjg/projectsyes/poky-dora-10.0.2/build/tmp/work/armv5te-poky-linux-gnueabi/eglibc/2.18-r0/site_config_libc -L/home/jjg/projectsyes/poky-dora-10.0.2/build/tmp/work/armv5te-poky-linux-gnueabi/eglibc/2.18-r0/site_config_libc -L/home/jjg/projectsyes/poky-dora-10.0.2/build/tmp/work/armv5te-poky-linux-gnueabi/eglibc/2.18-r0/sysroot-destdir//usr/lib -L/home/jjg/projectsyes/poky-dora-10.0.2/build/tmp/work/armv5te-poky-linux-gnueabi/eglibc/2.18-r0/sysroot-destdir//lib -Wl,-L/home/jjg/projectsyes/poky-dora-10.0.2/build/tmp/work/armv5te-poky-linux-gnueabi/eglibc/2.18-r0/sysroot-destdir//usr/lib -Wl,-L/home/jjg/projectsyes/poky-dora-10.0.2/build/tmp/work/armv5te-poky-linux-gnueabi/eglibc/2.18-r0/sysroot-destdir//lib' ./configure --build=x86_64-linux --host=arm-poky-linux-gnueabi --target=arm-poky-linux-gnueabi --prefix=/usr --exec_prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin --libexecdir=/usr/lib/eglibc --datadir=/usr/share --sysconfdir=/etc --sharedstatedir=/com --localstatedir=/var --libdir=/usr/lib --includedir=/usr/include --oldincludedir=/usr/include --infodir=/usr/share/info --mandir=/usr/share/man --disable-silent-rules --disable-dependency-tracking --with-libtool-sysroot=/home/jjg/projectsyes/poky-dora-10.0.2/build/tmp/sysroots/qemuarm --cache-file eglibc_cache
| DEBUG: Python function siteconfig_do_siteconfig finished
| DEBUG: Python function do_siteconfig finished
| DEBUG: Python function sstate_task_postfunc finished
| ERROR: Function failed: do_siteconfig_gencache (log file is located at /home/jjg/projectsyes/poky-dora-10.0.2/build/tmp/work/armv5te-poky-linux-gnueabi/eglibc/2.18-r0/temp/log.do_populate_sysroot.20105)
ERROR: Task 5 (/home/jjg/projectsyes/poky-dora-10.0.2/meta/recipes-core/eglibc/eglibc_2.18.bb, do_populate_sysroot) failed with exit code '1'
-----------------------------------------------------------------


relevant/suspicious section of eglibc-2.18/libc/ports/sysdeps/arm/configure
-----------------------------------------------------------------
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
  $EGREP "yes" >/dev/null 2>&1; then :
  libc_cv_arm_pcs_vfp=yes
else
  libc_cv_arm_pcs_vfp=no
fi
-----------------------------------------------------------------


site_config_qemuarm/config.log snippet
-----------------------------------------------------------------
configure:3050: checking how to run the C preprocessor
configure:3120: result: arm-poky-linux-gnueabi-gcc -E --sysroot=/home/jjg/projectsyes/poky-dora-10.0.2/build/tmp/sysroots/qemuarm-tcbootstrap  -march=armv5te -marm -mthumb-interwork
configure:3140: arm-poky-linux-gnueabi-gcc -E --sysroot=/home/jjg/projectsyes/poky-dora-10.0.2/build/tmp/sysroots/qemuarm-tcbootstrap  -march=armv5te -marm -mthumb-interwork -I/home/jjg/projectsyes/poky-dora-10.0.2/build/tmp/sysroots/qemuarm/usr/include conftest.c
In file included from /home/jjg/projectsyes/poky-dora-10.0.2/build/tmp/sysroots/qemuarm/usr/include/features.h:388:0,
                 from /home/jjg/projectsyes/poky-dora-10.0.2/build/tmp/sysroots/qemuarm/usr/include/limits.h:25,
                 from conftest.c:10:
/home/jjg/projectsyes/poky-dora-10.0.2/build/tmp/sysroots/qemuarm/usr/include/gnu/stubs.h:7:29: fatal error: gnu/stubs-soft.h: No such file or directory
 # include <gnu/stubs-soft.h>
                             ^
compilation terminated.
-----------------------------------------------------------------


Is this an upstream issue with the hard-float check in eglibc?  Or something specific to how it is being built in OE-Core?

Jesse
Comment 1 Benjamin Esquivel 2015-02-23 18:36:53 UTC
Review posted here:

http://lists.openembedded.org/pipermail/openembedded-core/2015-February/102039.html
Comment 2 Benjamin Esquivel 2015-03-06 20:36:20 UTC
Final review here

http://lists.openembedded.org/pipermail/openembedded-core/2015-March/102372.html

Waiting for it to be integrated