ocamlbuild icon indicating copy to clipboard operation
ocamlbuild copied to clipboard

Improve testing: the ci should install more packages that depend on ocamlbuild

Open hhugo opened this issue 1 year ago • 4 comments

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

hhugo avatar Jun 24 '24 15:06 hhugo

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

hhugo avatar Jun 24 '24 15:06 hhugo

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

gasche avatar Jun 24 '24 15:06 gasche

(Hm: process, last released in 2016, is a dependency of karamel, released in 2023. So maybe my idea isn't so good.)

gasche avatar Jun 24 '24 15:06 gasche

https://github.com/ocaml/ocamlbuild/pull/348

hhugo avatar Jun 27 '24 10:06 hhugo