From c49460aa868595c9f9709e11d9b5c54b4e1e6e75 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Storsj=C3=B6?= Date: Mon, 22 Aug 2022 00:41:06 +0300 Subject: [PATCH] github: Add setup for running libcxx's tests on the built toolchain Keep this disabled by default (since it takes a fair amount of time and has good test coverage upstream), but including it in disabled form so that it's easy to enable temporarily for testing occasionally. Libcxx does test the mingw configuration in their own CI (with an older pinned release of the compiler), so this is mostly redundant, and primarily relevant for testing that the very latest compiler (and python setup) works for the tests. --- .github/workflows/build.yml | 66 +++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index e8b828e..28ea907 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -268,6 +268,72 @@ jobs: ./run-tests.sh /llvm-mingw ./run-lldb-tests.sh /llvm-mingw + # Run libcxx's tests with the cross-built i686/x86_64 toolchains from above. + # (This builds its own copy of libcxx, but it should be pretty much + # identical to the one shipped - and tests that the toolchain works + # for running the libcxx tests.) + # This also forces testing the bundled python executables. + test-libcxx: + # This test is kinda slow, and kinda redundant (libcxx does contain + # llvm-mingw configurations in its own CI, so the only difference with + # testing here is different runners with different OS setups, and + # testing with the latest compiler instead of an older release). + # Therefore, keep the test disabled by default; it's easy to enable + # temporarily on a branch for testing. + if: false + needs: [linux-cross] + runs-on: windows-latest + strategy: + fail-fast: false + matrix: + arch: + - x86_64 + - i686 + steps: + - uses: actions/download-artifact@v3 + with: + name: windows-${{matrix.arch}}-toolchain + - name: Unpack toolchain + run: | + Expand-Archive llvm-mingw-*.zip -DestinationPath . + del llvm-mingw-*.zip + mv llvm-mingw-* c:\llvm-mingw + echo "c:\llvm-mingw\bin" | Out-File -FilePath $Env:GITHUB_PATH -Encoding utf8 -Append + echo "c:\llvm-mingw\python\bin" | Out-File -FilePath $Env:GITHUB_PATH -Encoding utf8 -Append + echo "PYTHON_EXE=c:/llvm-mingw/python/bin/python3.exe" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append + - name: Fetch version + if: github.event_name == 'schedule' + run: | + cat c:\llvm-mingw\versions | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append + - uses: actions/checkout@v3 + - name: Checkout llvm-project + run: | + bash -c "CHECKOUT_ONLY=1 ./build-llvm.sh" + - name: Build and test libcxx + run: | + cd llvm-project + mkdir build + cd build + cmake ../runtimes ` + -G Ninja ` + -DCMAKE_BUILD_TYPE=Release ` + -DPython3_EXECUTABLE="$Env:PYTHON_EXE" ` + -DLIBCXX_ENABLE_WERROR=YES ` + -DLLVM_ENABLE_RUNTIMES="libcxx;libcxxabi;libunwind" ` + -DLIBCXX_CXX_ABI=libcxxabi ` + -DCMAKE_C_COMPILER=clang ` + -DCMAKE_CXX_COMPILER=clang++ ` + -DLIBCXX_TARGET_INFO="libcxx.test.target_info.MingwLocalTI" ` + -DLIBCXXABI_ENABLE_SHARED=NO ` + -DLIBCXX_ENABLE_STATIC_ABI_LIBRARY=YES ` + -DLIBCXX_USE_COMPILER_RT=YES ` + -DLIBCXXABI_USE_COMPILER_RT=YES ` + -DLIBUNWIND_USE_COMPILER_RT=YES ` + -DLIBCXXABI_USE_LLVM_UNWINDER=YES ` + -DLIBCXX_EXTRA_SITE_DEFINES="__USE_MINGW_ANSI_STDIO=1;TEST_IS_EXECUTED_IN_A_SLOW_ENVIRONMENT" + ninja + ninja check-cxx + # Run the OpenMP tests with the cross-built i686/x86_64 toolchains from above. # This also forces testing the bundled python executables. test-openmp: