All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v3 0/5] external-arm-toolchain: Add prebuilt SDK support
@ 2020-06-19  0:35 Denys Dmytriyenko
  2020-06-19  0:35 ` [PATCH v3 1/5] external-arm-toolchain-versions: also collect binutils/bfd version Denys Dmytriyenko
                   ` (4 more replies)
  0 siblings, 5 replies; 14+ messages in thread
From: Denys Dmytriyenko @ 2020-06-19  0:35 UTC (permalink / raw)
  To: meta-arm; +Cc: Denys Dmytriyenko

From: Denys Dmytriyenko <denys@ti.com>

This series adds a recipe with supporting enhancements and settings to package
existing cross-compile binaries from external toolchain to be used for SDK.

This approach provides a benefit of full re-use of external toolchain and uses
the same set of binaries when cross-compiling on development host, as well as
SDK host.

The limitation is that the SDK host architecture cannot be different from the
development host architecture and be the one supported by the external toolchain
releases, currently x86_64 and aarch64, which should cover >95% of use cases.

For the remaining use cases when the above limitation cannot be met, the default
configuration for cross-canadian gcc/gdb/binutils uses weak assignment and can
be easily overwritten, which would result in building those components from
sources.

Generated SDK has been tested using testsdk as follows:

$ bitbake core-image-base -c testsdk

Results:

SDK testing environment: cortexa57-poky-linux
GalculatorTest class: SDK doesn't contain gettext
No python package in the SDK
RESULTS:
RESULTS - assimp.BuildAssimp.test_assimp: PASSED (100.40s)
RESULTS - buildcpio.BuildCpioTest.test_cpio: PASSED (45.63s)
RESULTS - buildepoxy.EpoxyTest.test_epoxy: PASSED (22.28s)
RESULTS - buildlzip.BuildLzipTest.test_lzip: PASSED (3.93s)
RESULTS - gcc.GccCompileTest.test_gcc_compile: PASSED (0.13s)
RESULTS - gcc.GccCompileTest.test_gpp2_compile: PASSED (0.13s)
RESULTS - gcc.GccCompileTest.test_gpp_compile: PASSED (0.21s)
RESULTS - gcc.GccCompileTest.test_make: PASSED (0.12s)
RESULTS - perl.PerlTest.test_perl: PASSED (0.03s)
RESULTS - python.Python3Test.test_python3: PASSED (0.05s)
RESULTS - buildgalculator.GalculatorTest.test_galculator: SKIPPED (0.00s)
RESULTS - python.Python2Test.test_python2: SKIPPED (0.00s)
SUMMARY:
core-image-base sdk (poky-glibc-x86_64-core-image-base-cortexa57-qemuarm64-toolchain-3.1+snapshot.sh:environment-setup-cortexa57-poky-linux) - Ran 12 tests in 172.918s
core-image-base sdk - OK - All required tests passed (successes=10, skipped=2, failures=0, errors=0)
NOTE: Tasks Summary: Attempted 1 tasks of which 0 didn't need to be rerun and all succeeded.

Changes in v3:
- Add patch #5 with SDK fixup code to symlink include directory between
  native and target sysroots, so external toolchain can find headers.

Changes in v2:
- Remove conditional code in patch #2 to select GPL/LGPL license version
  based on toolchain component version, as old GPLv2 toolchains are no
  longer supported.
- In patch #4 in addition to INSANE_SKIP, use SKIP_FILEDEPS for RPM to
  skip rdeps checks.

Denys Dmytriyenko (5):
  external-arm-toolchain-versions: also collect binutils/bfd version
  external-arm-toolchain-versions: set per-components license based on
    version
  external-arm-toolchain: check for TCLIBC being glibc
  external-arm-sdk-toolchain: add recipe to package gcc/gdb/binutils
    cross binaries
  tcmode-external-arm: fixup headers location in external toolchain SDK

 .../include/external-arm-toolchain-versions.inc    |  38 ++++++
 .../conf/distro/include/tcmode-external-arm.inc    |  15 +++
 .../external-arm-sdk-toolchain.bb                  | 140 +++++++++++++++++++++
 .../external-arm-toolchain.bb                      |   8 +-
 4 files changed, 195 insertions(+), 6 deletions(-)
 create mode 100644 meta-arm-toolchain/recipes-devtools/external-arm-toolchain/external-arm-sdk-toolchain.bb

-- 
2.7.4


^ permalink raw reply	[flat|nested] 14+ messages in thread

* [PATCH v3 1/5] external-arm-toolchain-versions: also collect binutils/bfd version
  2020-06-19  0:35 [PATCH v3 0/5] external-arm-toolchain: Add prebuilt SDK support Denys Dmytriyenko
@ 2020-06-19  0:35 ` Denys Dmytriyenko
  2020-06-23 11:38   ` [meta-arm] " Sumit Garg
  2020-06-19  0:35 ` [PATCH v3 2/4] external-arm-toolchain-versions: set per-component toolchain licenses Denys Dmytriyenko
                   ` (3 subsequent siblings)
  4 siblings, 1 reply; 14+ messages in thread
From: Denys Dmytriyenko @ 2020-06-19  0:35 UTC (permalink / raw)
  To: meta-arm; +Cc: Denys Dmytriyenko

