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
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