[Github] Install `make` on Windows container
LLDB tests require GNU make to be present for the API tests.
This PR installs the make package from Chocolatey, which packages the GNU make from https://sourceforge.net/projects/ezwinports/.
Alternatives considered:
- NMake/jom: These don't support all the command line parameters and don't support the required conditionals.
-
mingw32-make: if available, this would work. However, installing it would require a MinGW installation. Git Bash doesn't come with a package manager.
Remaining work:
- For testing on Windows, LLDB needs LLD, which needs to be enabled.
- After that, most tests run. I ran this through GitHub Actions, which almost took 4h to complete. The following tests failed (this might be due to my weird setup):
Failed Tests (12): lldb-api :: commands/command/script_alias/TestCommandScriptAlias.py lldb-api :: functionalities/load_unload/TestLoadUnload.py lldb-api :: lang/cpp/class-template-non-type-parameter-pack/TestClassTemplateNonTypeParameterPack.py lldb-api :: lang/cpp/class-template-type-parameter-pack/TestClassTemplateTypeParameterPack.py lldb-api :: python_api/hello_world/TestHelloWorld.py lldb-api :: tools/lldb-server/TestGdbRemoteExitCode.py lldb-api :: tools/lldb-server/TestGdbRemoteExpeditedRegisters.py lldb-api :: tools/lldb-server/TestGdbRemoteThreadsInStopReply.py lldb-api :: tools/lldb-server/TestGdbRemote_qThreadStopInfo.py lldb-api :: tools/lldb-server/TestNonStop.py lldb-shell :: Process/Windows/process_load.cpp lldb-shell :: Target/dependent-modules-nodupe-windows.test
Towards #132800.
@llvm/pr-subscribers-github-workflow
Author: nerix (Nerixyz)
Changes
LLDB tests require GNU make to be present for the API tests.
This PR installs the make package from Chocolatey, which packages the GNU make from <https://sourceforge.net/projects/ezwinports/>.
Alternatives considered:
- NMake/jom: These don't support all the command line parameters and don't support the required conditionals.
-
mingw32-make: if available, this would work. However, installing it would require a MinGW installation. Git Bash doesn't come with a package manager.
Remaining work:
- For testing on Windows, LLDB needs LLD, which needs to be enabled.
- After that, most tests run. I ran this through GitHub Actions, which almost took 4h to complete. The following tests failed (this might be due to my weird setup):
Failed Tests (12): lldb-api :: commands/command/script_alias/TestCommandScriptAlias.py lldb-api :: functionalities/load_unload/TestLoadUnload.py lldb-api :: lang/cpp/class-template-non-type-parameter-pack/TestClassTemplateNonTypeParameterPack.py lldb-api :: lang/cpp/class-template-type-parameter-pack/TestClassTemplateTypeParameterPack.py lldb-api :: python_api/hello_world/TestHelloWorld.py lldb-api :: tools/lldb-server/TestGdbRemoteExitCode.py lldb-api :: tools/lldb-server/TestGdbRemoteExpeditedRegisters.py lldb-api :: tools/lldb-server/TestGdbRemoteThreadsInStopReply.py lldb-api :: tools/lldb-server/TestGdbRemote_qThreadStopInfo.py lldb-api :: tools/lldb-server/TestNonStop.py lldb-shell :: Process/Windows/process_load.cpp lldb-shell :: Target/dependent-modules-nodupe-windows.test
Towards #132800.
Full diff: https://github.com/llvm/llvm-project/pull/146236.diff
1 Files Affected:
- (modified) .github/workflows/containers/github-action-ci-windows/Dockerfile (+2-1)
diff --git a/.github/workflows/containers/github-action-ci-windows/Dockerfile b/.github/workflows/containers/github-action-ci-windows/Dockerfile
index eafe45fac8ea4..8f65c42242d12 100644
--- a/.github/workflows/containers/github-action-ci-windows/Dockerfile
+++ b/.github/workflows/containers/github-action-ci-windows/Dockerfile
@@ -39,7 +39,8 @@ RUN regsvr32 /S "C:\BuildTools\DIA SDK\bin\amd64\msdia140.dll" & \
# install tools as described in https://llvm.org/docs/GettingStartedVS.html
# and a few more that were not documented...
-RUN choco install -y ninja git sccache
+# make is needed by LLDB tests
+RUN choco install -y ninja git sccache make
# Pin an older version of Python; the current Python 3.10 fails when
# doing "pip install" for the other dependencies, as it fails to find libxml
# while compiling some package.
I would like to see a clean Github actions run (a clean local run inside the container would probably suffice) using a windows container with
makeinstalled for the lldb tests before landing this.
GitHub removed the windows-2019 image yesterday... And of course my run yesterday failed because I didn't allocate enough RAM for the container (and it seems like you can't run windows-2019 images on server 2022/2025). When testing, I did it through SSH on GHA, so I don't have any logs (other than the snippet from above). I'll try CircleCI later.
and it seems like you can't run windows-2019 images on server 2022/2025
Yeah, not being able to run containers across versions is a massive pain. I'm hoping to upgrade the windows image at some point. I was hoping to jump straight to server 2025, but we need to wait until GKE supports it and I'm not sure when that's happening.
Thanks for trying to get this working.
Okay, I finally got it running in CircleCI (logs). It ran this image which was built here.
There are only six failing tests now:
Failed Tests (6):
lldb-api :: functionalities/load_unload/TestLoadUnload.py
lldb-api :: lang/cpp/class-template-non-type-parameter-pack/TestClassTemplateNonTypeParameterPack.py
lldb-api :: lang/cpp/class-template-type-parameter-pack/TestClassTemplateTypeParameterPack.py
lldb-api :: python_api/hello_world/TestHelloWorld.py
lldb-shell :: Process/Windows/process_load.cpp
lldb-shell :: Target/dependent-modules-nodupe-windows.test
Summoned @Endilll because he did some work on Windows pre-merge testing. CC @DavidSpickett @adrian-prantl @charles-zablit cause of Windows LLDB
Summoned @Endilll because he did some work on Windows pre-merge testing.
Sorry, I'm not of much of a help here. Back then I investigated Windows CI slowdowns on several occasions, and that's it. I never investigated how to build lldb on Windows.