From: Denys Dmytriyenko <denys@ti.com>

To be used by SDK packaging for binutils cross.

This code is upstreamed from meta-arago layer.

Signed-off-by: Denys Dmytriyenko <denys@ti.com>
---
 .../conf/distro/include/external-arm-toolchain-versions.inc    | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/meta-arm-toolchain/conf/distro/include/external-arm-toolchain-versions.inc b/meta-arm-toolchain/conf/distro/include/external-arm-toolchain-versions.inc
index 5c40af2..a89f2f0 100644
--- a/meta-arm-toolchain/conf/distro/include/external-arm-toolchain-versions.inc
+++ b/meta-arm-toolchain/conf/distro/include/external-arm-toolchain-versions.inc
@@ -117,6 +117,15 @@ def eat_get_gdb_version(d):
         first_line = stdout.splitlines()[0]
         return first_line.split()[-1]
 
+def eat_get_bfd_version(d):
+    try:
+        stdout, stderr = eat_run(d, 'as', '--version')
+    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
@@ -129,5 +138,6 @@ python external_arm_toolchain_version_handler () {
     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))
+    d.setVar('EAT_VER_BFD', eat_get_bfd_version(ld))
 }
 addhandler external_arm_toolchain_version_handler
-- 
2.7.4


^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCH v3 2/4] external-arm-toolchain-versions: set per-component toolchain licenses
  2020-06-19  0:35 [PATCH v3 0/5] external-arm-toolchain: Add prebuilt SDK support Denys Dmytriyenko
  2020-06-19  0:35 ` [PATCH v3 1/5] external-arm-toolchain-versions: also collect binutils/bfd version Denys Dmytriyenko
@ 2020-06-19  0:35 ` Denys Dmytriyenko
  2020-06-23 11:39   ` [meta-arm] " Sumit Garg
  2020-06-19  0:35 ` [PATCH v3 3/5] external-arm-toolchain: check for TCLIBC being glibc Denys Dmytriyenko
                   ` (2 subsequent siblings)
  4 siblings, 1 reply; 14+ messages in thread
From: Denys Dmytriyenko @ 2020-06-19  0:35 UTC (permalink / raw)
  To: meta-arm; +Cc: Denys Dmytriyenko

From: Denys Dmytriyenko <denys@ti.com>

This code is upstreamed from meta-arago layer.

Signed-off-by: Denys Dmytriyenko <denys@ti.com>
---
 .../distro/include/external-arm-toolchain-versions.inc     | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/meta-arm-toolchain/conf/distro/include/external-arm-toolchain-versions.inc b/meta-arm-toolchain/conf/distro/include/external-arm-toolchain-versions.inc
index a89f2f0..9d4f967 100644
--- a/meta-arm-toolchain/conf/distro/include/external-arm-toolchain-versions.inc
+++ b/meta-arm-toolchain/conf/distro/include/external-arm-toolchain-versions.inc
@@ -139,5 +139,19 @@ python external_arm_toolchain_version_handler () {
     d.setVar('EAT_VER_KERNEL', eat_get_kernel_version(ld))
     d.setVar('EAT_VER_GDB', eat_get_gdb_version(ld))
     d.setVar('EAT_VER_BFD', eat_get_bfd_version(ld))
+
+    lc_libc = "LGPL-2.1"
+    lc_gcc = "GPL-3.0"
+    lc_rle = "GPL-3.0-with-GCC-exception"
+    lc_gdb = "GPL-3.0"
+    lc_bfd = "GPL-3.0"
+
+    d.setVar('EAT_LIBC_LICENSE', lc_libc)
+    d.setVar('EAT_GCC_LICENSE', lc_gcc)
+    d.setVar('EAT_RLE_LICENSE', lc_rle)
+    d.setVar('EAT_GDB_LICENSE', lc_gdb)
+    d.setVar('EAT_BFD_LICENSE', lc_bfd)
+
+    d.setVar('EAT_LICENSE', "%s & %s & %s & %s & %s" % (lc_libc, lc_gcc, lc_rle, lc_gdb, lc_bfd))
 }
 addhandler external_arm_toolchain_version_handler
-- 
2.7.4


^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCH v3 3/5] external-arm-toolchain: check for TCLIBC being glibc
  2020-06-19  0:35 [PATCH v3 0/5] external-arm-toolchain: Add prebuilt SDK support Denys Dmytriyenko
  2020-06-19  0:35 ` [PATCH v3 1/5] external-arm-toolchain-versions: also collect binutils/bfd version Denys Dmytriyenko
  2020-06-19  0:35 ` [PATCH v3 2/4] external-arm-toolchain-versions: set per-component toolchain licenses Denys Dmytriyenko
@ 2020-06-19  0:35 ` Denys Dmytriyenko
  2020-06-23 11:42   ` [meta-arm] " Sumit Garg
  2020-06-19  0:35 ` [PATCH v3 4/5] external-arm-sdk-toolchain: add recipe to package gcc/gdb/binutils cross binaries Denys Dmytriyenko
  2020-06-19  0:35 ` [PATCH v3 5/5] tcmode-external-arm: fixup headers location in external toolchain SDK Denys Dmytriyenko
  4 siblings, 1 reply; 14+ messages in thread
From: Denys Dmytriyenko @ 2020-06-19  0:35 UTC (permalink / raw)
  To: meta-arm; +Cc: Denys Dmytriyenko

From: Denys Dmytriyenko <denys@ti.com>

The old TARGET_OS check doesn't work, as it only checks for uclibc and musl at
the end, while TARGET_OS is usually "linux-musleabi", uclibc has been deprecated
and new options like "newlib" and "baremetal" were added. Plus it only works for
the target, but not SDK. Switch to simply checking for TCLIBC = glibc.

Signed-off-by: Denys Dmytriyenko <denys@ti.com>
---
 .../external-arm-toolchain/external-arm-toolchain.bb              | 8 ++------
 1 file changed, 2 insertions(+), 6 deletions(-)

diff --git a/meta-arm-toolchain/recipes-devtools/external-arm-toolchain/external-arm-toolchain.bb b/meta-arm-toolchain/recipes-devtools/external-arm-toolchain/external-arm-toolchain.bb
index 73a2cf6..14a585f 100644
--- a/meta-arm-toolchain/recipes-devtools/external-arm-toolchain/external-arm-toolchain.bb
+++ b/meta-arm-toolchain/recipes-devtools/external-arm-toolchain/external-arm-toolchain.bb
@@ -668,13 +668,9 @@ SUMMARY_libitm-staticdev = "GNU transactional memory support library - static de
 
 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).")
-    import re
-    notglibc = (re.match('.*uclibc$', d.getVar('TARGET_OS', True)) != None) or (re.match('.*musl$', d.getVar('TARGET_OS', True)) != None)
-    if notglibc:
-        raise bb.parse.SkipPackage("incompatible with target %s" %
-                                   d.getVar('TARGET_OS', True))
+    if d.getVar('TCLIBC', True) != "glibc":
+        raise bb.parse.SkipPackage("incompatible with %s" % d.getVar('TCLIBC', True))
 }
-- 
2.7.4


^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCH v3 4/5] external-arm-sdk-toolchain: add recipe to package gcc/gdb/binutils cross binaries
  2020-06-19  0:35 [PATCH v3 0/5] external-arm-toolchain: Add prebuilt SDK support Denys Dmytriyenko
                   ` (2 preceding siblings ...)
  2020-06-19  0:35 ` [PATCH v3 3/5] external-arm-toolchain: check for TCLIBC being glibc Denys Dmytriyenko
@ 2020-06-19  0:35 ` Denys Dmytriyenko
  2020-06-23 14:50   ` [meta-arm] " Sumit Garg
  2020-06-19  0:35 ` [PATCH v3 5/5] tcmode-external-arm: fixup headers location in external toolchain SDK Denys Dmytriyenko
  4 siblings, 1 reply; 14+ messages in thread
