From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailout4.zoneedit.com (mailout4.zoneedit.com [64.68.198.64]) by mx.groups.io with SMTP id smtpd.web11.2262.1592450993789707082 for ; Wed, 17 Jun 2020 20:29:54 -0700 Authentication-Results: mx.groups.io; dkim=missing; spf=none, err=permanent DNS error (domain: denix.org, ip: 64.68.198.64, mailfrom: denis@denix.org) Received: from localhost (localhost [127.0.0.1]) by mailout4.zoneedit.com (Postfix) with ESMTP id 02FCB40B7F; Thu, 18 Jun 2020 03:29:53 +0000 (UTC) Received: from mailout4.zoneedit.com ([127.0.0.1]) by localhost (zmo14-pco.easydns.vpn [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 4b2jCQ0zI5V9; Thu, 18 Jun 2020 03:29:52 +0000 (UTC) Received: from mail.denix.org (pool-100-15-86-127.washdc.fios.verizon.net [100.15.86.127]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mailout4.zoneedit.com (Postfix) with ESMTPSA id 88A7740A13; Thu, 18 Jun 2020 03:29:50 +0000 (UTC) Received: by mail.denix.org (Postfix, from userid 1000) id D62DF17320A; Wed, 17 Jun 2020 23:29:49 -0400 (EDT) Date: Wed, 17 Jun 2020 23:29:49 -0400 From: "Denys Dmytriyenko" To: Sumit Garg Cc: meta-arm@lists.yoctoproject.org, Denys Dmytriyenko Subject: Re: [meta-arm] [PATCH 4/4] external-arm-sdk-toolchain: add recipe to package gcc/gdb/binutils cross binaries Message-ID: <20200618032949.GB17660@denix.org> References: <1592208433-28086-1-git-send-email-denis@denix.org> <1592208433-28086-4-git-send-email-denis@denix.org> <20200615182027.GW17660@denix.org> MIME-Version: 1.0 In-Reply-To: User-Agent: Mutt/1.5.20 (2009-06-14) Content-Type: text/plain; charset=us-ascii Content-Disposition: inline On Tue, Jun 16, 2020 at 11:26:17AM +0530, Sumit Garg wrote: > On Mon, 15 Jun 2020 at 23:50, Denys Dmytriyenko wrote: > > > > On Mon, Jun 15, 2020 at 06:15:17PM +0530, Sumit Garg wrote: > > > On Mon, 15 Jun 2020 at 13:37, Denys Dmytriyenko wrote: > > > > > > > > From: Denys Dmytriyenko > > > > > > > > Allows re-use of prebuilt ARM toolchain binaries for SDK generation. > > > > > > > > This code is upstreamed from meta-arago layer. > > > > > > > > Signed-off-by: Denys Dmytriyenko > > > > --- > > > > .../conf/distro/include/tcmode-external-arm.inc | 4 + > > > > .../external-arm-sdk-toolchain.bb | 136 +++++++++++++++++++++ > > > > 2 files changed, 140 insertions(+) > > > > create mode 100644 meta-arm-toolchain/recipes-devtools/external-arm-toolchain/external-arm-sdk-toolchain.bb > > > > > > > > > > Thanks for pushing this recipe upstream. It's good to have the tools > > > binaries packaged in SDK from pre-built toolchain rather than building > > > from source. > > > > > > So I just gave it a try using poky distro which fails with following error: > > > > > > $ bitbake -c populate_sdk core-image-base > > > > > > Error: > > > Problem: package > > > packagegroup-cross-canadian-qemuarm64-1.0-r0.x86_64_nativesdk requires > > > gdb-cross-canadian-aarch64, but none of the providers can be installed > > > - conflicting requests > > > - nothing provides libpython2.7.so.1.0()(64bit) needed by > > > gdb-cross-canadian-aarch64-8.3.0.20190709+git-r0.x86_64_nativesdk > > > > ^^^ looks like 8.3 toolchain has some python2-linked binaries, which would > > require dependency on meta-python2. > > Here 8.3.0 is gdb version rather than toolchain version. See below: Ah, yes, I see - it's gdb binary itself is linked against libpython2.7.so.1.0 The thing is that the recipe already sets "file-rdeps" INSAKE_SKIP flag for gdb-cross-canadian. In order to reproduce this I had to switch from nodistro/ipk to poky/rpm. The original error was cut a bit short, so I wasn't sure where it was coming from. Now I see that it is coming from DNF when SDK is being assembled from rpms. Looks like DNF has its own check and doesn't honor INSANE_SKIP, obviously. And opkg is more forgiving in this regard. BTW, switching nodistro from ipk to rpm also results in this error. I wonder if there's a way to tell DNF to skip this check... -- Denys > $ ~/tc_install/gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu-gdb > --version > GNU gdb (GNU Toolchain for the A-profile Architecture 9.2-2019.12 > (arm-9.10)) 8.3.0.20190709-git > Copyright (C) 2019 Free Software Foundation, Inc. > License GPLv3+: GNU GPL version 3 or later > This is free software: you are free to change and redistribute it. > There is NO WARRANTY, to the extent permitted by law. > > > Let me check which binary is that, maybe > > we can just drop it. Or we can just skip this check with INSANE_SKIP... > > > > BTW, I don't see this issue with 9.2 toolchain. > > > > Strangely, I see this issue with 9.2 toolchain for aarch64. > > -Sumit > > > -- > > Denys > > > > > > > (try to add '--skip-broken' to skip uninstallable packages) > > > > > > > > > Is there something that I missed while testing? > > > > > > -Sumit > > > > > > > diff --git a/meta-arm-toolchain/conf/distro/include/tcmode-external-arm.inc b/meta-arm-toolchain/conf/distro/include/tcmode-external-arm.inc > > > > index 9171380..08b87ef 100644 > > > > --- a/meta-arm-toolchain/conf/distro/include/tcmode-external-arm.inc > > > > +++ b/meta-arm-toolchain/conf/distro/include/tcmode-external-arm.inc > > > > @@ -45,6 +45,10 @@ PREFERRED_PROVIDER_glibc-mtrace = "external-arm-toolchain" > > > > PREFERRED_PROVIDER_libc-mtrace = "external-arm-toolchain" > > > > PREFERRED_PROVIDER_virtual/linux-libc-headers = "external-arm-toolchain" > > > > > > > > +PREFERRED_PROVIDER_gcc-cross-canadian-${TRANSLATED_TARGET_ARCH} ?= "external-arm-sdk-toolchain-${TRANSLATED_TARGET_ARCH}" > > > > +PREFERRED_PROVIDER_binutils-cross-canadian-${TRANSLATED_TARGET_ARCH} ?= "external-arm-sdk-toolchain-${TRANSLATED_TARGET_ARCH}" > > > > +PREFERRED_PROVIDER_gdb-cross-canadian-${TRANSLATED_TARGET_ARCH} ?= "external-arm-sdk-toolchain-${TRANSLATED_TARGET_ARCH}" > > > > + > > > > TOOLCHAIN_OPTIONS = " --sysroot=${STAGING_DIR_HOST}" > > > > > > > > DISTRO_FEATURES_LIBC = "ipv4 ipv6 libc-backtrace libc-big-macros libc-bsd libc-cxx-tests libc-catgets libc-crypt \ > > > > diff --git a/meta-arm-toolchain/recipes-devtools/external-arm-toolchain/external-arm-sdk-toolchain.bb b/meta-arm-toolchain/recipes-devtools/external-arm-toolchain/external-arm-sdk-toolchain.bb > > > > new file mode 100644 > > > > index 0000000..88fd20e > > > > --- /dev/null > > > > +++ b/meta-arm-toolchain/recipes-devtools/external-arm-toolchain/external-arm-sdk-toolchain.bb > > > > @@ -0,0 +1,136 @@ > > > > +inherit cross-canadian > > > > + > > > > +PN = "external-arm-sdk-toolchain-${TARGET_ARCH}" > > > > +BPN = "external-arm-sdk-toolchain" > > > > + > > > > +INHIBIT_PACKAGE_DEBUG_SPLIT = "1" > > > > +INHIBIT_PACKAGE_STRIP = "1" > > > > +INHIBIT_SYSROOT_STRIP = "1" > > > > +INHIBIT_DEFAULT_DEPS = "1" > > > > +EXCLUDE_FROM_SHLIBS = "1" > > > > + > > > > +EAT_LICENSE ??= "" > > > > + > > > > +LICENSE = "${EAT_LICENSE}" > > > > +LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302" > > > > + > > > > +INSANE_SKIP_gcc-cross-canadian-${TRANSLATED_TARGET_ARCH} = "dev-so staticdev file-rdeps libdir" > > > > +INSANE_SKIP_gdb-cross-canadian-${TRANSLATED_TARGET_ARCH} = "dev-so file-rdeps" > > > > +INSANE_SKIP_binutils-cross-canadian-${TRANSLATED_TARGET_ARCH} = "dev-so file-rdeps" > > > > + > > > > +PROVIDES = "\ > > > > + gcc-cross-canadian-${TRANSLATED_TARGET_ARCH} \ > > > > + gdb-cross-canadian-${TRANSLATED_TARGET_ARCH} \ > > > > + binutils-cross-canadian-${TRANSLATED_TARGET_ARCH} \ > > > > +" > > > > + > > > > +PACKAGES = "\ > > > > + gcc-cross-canadian-${TRANSLATED_TARGET_ARCH} \ > > > > + gdb-cross-canadian-${TRANSLATED_TARGET_ARCH} \ > > > > + binutils-cross-canadian-${TRANSLATED_TARGET_ARCH} \ > > > > +" > > > > + > > > > +# Adjust defaults in line with external toolchain > > > > +bindir = "${exec_prefix}/bin" > > > > +libdir = "${exec_prefix}/lib" > > > > +libexecdir = "${exec_prefix}/libexec" > > > > +datadir = "${exec_prefix}/share" > > > > +gcclibdir = "${libdir}/gcc" > > > > + > > > > +FILES_gcc-cross-canadian-${TRANSLATED_TARGET_ARCH} = "\ > > > > + ${prefix}/${EAT_TARGET_SYS}/lib/libstdc++.* \ > > > > + ${prefix}/${EAT_TARGET_SYS}/lib/libgcc_s.* \ > > > > + ${prefix}/${EAT_TARGET_SYS}/lib/libsupc++.* \ > > > > + ${gcclibdir}/${EAT_TARGET_SYS}/${EAT_VER_GCC}/* \ > > > > + ${bindir}/${TARGET_PREFIX}gcov \ > > > > + ${bindir}/${TARGET_PREFIX}gcc* \ > > > > + ${bindir}/${TARGET_PREFIX}g++ \ > > > > + ${bindir}/${TARGET_PREFIX}cpp \ > > > > + ${libexecdir}/* \ > > > > +" > > > > + > > > > +FILES_gdb-cross-canadian-${TRANSLATED_TARGET_ARCH} = "\ > > > > + ${bindir}/${TARGET_PREFIX}gdb* \ > > > > + ${datadir}/gdb/* \ > > > > +" > > > > + > > > > +FILES_binutils-cross-canadian-${TRANSLATED_TARGET_ARCH} = "\ > > > > + ${prefix}/${EAT_TARGET_SYS}/bin/ld* \ > > > > + ${prefix}/${EAT_TARGET_SYS}/bin/objcopy \ > > > > + ${prefix}/${EAT_TARGET_SYS}/bin/strip \ > > > > + ${prefix}/${EAT_TARGET_SYS}/bin/nm \ > > > > + ${prefix}/${EAT_TARGET_SYS}/bin/ranlib \ > > > > + ${prefix}/${EAT_TARGET_SYS}/bin/as \ > > > > + ${prefix}/${EAT_TARGET_SYS}/bin/ar \ > > > > + ${prefix}/${EAT_TARGET_SYS}/bin/objdump \ > > > > + ${prefix}/${EAT_TARGET_SYS}/lib/ldscripts/* \ > > > > + ${bindir}/${TARGET_PREFIX}ld* \ > > > > + ${bindir}/${TARGET_PREFIX}addr2line \ > > > > + ${bindir}/${TARGET_PREFIX}objcopy \ > > > > + ${bindir}/${TARGET_PREFIX}readelf \ > > > > + ${bindir}/${TARGET_PREFIX}strip \ > > > > + ${bindir}/${TARGET_PREFIX}nm \ > > > > + ${bindir}/${TARGET_PREFIX}ranlib \ > > > > + ${bindir}/${TARGET_PREFIX}gprof \ > > > > + ${bindir}/${TARGET_PREFIX}as \ > > > > + ${bindir}/${TARGET_PREFIX}c++filt \ > > > > + ${bindir}/${TARGET_PREFIX}ar \ > > > > + ${bindir}/${TARGET_PREFIX}strings \ > > > > + ${bindir}/${TARGET_PREFIX}objdump \ > > > > + ${bindir}/${TARGET_PREFIX}size \ > > > > +" > > > > + > > > > +DESCRIPTION_gcc-cross-canadian-${TRANSLATED_TARGET_ARCH} = "The GNU cc and gcc C compilers" > > > > +DESCRIPTION_gdb-cross-canadian-${TRANSLATED_TARGET_ARCH} = "gdb - GNU debugger" > > > > +DESCRIPTION_binutils-cross-canadian-${TRANSLATED_TARGET_ARCH} = "A GNU collection of binary utilities" > > > > + > > > > +LICENSE_gcc-cross-canadian-${TRANSLATED_TARGET_ARCH} = "${EAT_GCC_LICENSE}" > > > > +LICENSE_gdb-cross-canadian-${TRANSLATED_TARGET_ARCH} = "${EAT_GDB_LICENSE}" > > > > +LICENSE_binutils-cross-canadian-${TRANSLATED_TARGET_ARCH} = "${EAT_BFD_LICENSE}" > > > > + > > > > +PKGV_gcc-cross-canadian-${TRANSLATED_TARGET_ARCH} = "${EAT_VER_GCC}" > > > > +PKGV_gdb-cross-canadian-${TRANSLATED_TARGET_ARCH} = "${EAT_VER_GDB}" > > > > +PKGV_binutils-cross-canadian-${TRANSLATED_TARGET_ARCH} = "${EAT_VER_BFD}" > > > > + > > > > +do_install() { > > > > + install -d ${D}${prefix}/${EAT_TARGET_SYS}/bin > > > > + install -d ${D}${prefix}/${EAT_TARGET_SYS}/lib > > > > + install -d ${D}${bindir} > > > > + install -d ${D}${libdir} > > > > + install -d ${D}${prefix}/${EAT_TARGET_SYS}/lib/ldscripts > > > > + install -d ${D}${libexecdir} > > > > + install -d ${D}${datadir}/gdb > > > > + install -d ${D}${gcclibdir}/${EAT_TARGET_SYS}/${EAT_VER_GCC}/include > > > > + > > > > + CP_ARGS="-Prf --preserve=mode,timestamps --no-preserve=ownership" > > > > + > > > > + # gcc > > > > + for i in libstdc++.* libgcc_s.* libsupc++.*; do > > > > + cp ${CP_ARGS} ${EXTERNAL_TOOLCHAIN}/${EAT_TARGET_SYS}/${EAT_LIBDIR}/$i ${D}${prefix}/${EAT_TARGET_SYS}/lib > > > > + done > > > > + cp ${CP_ARGS} ${EXTERNAL_TOOLCHAIN}/lib/gcc/${EAT_TARGET_SYS}/${EAT_VER_GCC}/* ${D}${gcclibdir}/${EAT_TARGET_SYS}/${EAT_VER_GCC} > > > > + for i in gcov gcc* g++ cpp; do > > > > + cp ${CP_ARGS} ${EXTERNAL_TOOLCHAIN}/bin/${TARGET_PREFIX}$i ${D}${bindir} > > > > + done > > > > + cp ${CP_ARGS} ${EXTERNAL_TOOLCHAIN}/libexec/* ${D}${libexecdir} > > > > + > > > > + # gdb > > > > + cp ${CP_ARGS} ${EXTERNAL_TOOLCHAIN}/bin/${TARGET_PREFIX}gdb* ${D}${bindir} > > > > + cp ${CP_ARGS} ${EXTERNAL_TOOLCHAIN}/share/gdb/* ${D}${datadir}/gdb/ > > > > + > > > > + # binutils > > > > + for i in ld* objcopy strip nm ranlib as ar objdump; do > > > > + cp ${CP_ARGS} ${EXTERNAL_TOOLCHAIN}/${EAT_TARGET_SYS}/bin/$i ${D}${prefix}/${EAT_TARGET_SYS}/bin > > > > + done > > > > + cp ${CP_ARGS} ${EXTERNAL_TOOLCHAIN}/${EAT_TARGET_SYS}/lib/ldscripts/* ${D}${prefix}/${EAT_TARGET_SYS}/lib/ldscripts > > > > + for i in ld* addr2line objcopy readelf strip nm ranlib gprof as c++filt ar strings objdump size; do > > > > + cp ${CP_ARGS} ${EXTERNAL_TOOLCHAIN}/bin/${TARGET_PREFIX}$i ${D}${bindir} > > > > + done > > > > +} > > > > + > > > > +python () { > > > > + if not d.getVar("EAT_VER_MAIN", False): > > > > + raise bb.parse.SkipPackage("External ARM toolchain not configured (EAT_VER_MAIN not set).") > > > > + if d.getVar('TCLIBC', True) != "glibc": > > > > + raise bb.parse.SkipPackage("incompatible with %s" % d.getVar('TCLIBC', True)) > > > > +} > > > > -- > > > > 2.7.4 > > > > > > > > > > > >