-
Notifications
You must be signed in to change notification settings - Fork 39
223 lines (210 loc) · 9.08 KB
/
c-cpp.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
name: Wine-Mono CI
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
workflow_dispatch:
jobs:
build:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
with:
submodules: recursive
- name: Remove packages require EULA
run: sudo apt remove msodbcsql17 linux-azure linux-cloud-tools-azure linux-headers-azure linux-image-azure linux-tools-azure -y 1>&2
- name: Install Wine
run: |
sudo apt-get update 1>&2
sudo apt install --install-recommends wine64 wine64-tools -y 1>&2
- name: Install Mono Build Dependencies
run: |
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF 1>&2
echo "deb https://download.mono-project.com/repo/ubuntu stable-focal main" | sudo tee /etc/apt/sources.list.d/mono-official-stable.list
sudo apt update 1>&2
sudo apt-get install libtool-bin gettext cmake libgdiplus zip g++ -y 1>&2
- name: Check Environment
run: |
gcc --version 1>&2
g++ --version 1>&2
wine --version 1>&2
mono --version 1>&2
ld --version 1>&2
cmake --version 1>&2
man libtool | tail -1 1>&2
- name: make
run: make -j$(nproc)
- name: msi capture
uses: actions/upload-artifact@v4
with:
name: make msi output
path: wine-mono-*.msi
- name: bin capture
uses: actions/upload-artifact@v4
with:
name: make bin output
path: wine-mono-*-x86.tar.xz
- name: tests-zip capture
uses: actions/upload-artifact@v4
with:
name: make tests-zip output
path: wine-mono-*-tests.zip
- name: dbgsym capture
uses: actions/upload-artifact@v4
with:
name: make dbgsym output
path: wine-mono-*-dbgsym.tar.xz
- name: Check for unnecessary rebuild steps
run: |
make -n image
make -q image
- name: Check for untracked files
run: |
! (git clean -nd|grep .)
- name: Test make clean
run: |
make clean
! find build
! find tests
! find image
windows-test:
runs-on: windows-latest
needs: build
steps:
- name: Install XNA4
shell: cmd
run: |
curl https://download.microsoft.com/download/A/C/2/AC2C903B-E6E8-42C2-9FD7-BEBAC362A930/xnafx40_redist.msi --output xna4.msi
msiexec /q /i xna4.msi
- name: Download Wine Mono tests
uses: actions/download-artifact@v4
with:
name: make tests-zip output
- name: Run Wine Mono tests
shell: cmd
run: |
for %%z in (wine-mono-*-tests.zip) do tar -xf %%z
tests\run-tests.exe -pass-list:tests\github-windows-passing.txt -fail-list:tests\github-windows-failing.txt
linux-test:
runs-on: ubuntu-22.04
needs: build
steps:
- name: Remove packages require EULA
run: sudo apt remove msodbcsql17 linux-azure linux-cloud-tools-azure linux-headers-azure linux-image-azure linux-tools-azure -y 1>&2
- name: Install Wine
run: |
sudo dpkg --add-architecture i386 1>&2
wget -nc https://dl.winehq.org/wine-builds/winehq.key 1>&2
sudo apt-key add winehq.key 1>&2
sudo add-apt-repository 'deb https://dl.winehq.org/wine-builds/ubuntu/ jammy main' 1>&2
sudo apt update 1>&2
sudo apt remove -y libnginx-mod-http-image-filter || true
sudo apt remove -y nginx nginx-core || true
sudo apt install -y --allow-downgrades libgd3:i386=2.3.0-2ubuntu2 libgd3:i386=2.3.0-2ubuntu2 || true
sudo apt install --install-recommends -y --allow-downgrades winehq-devel wine-devel wine-devel-i386 libgphoto2-6:i386 libsane:i386 libgd3:i386 wine-devel-amd64 libgphoto2-6 libsane libgcc-s1:i386 libstdc++6:i386 libatomic1:i386
- name: Download Wine Mono msi
uses: actions/download-artifact@v4
with:
name: make msi output
- name: Install Wine Mono msi
run: wine msiexec /i wine-mono-*.msi 1>&2
- name: Install Wine Gecko
run: |
GECKO_VERSION=2.47.4
wget -nc "https://dl.winehq.org/wine/wine-gecko/${GECKO_VERSION}/wine-gecko-${GECKO_VERSION}-x86.msi" -O wine-gecko-${GECKO_VERSION}-x86.msi
wine msiexec /i wine-gecko-${GECKO_VERSION}-x86.msi
wget -nc "https://dl.winehq.org/wine/wine-gecko/${GECKO_VERSION}/wine-gecko-${GECKO_VERSION}-x86_64.msi" -O wine-gecko-${GECKO_VERSION}-x86_64.msi
wine msiexec /i wine-gecko-${GECKO_VERSION}-x86_64.msi
- name: Run 64-bit Wine mscoree tests
run: |
wget -nc 'https://gitlab.winehq.org/wine/wine/-/jobs/artifacts/master/raw/winetest64.exe?job=build-daily-winetest' -O winetest64.exe
wine64 winetest64.exe -x winetest64 >/dev/null
wine64 winetest64/mscoree_test.exe --list 2>/dev/null|sed 's/\r//'|tail -n +2|while read testname; do
echo BEGIN 64-BIT $testname TEST 1>&2
WINETEST_REPORT_SUCCESS=1 WINEDEBUG=mscoree WINE_MONO_TRACE=x timeout -v 300 wine64 winetest64/mscoree_test.exe $testname 1>&2 || printf 'mscoree:%s 64-bit test failed\n' $testname >> tests-failed
echo END 64-BIT $testname TEST >&2
done
- name: Run 32-bit Wine mscoree tests
run: |
wget -nc 'https://gitlab.winehq.org/wine/wine/-/jobs/artifacts/master/raw/winetest.exe?job=build-daily-winetest' -O winetest.exe
wine winetest.exe -x winetest >/dev/null
wine winetest/mscoree_test.exe --list 2>/dev/null|sed 's/\r//'|tail -n +2|while read testname; do
echo BEGIN 32-BIT $testname TEST 1>&2
WINETEST_REPORT_SUCCESS=1 WINEDEBUG=mscoree WINE_MONO_TRACE=x timeout -v 300 wine winetest/mscoree_test.exe $testname 1>&2 || printf 'mscoree:%s 32-bit test failed\n' $testname >> tests-failed
echo END 32-BIT $testname TEST 1>&2
done
- name: Install Test Dependencies
run: |
echo ttf-mscorefonts-installer msttcorefonts/accepted-mscorefonts-eula select true | sudo debconf-set-selections
sudo apt install xvfb libgl1-mesa-glx libgl1-mesa-glx:i386 libgl1:i386 libglx-mesa0:i386 libgl1-mesa-dri:i386 unzip ttf-mscorefonts-installer openbox x11-utils -y 1>&2
- name: Download Wine Mono tests
uses: actions/download-artifact@v4
with:
name: make tests-zip output
- name: Run Wine Mono tests
run: |
unzip wine-mono-*-tests.zip 1>&2
Xvfb :2 & 1>&2
export DISPLAY=:2
while ! xdpyinfo; do sleep 1; jobs 1 || exit 1; done
openbox & 1>&2
wine reg add 'HKCU\Software\Wine\WineDbg' /v ShowCrashDialog /t REG_DWORD /d 0 /f 1>&2
wine64 tests/run-tests.exe -fail-list:tests/github-wine-failing.txt 1>&2 || printf 'Wine Mono tests failed\n' >> tests-failed
- name: Check for test failures
run: |
if test -f tests-failed; then
cat tests-failed
exit 1
fi
mac-test:
runs-on: macos-latest
needs: build
steps:
- name: Install Wine
run: |
brew update-reset
brew update
brew install coreutils # for gtimeout
brew install --cask --no-quarantine wine@devel
- name: Download Wine Mono msi
uses: actions/download-artifact@v4
with:
name: make msi output
- name: Install Wine Mono msi
run: wine msiexec /i wine-mono-*.msi 1>&2
- name: Run 64-bit Wine mscoree tests
run: |
wget -nc 'https://gitlab.winehq.org/wine/wine/-/jobs/artifacts/master/raw/winetest64.exe?job=build-daily-winetest' -O winetest64.exe
wine winetest64.exe -x winetest64 >/dev/null
wine winetest64/mscoree_test.exe --list 2>/dev/null|sed 's/.$//'|tail -n +2|while read testname; do
echo BEGIN $testname TEST 1>&2
WINETEST_REPORT_SUCCESS=1 WINEDEBUG=mscoree WINE_MONO_TRACE=x gtimeout -v 300 wine winetest64/mscoree_test.exe $testname 1>&2 || printf 'mscoree:%s 64-bit test failed\n' $testname >> tests-failed
echo END $testname TEST 1>&2
done
if test -f tests-failed; then
cat tests-failed
exit 1
fi
- name: Run 32-bit Wine mscoree tests
run: |
wget -nc 'https://gitlab.winehq.org/wine/wine/-/jobs/artifacts/master/raw/winetest.exe?job=build-daily-winetest' -O winetest.exe
wine winetest.exe -x winetest
wine winetest/mscoree_test.exe --list 2>/dev/null|sed 's/.$//'|tail -n +2|while read testname; do
echo BEGIN $testname TEST
WINETEST_REPORT_SUCCESS=1 WINEDEBUG=mscoree WINE_MONO_TRACE=x gtimeout -v 300 wine winetest/mscoree_test.exe $testname || printf 'mscoree:%s 32-bit test failed\n' $testname >> tests-failed
echo END $testname TEST
done
if test -f tests-failed; then
cat tests-failed
exit 1
fi
- name: Download Wine Mono tests
uses: actions/download-artifact@v4
with:
name: make tests-zip output
- name: Run Wine Mono tests
run: |
unzip wine-mono-*-tests.zip 1>&2
wine reg add 'HKCU\Software\Wine\WineDbg' /v ShowCrashDialog /t REG_DWORD /d 0 /f
wine tests/run-tests.exe -fail-list:tests/github-wine-failing.txt -fail-list:tests/github-macos-failing.txt