Bug 3832

Summary: SDK is broken now after enabling multilib for gcc on target
Product: [Build System, Metadata & Runtime] OE-Core Reporter: Khem Raj <raj.khem>
Component: devtools / tool chainAssignee: Constantin Musca <constantinx.musca>
Status: RESOLVED FIXED QA Contact:
Severity: normal    
Priority: Medium CC: constantinx.musca, jessica.zhang, meta.mr.watcher, meta.watcher
Version: 1.4   
Target Milestone: 1.4 M4   
Hardware: All   
OS: x86_64   
Whiteboard: 898a8094b1dcffc5ee54dbb612477c9bb3b8fd4b
OS type for building Yocto: --- Type of Regression: ---
Verified: Documentation change: ---
Attachments:
Description Flags
patch which fixes it. none

Description Khem Raj 2013-02-02 06:28:46 UTC
After commit 

commit 703b70c98a86771a891b46382f3ee20c4ef93f39
Author: Constantin Musca <constantinx.musca@intel.com>
Date:   Mon Dec 17 13:46:20 2012 +0200

    gcc: enable multilib for target gcc
    
    - add a task to setup multilib configuration for target gcc
    - this commit adapts Nitin Kamble's work to gcc 4.7
    - use a hash for storing arch-dependent multilib options
    - patch gcc in order to use the multilib config files from the
    build directory
    
    Tests:
    root@qemux86-64:~# gcc -m64 t.c -o t
    root@qemux86-64:~# file t
    t: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.16, not stripped
    root@qemux86-64:~# ./t
    Hello World !
    root@qemux86-64:~# gcc -m32 t.c -o t
    root@qemux86-64:~# file t
    t: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.16, not stripped
    root@qemux86-64:~# ./t
    Hello World !
    
    [YOCTO #1369]
    
    (From OE-Core rev: b26819c85881e82ee1b5c68840011e78c321f18e)
    
    Signed-off-by: Constantin Musca <constantinx.musca@intel.com>
    Signed-off-by: Saul Wold <sgw@linux.intel.com>
    Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>

enable multilib and then try to build meta-toolchain for qemux86-64 it breaks
like below

NOTE: recipe nativesdk-libgcc-4.7.2-r15: task do_multilib_install: Started
ERROR: Error executing a python function in /b/kraj/jlinux-next/poky/meta/recipes-devtools/gcc/libgcc_4.7.bb:
TypeError: sequence item 1: expected string, NoneType found

ERROR: The stack trace of python calls that resulted in this exception/failure was:
ERROR:   File "do_multilib_install", line 64, in <module>
ERROR:
ERROR:   File "do_multilib_install", line 17, in do_multilib_install
ERROR:
ERROR:   File "gcc-common.inc", line 4, in get_tune_parameters
ERROR:
ERROR:   File "/b/kraj/jlinux-next/poky/bitbake/lib/bb/__init__.py", line 98, in error
ERROR:     logger.error(''.join(args))
ERROR:
ERROR: The code that was being executed was:
ERROR:      0060:            os.unlink(dest)
ERROR:      0061:        os.symlink(src, dest)
ERROR:      0062:
ERROR:      0063:
ERROR:  *** 0064:do_multilib_install(d)
ERROR:      0065:
ERROR: [From file: 'do_multilib_install', lineno: 64, function: <module>]
ERROR:      0013:        return
ERROR:      0014:
ERROR:      0015:    if mlprefix:
ERROR:      0016:        orig_tune = d.getVar('DEFAULTTUNE_MULTILIB_ORIGINAL', True)
ERROR:  *** 0017:        orig_tune_params = get_tune_parameters(orig_tune, d)
ERROR:      0018:        orig_tune_baselib = orig_tune_params['baselib']
ERROR:      0019:        orig_tune_bitness = orig_tune_baselib.replace('lib', '')
ERROR:      0020:        if not orig_tune_bitness:
ERROR:      0021:            orig_tune_bitness = '32'
ERROR: [From file: 'do_multilib_install', lineno: 17, function: do_multilib_install]
ERROR:      0001:def get_tune_parameters(tune, d):
ERROR:      0002:    availtunes = d.getVar('AVAILTUNES', True)
ERROR:      0003:    if tune not in availtunes.split():
ERROR:  *** 0004:        bb.error('The tune: %s is not one of the available tunes: %s', tune, availtunes)
ERROR:      0005:
ERROR:      0006:    localdata = bb.data.createCopy(d)
ERROR:      0007:    override = ':tune-' + tune
ERROR:      0008:    localdata.setVar('OVERRIDES', localdata.getVar('OVERRIDES', False) + override)
ERROR: [From file: 'gcc-common.inc', lineno: 4, function: get_tune_parameters]
ERROR: Function failed: do_multilib_install
ERROR: Logfile of failure stored in: /b/kraj/jlinux-next/poky/build/tmp-eglibc/work/x86_64-nativesdk-pokysdk-linux/nativesdk-libgcc/4.7.2-r15/temp/log.do_multilib_install.10856
NOTE: recipe nativesdk-libgcc-4.7.2-r15: task do_multilib_install: Failed
ERROR: Task 1988 (virtual:nativesdk:/b/kraj/jlinux-next/poky/meta/recipes-devtools/gcc/libgcc_4.7.bb, do_multilib_install) failed with exit code '1'
NOTE: Tasks Summary: Attempted 3155 tasks of which 2554 didn't need to be rerun and 1 failed.

Summary: 1 task failed:
  virtual:nativesdk:/b/kraj/jlinux-next/poky/meta/recipes-devtools/gcc/libgcc_4.7.bb, do_multilib_install
Comment 1 Khem Raj 2013-02-02 06:43:23 UTC
Created attachment 1055 [details]
patch which fixes it.
Comment 2 Constantin Musca 2013-02-07 07:47:32 UTC
(In reply to comment #1)
> Created attachment 1055 [details]
> patch which fixes it.

Patch merged. (commit 898a8094b1dcffc5ee54dbb612477c9bb3b8fd4b)

Cheers,
Constantin