On 6/21/19 6:21 PM, Martin Jansa wrote: > Hi, > > see the fix here: > http://lists.openembedded.org/pipermail/openembedded-core/2019-June/283928.html > > I think it doesn't need additional explanation. > > Any aarch64/arm multilib configuration should trigger this (or > anything where TARGET_OS isn't just "linux"). Thanks. > > Regards, > > On Fri, Jun 21, 2019 at 11:08 AM Changqing Li > > wrote: > > > On 6/21/19 4:32 PM, Martin Jansa wrote: > > On Tue, Jun 18, 2019 at 03:46:56PM +0800, > changqing.li@windriver.com wrote: > >> From: Changqing Li > > >> > >> The SDK was unable to find the C++ header pieces correctly > since it's > >> using a generic compiler, not one specifically targeting the > multilib > >> vendor prefix and default tune.  This adds the right mapping to > ensure > >> SDKs work as expected. And fix problem in below configurations: > >> > >> multilib configuration 1: > >> MACHINE="qemumips64" > >> MULTILIBS ?= "multilib:lib32 multilib:libn32" > >> DEFAULTTUNE_virtclass-multilib-lib32 ?= "mips" > >> DEFAULTTUNE_virtclass-multilib-libn32 ?= "mips64-n32" > >> MULTILIB_GLOBAL_VARIANTS_append = " libn32" > >> require conf/multilib.conf > >> > >> ignoring nonexistent directory > "/sysroots/mips64-poky-linux/usr/include/c++/8.2.0/mips64-poky-linux/32 > >> > >> multilib configuration 2: > >> MACHINE="qemumips64" > >> MULTILIBS = 'multilib:lib64 multilib:lib32' > >> DEFAULTTUNE = 'mips64-n32' > >> DEFAULTTUNE_virtclass-multilib-lib64 = 'mips64' > >> DEFAULTTUNE_virtclass-multilib-lib32 = 'mips32r2' > >> require conf/multilib.conf > >> > >> For this configuration: > >> for target gcc-runtime, need to create symlink like > mips64-poly-linux --> mips64-poky-linux-gnu32 > >> for target lib64-gcc-runtime, need to create symlink like > mips64-poly-linux/32 --> mips64-pokymllib64-linux > >> in order to avoid conflict during populate_sdk, create symlink > for subfoler bits/ext for target gcc-runtime, > >> this is ugly, but seems no better way to cover all kinds of > configuration. > >> > >> single lib configuration: > >> MACHINE="qemumips64" > >> DEFAULTTUNE = "mips64-n32" > > This seems to be causing: > > > > ln: failed to create symbolic link > 'work/aarch64-oemllib32-linux-gnueabi/lib32-gcc-runtime/9.1.0-r0/image/usr/include/c++/9.1.0/arm-oe-linux-gnueabi/bits': > No such file or directory > > WARNING: exit code 1 from a shell command. > > ERROR: Function failed: do_install (log file is located at > work/aarch64-oemllib32-linux-gnueabi/lib32-gcc-runtime/9.1.0-r0/temp/log.do_install.31049) > > > > There is only empty directory without the -gnueabi suffix: > > > work/aarch64-oemllib32-linux-gnueabi/lib32-gcc-runtime/9.1.0-r0/image/usr/include/c++/9.1.0/arm-oe-linux/ > > > > and > > > > > work/aarch64-oemllib32-linux-gnueabi/lib32-gcc-runtime/9.1.0-r0/image/usr/include/c++/9.1.0/arm-oemllib32-linux-gnueabi/ > > bits  ext > > Could you send your configuration like this? Thanks. > > MACHINE="qemumips64" > MULTILIBS = 'multilib:lib64 multilib:lib32' > DEFAULTTUNE = 'mips64-n32' > DEFAULTTUNE_virtclass-multilib-lib64 = 'mips64' > DEFAULTTUNE_virtclass-multilib-lib32 = 'mips32r2' > require conf/multilib.conf > > >> Signed-off-by: Changqing Li > > >> --- > >>   meta/recipes-devtools/gcc/gcc-runtime.inc | 29 > +++++++++++++++++------------ > >>   1 file changed, 17 insertions(+), 12 deletions(-) > >> > >> diff --git a/meta/recipes-devtools/gcc/gcc-runtime.inc > b/meta/recipes-devtools/gcc/gcc-runtime.inc > >> index 3d03d8e..ba767e1 100644 > >> --- a/meta/recipes-devtools/gcc/gcc-runtime.inc > >> +++ b/meta/recipes-devtools/gcc/gcc-runtime.inc > >> @@ -86,10 +86,6 @@ do_install () { > >>      if [ -d ${D}${infodir} ]; then > >>              rmdir --ignore-fail-on-non-empty -p ${D}${infodir} > >>      fi > >> -    if [ "${TARGET_VENDOR_MULTILIB_ORIGINAL}" != "" -a > "${TARGET_VENDOR}" != "${TARGET_VENDOR_MULTILIB_ORIGINAL}" ]; then > >> -            ln -s ${TARGET_SYS} > ${D}${includedir}/c++/${BINV}/${TARGET_ARCH}${TARGET_VENDOR_MULTILIB_ORIGINAL}-${TARGET_OS} > >> -    fi > >> - > >>   } > >> > >>   do_install_append_class-target () { > >> @@ -98,20 +94,29 @@ do_install_append_class-target () { > >>      fi > >> > >>      if [ "${TARGET_OS}" = "linux-gnun32" ]; then > >> -            if [ "${MULTILIBS}" != "" ]; then > >> -                    mkdir > ${D}${includedir}/c++/${BINV}/${TARGET_ARCH}-pokymllib64-linux > >> -                    ln -s ../${TARGET_SYS} > ${D}${includedir}/c++/${BINV}/${TARGET_ARCH}-pokymllib64-linux/32 > >> +            if [ "${TARGET_VENDOR_MULTILIB_ORIGINAL}" != "" -a > "${TARGET_VENDOR}" != "${TARGET_VENDOR_MULTILIB_ORIGINAL}" ]; then > >> +                    mkdir > ${D}${includedir}/c++/${BINV}/${TARGET_ARCH}${TARGET_VENDOR_MULTILIB_ORIGINAL}-linux > >> +                    ln -s ../${TARGET_SYS} > ${D}${includedir}/c++/${BINV}/${TARGET_ARCH}${TARGET_VENDOR_MULTILIB_ORIGINAL}-linux/32 > >> +            elif [ "${MULTILIB_VARIANTS}" != "" ]; then > >> +                    mkdir > ${D}${includedir}/c++/${BINV}/${TARGET_ARCH}${TARGET_VENDOR}-linux > >> +                    ln -s ../${TARGET_SYS} > ${D}${includedir}/c++/${BINV}/${TARGET_ARCH}${TARGET_VENDOR}-linux/32 > >>              else > >>                      ln -s ${TARGET_SYS} > ${D}${includedir}/c++/${BINV}/${TARGET_ARCH}${TARGET_VENDOR}-linux > >>              fi > >> -    fi > >> -    if [ "${TARGET_OS}" = "linux-gnux32" ]; then > >> -            if [ "${MULTILIBS}" != "" ]; then > >> -                    mkdir > ${D}${includedir}/c++/${BINV}/${TARGET_ARCH}-poky-linux > >> -                    ln -s ../${TARGET_SYS} > ${D}${includedir}/c++/${BINV}/${TARGET_ARCH}-poky-linux/x32 > >> +    elif [ "${TARGET_OS}" = "linux-gnux32" ]; then > >> +            if [ "${TARGET_VENDOR_MULTILIB_ORIGINAL}" != "" -a > "${TARGET_VENDOR}" != "${TARGET_VENDOR_MULTILIB_ORIGINAL}" ]; then > >> +                    mkdir > ${D}${includedir}/c++/${BINV}/${TARGET_ARCH}${TARGET_VENDOR_MULTILIB_ORIGINAL}-linux > >> +                    ln -s ../${TARGET_SYS} > ${D}${includedir}/c++/${BINV}/${TARGET_ARCH}${TARGET_VENDOR_MULTILIB_ORIGINAL}-linux/x32 > >> +            elif [ "${MULTILIB_VARIANTS}" != "" ]; then > >> +                    mkdir > ${D}${includedir}/c++/${BINV}/${TARGET_ARCH}${TARGET_VENDOR}-linux > >> +                    ln -s ../${TARGET_SYS} > ${D}${includedir}/c++/${BINV}/${TARGET_ARCH}${TARGET_VENDOR}-linux/32 > >>              else > >>                      ln -s ${TARGET_SYS} > ${D}${includedir}/c++/${BINV}/${TARGET_ARCH}${TARGET_VENDOR}-linux > >>              fi > >> +    elif [ "${TARGET_VENDOR_MULTILIB_ORIGINAL}" != "" -a > "${TARGET_VENDOR}" != "${TARGET_VENDOR_MULTILIB_ORIGINAL}" ]; then > >> +            mkdir > ${D}${includedir}/c++/${BINV}/${TARGET_ARCH}${TARGET_VENDOR_MULTILIB_ORIGINAL}-linux > >> +            ln -s ../${TARGET_SYS}/bits > ${D}${includedir}/c++/${BINV}/${TARGET_ARCH}${TARGET_VENDOR_MULTILIB_ORIGINAL}-${TARGET_OS}/bits > >> +            ln -s ../${TARGET_SYS}/ext > ${D}${includedir}/c++/${BINV}/${TARGET_ARCH}${TARGET_VENDOR_MULTILIB_ORIGINAL}-${TARGET_OS}/ext > >>      fi > >> > >>      if [ "${TCLIBC}" != "glibc" ]; then > >> -- > >> 2.7.4 > >> > >> -- > >> _______________________________________________ > >> Openembedded-core mailing list > >> Openembedded-core@lists.openembedded.org > > >> http://lists.openembedded.org/mailman/listinfo/openembedded-core > > -- > BRs > > Sandy(Li Changqing) > -- BRs Sandy(Li Changqing)