Skip to content

Commit 8f851e8

Browse files
committed
Add CI for Windows
1 parent d604499 commit 8f851e8

1 file changed

Lines changed: 49 additions & 12 deletions

File tree

.github/workflows/msolve.yml

Lines changed: 49 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -13,19 +13,37 @@ jobs:
1313
strategy:
1414
fail-fast: false
1515
matrix:
16-
os:
17-
- ubuntu-latest
18-
- macos-latest
19-
- macos-26-intel
16+
include:
17+
- { os: ubuntu-latest, shell: bash }
18+
- { os: macos-latest, shell: bash }
19+
- { os: macos-26-intel, shell: bash }
20+
- { os: windows-latest, shell: msys2 }
21+
defaults:
22+
run:
23+
shell: ${{ matrix.shell }} {0}
2024
steps:
25+
- name: Disable CRLF conversion on Windows
26+
if: runner.os == 'Windows'
27+
shell: pwsh
28+
run: |
29+
git config --global core.autocrlf false
30+
git config --global core.eol lf
2131
- uses: actions/checkout@v6
32+
- name: Set up MSYS2
33+
if: runner.os == 'Windows'
34+
uses: msys2/setup-msys2@v2
35+
with:
36+
msystem: UCRT64
37+
update: true
2238
- name: "Install dependencies"
2339
run: |
2440
if [ "$RUNNER_OS" == "Linux" ]; then
2541
# sharutils is for uudecode
2642
sudo apt install libgmp-dev libflint-dev libmpfr-dev libntl-dev
2743
elif [ "$RUNNER_OS" == "macOS" ]; then
2844
brew install autoconf automake libtool gmp flint mpfr ntl
45+
elif [ "$RUNNER_OS" == "Windows" ]; then
46+
pacman -S --noconfirm autotools mingw-w64-ucrt-x86_64-toolchain mingw-w64-ucrt-x86_64-gmp mingw-w64-ucrt-x86_64-flint mingw-w64-ucrt-x86_64-mpfr mingw-w64-ucrt-x86_64-ntl
2947
else
3048
echo "$RUNNER_OS not supported"
3149
exit 1
@@ -34,7 +52,7 @@ jobs:
3452
run: ./autogen.sh
3553
- name: configure
3654
run: |
37-
if [ "$RUNNER_OS" == "Linux" ]; then
55+
if [ "$RUNNER_OS" == "Linux" ] || [ "$RUNNER_OS" == "Windows" ]; then
3856
./configure
3957
elif [ "$RUNNER_OS" == "macOS" ]; then
4058
./configure LDFLAGS="-L$(brew --prefix)/lib/" \
@@ -52,7 +70,7 @@ jobs:
5270
run: cat test-suite.log || true
5371
- name: make distcheck
5472
run: |
55-
if [ "$RUNNER_OS" == "Linux" ]; then
73+
if [ "$RUNNER_OS" == "Linux" ] || [ "$RUNNER_OS" == "Windows" ]; then
5674
make distcheck
5775
elif [ "$RUNNER_OS" == "macOS" ]; then
5876
make distcheck LDFLAGS="-L$(brew --prefix)/lib/" \
@@ -67,22 +85,41 @@ jobs:
6785

6886
build-fixed-seed:
6987
runs-on: ${{ matrix.os }}
70-
timeout-minutes: 10
88+
timeout-minutes: 20
7189
strategy:
7290
fail-fast: false
7391
matrix:
74-
os:
75-
- ubuntu-latest
76-
- macos-latest
92+
include:
93+
- { os: ubuntu-latest, shell: bash }
94+
- { os: macos-latest, shell: bash }
95+
- { os: macos-26-intel, shell: bash }
96+
- { os: windows-latest, shell: msys2 }
97+
defaults:
98+
run:
99+
shell: ${{ matrix.shell }} {0}
77100
steps:
101+
- name: Disable CRLF conversion on Windows
102+
if: runner.os == 'Windows'
103+
shell: pwsh
104+
run: |
105+
git config --global core.autocrlf false
106+
git config --global core.eol lf
78107
- uses: actions/checkout@v6
108+
- name: Set up MSYS2
109+
if: runner.os == 'Windows'
110+
uses: msys2/setup-msys2@v2
111+
with:
112+
msystem: UCRT64
113+
update: true
79114
- name: "Install dependencies"
80115
run: |
81116
if [ "$RUNNER_OS" == "Linux" ]; then
82117
# sharutils is for uudecode
83118
sudo apt install libgmp-dev libflint-dev libmpfr-dev libntl-dev
84119
elif [ "$RUNNER_OS" == "macOS" ]; then
85120
brew install autoconf automake libtool gmp flint mpfr ntl
121+
elif [ "$RUNNER_OS" == "Windows" ]; then
122+
pacman -S --noconfirm autotools mingw-w64-ucrt-x86_64-toolchain mingw-w64-ucrt-x86_64-gmp mingw-w64-ucrt-x86_64-flint mingw-w64-ucrt-x86_64-mpfr mingw-w64-ucrt-x86_64-ntl
86123
else
87124
echo "$RUNNER_OS not supported"
88125
exit 1
@@ -91,7 +128,7 @@ jobs:
91128
run: ./autogen.sh
92129
- name: configure
93130
run: |
94-
if [ "$RUNNER_OS" == "Linux" ]; then
131+
if [ "$RUNNER_OS" == "Linux" ] || [ "$RUNNER_OS" == "Windows" ]; then
95132
./configure
96133
elif [ "$RUNNER_OS" == "macOS" ]; then
97134
./configure LDFLAGS="-L$(brew --prefix)/lib/" \
@@ -109,7 +146,7 @@ jobs:
109146
run: cat test-suite.log || true
110147
- name: make distcheck with fixed seed
111148
run: |
112-
if [ "$RUNNER_OS" == "Linux" ]; then
149+
if [ "$RUNNER_OS" == "Linux" ] || [ "$RUNNER_OS" == "Windows" ]; then
113150
make distcheck DISTCHECK_CONFIGURE_FLAGS="SEED=1617753600"
114151
elif [ "$RUNNER_OS" == "macOS" ]; then
115152
make distcheck LDFLAGS="-L$(brew --prefix)/lib/" \

0 commit comments

Comments
 (0)