runtime: Libraries tests 7.0 (master) cross build failed for tizen arm64

Build with (coreclr build doesn’t work without https://github.com/dotnet/runtime/pull/63121):

ROOTFS_DIR=`pwd`/.tools/rootfs/arm64 ./build.sh --portablebuild false --cross --clang10 --arch arm64 --runtimeConfiguration Release --librariesConfiguration Release --subset clr+libs.native /p:EnableSourceLink=false
ROOTFS_DIR=`pwd`/.tools/rootfs/arm64 ./build.sh --cross --clang10 --arch arm64 --runtimeConfiguration Release --librariesConfiguration Release --subset libs.ref+libs.src+libs.pretest+libs.packages+libs.tests --testscope all /p:EnableSourceLink=false

Error:

Build FAILED.

       "/home/runtime/.packages/microsoft.dotnet.arcade.sdk/7.0.0-beta.21621.3/tools/Build.proj" (default target) (1) ->
       "/home/runtime/Build.proj" (Build target) (3:2) ->
       "/home/runtime/src/libraries/tests.proj" (default target) (493) ->
       "/home/runtime/src/libraries/System.Runtime.InteropServices/tests/DllImportGenerator.Tests/DllImportGenerator.Tests.csproj" (default target) (773) ->
       "/home/runtime/src/libraries/System.Runtime.InteropServices/tests/DllImportGenerator.Tests/DllImportGenerator.Tests.csproj" (Build target) (773:2) ->
       "/home/runtime/src/libraries/System.Runtime.InteropServices/tests/TestAssets/NativeExports/NativeExports.csproj" (default target) (775:2) ->
       (GetUnixBuildArgumentsForDNNE target) -> 
         /home/runtime/src/libraries/System.Runtime.InteropServices/tests/TestAssets/NativeExports/NativeExports.csproj(33,5): error MSB3073: The command "..." exited with code 1.

    0 Warning(s)
    1 Error(s)

cc @alpencolt

About this issue

  • Original URL
  • State: closed
  • Created 3 years ago
  • Comments: 15 (15 by maintainers)

Most upvoted comments

I use next setup for tizen cross build in docker.

Next script creates ubuntu docker container:

sudo docker pull ubuntu:focal
sudo docker run ubuntu:focal bin/bash -c "apt update; DEBIAN_FRONTEND=noninteractive apt -y install tzdata; apt -y install git sudo curl libxml2-utils rpm2cpio cpio clang-9 llvm-9 clang-10 llvm-10 gcc-arm-linux-gnueabi g++-arm-linux-gnueabi gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf gcc-aarch64-linux-gnu g++-aarch64-linux-gnu vim cmake liblttng-ust-dev locales libicu-dev zlib1g zlib1g-dev libkrb5-dev libssl-dev; locale-gen en_US.UTF-8"

To build rootfs:

./eng/common/cross/build-rootfs.sh arm64 tizen

To cross build runtime in ubuntu docker container:

ROOTFS_DIR=`pwd`/.tools/rootfs/arm64 ./build.sh --portablebuild false --cross  --arch arm64 --runtimeConfiguration Release --librariesConfiguration Release --subset clr+libs.native /p:EnableSourceLink=false
ROOTFS_DIR=`pwd`/.tools/rootfs/arm64 ./build.sh --cross --arch arm64 --runtimeConfiguration Release --librariesConfiguration Release --subset libs.ref+libs.src+libs.pretest+libs.packages+libs.tests --testscope all /p:EnableSourceLink=false

Yup, just drop -clang10 from the command line

This leads to another error:

  Building native export: "/usr/bin/clang-10" -O2 -shared -fpic -D DNNE_ASSEMBLY_NAME=Microsoft.Interop.Tests.NativeExports -D DNNE_COMPILE_AS_SOURCE -I "/home/runtime/.packages/dnne/1.0.27/tools/platform" -I "/home/runtime/.packages/microsoft.netcore.app.host.linux-arm64/6.0.0-rc.1.21411.2/runtimes/linux-arm64/native" -o "/home/runtime/artifacts/obj/NativeExports/net7.0-Release/linux-arm64/dnne/bin/Microsoft.Interop.Tests.NativeExportsNE.so" --target=aarch64-linux-gnu --gcc-toolchain=/home/runtime/.tools/rootfs/arm64/usr --sysroot=/home/runtime/.tools/rootfs/arm64  "/home/runtime/artifacts/obj/NativeExports/net7.0-Release/linux-arm64/dnne/Microsoft.Interop.Tests.NativeExports.g.c" "/home/runtime/.packages/dnne/1.0.27/tools/platform/platform.c" -lstdc++ "/home/runtime/.packages/microsoft.netcore.app.host.linux-arm64/6.0.0-rc.1.21411.2/runtimes/linux-arm64/native/libnethost.a" --target=aarch64-linux-gnu --gcc-toolchain=/home/runtime/.tools/rootfs/arm64/usr --sysroot=/home/runtime/.tools/rootfs/arm64  -Wl,--rpath-link=/home/runtime/.tools/rootfs/arm64/lib/aarch64-linux-gnu -Wl,--rpath-link=/home/runtime/.tools/rootfs/arm64/usr/lib/aarch64-linux-gnu 
  /usr/bin/aarch64-linux-gnu-ld: cannot find crtbeginS.o: No such file or directory
  /usr/bin/aarch64-linux-gnu-ld: cannot find -lgcc

I see that linker flags are setup in a way, that is not correct for tizen. In eng/common/cross/toolchain.cmake we setup linker flags this way:

    add_toolchain_linker_flag("-B${CROSS_ROOTFS}/usr/lib64/gcc/${TIZEN_TOOLCHAIN}")
    add_toolchain_linker_flag("-L${CROSS_ROOTFS}/lib64")
    add_toolchain_linker_flag("-L${CROSS_ROOTFS}/usr/lib64")
    add_toolchain_linker_flag("-L${CROSS_ROOTFS}/usr/lib64/gcc/${TIZEN_TOOLCHAIN}")

    add_toolchain_linker_flag("-Wl,--rpath-link=${CROSS_ROOTFS}/lib64")
    add_toolchain_linker_flag("-Wl,--rpath-link=${CROSS_ROOTFS}/usr/lib64")
    add_toolchain_linker_flag("-Wl,--rpath-link=${CROSS_ROOTFS}/usr/lib64/gcc/${TIZEN_TOOLCHAIN}")