From: Denys Dmytriyenko @ 2020-06-19  0:35 UTC (permalink / raw)
  To: meta-arm; +Cc: Denys Dmytriyenko

From: Denys Dmytriyenko <denys@ti.com>

Allows re-use of prebuilt ARM toolchain binaries for SDK generation.

This code is upstreamed from meta-arago layer.

Signed-off-by: Denys Dmytriyenko <denys@ti.com>
---
 .../conf/distro/include/tcmode-external-arm.inc    |   4 +
 .../external-arm-sdk-toolchain.bb                  | 140 +++++++++++++++++++++
 2 files changed, 144 insertions(+)
 create mode 100644 meta-arm-toolchain/recipes-devtools/external-arm-toolchain/external-arm-sdk-toolchain.bb

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 eee1a51..7d5aecc 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..df42b88
--- /dev/null
+++ b/meta-arm-toolchain/recipes-devtools/external-arm-toolchain/external-arm-sdk-toolchain.bb
@@ -0,0 +1,140 @@
+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"
+
+# Skip packaging QA checks for prebuilt binaries
+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"
+
+# Skip file dependencies in RPM for prebuilt binaries
+SKIP_FILEDEPS = "1"
+
+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


^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCH v3 5/5] tcmode-external-arm: fixup headers location in external toolchain SDK
  2020-06-19  0:35 [PATCH v3 0/5] external-arm-toolchain: Add prebuilt SDK support Denys Dmytriyenko
                   ` (3 preceding siblings ...)
  2020-06-19  0:35 ` [PATCH v3 4/5] external-arm-sdk-toolchain: add recipe to package gcc/gdb/binutils cross binaries Denys Dmytriyenko
@ 2020-06-19  0:35 ` Denys Dmytriyenko
  2020-06-23 14:54   ` [meta-arm] " Sumit Garg
  4 siblings, 1 reply; 14+ messages in thread
From: Denys Dmytriyenko @ 2020-06-19  0:35 UTC (permalink / raw)
  To: meta-arm; +Cc: Denys Dmytriyenko

From: Denys Dmytriyenko <denys@ti.com>

External toolchain compiler searches for some headers relative to the binary
and regardless of the --sysroot value. Since headers are installed inside
SDKTARGETSYSROOT, but the binary is inside SDKPATHNATIVE, symlink include
directories between those two.

