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
|
#!/usr/bin/env bash
#**************************************************************************
#* *
#* OCaml *
#* *
#* Samuel Hym, Tarides *
#* *
#* Copyright 2024 Tarides *
#* *
#* All rights reserved. This file is distributed under the terms of *
#* the GNU Lesser General Public License version 2.1, with the *
#* special exception on linking described in the file LICENSE. *
#* *
#**************************************************************************
set -e
OCAMLDIR=ocaml
DUNEDIR=dune
MULTICORETESTSDIR=multicoretests
export PREFIX="$HOME/local"
export PATH="$PREFIX/bin:$PATH"
fatal() {
printf %s "$1"
exit 1
}
build_ocaml() {
# We let build.yml test for warnings
cd "$OCAMLDIR"
if ! ./configure --disable-warn-error --disable-stdlib-manpages \
--disable-ocamltest --disable-ocamldoc --prefix="$PREFIX" ; then
echo
echo "::group::config.log content ($(wc -l config.log) lines)"
cat config.log
echo '::endgroup::'
exit 1
fi
make -j
make install
}
build_dune() {
cd "$DUNEDIR"
make release
make install PREFIX="$PREFIX"
}
show_config() {
set -x
ocamlc -config
dune --version
}
build_testsuite() {
cd "$MULTICORETESTSDIR"
dune build
}
run_testsuite() {
export QCHECK_MSG_INTERVAL=60
cd "$MULTICORETESTSDIR"
dune build @ci -j1 --no-buffer --display=quiet --cache=disabled \
--error-reporting=twice
}
case "$1" in
ocaml)
build_ocaml
;;
dune)
build_dune
;;
show_config)
show_config
;;
build)
build_testsuite
;;
testsuite)
run_testsuite
;;
*)
fatal "Unknown command '$1'"
;;
esac
|