From 6ab81af90035a6bc2c2831a1f1ba386411710a37 Mon Sep 17 00:00:00 2001 From: vishal Date: Fri, 4 Jan 2019 14:54:05 +0530 Subject: additional fixes Signed-off-by: vishal --- .../include/external-arm-toolchain-versions.inc | 196 ++++++++++----------- .../external-arm-toolchain.bb | 84 ++++----- 2 files changed, 141 insertions(+), 139 deletions(-) diff --git a/meta-linaro-toolchain/conf/distro/include/external-arm-toolchain-versions.inc b/meta-linaro-toolchain/conf/distro/include/external-arm-toolchain-versions.inc index e3a9525..e2e7c7e 100644 --- a/meta-linaro-toolchain/conf/distro/include/external-arm-toolchain-versions.inc +++ b/meta-linaro-toolchain/conf/distro/include/external-arm-toolchain-versions.inc @@ -1,128 +1,128 @@ def eat_run(d, cmd, *args): - import bb.process - import subprocess + import bb.process + import subprocess - topdir = d.getVar('TOPDIR', True) - toolchain_path = d.getVar('EXTERNAL_TOOLCHAIN', True) - if not toolchain_path: - return 'UNKNOWN', 'UNKNOWN' + topdir = d.getVar('TOPDIR', True) + toolchain_path = d.getVar('EXTERNAL_TOOLCHAIN', True) + if not toolchain_path: + return 'UNKNOWN', 'UNKNOWN' - target_prefix = d.getVar('TARGET_PREFIX', True) - path = os.path.join(toolchain_path, 'bin', target_prefix + cmd) - args = [path] + list(args) + target_prefix = d.getVar('TARGET_PREFIX', True) + path = os.path.join(toolchain_path, 'bin', target_prefix + cmd) + args = [path] + list(args) - return bb.process.run(args, cwd=topdir, stderr=subprocess.PIPE) + return bb.process.run(args, cwd=topdir, stderr=subprocess.PIPE) def eat_get_version(d): - try: - stdout, stderr = eat_run(d, 'gcc', '-v') - except bb.process.CmdError as exc: - bb.error('Failed to obtain external Linaro toolchain version: %s' % exc) - return 'UNKNOWN' - else: - last_line = stderr.splitlines()[-1] - return last_line + try: + stdout, stderr = eat_run(d, 'gcc', '-v') + except bb.process.CmdError as exc: + bb.error('Failed to obtain external Linaro toolchain version: %s' % exc) + return 'UNKNOWN' + else: + last_line = stderr.splitlines()[-1] + return last_line # Extract the YYYY.MM version def eat_get_main_version(d): - version = eat_get_version(d) - bb.debug(2, 'Trying for parse version info from: %s' % version) - if version != 'UNKNOWN': - if version.split()[4] == '(GNU': - # gcc version 8.2.1 20180802 (GNU Toolchain for the A-profile Architecture 8.2-2018.11 (arm-rel-8.26)) - return version.split()[10].split('-')[1] - bb.error('Failed to parse external Linaro toolchain version from: %s' % version) - else: - return version + version = eat_get_version(d) + bb.debug(2, 'Trying for parse version info from: %s' % version) + if version != 'UNKNOWN': + if version.split()[4] == '(GNU': + # gcc version 8.2.1 20180802 (GNU Toolchain for the A-profile Architecture 8.2-2018.11 (arm-rel-8.26)) + return version.split()[10].split('-')[1] + bb.error('Failed to parse external Linaro toolchain version from: %s' % version) + else: + return version # Extract the x.y.z version from 'gcc version 4.9.1' def eat_get_gcc_version(d): - version = eat_get_version(d) - if version != 'UNKNOWN': - return version.split()[2] - else: - return version + version = eat_get_version(d) + if version != 'UNKNOWN': + return version.split()[2] + else: + return version def eat_get_libc_version(d): - import os,bb - syspath = bb.data.expand('${EXTERNAL_TOOLCHAIN}/${EAT_TARGET_SYS}', d) - if not syspath: - return 'UNKNOWN' + import os,bb + syspath = bb.data.expand('${EXTERNAL_TOOLCHAIN}/${EAT_TARGET_SYS}', d) + if not syspath: + return 'UNKNOWN' - libpath = syspath + '/libc/lib64/' + bb.data.expand('${EAT_TARGET_SYS}/', d) + libpath = syspath + '/libc/lib64/' + bb.data.expand('${EAT_TARGET_SYS}/', d) - if os.path.exists(libpath): - for file in os.listdir(libpath): - if file.find('libc-') == 0: - return file[5:-3] + if os.path.exists(libpath): + for file in os.listdir(libpath): + if file.find('libc-') == 0: + return file[5:-3] - libpath = syspath + '/libc/lib64/' + libpath = syspath + '/libc/lib64/' - if os.path.exists(libpath): - for file in os.listdir(libpath): - if file.find('libc-') == 0: - return file[5:-3] + if os.path.exists(libpath): + for file in os.listdir(libpath): + if file.find('libc-') == 0: + return file[5:-3] - libpath = syspath + '/libc/usr/lib64/' + bb.data.expand('${EAT_TARGET_SYS}/', d) + libpath = syspath + '/libc/usr/lib64/' + bb.data.expand('${EAT_TARGET_SYS}/', d) - if os.path.exists(libpath): - for file in os.listdir(libpath): - if file.find('libc-') == 0: - return file[5:-3] + if os.path.exists(libpath): + for file in os.listdir(libpath): + if file.find('libc-') == 0: + return file[5:-3] - libpath = syspath + '/libc/usr/lib64/' + libpath = syspath + '/libc/usr/lib64/' - if os.path.exists(libpath): - for file in os.listdir(libpath): - if file.find('libc-') == 0: - return file[5:-3] - return 'UNKNOWN' + if os.path.exists(libpath): + for file in os.listdir(libpath): + if file.find('libc-') == 0: + return file[5:-3] + return 'UNKNOWN' def eat_get_kernel_version(d): - import os,bb - syspath = bb.data.expand('${EXTERNAL_TOOLCHAIN}/${EAT_TARGET_SYS}', d) - if not syspath: - return 'UNKNOWN' - - vf = syspath + '/libc/usr/include/linux/version.h' - - try: - f = open(vf, 'r') - except (OSError, IOError): - return 'UNKNOWN' - - l = f.readlines(); - f.close(); - for s in l: - if s.find('LINUX_VERSION_CODE') > 0: - ver = int(s.split()[2]) - maj = ver / 65536 - ver = ver % 65536 - min = ver / 256 - ver = ver % 256 - return str(maj)+'.'+str(min)+'.'+str(ver) - return 'UNKNOWN' + import os,bb + syspath = bb.data.expand('${EXTERNAL_TOOLCHAIN}/${EAT_TARGET_SYS}', d) + if not syspath: + return 'UNKNOWN' + + vf = syspath + '/libc/usr/include/linux/version.h' + + try: + f = open(vf, 'r') + except (OSError, IOError): + return 'UNKNOWN' + + l = f.readlines(); + f.close(); + for s in l: + if s.find('LINUX_VERSION_CODE') > 0: + ver = int(s.split()[2]) + maj = ver / 65536 + ver = ver % 65536 + min = ver / 256 + ver = ver % 256 + return str(maj)+'.'+str(min)+'.'+str(ver) + return 'UNKNOWN' def eat_get_gdb_version(d): - try: - stdout, stderr = eat_run(d, 'gdb', '-v') - except bb.process.CmdError: - return 'UNKNOWN' - else: - first_line = stdout.splitlines()[0] - return first_line.split()[-1] + try: + stdout, stderr = eat_run(d, 'gdb', '-v') + except bb.process.CmdError: + return 'UNKNOWN' + else: + first_line = stdout.splitlines()[0] + return first_line.split()[-1] python external_arm_toolchain_version_handler () { - if not isinstance(e, bb.event.ConfigParsed): - return - d = e.data - ld = d.createCopy() - ld.finalize() - - d.setVar('EAT_VER_MAIN', eat_get_main_version(ld)) - d.setVar('EAT_VER_GCC', eat_get_gcc_version(ld)) - d.setVar('EAT_VER_LIBC', eat_get_libc_version(ld)) - d.setVar('EAT_VER_KERNEL', eat_get_kernel_version(ld)) - d.setVar('EAT_VER_GDB', eat_get_gdb_version(ld)) + if not isinstance(e, bb.event.ConfigParsed): + return + d = e.data + ld = d.createCopy() + ld.finalize() + + d.setVar('EAT_VER_MAIN', eat_get_main_version(ld)) + d.setVar('EAT_VER_GCC', eat_get_gcc_version(ld)) + d.setVar('EAT_VER_LIBC', eat_get_libc_version(ld)) + d.setVar('EAT_VER_KERNEL', eat_get_kernel_version(ld)) + d.setVar('EAT_VER_GDB', eat_get_gdb_version(ld)) } addhandler external_arm_toolchain_version_handler diff --git a/meta-linaro-toolchain/recipes-devtools/external-arm-toolchain/external-arm-toolchain.bb b/meta-linaro-toolchain/recipes-devtools/external-arm-toolchain/external-arm-toolchain.bb index 2edf85e..1557d12 100644 --- a/meta-linaro-toolchain/recipes-devtools/external-arm-toolchain/external-arm-toolchain.bb +++ b/meta-linaro-toolchain/recipes-devtools/external-arm-toolchain/external-arm-toolchain.bb @@ -63,6 +63,7 @@ do_install() { touch ${S}/nscd/nscd.init touch ${S}/nscd/nscd.conf touch ${S}/nscd/nscd.service + touch ${S}/../makedbs.sh install -d ${D}${base_libdir} install -d ${D}${bindir} @@ -72,28 +73,28 @@ do_install() { install -d ${D}${datadir} install -d ${D}${includedir} - cp -a ${EXTERNAL_TOOLCHAIN}/${EAT_TARGET_SYS}/lib64/* ${D}${base_libdir} + cp -a -H ${EXTERNAL_TOOLCHAIN}/${EAT_TARGET_SYS}/lib64/* ${D}${base_libdir} if [ -d ${EXTERNAL_TOOLCHAIN}/${EAT_TARGET_SYS}/libc/lib64/${EAT_TARGET_SYS} ]; then - cp -a ${EXTERNAL_TOOLCHAIN}/${EAT_TARGET_SYS}/libc/lib64/${EAT_TARGET_SYS}/* ${D}${base_libdir} + cp -a -H ${EXTERNAL_TOOLCHAIN}/${EAT_TARGET_SYS}/libc/lib64/${EAT_TARGET_SYS}/* ${D}${base_libdir} else if [ -f ${EXTERNAL_TOOLCHAIN}/${EAT_TARGET_SYS}/libc/lib64/ld-${EAT_VER_LIBC}.so ]; then - cp -a ${EXTERNAL_TOOLCHAIN}/${EAT_TARGET_SYS}/libc/lib64/* ${D}${base_libdir} + cp -a -H ${EXTERNAL_TOOLCHAIN}/${EAT_TARGET_SYS}/libc/lib64/* ${D}${base_libdir} else - cp -a ${EXTERNAL_TOOLCHAIN}/${EAT_TARGET_SYS}/libc/usr/lib64/*.so* ${D}${base_libdir} + cp -a -H ${EXTERNAL_TOOLCHAIN}/${EAT_TARGET_SYS}/libc/usr/lib64/*.so* ${D}${base_libdir} fi fi if [ -d ${EXTERNAL_TOOLCHAIN}/${EAT_TARGET_SYS}/libc/usr/lib64/${EAT_TARGET_SYS} ]; then - cp -a ${EXTERNAL_TOOLCHAIN}/${EAT_TARGET_SYS}/libc/usr/lib64/${EAT_TARGET_SYS}/* ${D}${libdir} + cp -a -H ${EXTERNAL_TOOLCHAIN}/${EAT_TARGET_SYS}/libc/usr/lib64/${EAT_TARGET_SYS}/* ${D}${libdir} else - cp -a ${EXTERNAL_TOOLCHAIN}/${EAT_TARGET_SYS}/libc/usr/lib64/* ${D}${libdir} + cp -a -H ${EXTERNAL_TOOLCHAIN}/${EAT_TARGET_SYS}/libc/usr/lib64/* ${D}${libdir} if [ ! -f ${EXTERNAL_TOOLCHAIN}/${EAT_TARGET_SYS}/libc/lib64/ld-${EAT_VER_LIBC}.so ]; then rm -rf ${D}${libdir}/*.so* fi fi - cp -a ${EXTERNAL_TOOLCHAIN}/${EAT_TARGET_SYS}/libc/usr/share/* ${D}${datadir} - cp -a ${EXTERNAL_TOOLCHAIN}/${EAT_TARGET_SYS}/libc/usr/include/* ${D}${includedir} + cp -a -H ${EXTERNAL_TOOLCHAIN}/${EAT_TARGET_SYS}/libc/usr/share/* ${D}${datadir} + cp -a -H ${EXTERNAL_TOOLCHAIN}/${EAT_TARGET_SYS}/libc/usr/include/* ${D}${includedir} if [ -d ${EXTERNAL_TOOLCHAIN}/${EAT_TARGET_SYS}/libc/usr/include/${EAT_TARGET_SYS} ]; then - cp -a ${EXTERNAL_TOOLCHAIN}/${EAT_TARGET_SYS}/libc/usr/include/${EAT_TARGET_SYS}/* ${D}${includedir} + cp -a -H ${EXTERNAL_TOOLCHAIN}/${EAT_TARGET_SYS}/libc/usr/include/${EAT_TARGET_SYS}/* ${D}${includedir} rm -r ${D}${includedir}/${EAT_TARGET_SYS} fi @@ -102,40 +103,41 @@ do_install() { ln -sf ld-${EAT_VER_LIBC}.so ${D}${base_libdir}/${linker_name} ln -sf ../../lib/libnsl.so.1 ${D}${libdir}/libnsl.so ln -sf ../../lib/librt.so.1 ${D}${libdir}/librt.so + ln -sf ../../lib/libgcc_s.so.1 ${D}${libdir}/libgcc_s.so ln -sf ../../lib/libcrypt.so.1 ${D}${libdir}/libcrypt.so - ln -sf ../../lib/libnss_nis.so.2 ${D}${libdir}/libnss_nis.so ln -sf ../../lib/libresolv.so.2 ${D}${libdir}/libresolv.so ln -sf ../../lib/libnss_dns.so.2 ${D}${libdir}/libnss_dns.so ln -sf ../../lib/libnss_hesiod.so.2 ${D}${libdir}/libnss_hesiod.so ln -sf ../../lib/libutil.so.1 ${D}${libdir}/libutil.so ln -sf ../../lib/libnss_files.so.2 ${D}${libdir}/libnss_files.so ln -sf ../../lib/libnss_compat.so.2 ${D}${libdir}/libnss_compat.so - ln -sf ../../lib/libcidn.so.1 ${D}${libdir}/libcidn.so +# ln -sf ../../lib/libcidn.so.1 ${D}${libdir}/libcidn.so ln -sf ../../lib/libBrokenLocale.so.1 ${D}${libdir}/libBrokenLocale.so ln -sf ../../lib/libthread_db.so.1 ${D}${libdir}/libthread_db.so + ln -sf ../../lib/libtsan.so.0.0.0 ${D}${libdir}/libtsan.so.0 + ln -sf ../../lib/libtsan.so.0.0.0 ${D}${libdir}/libtsan.so + ln -sf ../../lib/libasan.so.5.0.0 ${D}${libdir}/libasan.so + ln -sf ../../lib/libasan.so.5.0.0 ${D}${libdir}/libasan.so.5.0 + ln -sf ../../lib/liblsan.so.0.0.0 ${D}${libdir}/liblsan.so + ln -sf ../../lib/liblsan.so.0.0.0 ${D}${libdir}/liblsan.so.0 ln -sf ../../lib/libpthread.so.0 ${D}${libdir}/libpthread.so ln -sf ../../lib/libthread_db.so.1 ${D}${libdir}/libthread_db-1.0.so ln -sf ../../lib/libanl.so.1 ${D}${libdir}/libanl.so ln -sf ../../lib/libdl.so.2 ${D}${libdir}/libdl.so - ln -sf ../../lib/libnss_nisplus.so.2 ${D}${libdir}/libnss_nisplus.so +# ln -sf ../../lib/libnss_nisplus.so.2 ${D}${libdir}/libnss_nisplus.so ln -sf ../../lib/libnss_db.so.2 ${D}${libdir}/libnss_db.so + ln -sf ../../lib/libnss_dns.so.2 ${D}${libdir}/libnss_dns.so + ln -sf ../../lib/libnss_files.so.2 ${D}${libdir}/libnss_files.so + ln -sf ../../lib/libnss_compat.so.2 ${D}${libdir}/libnss_compat.so ln -sf ../../lib/libm.so.6 ${D}${libdir}/libm.so ln -sf ../../lib/libatomic.so.1 ${D}${libdir}/libatomic.so ln -sf ../../lib/libgomp.so.1 ${D}${libdir}/libgomp.so ln -sf ../../lib/libitm.so.1 ${D}${libdir}/libitm.so ln -sf ../../lib/libssp.so.0 ${D}${libdir}/libssp.so ln -sf ../../lib/libstdc++.so.6 ${D}${libdir}/libstdc++.so - ln -sf ../../lib/libubsan.so.0 ${D}${libdir}/libubsan.so - if [ -f ${D}${base_libdir}/libasan.so.2 ]; then - ln -sf ../../lib/libasan.so.2 ${D}${libdir}/libasan.so - else - ln -sf ../../lib/libasan.so.1 ${D}${libdir}/libasan.so - fi - if [ -f ${D}${base_libdir}/libgfortran.so.6 ]; then - ln -sf ../../lib/libgfortran.so.6 ${D}${libdir}/libgfortran.so - else - ln -sf ../../lib/libgfortran.so.3 ${D}${libdir}/libgfortran.so - fi + ln -sf ../../lib/libubsan.so.1.0 ${D}${libdir}/libubsan.so + # ln -sf ../../lib/libasan.so.1 ${D}${libdir}/libasan.so + ln -sf ../../lib/libgfortran.so.5 ${D}${libdir}/libgfortran.so # remove potential .so duplicates from base_libdir # for all symlinks created above in libdir @@ -149,7 +151,7 @@ do_install() { rm -f ${D}${base_libdir}/libutil.so rm -f ${D}${base_libdir}/libnss_files.so rm -f ${D}${base_libdir}/libnss_compat.so - rm -f ${D}${base_libdir}/libcidn.so +# rm -f ${D}${base_libdir}/libcidn.so rm -f ${D}${base_libdir}/libBrokenLocale.so rm -f ${D}${base_libdir}/libthread_db.so rm -f ${D}${base_libdir}/libanl.so @@ -194,25 +196,20 @@ do_install() { rm -rf ${D}${base_libdir}/ldscripts fi - if [ -f ${D}${libdir}/libc.so ];then - sed -i -e "s# /lib64/${EAT_TARGET_SYS}# ../../lib64#g" -e "s# /usr/lib64/# /usr/lib/#g" -e "s# /usr/lib64/${EAT_TARGET_SYS}# .#g" -e "s# /lib64/ld-linux# ../../lib64/ld-linux#g" ${D}${libdir}/libc.so + if [ -f ${D}${libdir}/libc.so ];then + sed -i -e "s# /lib64/${EAT_TARGET_SYS}# ../../lib64#g" -e "s# /usr/lib64/# /usr/lib/#g" -e "s# /usr/lib64/${EAT_TARGET_SYS}# .#g" -e "s# /lib64/ld-linux# ../../lib64/ld-linux#g" ${D}${libdir}/libc.so sed -i -e "s# /lib64/libc.so.6# /lib/libc.so.6#g" ${D}${libdir}/libc.so # cat kjasdkjasd - fi + fi + if [ -f ${D}${base_libdir}/libc.so ];then - sed -i -e "s# /lib64/${EAT_TARGET_SYS}# ../../lib64#g" -e "s# /usr/lib64/${EAT_TARGET_SYS}# .#g" ${D}${base_libdir}/libc.so + sed -i -e "s# /lib64/${EAT_TARGET_SYS}# ../../lib#g" -e "s# /usr/lib64/${EAT_TARGET_SYS}# .#g" "s# /lib64/# /lib/#g" ${D}${base_libdir}/libc.so if [ -f ${D}${base_libdir}/libc.so.6 ]; then - sed -i -e "s# /usr/lib64/libc.so.6# /lib/libc.so.6#g" ${D}${base_libdir}/libc.so.6 + sed -i -e "s# /usr/lib64/libc.so.6# /lib/libc.so.6#g" "s# /lib64/libc.so.6# /lib/libc.so.6#g" ${D}${base_libdir}/libc.so.6 fi fi - if [ -f ${D}${libdir}/libpthread.so ];then - sed -i -e "s# /lib64/${EAT_TARGET_SYS}# ../../lib#g" -e "s# /usr/lib/${EAT_TARGET_SYS}# .#g" ${D}${libdir}/libpthread.so - fi - if [ -f ${D}${base_libdir}/libpthread.so ];then - sed -i -e "s# /lib64/${EAT_TARGET_SYS}# ../../lib64#g" -e "s# /usr/lib64/${EAT_TARGET_SYS}# .#g" ${D}${base_libdir}/libpthread.so - if [ -f ${D}${base_libdir}/libpthread.so.0 ]; then - sed -i -e "s# /usr/lib64/libpthread.so.0# /lib/libpthread.so.0#g" ${D}${base_libdir}/libpthread.so - fi + if [ -f ${D}${base_libdir}/libpthread.so.0 ]; then + sed -i -e "s# /usr/lib64/libpthread.so.0# /lib/libpthread.so.0#g" ${D}${base_libdir}/libpthread.so.0 fi # Remove if empty @@ -288,7 +285,9 @@ INSANE_SKIP_${PN}-dbg = "staticdev" INSANE_SKIP_${PN}-utils += "ldflags" INSANE_SKIP_libstdc++ += "ldflags" INSANE_SKIP_libgfortran += "ldflags" -INSANE_SKIP_libgcc += "ldflags" +INSANE_SKIP_libgcc += "ldflags dev-deps" +INSANE_SKIP_libgfortran += "ldflags dev-deps" +INSANE_SKIP_libstdc++ += "ldflags dev-deps" INSANE_SKIP_libatomic += "ldflags" INSANE_SKIP_libasan += "ldflags" INSANE_SKIP_libubsan += "ldflags" @@ -335,7 +334,8 @@ PKGV_${PN}-staticdev = "${EAT_VER_LIBC}" PKGV_catchsegv = "${EAT_VER_LIBC}" PKGV_glibc-extra-nss = "${EAT_VER_LIBC}" PKGV_glibc-thread-db = "${EAT_VER_LIBC}" -PKGV_libcidn = "${EAT_VER_LIBC}" +# PKGV_libcidn = "${EAT_VER_LIBC}" + PKGV_libmemusage = "${EAT_VER_LIBC}" PKGV_libsegfault = "${EAT_VER_LIBC}" PKGV_libsotruss = "${EAT_VER_LIBC}" @@ -449,7 +449,7 @@ FILES_libtsan-dev = "\ FILES_libtsan-staticdev = "${base_libdir}/libtsan.a" FILES_libgcc = "${base_libdir}/libgcc_s.so.1" -FILES_libgcc-dev = "${base_libdir}/libgcc_s.so" +FILES_libgcc-dev = "${libdir}/libgcc_s.so" FILES_linux-libc-headers = "\ ${includedir}/asm* \ @@ -475,6 +475,7 @@ FILES_${PN} += "\ ${base_libdir}/ld*.so.* \ ${base_libdir}/ld-*.so \ ${base_libdir}/libpthread*.so.* \ + ${base_libdir}/libpthread*.so \ ${base_libdir}/libpthread-*.so \ ${base_libdir}/libresolv*.so.* \ ${base_libdir}/libresolv-*.so \ @@ -502,7 +503,6 @@ FILES_${PN} += "\ ${base_libdir}/libanl-*.so \ ${base_libdir}/libBrokenLocale*.so.* \ ${base_libdir}/libBrokenLocale-*.so \ - ${base_libdir}/libcidn*.so.* \ ${base_libdir}/libcidn-*.so \ ${base_libdir}/libthread_db*.so.* \ ${base_libdir}/libthread_db-*.so \ @@ -510,6 +510,7 @@ FILES_${PN} += "\ ${base_libdir}/libSegFault.so \ ${base_libdir}/libpcprofile.so \ " +# ${base_libdir}/libcidn*.so.* FILES_${PN}-dbg += "${base_libdir}/debug" @@ -572,6 +573,7 @@ FILES_libgomp-staticdev = "\ " EAT_VER_MAIN ??= "" + python () { if not d.getVar("EAT_VER_MAIN", False): raise bb.parse.SkipPackage("External ARM toolchain not configured (EAT_VER_MAIN not set).") -- cgit v1.2.3