Signed-off-by: Denys Dmytriyenko <denys@ti.com>
---
 .../conf/distro/include/tcmode-external-arm.inc               | 11 +++++++++++
 1 file changed, 11 insertions(+)

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 7d5aecc..2f101fc 100644
--- a/meta-arm-toolchain/conf/distro/include/tcmode-external-arm.inc
+++ b/meta-arm-toolchain/conf/distro/include/tcmode-external-arm.inc
@@ -117,3 +117,14 @@ def populate_toolchain_links(d):
             bb.fatal("Unable to populate toolchain binary symlink for %s: %s" % (newpath, exc))
 
 require conf/distro/include/external-arm-toolchain-versions.inc
+
+SDK_POSTPROCESS_COMMAND_prepend = "external_arm_sdk_fixup; "
+
+external_arm_sdk_fixup () {
+	tcpath="${SDK_OUTPUT}/${SDKPATHNATIVE}${prefix_nativesdk}/${EAT_TARGET_SYS}"
+	if [ -d $tcpath ]; then
+		pushd $tcpath
+		ln -s ${SDKTARGETSYSROOT}/include include
+		popd
+	fi
+}
-- 
2.7.4


^ permalink raw reply related	[flat|nested] 14+ messages in thread

* Re: [meta-arm] [PATCH v3 1/5] external-arm-toolchain-versions: also collect binutils/bfd version
  2020-06-19  0:35 ` [PATCH v3 1/5] external-arm-toolchain-versions: also collect binutils/bfd version Denys Dmytriyenko
@ 2020-06-23 11:38   ` Sumit Garg
  2020-08-14 13:44     ` Ross Burton
  0 siblings, 1 reply; 14+ messages in thread
From: Sumit Garg @ 2020-06-23 11:38 UTC (permalink / raw)
  To: Denys Dmytriyenko; +Cc: meta-arm, Denys Dmytriyenko

On Fri, 19 Jun 2020 at 06:05, Denys Dmytriyenko <denis@denix.org> wrote:
>
> From: Denys Dmytriyenko <denys@ti.com>
>
> To be used by SDK packaging for binutils cross.
>
> This code is upstreamed from meta-arago layer.
>
> Signed-off-by: Denys Dmytriyenko <denys@ti.com>
> ---
>  .../conf/distro/include/external-arm-toolchain-versions.inc    | 10 ++++++++++
>  1 file changed, 10 insertions(+)
>

Reviewed-by: Sumit Garg <sumit.garg@linaro.org>

> diff --git a/meta-arm-toolchain/conf/distro/include/external-arm-toolchain-versions.inc b/meta-arm-toolchain/conf/distro/include/external-arm-toolchain-versions.inc
> index 5c40af2..a89f2f0 100644
> --- a/meta-arm-toolchain/conf/distro/include/external-arm-toolchain-versions.inc
> +++ b/meta-arm-toolchain/conf/distro/include/external-arm-toolchain-versions.inc
> @@ -117,6 +117,15 @@ def eat_get_gdb_version(d):
>          first_line = stdout.splitlines()[0]
>          return first_line.split()[-1]
>
> +def eat_get_bfd_version(d):
> +    try:
> +        stdout, stderr = eat_run(d, 'as', '--version')
> +    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
> @@ -129,5 +138,6 @@ python external_arm_toolchain_version_handler () {
>      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))
> +    d.setVar('EAT_VER_BFD', eat_get_bfd_version(ld))
>  }
>  addhandler external_arm_toolchain_version_handler
> --
> 2.7.4
>
> 

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [meta-arm] [PATCH v3 2/4] external-arm-toolchain-versions: set per-component toolchain licenses
  2020-06-19  0:35 ` [PATCH v3 2/4] external-arm-toolchain-versions: set per-component toolchain licenses Denys Dmytriyenko
@ 2020-06-23 11:39   ` Sumit Garg
  0 siblings, 0 replies; 14+ messages in thread
From: Sumit Garg @ 2020-06-23 11:39 UTC (permalink / raw)
  To: Denys Dmytriyenko; +Cc: meta-arm, Denys Dmytriyenko

On Fri, 19 Jun 2020 at 06:05, Denys Dmytriyenko <denis@denix.org> wrote:
>
> From: Denys Dmytriyenko <denys@ti.com>
>
> This code is upstreamed from meta-arago layer.
>
> Signed-off-by: Denys Dmytriyenko <denys@ti.com>
> ---
>  .../distro/include/external-arm-toolchain-versions.inc     | 14 ++++++++++++++
>  1 file changed, 14 insertions(+)
>

Reviewed-by: Sumit Garg <sumit.garg@linaro.org>

> diff --git a/meta-arm-toolchain/conf/distro/include/external-arm-toolchain-versions.inc b/meta-arm-toolchain/conf/distro/include/external-arm-toolchain-versions.inc
> index a89f2f0..9d4f967 100644
> --- a/meta-arm-toolchain/conf/distro/include/external-arm-toolchain-versions.inc
> +++ b/meta-arm-toolchain/conf/distro/include/external-arm-toolchain-versions.inc
> @@ -139,5 +139,19 @@ python external_arm_toolchain_version_handler () {
>      d.setVar('EAT_VER_KERNEL', eat_get_kernel_version(ld))
>      d.setVar('EAT_VER_GDB', eat_get_gdb_version(ld))
>      d.setVar('EAT_VER_BFD', eat_get_bfd_version(ld))
> +
> +    lc_libc = "LGPL-2.1"
> +    lc_gcc = "GPL-3.0"
> +    lc_rle = "GPL-3.0-with-GCC-exception"
> +    lc_gdb = "GPL-3.0"
> +    lc_bfd = "GPL-3.0"
> +
> +    d.setVar('EAT_LIBC_LICENSE', lc_libc)
> +    d.setVar('EAT_GCC_LICENSE', lc_gcc)
> +    d.setVar('EAT_RLE_LICENSE', lc_rle)
> +    d.setVar('EAT_GDB_LICENSE', lc_gdb)
> +    d.setVar('EAT_BFD_LICENSE', lc_bfd)
> +
> +    d.setVar('EAT_LICENSE', "%s & %s & %s & %s & %s" % (lc_libc, lc_gcc, lc_rle, lc_gdb, lc_bfd))
>  }
>  addhandler external_arm_toolchain_version_handler
> --
> 2.7.4
>
> 

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [meta-arm] [PATCH v3 3/5] external-arm-toolchain: check for TCLIBC being glibc
  2020-06-19  0:35 ` [PATCH v3 3/5] external-arm-toolchain: check for TCLIBC being glibc Denys Dmytriyenko
