Bug 3832 - SDK is broken now after enabling multilib for gcc on target
Summary: SDK is broken now after enabling multilib for gcc on target
Status: RESOLVED FIXED
Alias: None
Product: OE-Core
Classification: Build System, Metadata & Runtime
Component: devtools / tool chain (show other bugs)
Version: 1.4
Hardware: All x86_64
: Medium normal
Target Milestone: 1.4 M4
Assignee: Constantin Musca
QA Contact:
URL:
Whiteboard: 898a8094b1dcffc5ee54dbb612477c9bb3b8fd4b
Depends on:
Blocks:
 
Reported: 2013-02-02 06:28 UTC by Khem Raj
Modified: 2013-02-07 07:47 UTC (History)
4 users (show)

See Also:
OS type for building Yocto: ---
Type of Regression: ---
Verified:
Documentation change: ---


Attachments
patch which fixes it. (918 bytes, patch)
2013-02-02 06:43 UTC, Khem Raj
no flags Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
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