| Submitter | Marcin Juszkiewicz |
|---|---|
| Date | March 20, 2013, 9:11 a.m. |
| Message ID | <1363770696-2908-1-git-send-email-marcin.juszkiewicz@linaro.org> |
| Download | mbox | patch |
| Permalink | /patch/46543/ |
| State | New |
| Headers | show |
Comments
On 03/20/2013 02:11 AM, Marcin Juszkiewicz wrote: > Elfutils contains libraries which are often used by other > applications/libraries. But sometimes there are also conflicting > packages needed - for example libdw-dev conflicts with libdwarf-dev > because both provide /usr/include/dwarf.h header file. > > This change makes it more in line with Debian based systems. It also > allows to have libdwarf-dev installed in image without having to go into > ugly hacks or rewriting 3rdparty software. > This change seems to cause some issues with multilib build with lib32 on x86-64: > ERROR: QA Issue: non -dev/-dbg/-nativesdk package contains symlink .so: lib32-libdw path '/work/x86-pokymllib32-linux/lib32-elfutils/0.148-r11/packages-split/lib32-libdw/usr/lib/elfutils/libebl_parisc.so' > ERROR: QA Issue: non -dev/-dbg/-nativesdk package contains symlink .so: lib32-libdw path '/work/x86-pokymllib32-linux/lib32-elfutils/0.148-r11/packages-split/lib32-libdw/usr/lib/elfutils/libebl_arm.so' > ERROR: QA Issue: non -dev/-dbg/-nativesdk package contains symlink .so: lib32-libdw path '/work/x86-pokymllib32-linux/lib32-elfutils/0.148-r11/packages-split/lib32-libdw/usr/lib/elfutils/libebl_ia64.so' > ERROR: QA Issue: non -dev/-dbg/-nativesdk package contains symlink .so: lib32-libdw path '/work/x86-pokymllib32-linux/lib32-elfutils/0.148-r11/packages-split/lib32-libdw/usr/lib/elfutils/libebl_ppc64.so' > ERROR: QA Issue: non -dev/-dbg/-nativesdk package contains symlink .so: lib32-libdw path '/work/x86-pokymllib32-linux/lib32-elfutils/0.148-r11/packages-split/lib32-libdw/usr/lib/elfutils/libebl_alpha.so' > ERROR: QA Issue: non -dev/-dbg/-nativesdk package contains symlink .so: lib32-libdw path '/work/x86-pokymllib32-linux/lib32-elfutils/0.148-r11/packages-split/lib32-libdw/usr/lib/elfutils/libebl_i386.so' > ERROR: QA Issue: non -dev/-dbg/-nativesdk package contains symlink .so: lib32-libdw path '/work/x86-pokymllib32-linux/lib32-elfutils/0.148-r11/packages-split/lib32-libdw/usr/lib/elfutils/libebl_mips.so' > ERROR: QA Issue: non -dev/-dbg/-nativesdk package contains symlink .so: lib32-libdw path '/work/x86-pokymllib32-linux/lib32-elfutils/0.148-r11/packages-split/lib32-libdw/usr/lib/elfutils/libebl_s390.so' > ERROR: QA Issue: non -dev/-dbg/-nativesdk package contains symlink .so: lib32-libdw path '/work/x86-pokymllib32-linux/lib32-elfutils/0.148-r11/packages-split/lib32-libdw/usr/lib/elfutils/libebl_sparc.so' > ERROR: QA Issue: non -dev/-dbg/-nativesdk package contains symlink .so: lib32-libdw path '/work/x86-pokymllib32-linux/lib32-elfutils/0.148-r11/packages-split/lib32-libdw/usr/lib/elfutils/libebl_x86_64.so' > ERROR: QA Issue: non -dev/-dbg/-nativesdk package contains symlink .so: lib32-libdw path '/work/x86-pokymllib32-linux/lib32-elfutils/0.148-r11/packages-split/lib32-libdw/usr/lib/elfutils/libebl_m68k.so' > ERROR: QA Issue: non -dev/-dbg/-nativesdk package contains symlink .so: lib32-libdw path '/work/x86-pokymllib32-linux/lib32-elfutils/0.148-r11/packages-split/lib32-libdw/usr/lib/elfutils/libebl_sh.so' > ERROR: QA Issue: non -dev/-dbg/-nativesdk package contains symlink .so: lib32-libdw path '/work/x86-pokymllib32-linux/lib32-elfutils/0.148-r11/packages-split/lib32-libdw/usr/lib/elfutils/libebl_ppc.so' If you could resolve that then we can take this change. Thanks Sau! > Signed-off-by: Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org> > --- > meta/recipes-devtools/elfutils/elfutils_0.148.bb | 15 ++++++++++----- > 1 file changed, 10 insertions(+), 5 deletions(-) > > diff --git a/meta/recipes-devtools/elfutils/elfutils_0.148.bb b/meta/recipes-devtools/elfutils/elfutils_0.148.bb > index e8d58fb..dfed235 100644 > --- a/meta/recipes-devtools/elfutils/elfutils_0.148.bb > +++ b/meta/recipes-devtools/elfutils/elfutils_0.148.bb > @@ -68,7 +68,7 @@ EXTRA_OEMAKE_class-nativesdk = "" > BBCLASSEXTEND = "native nativesdk" > > # Package utilities separately > -PACKAGES =+ "${PN}-binutils" > +PACKAGES =+ "${PN}-binutils libelf libasm libdw libdw-dev libasm-dev libelf-dev" > FILES_${PN}-binutils = "\ > ${bindir}/eu-addr2line \ > ${bindir}/eu-ld \ > @@ -77,11 +77,16 @@ FILES_${PN}-binutils = "\ > ${bindir}/eu-size \ > ${bindir}/eu-strip" > > +FILES_libelf = "${libdir}/libelf-${PV}.so ${libdir}/libelf.so.*" > +FILES_libasm = "${libdir}/libasm-${PV}.so ${libdir}/libasm.so.*" > +FILES_libdw = "${libdir}/libdw-${PV}.so ${libdir}/libdw.so.* ${libdir}/elfutils/lib*" > +FILES_libelf-dev = "${libdir}/libelf.so ${includedir}" > +FILES_libasm-dev = "${libdir}/libasm.so ${includedir}/elfutils/libasm.h" > +FILES_libdw-dev = "${libdir}/libdw.so ${includedir}/dwarf.h ${includedir}/elfutils/libdw*.h" > # Some packages have the version preceeding the .so instead properly > # versioned .so.<version>, so we need to reorder and repackage. > -FILES_${PN} += "${libdir}/*-${PV}.so ${base_libdir}/*-${PV}.so" > -FILES_SOLIBSDEV = "${libdir}/libasm.so ${libdir}/libdw.so ${libdir}/libelf.so" > +#FILES_${PN} += "${libdir}/*-${PV}.so ${base_libdir}/*-${PV}.so" > +#FILES_SOLIBSDEV = "${libdir}/libasm.so ${libdir}/libdw.so ${libdir}/libelf.so" > > # The package contains symlinks that trip up insane > -INSANE_SKIP_${PN} = "dev-so" > - > +INSANE_SKIP_libdw = "dev-so" >
W dniu 03.04.2013 17:50, Saul Wold pisze: > This change seems to cause some issues with multilib build with lib32 on > x86-64: I have to admit that I never did any multilib builds with OE. Can you point me to config options I need to set to get such build done?
On 04/03/2013 01:47 PM, Marcin Juszkiewicz wrote: > W dniu 03.04.2013 17:50, Saul Wold pisze: >> This change seems to cause some issues with multilib build with lib32 on >> x86-64: > > I have to admit that I never did any multilib builds with OE. Can you > point me to config options I need to set to get such build done? > > Sure set the following in your local.conf: MACHINE = "qemux86-64" require conf/multilib.conf MULTILIBS = "multilib:lib32" DEFAULTTUNE_virtclass-multilib-lib32 = "x86" bitbake lib32-elfutils you can also bitbake world, but that will take some time. Sau!
W dniu 03.04.2013 22:59, Saul Wold pisze: > On 04/03/2013 01:47 PM, Marcin Juszkiewicz wrote: >> W dniu 03.04.2013 17:50, Saul Wold pisze: >>> This change seems to cause some issues with multilib build with lib32 on >>> x86-64: >> >> I have to admit that I never did any multilib builds with OE. Can you >> point me to config options I need to set to get such build done? >> >> > > Sure set the following in your local.conf: > > MACHINE = "qemux86-64" > require conf/multilib.conf > MULTILIBS = "multilib:lib32" > DEFAULTTUNE_virtclass-multilib-lib32 = "x86" > > > bitbake lib32-elfutils Never mind do I use gcc-4.7 or gcc-linaro-4.7 it fails (conf/site.conf attached): NOTE: Preparing runqueue NOTE: Executing SetScene Tasks NOTE: Executing RunQueue Tasks ERROR: Error executing a python function in /home/hrw/HDD/devel/canonical/aarch64/openembedded/repos/openembedded-core/meta/recipes-devtools/gcc/libgcc_4.7.bb: NameError: global name 'get_tune_parameters' is not defined 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: 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: Function failed: do_multilib_install ERROR: Logfile of failure stored in: /home/hrw/HDD/devel/canonical/aarch64/openembedded/build/tmp-eglibc/work/x86-oemllib32-linux/lib32-libgcc/4.7.2-r13/temp/log.do_multilib_install.9501 ERROR: Task 679 (virtual:multilib:lib32:/home/hrw/HDD/devel/canonical/aarch64/openembedded/repos/openembedded-core/meta/recipes-devtools/gcc/libgcc_4.7.bb, do_multilib_install) failed with exit code '1' NOTE: Tasks Summary: Attempted 924 tasks of which 923 didn't need to be rerun and 1 failed. No currently running tasks (461 of 1042) Summary: 1 task failed: virtual:multilib:lib32:/home/hrw/HDD/devel/canonical/aarch64/openembedded/repos/openembedded-core/meta/recipes-devtools/gcc/libgcc_4.7.bb, do_multilib_install Summary: There were 25 ERROR messages shown, returning a non-zero exit code. SCONF_VERSION = "1" # specify the alignment of the root file system # this is required when building for qemuarmv7a IMAGE_ROOTFS_ALIGNMENT = "2048" BB_GENERATE_MIRROR_TARBALLS = "True" #MACHINE ?= "genericarmv8" BB_NUMBER_THREADS = "18" PARALLEL_MAKE = "-j8" IMAGE_FSTYPES = "tar.gz ext2" SOURCE_MIRROR_URL = "http://snapshots.linaro.org/openembedded/sources/" INHERIT += "own-mirrors" DL_DIR = "/home/hrw/devel/sources/oe" INHERIT += "rm_work" # SOURCE_ARCHIVE_PACKAGE_TYPE = "tar" # SOURCE_ARCHIVE_LOG_WITH_SCRIPTS = "logs_with_scripts" # INHERIT += "archive-original-source" #GCCVERSION = "linaro-4.7" #SDKGCCVERSION = "linaro-4.7" #GCCVERSION = "4.8%" #SDKGCCVERSION = "4.8%" BINUVERSION = "2.23.1" PREFERRED_PROVIDER_libevent = "libevent-fb" LICENSE_FLAGS_WHITELIST = "Commercial commercial" #DISTRO_FEATURES_append = " ptest " # cross toolchain from tcwg #TCMODE = "external-linaro" #TMPDIR = tmp-external-linaro #ELT_TARGET_SYS = "aarch64-linux-gnu" #EXTERNAL_TOOLCHAIN = "/home/hrw/devel/canonical/aarch64/openembedded/build/linaro-tcwg/gcc-linaro-aarch64-linux-gnu-4.7-2013.03-20130313_linux" # armv7a #EXTERNAL_TOOLCHAIN = "/home/hrw/devel/canonical/aarch64/openembedded/build/linaro-tcwg/gcc-linaro-arm-linux-gnueabihf-4.7-2013.03-20130313_linux" #MACHINE = "genericarmv7a" MACHINE = "qemux86-64" require conf/multilib.conf MULTILIBS = "multilib:lib32" DEFAULTTUNE_virtclass-multilib-lib32 = "x86"
Patch
diff --git a/meta/recipes-devtools/elfutils/elfutils_0.148.bb b/meta/recipes-devtools/elfutils/elfutils_0.148.bb index e8d58fb..dfed235 100644 --- a/meta/recipes-devtools/elfutils/elfutils_0.148.bb +++ b/meta/recipes-devtools/elfutils/elfutils_0.148.bb @@ -68,7 +68,7 @@ EXTRA_OEMAKE_class-nativesdk = "" BBCLASSEXTEND = "native nativesdk" # Package utilities separately -PACKAGES =+ "${PN}-binutils" +PACKAGES =+ "${PN}-binutils libelf libasm libdw libdw-dev libasm-dev libelf-dev" FILES_${PN}-binutils = "\ ${bindir}/eu-addr2line \ ${bindir}/eu-ld \ @@ -77,11 +77,16 @@ FILES_${PN}-binutils = "\ ${bindir}/eu-size \ ${bindir}/eu-strip" +FILES_libelf = "${libdir}/libelf-${PV}.so ${libdir}/libelf.so.*" +FILES_libasm = "${libdir}/libasm-${PV}.so ${libdir}/libasm.so.*" +FILES_libdw = "${libdir}/libdw-${PV}.so ${libdir}/libdw.so.* ${libdir}/elfutils/lib*" +FILES_libelf-dev = "${libdir}/libelf.so ${includedir}" +FILES_libasm-dev = "${libdir}/libasm.so ${includedir}/elfutils/libasm.h" +FILES_libdw-dev = "${libdir}/libdw.so ${includedir}/dwarf.h ${includedir}/elfutils/libdw*.h" # Some packages have the version preceeding the .so instead properly # versioned .so.<version>, so we need to reorder and repackage. -FILES_${PN} += "${libdir}/*-${PV}.so ${base_libdir}/*-${PV}.so" -FILES_SOLIBSDEV = "${libdir}/libasm.so ${libdir}/libdw.so ${libdir}/libelf.so" +#FILES_${PN} += "${libdir}/*-${PV}.so ${base_libdir}/*-${PV}.so" +#FILES_SOLIBSDEV = "${libdir}/libasm.so ${libdir}/libdw.so ${libdir}/libelf.so" # The package contains symlinks that trip up insane -INSANE_SKIP_${PN} = "dev-so" - +INSANE_SKIP_libdw = "dev-so"
Elfutils contains libraries which are often used by other applications/libraries. But sometimes there are also conflicting packages needed - for example libdw-dev conflicts with libdwarf-dev because both provide /usr/include/dwarf.h header file. This change makes it more in line with Debian based systems. It also allows to have libdwarf-dev installed in image without having to go into ugly hacks or rewriting 3rdparty software. Signed-off-by: Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org> --- meta/recipes-devtools/elfutils/elfutils_0.148.bb | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-)