@ 2020-06-23 11:42   ` Sumit Garg
  0 siblings, 0 replies; 14+ messages in thread
From: Sumit Garg @ 2020-06-23 11:42 UTC (permalink / raw)
  To: Denys Dmytriyenko; +Cc: meta-arm, Denys Dmytriyenko

On Fri, 19 Jun 2020 at 06:05, Denys Dmytriyenko <denis@denix.org> wrote:
>
> From: Denys Dmytriyenko <denys@ti.com>
>
> The old TARGET_OS check doesn't work, as it only checks for uclibc and musl at
> the end, while TARGET_OS is usually "linux-musleabi", uclibc has been deprecated
> and new options like "newlib" and "baremetal" were added. Plus it only works for
> the target, but not SDK. Switch to simply checking for TCLIBC = glibc.
>
> Signed-off-by: Denys Dmytriyenko <denys@ti.com>
> ---
>  .../external-arm-toolchain/external-arm-toolchain.bb              | 8 ++------
>  1 file changed, 2 insertions(+), 6 deletions(-)
>

Reviewed-by: Sumit Garg <sumit.garg@linaro.org>

> diff --git a/meta-arm-toolchain/recipes-devtools/external-arm-toolchain/external-arm-toolchain.bb b/meta-arm-toolchain/recipes-devtools/external-arm-toolchain/external-arm-toolchain.bb
> index 73a2cf6..14a585f 100644
> --- a/meta-arm-toolchain/recipes-devtools/external-arm-toolchain/external-arm-toolchain.bb
> +++ b/meta-arm-toolchain/recipes-devtools/external-arm-toolchain/external-arm-toolchain.bb
> @@ -668,13 +668,9 @@ SUMMARY_libitm-staticdev = "GNU transactional memory support library - static de
>
>  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).")
> -    import re
> -    notglibc = (re.match('.*uclibc$', d.getVar('TARGET_OS', True)) != None) or (re.match('.*musl$', d.getVar('TARGET_OS', True)) != None)
> -    if notglibc:
> -        raise bb.parse.SkipPackage("incompatible with target %s" %
> -                                   d.getVar('TARGET_OS', True))
> +    if d.getVar('TCLIBC', True) != "glibc":
> +        raise bb.parse.SkipPackage("incompatible with %s" % d.getVar('TCLIBC', True))
>  }
> --
> 2.7.4
>
> 

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [meta-arm] [PATCH v3 4/5] external-arm-sdk-toolchain: add recipe to package gcc/gdb/binutils cross binaries
  2020-06-19  0:35 ` [PATCH v3 4/5] external-arm-sdk-toolchain: add recipe to package gcc/gdb/binutils cross binaries Denys Dmytriyenko
@ 2020-06-23 14:50   ` Sumit Garg
  2020-06-30  1:20     ` Denys Dmytriyenko
  0 siblings, 1 reply; 14+ messages in thread
From: Sumit Garg @ 2020-06-23 14:50 UTC (permalink / raw)
  To: Denys Dmytriyenko; +Cc: meta-arm, Denys Dmytriyenko

On Fri, 19 Jun 2020 at 06:05, Denys Dmytriyenko <denis@denix.org> wrote:
>
> From: Denys Dmytriyenko <denys@ti.com>
>
> Allows re-use of prebuilt ARM toolchain binaries for SDK generation.
>
> This code is upstreamed from meta-arago layer.
>
> Signed-off-by: Denys Dmytriyenko <denys@ti.com>
> ---
>  .../conf/distro/include/tcmode-external-arm.inc    |   4 +
>  .../external-arm-sdk-toolchain.bb                  | 140 +++++++++++++++++++++
>  2 files changed, 144 insertions(+)
>  create mode 100644 meta-arm-toolchain/recipes-devtools/external-arm-toolchain/external-arm-sdk-toolchain.bb
>
> 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 eee1a51..7d5aecc 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..df42b88
> --- /dev/null
> +++ b/meta-arm-toolchain/recipes-devtools/external-arm-toolchain/external-arm-sdk-toolchain.bb
> @@ -0,0 +1,140 @@
> +inherit cross-canadian
> +
> +PN = "external-arm-sdk-toolchain-${TARGET_ARCH}"
> +BPN = "external-arm-sdk-toolchain"
> +

