All of lore.kernel.org
 help / color / mirror / Atom feed
* Re: [jethro][PATCH] sdk: arm toolchain patch for multilib
  2017-03-14 16:00 [jethro][PATCH] sdk: arm toolchain patch for multilib zhengrq
@ 2017-03-14  7:31 ` Richard Purdie
  2017-03-15  5:32   ` Zheng, Ruoqin
  0 siblings, 1 reply; 3+ messages in thread
From: Richard Purdie @ 2017-03-14  7:31 UTC (permalink / raw)
  To: zhengrq, openembedded-core

On Wed, 2017-03-15 at 00:00 +0800, zhengrq wrote:
>   The arm toolchain has a "-gnueabi" suffix, but aarch64 doesn't,this
> makes multilib sdk doesn't work, for example:
> 
>   MACHINE = qemuarm64
>   require conf/multilib.conf
>   MULTILIBS = "multilib:lib32"
>   DEFAULTTUNE_virtclass-multilib-lib32 = "armv7at-neon"
> 
>   $ bitbake core-image-minimal -cpopulate_sdk
> 
>   Then extract SDK, the environment-setup-armv7a-vfp-neon-
> pokymllib32-linux-gnueabi doesn't work since:
>   * The CC is arm-pokymllib32-linux-gnueabi-gcc which doesn't exist,
> the patch for cross-canadian.bbclass fixes problem.
>   * Need aarch64-poky-linux/usr/lib/arm-poky-linux-linux-gnueabi
> which doesn't exist, the patch for libgcc-common.inc fixes the
> problem.
> 
>   [YOCTO #8616]
> 
> Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
> Signed-off-by: Lei Maohui <leimaohui@cn.fujitsu.com>
> Signed-off-by: Zheng Ruoqin <zhengrq.fnst@cn.fujitsu.com>

I'm not seeing any patch in master which sets GNUEABI_SUFFIX unless I'm
missing something?

Which patch are you backporting to jethro here?

Don't you really want http://git.yoctoproject.org/cgit.cgi/poky/commit/
?id=b6253350fb86d8e54792905342a5892af570d526 ?

and perhaps you mean #8642 or #10054?

Cheers,

Richard

>  meta/classes/cross-canadian.bbclass         |  3 +++
>  meta/recipes-devtools/gcc/libgcc-common.inc | 25 ++++++++++++++++++-
> ------
>  meta/recipes-devtools/gcc/libgcc.inc        |  2 +-
>  3 files changed, 22 insertions(+), 8 deletions(-)
> 
> diff --git a/meta/classes/cross-canadian.bbclass
> b/meta/classes/cross-canadian.bbclass
> index ea17f09..458185d 100644
> --- a/meta/classes/cross-canadian.bbclass
> +++ b/meta/classes/cross-canadian.bbclass
> @@ -18,6 +18,7 @@ PACKAGE_ARCH = "${SDK_ARCH}-${SDKPKGSUFFIX}"
>  CANADIANEXTRAOS = "linux-uclibc linux-musl"
>  CANADIANEXTRAVENDOR = ""
>  MODIFYTOS ??= "1"
> +GNUEABI_SUFFIX = ""
>  python () {
>      archs = d.getVar('PACKAGE_ARCHS', True).split()
>      sdkarchs = []
> @@ -69,6 +70,7 @@ python () {
>          d.appendVar("CANADIANEXTRAOS", " linux-gnun32 linux-
> uclibcn32 linux-musln32")
>      if tarch == "arm" or tarch == "armeb":
>          d.setVar("TARGET_OS", "linux-gnueabi")
> +        d.setVar("GNUEABI_SUFFIX", "-gnueabi")
>      else:
>          d.setVar("TARGET_OS", "linux")
>  
> @@ -167,6 +169,7 @@ SHLIBSWORKDIR = "${PKGDATA_DIR}/nativesdk-
> shlibs2"
>  cross_canadian_bindirlinks () {
>  	for i in linux ${CANADIANEXTRAOS}
>  	do
> +                i="$i${GNUEABI_SUFFIX}"
>  		for v in ${CANADIANEXTRAVENDOR}
>  		do
>  			d=${D}${bindir}/../${TARGET_ARCH}$v-$i
> diff --git a/meta/recipes-devtools/gcc/libgcc-common.inc
> b/meta/recipes-devtools/gcc/libgcc-common.inc
> index b09ea65..46f8cfd 100644
> --- a/meta/recipes-devtools/gcc/libgcc-common.inc
> +++ b/meta/recipes-devtools/gcc/libgcc-common.inc
> @@ -134,11 +134,22 @@ BASETARGET_SYS =
> "${TARGET_ARCH}${ORIG_TARGET_VENDOROS}"
>  
>  addtask extra_symlinks after do_multilib_install before do_package
> do_populate_sysroot
>  fakeroot python do_extra_symlinks() {
> -    targetsys = d.getVar('BASETARGET_SYS', True)
> -
> -    if targetsys != d.getVar('TARGET_SYS', True):
> -        dest = d.getVar('D', True) + d.getVar('libdir', True) + '/'
> + targetsys
> -        src = d.getVar('TARGET_SYS', True)
> -        if not os.path.lexists(dest) and
> os.path.lexists(d.getVar('D', True) + d.getVar('libdir', True)):
> -            os.symlink(src, dest)
> +    base_targetsys = d.getVar('BASETARGET_SYS', True)
> +    targetsys = d.getVar('TARGET_SYS', True)
> +
> +    if base_targetsys != targetsys:
> +        dest = d.getVar('D', True) + d.getVar('libdir', True) + '/'
> + base_targetsys
> +        dest_list = [dest]
> +        # For multilib like aarch64 + arm, need 2 symlinks:
> +        # 1) BASETARGET_SYS as usual
> +        # 2) BASETARGET_SYS + "-gnueabi" for multilib
> +        libce = d.getVar('LIBCEXTENSION', True)
> +        abie = d.getVar('ABIEXTENSION', True)
> +        if abie and libce and targetsys.endswith(libce + abie):
> +            dest_list.append(dest + libce + abie)
> +        src = targetsys
> +        for dir in dest_list:
> +            if not os.path.lexists(dir) and
> os.path.lexists(d.getVar('D', True) + d.getVar('libdir', True)):
> +                os.symlink(src, dir)
>  }
> +
> diff --git a/meta/recipes-devtools/gcc/libgcc.inc b/meta/recipes-
> devtools/gcc/libgcc.inc
> index 95fa3f4..f6a0a8c 100644
> --- a/meta/recipes-devtools/gcc/libgcc.inc
> +++ b/meta/recipes-devtools/gcc/libgcc.inc
> @@ -17,7 +17,7 @@ LICENSE_${PN}-dbg = "GPL-3.0-with-GCC-exception"
>  
>  FILES_${PN}-dev = "\
>      ${base_libdir}/libgcc*.so \
> -    ${@base_conditional('BASETARGET_SYS', '${TARGET_SYS}', '',
> '${libdir}/${BASETARGET_SYS}', d)} \
> +    ${@base_conditional('BASETARGET_SYS', '${TARGET_SYS}', '',
> '${libdir}/${BASETARGET_SYS}*', d)} \
>      ${libdir}/${TARGET_SYS}/${BINV}* \
>  "
>  
> -- 
> 2.7.4
> 
> 
> 


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

* [jethro][PATCH] sdk: arm toolchain patch for multilib
@ 2017-03-14 16:00 zhengrq
  2017-03-14  7:31 ` Richard Purdie
  0 siblings, 1 reply; 3+ messages in thread
From: zhengrq @ 2017-03-14 16:00 UTC (permalink / raw)
  To: openembedded-core

  The arm toolchain has a "-gnueabi" suffix, but aarch64 doesn't,this makes multilib sdk doesn't work, for example:

  MACHINE = qemuarm64
  require conf/multilib.conf
  MULTILIBS = "multilib:lib32"
  DEFAULTTUNE_virtclass-multilib-lib32 = "armv7at-neon"

  $ bitbake core-image-minimal -cpopulate_sdk

  Then extract SDK, the environment-setup-armv7a-vfp-neon-pokymllib32-linux-gnueabi doesn't work since:
  * The CC is arm-pokymllib32-linux-gnueabi-gcc which doesn't exist, the patch for cross-canadian.bbclass fixes problem.
  * Need aarch64-poky-linux/usr/lib/arm-poky-linux-linux-gnueabi which doesn't exist, the patch for libgcc-common.inc fixes the problem.

  [YOCTO #8616]

Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
Signed-off-by: Lei Maohui <leimaohui@cn.fujitsu.com>
Signed-off-by: Zheng Ruoqin <zhengrq.fnst@cn.fujitsu.com>
---
 meta/classes/cross-canadian.bbclass         |  3 +++
 meta/recipes-devtools/gcc/libgcc-common.inc | 25 ++++++++++++++++++-------
 meta/recipes-devtools/gcc/libgcc.inc        |  2 +-
 3 files changed, 22 insertions(+), 8 deletions(-)

diff --git a/meta/classes/cross-canadian.bbclass b/meta/classes/cross-canadian.bbclass
index ea17f09..458185d 100644
--- a/meta/classes/cross-canadian.bbclass
+++ b/meta/classes/cross-canadian.bbclass
@@ -18,6 +18,7 @@ PACKAGE_ARCH = "${SDK_ARCH}-${SDKPKGSUFFIX}"
 CANADIANEXTRAOS = "linux-uclibc linux-musl"
 CANADIANEXTRAVENDOR = ""
 MODIFYTOS ??= "1"
+GNUEABI_SUFFIX = ""
 python () {
     archs = d.getVar('PACKAGE_ARCHS', True).split()
     sdkarchs = []
@@ -69,6 +70,7 @@ python () {
         d.appendVar("CANADIANEXTRAOS", " linux-gnun32 linux-uclibcn32 linux-musln32")
     if tarch == "arm" or tarch == "armeb":
         d.setVar("TARGET_OS", "linux-gnueabi")
+        d.setVar("GNUEABI_SUFFIX", "-gnueabi")
     else:
         d.setVar("TARGET_OS", "linux")
 
@@ -167,6 +169,7 @@ SHLIBSWORKDIR = "${PKGDATA_DIR}/nativesdk-shlibs2"
 cross_canadian_bindirlinks () {
 	for i in linux ${CANADIANEXTRAOS}
 	do
+                i="$i${GNUEABI_SUFFIX}"
 		for v in ${CANADIANEXTRAVENDOR}
 		do
 			d=${D}${bindir}/../${TARGET_ARCH}$v-$i
diff --git a/meta/recipes-devtools/gcc/libgcc-common.inc b/meta/recipes-devtools/gcc/libgcc-common.inc
index b09ea65..46f8cfd 100644
--- a/meta/recipes-devtools/gcc/libgcc-common.inc
+++ b/meta/recipes-devtools/gcc/libgcc-common.inc
@@ -134,11 +134,22 @@ BASETARGET_SYS = "${TARGET_ARCH}${ORIG_TARGET_VENDOROS}"
 
 addtask extra_symlinks after do_multilib_install before do_package do_populate_sysroot
 fakeroot python do_extra_symlinks() {
-    targetsys = d.getVar('BASETARGET_SYS', True)
-
-    if targetsys != d.getVar('TARGET_SYS', True):
-        dest = d.getVar('D', True) + d.getVar('libdir', True) + '/' + targetsys
-        src = d.getVar('TARGET_SYS', True)
-        if not os.path.lexists(dest) and os.path.lexists(d.getVar('D', True) + d.getVar('libdir', True)):
-            os.symlink(src, dest)
+    base_targetsys = d.getVar('BASETARGET_SYS', True)
+    targetsys = d.getVar('TARGET_SYS', True)
+
+    if base_targetsys != targetsys:
+        dest = d.getVar('D', True) + d.getVar('libdir', True) + '/' + base_targetsys
+        dest_list = [dest]
+        # For multilib like aarch64 + arm, need 2 symlinks:
+        # 1) BASETARGET_SYS as usual
+        # 2) BASETARGET_SYS + "-gnueabi" for multilib
+        libce = d.getVar('LIBCEXTENSION', True)
+        abie = d.getVar('ABIEXTENSION', True)
+        if abie and libce and targetsys.endswith(libce + abie):
+            dest_list.append(dest + libce + abie)
+        src = targetsys
+        for dir in dest_list:
+            if not os.path.lexists(dir) and os.path.lexists(d.getVar('D', True) + d.getVar('libdir', True)):
+                os.symlink(src, dir)
 }
+
diff --git a/meta/recipes-devtools/gcc/libgcc.inc b/meta/recipes-devtools/gcc/libgcc.inc
index 95fa3f4..f6a0a8c 100644
--- a/meta/recipes-devtools/gcc/libgcc.inc
+++ b/meta/recipes-devtools/gcc/libgcc.inc
@@ -17,7 +17,7 @@ LICENSE_${PN}-dbg = "GPL-3.0-with-GCC-exception"
 
 FILES_${PN}-dev = "\
     ${base_libdir}/libgcc*.so \
-    ${@base_conditional('BASETARGET_SYS', '${TARGET_SYS}', '', '${libdir}/${BASETARGET_SYS}', d)} \
+    ${@base_conditional('BASETARGET_SYS', '${TARGET_SYS}', '', '${libdir}/${BASETARGET_SYS}*', d)} \
     ${libdir}/${TARGET_SYS}/${BINV}* \
 "
 
-- 
2.7.4





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

* Re: [jethro][PATCH] sdk: arm toolchain patch for multilib
  2017-03-14  7:31 ` Richard Purdie
@ 2017-03-15  5:32   ` Zheng, Ruoqin
  0 siblings, 0 replies; 3+ messages in thread
From: Zheng, Ruoqin @ 2017-03-15  5:32 UTC (permalink / raw)
  To: Richard Purdie, openembedded-core

Hi richard
  I have sent a new patch to fix toolchain for arm multilib
   #8642
   (From OE-Core rev: b6253350fb86d8e54792905342a5892af570d526)
  Last patch is indeed not in master.

Zheng Ruoqin

-----Original Message-----
From: Richard Purdie [mailto:richard.purdie@linuxfoundation.org] 
Sent: Tuesday, March 14, 2017 3:32 PM
To: Zheng, Ruoqin/郑 若钦 <zhengrq.fnst@cn.fujitsu.com>; openembedded-core@lists.openembedded.org
Subject: Re: [OE-core] [jethro][PATCH] sdk: arm toolchain patch for multilib

On Wed, 2017-03-15 at 00:00 +0800, zhengrq wrote:
>   The arm toolchain has a "-gnueabi" suffix, but aarch64 doesn't,this 
> makes multilib sdk doesn't work, for example:
> 
>   MACHINE = qemuarm64
>   require conf/multilib.conf
>   MULTILIBS = "multilib:lib32"
>   DEFAULTTUNE_virtclass-multilib-lib32 = "armv7at-neon"
> 
>   $ bitbake core-image-minimal -cpopulate_sdk
> 
>   Then extract SDK, the environment-setup-armv7a-vfp-neon-
> pokymllib32-linux-gnueabi doesn't work since:
>   * The CC is arm-pokymllib32-linux-gnueabi-gcc which doesn't exist, 
> the patch for cross-canadian.bbclass fixes problem.
>   * Need aarch64-poky-linux/usr/lib/arm-poky-linux-linux-gnueabi
> which doesn't exist, the patch for libgcc-common.inc fixes the 
> problem.
> 
>   [YOCTO #8616]
> 
> Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
> Signed-off-by: Lei Maohui <leimaohui@cn.fujitsu.com>
> Signed-off-by: Zheng Ruoqin <zhengrq.fnst@cn.fujitsu.com>

I'm not seeing any patch in master which sets GNUEABI_SUFFIX unless I'm missing something?

Which patch are you backporting to jethro here?

Don't you really want http://git.yoctoproject.org/cgit.cgi/poky/commit/
?id=b6253350fb86d8e54792905342a5892af570d526 ?

and perhaps you mean #8642 or #10054?

Cheers,

Richard

>  meta/classes/cross-canadian.bbclass         |  3 +++
>  meta/recipes-devtools/gcc/libgcc-common.inc | 25 ++++++++++++++++++-
> ------
>  meta/recipes-devtools/gcc/libgcc.inc        |  2 +-
>  3 files changed, 22 insertions(+), 8 deletions(-)
> 
> diff --git a/meta/classes/cross-canadian.bbclass
> b/meta/classes/cross-canadian.bbclass
> index ea17f09..458185d 100644
> --- a/meta/classes/cross-canadian.bbclass
> +++ b/meta/classes/cross-canadian.bbclass
> @@ -18,6 +18,7 @@ PACKAGE_ARCH = "${SDK_ARCH}-${SDKPKGSUFFIX}"
>  CANADIANEXTRAOS = "linux-uclibc linux-musl"
>  CANADIANEXTRAVENDOR = ""
>  MODIFYTOS ??= "1"
> +GNUEABI_SUFFIX = ""
>  python () {
>      archs = d.getVar('PACKAGE_ARCHS', True).split()
>      sdkarchs = []
> @@ -69,6 +70,7 @@ python () {
>          d.appendVar("CANADIANEXTRAOS", " linux-gnun32 linux-
> uclibcn32 linux-musln32")
>      if tarch == "arm" or tarch == "armeb":
>          d.setVar("TARGET_OS", "linux-gnueabi")
> +        d.setVar("GNUEABI_SUFFIX", "-gnueabi")
>      else:
>          d.setVar("TARGET_OS", "linux")
>  
> @@ -167,6 +169,7 @@ SHLIBSWORKDIR = "${PKGDATA_DIR}/nativesdk- 
> shlibs2"
>  cross_canadian_bindirlinks () {
>  	for i in linux ${CANADIANEXTRAOS}
>  	do
> +                i="$i${GNUEABI_SUFFIX}"
>  		for v in ${CANADIANEXTRAVENDOR}
>  		do
>  			d=${D}${bindir}/../${TARGET_ARCH}$v-$i
> diff --git a/meta/recipes-devtools/gcc/libgcc-common.inc
> b/meta/recipes-devtools/gcc/libgcc-common.inc
> index b09ea65..46f8cfd 100644
> --- a/meta/recipes-devtools/gcc/libgcc-common.inc
> +++ b/meta/recipes-devtools/gcc/libgcc-common.inc
> @@ -134,11 +134,22 @@ BASETARGET_SYS = 
> "${TARGET_ARCH}${ORIG_TARGET_VENDOROS}"
>  
>  addtask extra_symlinks after do_multilib_install before do_package 
> do_populate_sysroot
>  fakeroot python do_extra_symlinks() {
> -    targetsys = d.getVar('BASETARGET_SYS', True)
> -
> -    if targetsys != d.getVar('TARGET_SYS', True):
> -        dest = d.getVar('D', True) + d.getVar('libdir', True) + '/'
> + targetsys
> -        src = d.getVar('TARGET_SYS', True)
> -        if not os.path.lexists(dest) and 
> os.path.lexists(d.getVar('D', True) + d.getVar('libdir', True)):
> -            os.symlink(src, dest)
> +    base_targetsys = d.getVar('BASETARGET_SYS', True)
> +    targetsys = d.getVar('TARGET_SYS', True)
> +
> +    if base_targetsys != targetsys:
> +        dest = d.getVar('D', True) + d.getVar('libdir', True) + '/'
> + base_targetsys
> +        dest_list = [dest]
> +        # For multilib like aarch64 + arm, need 2 symlinks:
> +        # 1) BASETARGET_SYS as usual
> +        # 2) BASETARGET_SYS + "-gnueabi" for multilib
> +        libce = d.getVar('LIBCEXTENSION', True)
> +        abie = d.getVar('ABIEXTENSION', True)
> +        if abie and libce and targetsys.endswith(libce + abie):
> +            dest_list.append(dest + libce + abie)
> +        src = targetsys
> +        for dir in dest_list:
> +            if not os.path.lexists(dir) and
> os.path.lexists(d.getVar('D', True) + d.getVar('libdir', True)):
> +                os.symlink(src, dir)
>  }
> +
> diff --git a/meta/recipes-devtools/gcc/libgcc.inc b/meta/recipes- 
> devtools/gcc/libgcc.inc index 95fa3f4..f6a0a8c 100644
> --- a/meta/recipes-devtools/gcc/libgcc.inc
> +++ b/meta/recipes-devtools/gcc/libgcc.inc
> @@ -17,7 +17,7 @@ LICENSE_${PN}-dbg = "GPL-3.0-with-GCC-exception"
>  
>  FILES_${PN}-dev = "\
>      ${base_libdir}/libgcc*.so \
> -    ${@base_conditional('BASETARGET_SYS', '${TARGET_SYS}', '', 
> '${libdir}/${BASETARGET_SYS}', d)} \
> +    ${@base_conditional('BASETARGET_SYS', '${TARGET_SYS}', '',
> '${libdir}/${BASETARGET_SYS}*', d)} \
>      ${libdir}/${TARGET_SYS}/${BINV}* \
>  "
>  
> --
> 2.7.4
> 
> 
> 





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

end of thread, other threads:[~2017-03-15  5:32 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-03-14 16:00 [jethro][PATCH] sdk: arm toolchain patch for multilib zhengrq
2017-03-14  7:31 ` Richard Purdie
2017-03-15  5:32   ` Zheng, Ruoqin

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.