Bug 2356

Summary: [multilib] fonts corrupted with ipk build for 32bit connman against qemux86-64
Product: [Build System, Metadata & Runtime] Meta-yocto Reporter: Jiajun Xu <jiajun.xu>
Component: meta-yoctoAssignee: Edwin Zhai <edwin.zhai>
Status: RESOLVED FIXED QA Contact:
Severity: normal    
Priority: Medium CC: dongxiao.xu, edwin.zhai, lianhao.lu, poky.bs.watcher, poky.watcher, scott.a.garman, sgw, shane.wang, song.liu
Version: unspecified   
Target Milestone: 1.2.1   
Hardware: x86   
OS: Multiple   
Whiteboard: (P1) patch in master, May9, 2012
OS type for building Yocto: --- Type of Regression: ---
Verified: Documentation change: ---
Attachments:
Description Flags
snapshot of X window none

Description Jiajun Xu 2012-04-20 05:48:41 UTC
Created attachment 494 [details]
snapshot of X window

tree/branch: poky/denzil
commit: 2c3d4f5beee8f57a74244495511b9294df1085ea

With denzil branch, a multilib build for 32bit connman against qemux86-64 with
ipk format could pass build. But when I start the image, the fonts in X window are corrupted. You could check it in attached snapshot.

The configure I use to build the image:
#######
MACHINE = "qemux86-64"
require conf/multilib.conf
MULTILIBS = "multilib:lib32"
DEFAULTTUNE_virtclass-multilib-lib32 = "x86"
IMAGE_INSTALL_append = "lib32-connman-gnome"
#######
Comment 1 Shane Wang 2012-04-20 06:48:52 UTC
Dongxiao, can you help Edwin on this bug, since he is busy with other multilib ones?
Comment 2 Dongxiao Xu 2012-04-22 07:50:56 UTC
When I build the core-image-sato with your config, I met the following error. Did you meet it before?

 + multilib_tryout_dirs=' /opt/data/build-multilib/tmp/work/qemux86_64-poky-linux/core-image-sato-1.0-r0/multilib/lib32'
| + '[' '!' -z /opt/data/build-multilib/tmp/work/qemux86_64-poky-linux/core-image-sato-1.0-r0/multilib_check.py ']'
| + multilib_sanity_check /opt/data/build-multilib/tmp/work/qemux86_64-poky-linux/core-image-sato-1.0-r0/rootfs /opt/data/build-multilib/tmp/work/qemux86_64-poky-linux/core-image-sato-1.0-r0/multilib/lib32
| + multilib_generate_python_file
| + cat
| + echo /opt/data/build-multilib/tmp/work/qemux86_64-poky-linux/core-image-sato-1.0-r0/rootfs /opt/data/build-multilib/tmp/work/qemux86_64-poky-linux/core-image-sato-1.0-r0/multilib/lib32
| + python /opt/data/build-multilib/tmp/work/qemux86_64-poky-linux/core-image-sato-1.0-r0/multilib_check.py
| Multilib check error: duplicate files /opt/data/build-multilib/tmp/work/qemux86_64-poky-linux/core-image-sato-1.0-r0/multilib/lib32/lib64/libudev.so.0 /opt/data/build-multilib/tmp/work/qemux86_64-poky-linux/core-image-sato-1.0-r0/rootfs/lib64/libudev.so.0 is not the same
| 
| + exit 1
NOTE: package core-image-sato-1.0-r0: task do_rootfs: Failed
ERROR: Task 8 (/home/dongxiao/poky/meta/recipes-sato/images/core-image-sato.bb, do_rootfs) failed with exit code '1'
NOTE: Tasks Summary: Attempted 5864 tasks of which 1224 didn't need to be rerun and 1 failed.
Comment 3 Dongxiao Xu 2012-04-22 08:23:10 UTC
Sorry for noise, this is related with my wrong configuration.
Comment 4 Edwin Zhai 2012-04-25 05:50:16 UTC
This bug caused by modules mechanism in pango:

pango utils, pango-querymodules produce a system config file to indicate where to find the modules when 1st boot, like /usr/{lib64|lib}/pango/1.6.0/modules/ for {x86-64|lib32}-pango respectively. 

When installing lib32-pango on sato-image-qemux86-64, lib32 version of pango-querymodules override x86-64 version and produce a system config file with path for lib32 version of modules. Then x86-64 matchbox-desktop failed to open these modules and loaded corrupted fonts.

One possible solution is put the config file under $LIBDIR so different lib use different config file. Another solution is hacking pango's source code to open the modules under $LIBDIR directly without asking system config file.