From 63b142fba244ecc467caf269994cfa627d68e97b Mon Sep 17 00:00:00 2001 From: mcbarton <150042563+mcbarton@users.noreply.github.com> Date: Fri, 29 Nov 2024 19:41:21 +0000 Subject: [PATCH 1/8] Update cling in ci to version 1.1 using root llvm 16 --- .github/workflows/non-emscripten.yml | 40 ++++++++++++++-------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/.github/workflows/non-emscripten.yml b/.github/workflows/non-emscripten.yml index f0b424667..832e37bcc 100644 --- a/.github/workflows/non-emscripten.yml +++ b/.github/workflows/non-emscripten.yml @@ -53,12 +53,12 @@ jobs: cppyy: On llvm_enable_projects: "clang" llvm_targets_to_build: "host;NVPTX" - - name: ubu22-x86-gcc9-clang13-cling + - name: ubu22-x86-gcc9-clang16-cling os: ubuntu-22.04 - compiler: gcc-9 - clang-runtime: '13' + compiler: gcc-12 + clang-runtime: '16' cling: On - cling-version: '1.0' + cling-version: '1.1' cppyy: On llvm_enable_projects: "clang" llvm_targets_to_build: "host;NVPTX" @@ -118,12 +118,12 @@ jobs: cppyy: On llvm_enable_projects: "clang" llvm_targets_to_build: "host;NVPTX" - - name: osx15-arm-clang-clang13-cling + - name: osx15-arm-clang-clang16-cling os: macos-15 compiler: clang - clang-runtime: '13' + clang-runtime: '16' cling: On - cling-version: '1.0' + cling-version: '1.1' cppyy: On llvm_enable_projects: "clang" llvm_targets_to_build: "host;NVPTX" @@ -159,12 +159,12 @@ jobs: cppyy: On llvm_enable_projects: "clang" llvm_targets_to_build: "host;NVPTX" - - name: osx13-x86-clang-clang13-cling + - name: osx13-x86-clang-clang16-cling os: macos-13 compiler: clang - clang-runtime: '13' + clang-runtime: '16' cling: On - cling-version: '1.0' + cling-version: '1.1' cppyy: On llvm_enable_projects: "clang" llvm_targets_to_build: "host;NVPTX" @@ -595,12 +595,12 @@ jobs: clang-runtime: '16' cling: Off cppyy: Off - - name: ubu22-x86-gcc9-clang13-cling-cppyy + - name: ubu22-x86-gcc9-clang16-cling-cppyy os: ubuntu-22.04 - compiler: gcc-9 - clang-runtime: '13' + compiler: gcc-12 + clang-runtime: '16' cling: On - cling-version: '1.0' + cling-version: '1.1' cppyy: On #FIXME: Windows CppInterOp tests expected to fail #until https://github.com/compiler-research/CppInterOp/issues/188 is solved @@ -652,12 +652,12 @@ jobs: clang-runtime: '16' cling: Off cppyy: Off - - name: osx15-arm-clang-clang13-cling-cppyy + - name: osx15-arm-clang-clang16-cling-cppyy os: macos-15 compiler: clang - clang-runtime: '13' + clang-runtime: '16' cling: On - cling-version: '1.0' + cling-version: '1.1' cppyy: On - name: osx13-x86-clang-clang-repl-19-cppyy os: macos-13 @@ -683,12 +683,12 @@ jobs: clang-runtime: '16' cling: Off cppyy: Off - - name: osx13-x86-clang-clang13-cling-cppyy + - name: osx13-x86-clang-clang16-cling-cppyy os: macos-13 compiler: clang - clang-runtime: '13' + clang-runtime: '16' cling: On - cling-version: '1.0' + cling-version: '1.1' cppyy: On steps: From 659fc0d73e4543c206f92c5a410319ac211445ad Mon Sep 17 00:00:00 2001 From: mcbarton <150042563+mcbarton@users.noreply.github.com> Date: Fri, 29 Nov 2024 20:28:18 +0000 Subject: [PATCH 2/8] Only build gtest_main for cling llvm=13 ci --- .github/workflows/non-emscripten.yml | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/.github/workflows/non-emscripten.yml b/.github/workflows/non-emscripten.yml index 832e37bcc..1425085a9 100644 --- a/.github/workflows/non-emscripten.yml +++ b/.github/workflows/non-emscripten.yml @@ -411,8 +411,10 @@ jobs: ../llvm cmake --build . --target clang --parallel ${{ env.ncpus }} cmake --build . --target cling --parallel ${{ env.ncpus }} - # Now build gtest.a and gtest_main for CppInterOp to run its tests. - cmake --build . --target gtest_main --parallel ${{ env.ncpus }} + if [[ "${{ matrix.clang-runtime}}" == "13" ]]; then + # Now build gtest.a and gtest_main for CppInterOp to run its tests. + cmake --build . --target gtest_main --parallel ${{ env.ncpus }} + fi else # Apply patches llvm_vers=$(echo "${{ matrix.clang-runtime }}" | tr '[:lower:]' '[:upper:]') @@ -494,8 +496,12 @@ jobs: ..\llvm cmake --build . --config Release --target clang --parallel ${{ env.ncpus }} cmake --build . --config Release --target cling --parallel ${{ env.ncpus }} - # Now build gtest.a and gtest_main for CppInterOp to run its tests. - cmake --build . --config Release --target gtest_main --parallel ${{ env.ncpus }} + if ( "${{ matrix.clang-runtime }}" -imatch "13" ) + { + # cling version 1.0 with llvm 13 doesn't work on Windows, but this is here in + # case someone finds a way to fix this + cmake --build . --config Release --target gtest_main --parallel ${{ env.ncpus }} + } } else { From 408f1c245a4381e1da12b76ef7e77dbead3ed057 Mon Sep 17 00:00:00 2001 From: mcbarton <150042563+mcbarton@users.noreply.github.com> Date: Fri, 29 Nov 2024 22:01:35 +0000 Subject: [PATCH 3/8] Disable CUDA tests for Cling --- unittests/CppInterOp/CUDATest.cpp | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/unittests/CppInterOp/CUDATest.cpp b/unittests/CppInterOp/CUDATest.cpp index ea171b46e..aafb7505f 100644 --- a/unittests/CppInterOp/CUDATest.cpp +++ b/unittests/CppInterOp/CUDATest.cpp @@ -9,7 +9,10 @@ using namespace TestUtils; static bool HasCudaSDK() { auto supportsCudaSDK = []() { -#if CLANG_VERSION_MAJOR < 16 +#ifdef USE_CLING +// FIXME: Enable this for cling. + return false; +#elif CLANG_VERSION_MAJOR < 16 // FIXME: Enable this for cling. return false; #endif // CLANG_VERSION_MAJOR < 16 @@ -23,7 +26,10 @@ static bool HasCudaSDK() { static bool HasCudaRuntime() { auto supportsCuda = []() { -#if CLANG_VERSION_MAJOR < 16 +#ifdef USE_CLING +// FIXME: Enable this for cling. + return false; +#elif CLANG_VERSION_MAJOR < 16 // FIXME: Enable this for cling. return false; #endif //CLANG_VERSION_MAJOR < 16 @@ -43,6 +49,8 @@ static bool HasCudaRuntime() { #if CLANG_VERSION_MAJOR < 16 TEST(DISABLED_CUDATest, Sanity) { +#elif USE_CLING +TEST(DISABLED_CUDATest, Sanity) { #else TEST(CUDATest, Sanity) { #endif // CLANG_VERSION_MAJOR < 16 From ccb7b8cfb25f1202c9f0d4b045b26aabe5cb188d Mon Sep 17 00:00:00 2001 From: mcbarton <150042563+mcbarton@users.noreply.github.com> Date: Sat, 30 Nov 2024 23:12:31 +0000 Subject: [PATCH 4/8] Apply patch needed to fix error handling for cling version 1.1 --- .github/workflows/non-emscripten.yml | 22 ++++++++++++++++----- patches/llvm/cling16-1-Error-Handling.patch | 17 ++++++++++++++++ 2 files changed, 34 insertions(+), 5 deletions(-) create mode 100644 patches/llvm/cling16-1-Error-Handling.patch diff --git a/.github/workflows/non-emscripten.yml b/.github/workflows/non-emscripten.yml index 1425085a9..5faf53e86 100644 --- a/.github/workflows/non-emscripten.yml +++ b/.github/workflows/non-emscripten.yml @@ -385,6 +385,13 @@ jobs: git clone https://github.com/root-project/cling.git cd ./cling git checkout tags/v${{ matrix.cling-version }} + # Apply patches + llvm_vers=$(echo "${{ matrix.clang-runtime }}" | tr '[:lower:]' '[:upper:]') + if [[ "${llvm_vers}" == "16" ]]; then + # cling version 1.1 with llvm 16 requires a patch to fix error handling when parsing invaild code + git apply -v ../patches/llvm/cling${{ matrix.clang-runtime }}-*.patch + echo "Apply cling${{ matrix.clang-runtime }}-*.patch patches:" + fi cd .. git clone --depth=1 -b cling-llvm${{ matrix.clang-runtime }} https://github.com/root-project/llvm-project.git else # repl @@ -463,6 +470,11 @@ jobs: git clone https://github.com/root-project/cling.git cd ./cling git checkout tags/v${{ matrix.cling-version }} + if ( "${{ matrix.clang-runtime }}" -imatch "16" ) + { + # cling version 1.1 with llvm 16 requires a patch to fix error handling when parsing invaild code + git apply -v clang16-1-Error-Handling.patch + } cd .. git clone --depth=1 -b cling-llvm${{ matrix.clang-runtime }} https://github.com/root-project/llvm-project.git $env:PWD_DIR= $PWD.Path @@ -601,13 +613,13 @@ jobs: clang-runtime: '16' cling: Off cppyy: Off - - name: ubu22-x86-gcc9-clang16-cling-cppyy + - name: ubu22-x86-gcc9-clang16-cling os: ubuntu-22.04 compiler: gcc-12 clang-runtime: '16' cling: On cling-version: '1.1' - cppyy: On + cppyy: Off #FIXME: Windows CppInterOp tests expected to fail #until https://github.com/compiler-research/CppInterOp/issues/188 is solved - name: win2022-msvc-clang-repl-19 @@ -664,7 +676,7 @@ jobs: clang-runtime: '16' cling: On cling-version: '1.1' - cppyy: On + cppyy: Off - name: osx13-x86-clang-clang-repl-19-cppyy os: macos-13 compiler: clang @@ -689,13 +701,13 @@ jobs: clang-runtime: '16' cling: Off cppyy: Off - - name: osx13-x86-clang-clang16-cling-cppyy + - name: osx13-x86-clang-clang16-cling os: macos-13 compiler: clang clang-runtime: '16' cling: On cling-version: '1.1' - cppyy: On + cppyy: Off steps: - uses: actions/checkout@v4 diff --git a/patches/llvm/cling16-1-Error-Handling.patch b/patches/llvm/cling16-1-Error-Handling.patch new file mode 100644 index 000000000..ea6a3aeb8 --- /dev/null +++ b/patches/llvm/cling16-1-Error-Handling.patch @@ -0,0 +1,17 @@ +diff --git a/lib/Interpreter/IncrementalParser.cpp b/lib/Interpreter/IncrementalParser.cpp +index 89cd78d..2aea40d 100644 +--- a/lib/Interpreter/IncrementalParser.cpp ++++ b/lib/Interpreter/IncrementalParser.cpp +@@ -911,8 +911,11 @@ namespace cling { + PP.EnterSourceFile(FID, /*DirLookup*/nullptr, NewLoc); + m_Consumer->getTransaction()->setBufferFID(FID); + +- if (!ParseOrWrapTopLevelDecl()) ++ llvm::Expected res = ParseOrWrapTopLevelDecl(); ++ if (!res) { ++ llvm::consumeError(std::move(res.takeError())); + return kFailed; ++ } + + if (PP.getLangOpts().DelayedTemplateParsing) { + // Microsoft-specific: \ No newline at end of file From 7441924ccedaef853713fcb9335e7b1ba0ed97a4 Mon Sep 17 00:00:00 2001 From: mcbarton <150042563+mcbarton@users.noreply.github.com> Date: Sat, 30 Nov 2024 23:13:55 +0000 Subject: [PATCH 5/8] Update cling16-1-Error-Handling.patch to add blank line --- patches/llvm/cling16-1-Error-Handling.patch | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/patches/llvm/cling16-1-Error-Handling.patch b/patches/llvm/cling16-1-Error-Handling.patch index ea6a3aeb8..0eb60ed51 100644 --- a/patches/llvm/cling16-1-Error-Handling.patch +++ b/patches/llvm/cling16-1-Error-Handling.patch @@ -14,4 +14,4 @@ index 89cd78d..2aea40d 100644 + } if (PP.getLangOpts().DelayedTemplateParsing) { - // Microsoft-specific: \ No newline at end of file + // Microsoft-specific: From a54fecbc58b52f76f17b9a0a3140a84d0d75d6f8 Mon Sep 17 00:00:00 2001 From: mcbarton <150042563+mcbarton@users.noreply.github.com> Date: Sun, 1 Dec 2024 21:59:22 +0000 Subject: [PATCH 6/8] Update job names --- .github/workflows/non-emscripten.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/non-emscripten.yml b/.github/workflows/non-emscripten.yml index 5faf53e86..87d2b06b6 100644 --- a/.github/workflows/non-emscripten.yml +++ b/.github/workflows/non-emscripten.yml @@ -53,7 +53,7 @@ jobs: cppyy: On llvm_enable_projects: "clang" llvm_targets_to_build: "host;NVPTX" - - name: ubu22-x86-gcc9-clang16-cling + - name: ubu22-x86-gcc12-clang16-cling os: ubuntu-22.04 compiler: gcc-12 clang-runtime: '16' @@ -613,7 +613,7 @@ jobs: clang-runtime: '16' cling: Off cppyy: Off - - name: ubu22-x86-gcc9-clang16-cling + - name: ubu22-x86-gcc12-clang16-cling os: ubuntu-22.04 compiler: gcc-12 clang-runtime: '16' From 0d24a8e81d873d4f97f62c0f7f3f5bd0de2abc50 Mon Sep 17 00:00:00 2001 From: mcbarton <150042563+mcbarton@users.noreply.github.com> Date: Thu, 5 Dec 2024 15:47:56 +0000 Subject: [PATCH 7/8] Update ci.yml to bring back cling 1.0 jobs --- .github/workflows/non-emscripten.yml | 48 ++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/.github/workflows/non-emscripten.yml b/.github/workflows/non-emscripten.yml index 87d2b06b6..7704bae06 100644 --- a/.github/workflows/non-emscripten.yml +++ b/.github/workflows/non-emscripten.yml @@ -62,6 +62,15 @@ jobs: cppyy: On llvm_enable_projects: "clang" llvm_targets_to_build: "host;NVPTX" + - name: ubu22-x86-gcc9-clang13-cling + os: ubuntu-22.04 + compiler: gcc-9 + clang-runtime: '13' + cling: On + cling-version: '1.0' + cppyy: On + llvm_enable_projects: "clang" + llvm_targets_to_build: "host;NVPTX" - name: win2022-msvc-clang-repl-19 os: windows-2022 compiler: msvc @@ -127,6 +136,15 @@ jobs: cppyy: On llvm_enable_projects: "clang" llvm_targets_to_build: "host;NVPTX" + - name: osx15-arm-clang-clang13-cling + os: macos-15 + compiler: clang + clang-runtime: '13' + cling: On + cling-version: '1.0' + cppyy: On + llvm_enable_projects: "clang" + llvm_targets_to_build: "host;NVPTX" - name: osx13-x86-clang-clang-repl-19 os: macos-13 compiler: clang @@ -168,6 +186,15 @@ jobs: cppyy: On llvm_enable_projects: "clang" llvm_targets_to_build: "host;NVPTX" + - name: osx13-x86-clang-clang13-cling + os: macos-13 + compiler: clang + clang-runtime: '13' + cling: On + cling-version: '1.0' + cppyy: On + llvm_enable_projects: "clang" + llvm_targets_to_build: "host;NVPTX" steps: - uses: actions/checkout@v4 @@ -620,6 +647,13 @@ jobs: cling: On cling-version: '1.1' cppyy: Off + - name: ubu22-x86-gcc9-clang13-cling + os: ubuntu-22.04 + compiler: gcc-9 + clang-runtime: '13' + cling: On + cling-version: '1.0' + cppyy: On #FIXME: Windows CppInterOp tests expected to fail #until https://github.com/compiler-research/CppInterOp/issues/188 is solved - name: win2022-msvc-clang-repl-19 @@ -677,6 +711,13 @@ jobs: cling: On cling-version: '1.1' cppyy: Off + - name: osx15-arm-clang-clang13-cling-cppyy + os: macos-15 + compiler: clang + clang-runtime: '13' + cling: On + cling-version: '1.0' + cppyy: On - name: osx13-x86-clang-clang-repl-19-cppyy os: macos-13 compiler: clang @@ -708,6 +749,13 @@ jobs: cling: On cling-version: '1.1' cppyy: Off + - name: osx13-x86-clang-clang13-cling + os: macos-13 + compiler: clang + clang-runtime: '13' + cling: On + cling-version: '1.0' + cppyy: Off steps: - uses: actions/checkout@v4 From 8db34017f321ae383df11770d26b8a95d1c69799 Mon Sep 17 00:00:00 2001 From: mcbarton <150042563+mcbarton@users.noreply.github.com> Date: Thu, 5 Dec 2024 15:50:34 +0000 Subject: [PATCH 8/8] Update ci.yml fix names to add -cppyy to cling 1.0 jobs --- .github/workflows/non-emscripten.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/non-emscripten.yml b/.github/workflows/non-emscripten.yml index 7704bae06..13f4b3142 100644 --- a/.github/workflows/non-emscripten.yml +++ b/.github/workflows/non-emscripten.yml @@ -647,7 +647,7 @@ jobs: cling: On cling-version: '1.1' cppyy: Off - - name: ubu22-x86-gcc9-clang13-cling + - name: ubu22-x86-gcc9-clang13-cling-cppyy os: ubuntu-22.04 compiler: gcc-9 clang-runtime: '13' @@ -749,7 +749,7 @@ jobs: cling: On cling-version: '1.1' cppyy: Off - - name: osx13-x86-clang-clang13-cling + - name: osx13-x86-clang-clang13-cling-cppyy os: macos-13 compiler: clang clang-runtime: '13'