Skip to content

Commit 5532ce5

Browse files
Yishuai Liliyishuai
authored andcommitted
ci: add OCaml 5.3
1 parent ca36d8b commit 5532ce5

1 file changed

Lines changed: 88 additions & 60 deletions

File tree

.github/workflows/build.yml

Lines changed: 88 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,8 @@ jobs:
1313
strategy:
1414
fail-fast: false
1515
matrix:
16-
setup-version:
17-
- v2
18-
- v3
1916
os:
20-
- macos-13
17+
- macos-latest-large
2118
- macos-latest
2219
- ubuntu-latest
2320
- windows-latest
@@ -38,11 +35,8 @@ jobs:
3835
- 5.0.x
3936
- 5.1.x
4037
- 5.2.x
38+
- 5.3.x
4139
exclude:
42-
- os: macos-13
43-
setup-version: v3 # opam uninstall fails
44-
- os: macos-latest
45-
setup-version: v2
4640
- os: macos-latest
4741
ocaml-version: 4.02.x
4842
- os: macos-latest
@@ -62,76 +56,43 @@ jobs:
6256
- os: macos-latest
6357
ocaml-version: 4.11.x
6458
- os: windows-latest
65-
setup-version: v3
6659
ocaml-version: 4.02.x
6760
- os: windows-latest
68-
setup-version: v3
6961
ocaml-version: 4.03.x
7062
- os: windows-latest
71-
setup-version: v3
7263
ocaml-version: 4.04.x
7364
- os: windows-latest
74-
setup-version: v3
7565
ocaml-version: 4.05.x
7666
- os: windows-latest
77-
setup-version: v3
7867
ocaml-version: 4.06.x
7968
- os: windows-latest
80-
setup-version: v3
8169
ocaml-version: 4.07.x
8270
- os: windows-latest
83-
setup-version: v3
8471
ocaml-version: 4.08.x
8572
- os: windows-latest
86-
setup-version: v3
8773
ocaml-version: 4.09.x
8874
- os: windows-latest
89-
setup-version: v3
9075
ocaml-version: 4.10.x
9176
- os: windows-latest
92-
setup-version: v3
9377
ocaml-version: 4.11.x
9478
- os: windows-latest
95-
setup-version: v3
9679
ocaml-version: 4.12.x
97-
- os: windows-latest
98-
setup-version: v2
99-
ocaml-version: 5.0.x
100-
- os: windows-latest
101-
setup-version: v2
102-
ocaml-version: 5.1.x
103-
- os: windows-latest
104-
setup-version: v2
105-
ocaml-version: 5.2.x
10680

10781
runs-on: ${{ matrix.os }}
10882

10983
env:
84+
# https://github.com/fdopen/uwt/pull/6
85+
# https://github.com/vbrankov/hdf5-ocaml/pull/29
86+
# https://github.com/ocaml/opam/issues/6578
11087
SKIP_BUILD: |
111-
dose
112-
lilis
113-
rotor
114-
camlimages
115-
freetds
116-
frenetic
117-
genprint
118-
hdf5
119-
ocp-index-top
120-
pa_ppx
121-
pla
122-
ppx_deriving_rpc
123-
reed-solomon-erasure
124-
setr
125-
stdcompat
126-
uwt
88+
uwt.0.3.3
89+
hdf5.0.1.5
90+
js_of_ocaml-compiler.3.4.0
91+
12792
OPAMAUTOREMOVE: true
93+
# https://github.com/ocaml/opam-repository/pull/28057#issuecomment-3031287384
12894
SKIP_TEST: |
129-
0install
130-
bisect_ppx
131-
cconv-ppx
132-
decompress
133-
extlib-compat
134-
General
95+
pa_ppx.0.19
13596
13697
steps:
13798
- name: Prepare git
@@ -142,14 +103,17 @@ jobs:
142103
- name: Checkout code
143104
uses: actions/checkout@v6
144105