We should add here PV too as follows:

PV = "${EAT_VER_MAIN}"

> +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"
> +
> +# Skip packaging QA checks for prebuilt binaries
> +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"
> +
> +# Skip file dependencies in RPM for prebuilt binaries
> +SKIP_FILEDEPS = "1"
> +
> +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}/* \

As I observed here, all the libraries needed for cross-compilation are
packaged here corresponding to EAT_TARGET_SYS. So why not package
headers here as well required for cross-compilation?

So with the additional change as follows, we basically package every
dependency needed to use EAT for cross-compilation corresponding to
EAT_TARGET_SYS. And hence we don't require:

- symlinks corresponding to EAT_TARGET_SYS in external-arm-toolchain recipe.
- hack in patch #5 can be dropped entirely as headers are packaged by
default at ${SDK_OUTPUT}/${SDKPATHNATIVE}${prefix_nativesdk}/${EAT_TARGET_SYS}/include.

--- 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
@@ -45,6 +45,7 @@ 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++.* \
+       ${prefix}/${EAT_TARGET_SYS}/include \
        ${gcclibdir}/${EAT_TARGET_SYS}/${EAT_VER_GCC}/* \
        ${bindir}/${TARGET_PREFIX}gcov \
        ${bindir}/${TARGET_PREFIX}gcc* \
@@ -99,6 +100,7 @@
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}${prefix}/${EAT_TARGET_SYS}/include
        install -d ${D}${bindir}
        install -d ${D}${libdir}
        install -d ${D}${prefix}/${EAT_TARGET_SYS}/lib/ldscripts
@@ -112,6 +114,7 @@ do_install() {
        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}/${EAT_TARGET_SYS}/include/*
${D}${prefix}/${EAT_TARGET_SYS}/include
        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}

-Sumit

> +       ${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
>
> 

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [meta-arm] [PATCH v3 5/5] tcmode-external-arm: fixup headers location in external toolchain SDK
  2020-06-19  0:35 ` [PATCH v3 5/5] tcmode-external-arm: fixup headers location in external toolchain SDK Denys Dmytriyenko
@ 2020-06-23 14:54   ` Sumit Garg
  0 siblings, 0 replies; 14+ messages in thread
From: Sumit Garg @ 2020-06-23 14:54 UTC (permalink / raw)
  To: Denys Dmytriyenko; +Cc: meta-arm, Denys Dmytriyenko

On Fri, 19 Jun 2020 at 06:06, Denys Dmytriyenko <denis@denix.org> wrote:
>
> From: Denys Dmytriyenko <denys@ti.com>
>
> External toolchain compiler searches for some headers relative to the binary
> and regardless of the --sysroot value. Since headers are installed inside
> SDKTARGETSYSROOT, but the binary is inside SDKPATHNATIVE, symlink include
> directories between those two.
>
> Signed-off-by: Denys Dmytriyenko <denys@ti.com>
> ---
>  .../conf/distro/include/tcmode-external-arm.inc               | 11 +++++++++++
>  1 file changed, 11 insertions(+)
>

We can drop this hack once we package headers as part of
gcc-cross-canadian-${TRANSLATED_TARGET_ARCH} as well. For details,
refer to my comment on patch #4.

-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 7d5aecc..2f101fc 100644
> --- a/meta-arm-toolchain/conf/distro/include/tcmode-external-arm.inc
> +++ b/meta-arm-toolchain/conf/distro/include/tcmode-external-arm.inc
> @@ -117,3 +117,14 @@ def populate_toolchain_links(d):
>              bb.fatal("Unable to populate toolchain binary symlink for %s: %s" % (newpath, exc))
>
>  require conf/distro/include/external-arm-toolchain-versions.inc
> +
> +SDK_POSTPROCESS_COMMAND_prepend = "external_arm_sdk_fixup; "
> +
> +external_arm_sdk_fixup () {
> +       tcpath="${SDK_OUTPUT}/${SDKPATHNATIVE}${prefix_nativesdk}/${EAT_TARGET_SYS}"
> +       if [ -d $tcpath ]; then
> +               pushd $tcpath
> +               ln -s ${SDKTARGETSYSROOT}/include include
> +               popd
> +       fi
> +}
> --
> 2.7.4
>
> 

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [meta-arm] [PATCH v3 4/5] external-arm-sdk-toolchain: add recipe to package gcc/gdb/binutils cross binaries
  2020-06-23 14:50   ` [meta-arm] " Sumit Garg
@ 2020-06-30  1:20     ` Denys Dmytriyenko
  0 siblings, 0 replies; 14+ messages in thread
From: Denys Dmytriyenko @ 2020-06-30  1:20 UTC (permalink / raw)
  To: Sumit Garg; +Cc: meta-arm, Denys Dmytriyenko

On Tue, Jun 23, 2020 at 08:20:18PM +0530, Sumit Garg wrote:
> On Fri, 19 Jun 2020 at 06:05, Denys Dmytriyenko <denis@denix.org> wrote:
> >
> > From: Denys Dmytriyenko <denys@ti.com>
> >
> > Allows re-use of prebuilt ARM toolchain binaries for SDK generation.
> >
> > This code is upstreamed from meta-arago layer.
> >
> > Signed-off-by: Denys Dmytriyenko <denys@ti.com>
> > ---
> >  .../conf/distro/include/tcmode-external-arm.inc    |   4 +
> >  .../external-arm-sdk-toolchain.bb                  | 140 +++++++++++++++++++++
> >  2 files changed, 144 insertions(+)
> >  create mode 100644 meta-arm-toolchain/recipes-devtools/external-arm-toolchain/external-arm-sdk-toolchain.bb
> >
> > 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 eee1a51..7d5aecc 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..df42b88
> > --- /dev/null
> > +++ b/meta-arm-toolchain/recipes-devtools/external-arm-toolchain/external-arm-sdk-toolchain.bb
> > @@ -0,0 +1,140 @@
> > +inherit cross-canadian
> > +
> > +PN = "external-arm-sdk-toolchain-${TARGET_ARCH}"
> > +BPN = "external-arm-sdk-toolchain"
> > +
> 
> We should add here PV too as follows:
> 
> PV = "${EAT_VER_MAIN}"

Ok, fine, even though there's no ${PN} package generated, it would help with 
all the temp dirs.


> > +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"
> > +
> > +# Skip packaging QA checks for prebuilt binaries
> > +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"
> > +
> > +# Skip file dependencies in RPM for prebuilt binaries
> > +SKIP_FILEDEPS = "1"
> > +
> > +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}/* \
> 
> As I observed here, all the libraries needed for cross-compilation are
> packaged here corresponding to EAT_TARGET_SYS. So why not package
> headers here as well required for cross-compilation?

See my reply to 0/5 - getting headers from these packages for the target would 
be problematic.


> So with the additional change as follows, we basically package every
> dependency needed to use EAT for cross-compilation corresponding to
> EAT_TARGET_SYS. And hence we don't require:
> 
> - symlinks corresponding to EAT_TARGET_SYS in external-arm-toolchain recipe.
> - hack in patch #5 can be dropped entirely as headers are packaged by
> default at ${SDK_OUTPUT}/${SDKPATHNATIVE}${prefix_nativesdk}/${EAT_TARGET_SYS}/include.
> 
> --- 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
> @@ -45,6 +45,7 @@ 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++.* \
> +       ${prefix}/${EAT_TARGET_SYS}/include \
>         ${gcclibdir}/${EAT_TARGET_SYS}/${EAT_VER_GCC}/* \
>         ${bindir}/${TARGET_PREFIX}gcov \
>         ${bindir}/${TARGET_PREFIX}gcc* \
> @@ -99,6 +100,7 @@
> 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}${prefix}/${EAT_TARGET_SYS}/include
>         install -d ${D}${bindir}
>         install -d ${D}${libdir}
>         install -d ${D}${prefix}/${EAT_TARGET_SYS}/lib/ldscripts
> @@ -112,6 +114,7 @@ do_install() {
>         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}/${EAT_TARGET_SYS}/include/*
> ${D}${prefix}/${EAT_TARGET_SYS}/include
>         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}
> 
> -Sumit
> 
> > +       ${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
> >
> > 

> 


^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [meta-arm] [PATCH v3 1/5] external-arm-toolchain-versions: also collect binutils/bfd version
  2020-06-23 11:38   ` [meta-arm] " Sumit Garg
@ 2020-08-14 13:44     ` Ross Burton
  2020-08-14 14:02       ` Sumit Garg
  0 siblings, 1 reply; 14+ messages in thread
From: Ross Burton @ 2020-08-14 13:44 UTC (permalink / raw)
  To: Sumit Garg; +Cc: Denys Dmytriyenko, meta-arm, Denys Dmytriyenko

These patches fell through the cracks.  It looks like patches
one/two/three were reviewed by Sumit and are good to go but four/five
need some more work.  Unless anyone NAKs in the next 24 hours we'll
merge the first three and wait on another iteration of the last two.

Cheers,
Ross

On Tue, 23 Jun 2020 at 12:38, Sumit Garg <sumit.garg@linaro.org> wrote:
>
> On Fri, 19 Jun 2020 at 06:05, Denys Dmytriyenko <denis@denix.org> wrote:
> >
> > From: Denys Dmytriyenko <denys@ti.com>
> >
> > To be used by SDK packaging for binutils cross.
> >
> > This code is upstreamed from meta-arago layer.
> >
> > Signed-off-by: Denys Dmytriyenko <denys@ti.com>
> > ---
> >  .../conf/distro/include/external-arm-toolchain-versions.inc    | 10 ++++++++++
> >  1 file changed, 10 insertions(+)
> >
>
> Reviewed-by: Sumit Garg <sumit.garg@linaro.org>
>
> > diff --git a/meta-arm-toolchain/conf/distro/include/external-arm-toolchain-versions.inc b/meta-arm-toolchain/conf/distro/include/external-arm-toolchain-versions.inc
> > index 5c40af2..a89f2f0 100644
> > --- a/meta-arm-toolchain/conf/distro/include/external-arm-toolchain-versions.inc
> > +++ b/meta-arm-toolchain/conf/distro/include/external-arm-toolchain-versions.inc
> > @@ -117,6 +117,15 @@ def eat_get_gdb_version(d):
> >          first_line = stdout.splitlines()[0]
> >          return first_line.split()[-1]
> >
> > +def eat_get_bfd_version(d):
> > +    try:
> > +        stdout, stderr = eat_run(d, 'as', '--version')
> > +    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
> > @@ -129,5 +138,6 @@ python external_arm_toolchain_version_handler () {
> >      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))
> > +    d.setVar('EAT_VER_BFD', eat_get_bfd_version(ld))
> >  }
> >  addhandler external_arm_toolchain_version_handler
> > --
> > 2.7.4
> >
> >
> 

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [meta-arm] [PATCH v3 1/5] external-arm-toolchain-versions: also collect binutils/bfd version
  2020-08-14 13:44     ` Ross Burton
@ 2020-08-14 14:02       ` Sumit Garg
  0 siblings, 0 replies; 14+ messages in thread
From: Sumit Garg @ 2020-08-14 14:02 UTC (permalink / raw)
  To: Ross Burton, Denys Dmytriyenko; +Cc: meta-arm, Denys Dmytriyenko

Hi Ross,

On Fri, 14 Aug 2020 at 19:15, Ross Burton <ross@burtonini.com> wrote:
>
> These patches fell through the cracks.  It looks like patches
> one/two/three were reviewed by Sumit and are good to go but four/five
> need some more work.  Unless anyone NAKs in the next 24 hours we'll
> merge the first three and wait on another iteration of the last two.

Yes it's fine with me to go ahead with the first 3 patches and I think
it's minor rework required for patch #4 and we can drop patch #5.

If it's fine with Denys, I can repost patch #4 as well with minor
fixup and we can have this feature incorporated upstream.

-Sumit

>
> Cheers,
> Ross
>
> On Tue, 23 Jun 2020 at 12:38, Sumit Garg <sumit.garg@linaro.org> wrote:
> >
> > On Fri, 19 Jun 2020 at 06:05, Denys Dmytriyenko <denis@denix.org> wrote:
> > >
> > > From: Denys Dmytriyenko <denys@ti.com>
> > >
> > > To be used by SDK packaging for binutils cross.
> > >
> > > This code is upstreamed from meta-arago layer.
> > >
> > > Signed-off-by: Denys Dmytriyenko <denys@ti.com>
> > > ---
> > >  .../conf/distro/include/external-arm-toolchain-versions.inc    | 10 ++++++++++
> > >  1 file changed, 10 insertions(+)
> > >
> >
> > Reviewed-by: Sumit Garg <sumit.garg@linaro.org>
> >
> > > diff --git a/meta-arm-toolchain/conf/distro/include/external-arm-toolchain-versions.inc b/meta-arm-toolchain/conf/distro/include/external-arm-toolchain-versions.inc
> > > index 5c40af2..a89f2f0 100644
> > > --- a/meta-arm-toolchain/conf/distro/include/external-arm-toolchain-versions.inc
> > > +++ b/meta-arm-toolchain/conf/distro/include/external-arm-toolchain-versions.inc
> > > @@ -117,6 +117,15 @@ def eat_get_gdb_version(d):
> > >          first_line = stdout.splitlines()[0]
> > >          return first_line.split()[-1]
> > >
> > > +def eat_get_bfd_version(d):
> > > +    try:
> > > +        stdout, stderr = eat_run(d, 'as', '--version')
> > > +    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
> > > @@ -129,5 +138,6 @@ python external_arm_toolchain_version_handler () {
> > >      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))
> > > +    d.setVar('EAT_VER_BFD', eat_get_bfd_version(ld))
> > >  }
> > >  addhandler external_arm_toolchain_version_handler
> > > --
> > > 2.7.4
> > >
> > >
> > 

^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2020-08-14 14:02 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-06-19  0:35 [PATCH v3 0/5] external-arm-toolchain: Add prebuilt SDK support Denys Dmytriyenko
2020-06-19  0:35 ` [PATCH v3 1/5] external-arm-toolchain-versions: also collect binutils/bfd version Denys Dmytriyenko
2020-06-23 11:38   ` [meta-arm] " Sumit Garg
2020-08-14 13:44     ` Ross Burton
2020-08-14 14:02       ` Sumit Garg
2020-06-19  0:35 ` [PATCH v3 2/4] external-arm-toolchain-versions: set per-component toolchain licenses Denys Dmytriyenko
2020-06-23 11:39   ` [meta-arm] " Sumit Garg
2020-06-19  0:35 ` [PATCH v3 3/5] external-arm-toolchain: check for TCLIBC being glibc Denys Dmytriyenko
2020-06-23 11:42   ` [meta-arm] " Sumit Garg
2020-06-19  0:35 ` [PATCH v3 4/5] external-arm-sdk-toolchain: add recipe to package gcc/gdb/binutils cross binaries Denys Dmytriyenko
2020-06-23 14:50   ` [meta-arm] " Sumit Garg
2020-06-30  1:20     ` Denys Dmytriyenko
2020-06-19  0:35 ` [PATCH v3 5/5] tcmode-external-arm: fixup headers location in external toolchain SDK Denys Dmytriyenko
2020-06-23 14:54   ` [meta-arm] " Sumit Garg

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.