Improve testing: the ci should install more packages that depend on ocamlbuild
In particular, we could test all packages that depend on ocamlbuild in their latest version:
opam list --depends-on ocamlbuild --column name,version,all-versions -a --no-depexts
# Packages matching: available & depends-on(ocamlbuild)
# Name # Version # Versions
0install 2.12.3 2.6.2 2.8 2.9.1 2.10 2.11 2.12 2.12.1 2.12.3 2.14 2.14.1 2.15.1 2.15.2 2.16 2.17 2.18
ANSITerminal 0.7 0.6 0.6.2 0.6.3 0.6.4 0.6.5 0.7 0.8 0.8.1 0.8.2 0.8.3 0.8.4 0.8.5
abella 2.0.7 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.0.8
abt 0.0.3 0.0.3
afl-persistent 1.0 1.0 1.1 1.2 1.3 1.4
....
In the example above, we should test abt
The following command should return all the packages we might want to install.
opam list --depends-on ocamlbuild --column name,version,all-versions -a --no-depexts | head -n-2 | sed 's/ */ /'g | awk -F' ' '{print $2==$NF?$1"."$2:""}' | grep -v "^$"
See the list
abt.0.0.3
alberto.0.4
aliases.0.0.5
aperf.0.1.2
apron.v0.9.14
arakoon.1.9.17
archimedes.0.4.19
archsat.1.1
argot.1.1
asetmap.0.8.1
assertions.0.1
astring.0.8.5
async_core.109.55.02
atd2cconv.0.0.0
avroc.0.0.1
BetterErrors.0.0.1
b0.0.0.5
baardskeerder.0.5.2
bamboo.0.0.03
bap-build.2.5.0
base58.0.1.2
bau.0.0.4
bddapron.2.3.3
bear.0.0.1
bench.1.3
bes.0.9.4.2
bisect.1.3.1
bisect_ppx-ocamlbuild.1.0.1
bolt.1.4
bookaml.4.0
boomerang.1.1.0
bos.0.2.1
bpf.0.2
bracetax.0.4
brozip.1.1
brr.0.0.6
bson.0.89.3
bt.0.2
Camldiets.0.2
camldm.0.1.0
camlhighlight.5.0
camllib.1.3.3
camlp4.5.1
caper.0.9
captureio.0.1.2
caradoc.0.3
caravan.0.0.2
ccss.1.6
cgroups.0.1
channel.1.1.1
cil.1.7.3
cmark.0.2.0
cmarkit.0.3.0
coclobas.0.0.2
commonjs_of_ocaml.0.1.0
comparelib.113.00.00
cookie-js.1.0.0
corecount.1.0.0
cppo_ocamlbuild.1.6.9
crdt-ml.0.10.0
csvprovider.1.2
ctypes-build.0.0.2
custom_printf.113.00.00
DAGaml.0.02
deriving-yojson.0.4
diy.5.01
dnscurve.0.3.0
dog.0.2.1
dose.3.4.2
down.0.3.0
dyntype.0.9.0
earley-ocaml.1.1.0
efl.1.24.0
elf2json.1.0.0
emoji.1.1.0
enumerate.111.08.00
enumerators.0.2.0
erm_xml.0.3
erm_xmpp.0.2
estring.1.3
expect.0.0.6
ezirmin.0.2.1
facebook-sdk.0.3.5
faillib.111.17.00
farfadet.0.3
flock.1.0.0
flowtype.0.94.0
fmt.0.9.0
forkwork.0.3.2
fpath.0.7.3
frag.0.1.0
froc.0.2.2
fstar.2022.01.15
fstreams.0.2.1
fury-puyo.0.5
future.0.2.0
GuaCaml.0.05
gadelac.0.6.1
gamepad.0.2.0
gdb.0.3
gedcom.1.0.0
gen-bs.0.1.0
geoip.0.0.3
gg.1.0.0
grain_wasm_spec.0.1
grib.0.11.0
gsasl.0.10.0
gtk-light.0.0.1
hamt.1.0.0
hardcaml-affirm.0.1.0
hardcaml-bloop.0.1.0
hardcaml-llvmsim.0.3.0
hardcaml-vpi.0.3.0
hardcaml-waveterm.0.2.0
hardcaml-yosys.0.1.0
hdf.0.9.1
hdfs.0.4
heptagon.1.05.00
herelib.112.35.00
hevea.2.36
higher.0.3.1
hlarp.0.0.3
hmap.0.8.1
htmlit.0.1.0
http2https.1.0.0
humane-re.0.1.1
i2c.0.1.2-0
ibx.0.8.1
imap.1.1.1
imaplet-lwt.0.1.15
indexmap.0.0.3
io.0.2.0
iocaml.0.4.9
iocaml-kernel.0.4.8
irrlicht.0.0.5
iso-filesystem.0.1
jane-street-tests.v0.10.0
javascriptcore.0.0.1
joolog.0.4
js-build-tools.113.33.04
js-lz4.109.38.alpha1
js_of_ocaml-ocamlbuild.5.0
json-pointer.0.1.1-0
json-predicate.0.2.0-0
json-rpc.0.5.0-0
jsonm.1.0.2
jsoo_router.1.0
KaSim.4.0.0
kaputt.1.2
karamel.1.0.0
ketrew.3.2.1
krb5.109.38.alpha1
lacc.0.2
lambdoc.1.0-beta4
lem.2022-12-10
libra-tk.1.1.2
libres3.1.3
libssh.0.1
libudev.0.2.1
libvhd.0.9.0
lilis.0.2.1
linkage.0.1
linksem.0.8
lipsum.0.2
litiom.4.0
llvmgraph.0.2
logs.0.7.0
lwt-binio.0.2.1
lwt-zmq.2.1.0
lymp.0.2.5
lzo.0.0.2
macaque_lwt.0.1
macaroons.0.1.1
maildir.0.9.0
maki.0.2
mariadb.1.1.6
mascot.1.0
melt.1.4.0
memcpy.0.2.2
merge-queues.0.2.0
merge-ropes.0.2.0
mergeable-vector.0.1.0
mezzo.0.0.m8
minima-theme.1.0.0
mirage-btrees.0.1.0
mirage-clock-xen.1.1
mirage-entropy-xen.0.3.0
mirage-http-unix.1.0.0
mirage-http-xen.1.0.0
mirage-net-direct.0.9.4
mirage-net-socket.0.9.4
mirage-os-shim.3.1.0
mirage-seal.0.4.2
mirage-tc.0.3.0
mirage-tcpip-unix.0.9.5
mirage-tcpip-xen.0.9.5
mirror.0.0.1
mlcuddidl.3.0.7
mld.0.2
modelica_ml.0.2.0
monadlib.0.2
mongo.0.67.2
mosquitto.0.2.1-0
mqtt_client.0.0.1
msgpack.1.3.0
mtime.2.0.0
named-pipe.0.4.0
namespaces.0.5.1
nanomsg.1.0
nebula.0.2.1
netml.0.1.0
nlp.0.0.1
nocrypto.0.5.4-2
nosetup.0.8.1
note.0.0.3
oasis.0.4.11
oasis-mirage.0.3.0a
oasis2debian.0.1.5
oasis2opam.0.8
obandit.0.3.4
obeanstalk.0.1
objsize.0.18
obytelib.1.6
ocaml-arg.0.3
ocaml-buddy.0.6.1
ocaml-data-notation.0.0.11
ocaml-migrate-parsetree-ocamlbuild.1.2.0
ocaml-protoc-yojson.0.2.0
ocaml-sat-solvers.0.7.1
ocamlbuild-atdgen.0.1.0
ocamlbuild-pkg.0.2.1
ocamlbuild-protoc.0.1
ocamlclean.2.3
ocamlify.0.0.1
ocamllint.0.3.0
ocamlmod.0.0.9
ocamlnet.4.1.9-2
ocamlpp.1.1
ocapic.3.5
ocb-stubblr.0.1.1-1
ocephes.0.8.2
oci.0.3
ocp-index-top.0.5.0
ocsfml.2.0
odig.0.0.9
odisco.0.1.3
ojquery.0.1
ojwidgets.0.1
olmi.1.1
oloop.0.1.2
oml.0.0.7
omod.0.0.4
omonad.0.4.0
oolc.0.3
opa-base.1.1.0+4263
opam-build-revdeps.0.1.0
opam-doc.0.9.3
opam-query.1.3
opam-sync-github-prs.1.1.0
openflow.0.9.1
operf-macro.0.2
oplay.1.0.0
optcomp.1.6
orm.0.7.1
orocksdb.0.4.0
osm_xml.0.0.1
ospec.0.3.2
ostap.0.5
otags.4.01.1
otfm.0.4.0
ox.1.1.1
pa_bench.113.00.00
pa_bin_prot.113.00.01
pa_comprehension.0.4
pa_do.0.8.16
pa_fields_conv.113.00.01
pa_ounit.113.00.00
pa_sexp_conv.113.00.01
pa_solution.0.7
pa_structural_sexp.113.00.00
pa_test.112.24.00
pa_typerep_conv.113.00.01
pa_variants_conv.109.15.04
pa_where.0.4
packet.0.4.0
pareto.0.3
pcf-format.0.0.1
pci.1.0.1
pci-db.0.3.0
perf.1.0
pgsolver.4.1
pipebang.113.00.00
plist.1.0.0
polyglot.1.0.0
posix-clock.0.4.0-0
posix-math.0.3.1-0
posix-mqueue.0.8.0-0
posix-semaphore.0.5.0-0
posix-time.1.0.1-0
ppx_debugger.1.0
ppx_deriving_argparse.0.0.5
ppx_deriving_crowbar.0.1.1
ppx_measure.1.1
process.0.2.1
procord.0.2.0
profound.0.4.2
proj4.0.9.2
promela.0.4.2
ptime.1.1.0
qcstm.0.1.1
qfs.0.12
qocamlbrowser.0.2.12
qrc.0.1.0
quickcheck.1.0.2
ranger.0.1.0
raygun4ocaml.0.1.0
rdr.2.0.1
react.1.2.2
receive-mail.0.1.2
regstab.2.0.0
release.1.1.1
riak.1.0.0
riak-pb.1.0.0
rlp.0.1
rotor.0.1
rresult.0.7.0
rtime.0.9.3
Snowflake.0.02.03
safa.1.4
sattools.0.1.0
scid.1.0
sendmsg.0.0.2
sequoia.0.1.0
sessions.0.1.0
setr.0.1.1
shcaml.0.2.1
should.0.1.0
sibylfs-lem.0.4.0
sid.2.0
sill.1.4
simple-bmc.0.0.1
simple-diff.0.3
simple_pam.0.1.2
skkserv-lite.2.0.1
smtp.0.3
sociaml-facebook-api.0.4.1
sociaml-oauth-client.0.5.0
sociaml-tumblr-api.0.2.0
sociaml-vcard.0.2.1
socketcan.0.8.12-0
sodium.0.6.0
solvuu-build.0.3.0
solvuu_build.0.0.2
sonet.0.1.2
sosa.0.3.0
spatial_index.0.0.2
spotify-cli.0.3.0
spreadsheet.0.1
sqlite3EZ.0.1.0
starterkit.1.0.0
statmemprof-emacs.0.1.0
statverif.1.97pl1.2
stemming.0.2.1
swdogen.0.1.0
symkat.1.4
TCSLib.0.3
tar-format.0.7.1
tdk.0.2.0
testsimple.0.3.1
text.0.8.1
tftp.0.1.4
tgls.0.8.6
themoviedb.0.8.1
tlstunnel.0.2.0
topkg.1.0.7
topkg-care.1.0.7
topology.0.4.0
tplib.1.3
tptp.0.3.2
travis-senv.1.0.0
tsdl.1.0.0
ttweetnacl.0.1.0
type-beat.0.1
type_conv.113.00.02
typehashlib.109.15.04
uchar.0.0.2
udunits.0.2.0
ulex.1.2
ulex-camlp5.1.3
unix-dirent.0.3.5
unix-fcntl.0.3.5
unix-sys-resource.0.1.2
unix-sys-stat.0.5.2
unix-time.0.1.0
unix-type-representations.0.1.2
unix-unistd.0.4.0
usb.1.3.1
usbmux.1.3.2
user-setup.0.7
uucd.15.1.0
uucp.15.1.0
uuidm.0.9.8
uunf.15.1.0
uuseg.15.1.0
uutf.1.0.3
vg.0.9.5
vhdlib.0.9.1
volt.1.4
wasm.2.0.1
webbrowser.0.6.1
webidl.1.4
wiringpi.0.0.1
xapi-idl.1.14.0
xe.0.6.3
xe-unikernel-upload.0.5
xen-block-driver.0.2.5
xen-disk.1.2.1
xenbigarray.1.0.0
xenctrl.0.10.0
xentropyd.0.9.3
xmlm.1.4.0
xxhash.0.1
yajl.0.7.3
yajl-extra.0.7.3
yices2_bindings.0.2
zbar.0.9
zephyrus.0.1
zipc.0.2.0
I was going to ask whether we can test only direct dependencies, not transitive dependencies. But in fact it looks like opam lists only direct dependencies, and needs --recursive to also list transitive dependencies.
In addition to not testing packages that moved to dune in their later version, I think that a reasonable extra requirement to have would be to restrict to packages whose last release is at most N years old. It may be easier to write a script to precompute this list, and maybe think of refreshing it from times to times (it could be in our howto-release notes) than to compute it dynamically
(Hm: process, last released in 2016, is a dependency of karamel, released in 2023. So maybe my idea isn't so good.)
https://github.com/ocaml/ocamlbuild/pull/348