145-
- name: Setup OCaml ${{ matrix.ocaml-version }} with v2
146-
if: matrix.setup-version == 'v2'
147-
uses: ocaml/setup-ocaml@v2
106+
- name: Setup OCaml ${{ matrix.ocaml-version }} with archive
107+
if: ${{ matrix.ocaml-version == '4.02.x' }}
108+
uses: ocaml/setup-ocaml@v3
148109
with:
149110
ocaml-compiler: ${{ matrix.ocaml-version }}
111+
opam-repositories: |
112+
default: https://github.com/ocaml/opam-repository.git
113+
archive: https://github.com/ocaml/opam-repository-archive.git
150114
151-
- name: Setup OCaml ${{ matrix.ocaml-version }} with v3
152-
if: matrix.setup-version == 'v3'
115+
- name: Setup OCaml ${{ matrix.ocaml-version }}
116+
if: ${{ matrix.ocaml-version != '4.02.x' }}
153117
uses: ocaml/setup-ocaml@v3
154118
with:
155119
ocaml-compiler: ${{ matrix.ocaml-version }}
@@ -177,10 +141,21 @@ jobs:
177141
run: opam install -t .
178142

179143
- name: Test dependants
180-
if: >
181-
(matrix.ocaml-version >= '4.05') && (matrix.os != 'windows-latest')
144+
if: ${{ matrix.os != 'windows-latest' }}
182145
run: |
183-
PACKAGES=`opam list -s --color=never --installable --depends-on cppo,cppo_ocamlbuild`
146+
PACKAGES=$(opam list -a -s -V --color=never --installable --depends-on cppo,cppo_ocamlbuild | \
147+
awk '{
148+
if ($0 ~ /^cppo_ocamlbuild\./) next
149+
line = $0
150+
dot = match(line, /\./)
151+
pkg = substr(line, 1, dot - 1)
152+
seen[pkg] = line
153+
}
154+
END {
155+
for (p in seen) {
156+
print seen[p]
157+
}
158+
}')
184159
echo "Dependants:" $PACKAGES
185160
for PACKAGE in $PACKAGES
186161
do
@@ -193,9 +168,62 @@ jobs:
193168
echo ::group::Build $PACKAGE) ||
194169
echo ::group::Build and test $PACKAGE
195170
DEPS_FAILED=false
196-
(opam depext $PACKAGE &&
197-
opam install --deps-only $PACKAGE) || DEPS_FAILED=true
171+
opam install -t --deps-only $PACKAGE || DEPS_FAILED=true
198172
[ $DEPS_FAILED == false ] && opam install $PACKAGE
199173
echo ::endgroup::
200174
[ $DEPS_FAILED == false ] || echo Dependencies broken
201175
done
176+
177+
- name: Test dependants on Windows
178+
if: ${{ matrix.os == 'windows-latest' }}
179+
run: |
180+
$rawPackages = & opam list -a -s -V --color=never --installable --depends-on cppo,cppo_ocamlbuild
181+
$packageMap = @{}
182+
183+
foreach ($line in $rawPackages) {
184+
if ($line -match '^(.*?)[.]') {
185+
$pkg = $matches[1]
186+
if ($pkg -ne "cppo_ocamlbuild") {
187+
$packageMap[$pkg] = $line
188+
}
189+
}
190+
}
191+
192+
$packages = $packageMap.Values
193+
Write-Host "Dependants: $($packages -join ' ')"
194+
195+
foreach ($package in $packages) {
196+
$skipBuildList = $env:SKIP_BUILD -split ' '
197+
if ($skipBuildList -contains $package) {
198+
Write-Host "Skip $package"
199+
continue
200+
}
201+
202+
$opamWithTest = $true
203+
$skipTestList = $env:SKIP_TEST -split ' '
204+
if ($skipTestList -contains $package) {
205+
$opamWithTest = $false
206+
}
207+
208+
if (-not $opamWithTest) {
209+
Write-Host "::group::Build $package"
210+
} else {
211+
Write-Host "::group::Build and test $package"
212+
}
213+
214+
$depsFailed = $false
215+
try {
216+
& opam install --deps-only $package
217+
} catch {
218+
$depsFailed = $true
219+
}
220+
221+
if (-not $depsFailed) {
222+
& opam install $package
223+
} else {
224+
Write-Host "Dependencies broken"
225+
}
226+
227+
Write-Host "::endgroup::"
228+
}
229+

0 commit comments

Comments
 (0)