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