2017-07-06 14:00:46 +00:00
|
|
|
#!/bin/bash -xue
|
|
|
|
|
|
|
|
PATH=~/ocaml/bin:$PATH; export PATH
|
|
|
|
|
|
|
|
TARGET="$1"; shift
|
|
|
|
|
|
|
|
case "$TARGET" in
|
|
|
|
prepare)
|
2017-08-27 09:59:42 +00:00
|
|
|
echo -en "travis_fold:start:ocaml\r"
|
2017-07-06 14:00:46 +00:00
|
|
|
if [ ! -e ~/ocaml/cached-version -o "$(cat ~/ocaml/cached-version)" != "$OCAML_VERSION.$OCAML_RELEASE" ] ; then
|
|
|
|
rm -rf ~/ocaml
|
|
|
|
mkdir -p ~/ocaml/src
|
|
|
|
cd ~/ocaml/src
|
|
|
|
wget http://caml.inria.fr/pub/distrib/ocaml-$OCAML_VERSION/ocaml-$OCAML_VERSION.$OCAML_RELEASE.tar.gz
|
|
|
|
tar -xzf ocaml-$OCAML_VERSION.$OCAML_RELEASE.tar.gz
|
|
|
|
cd ocaml-$OCAML_VERSION.$OCAML_RELEASE
|
|
|
|
./configure -prefix ~/ocaml
|
|
|
|
make world.opt
|
|
|
|
make install
|
2017-08-27 11:39:50 +00:00
|
|
|
cd ../..
|
2017-07-06 14:00:46 +00:00
|
|
|
rm -rf src
|
|
|
|
echo "$OCAML_VERSION.$OCAML_RELEASE" > ~/ocaml/cached-version
|
|
|
|
fi
|
2017-08-27 09:59:42 +00:00
|
|
|
echo -en "travis_fold:end:ocaml\r"
|
|
|
|
if [ $WITH_OPAM -eq 1 ] ; then
|
|
|
|
echo -en "travis_fold:start:opam.init\r"
|
2017-08-27 19:50:03 +00:00
|
|
|
if [ "$TRAVIS_OS_NAME" = "osx" ] ; then
|
2017-11-15 11:56:54 +00:00
|
|
|
brew update
|
2017-08-27 19:50:03 +00:00
|
|
|
brew install aspcud
|
|
|
|
PREFIX=/Users/travis
|
|
|
|
else
|
|
|
|
PREFIX=/home/travis
|
|
|
|
fi
|
2017-08-27 11:39:50 +00:00
|
|
|
if [ ! -e ~/ocaml/bin/opam -o ! -e ~/.opam/lock -o "$OPAM_RESET" = "1" ] ; then
|
|
|
|
mkdir ~/ocaml/src
|
|
|
|
cd ~/ocaml/src
|
|
|
|
wget https://github.com/ocaml/opam/releases/download/1.2.2/opam-full-1.2.2.tar.gz
|
|
|
|
tar -xzf opam-full-1.2.2.tar.gz
|
|
|
|
cd opam-full-1.2.2
|
2017-08-27 19:50:03 +00:00
|
|
|
./configure --prefix=$PREFIX/ocaml
|
2017-08-27 11:39:50 +00:00
|
|
|
make lib-ext
|
|
|
|
make all
|
|
|
|
make install
|
|
|
|
cd ../..
|
|
|
|
rm -rf src
|
2017-08-27 09:59:42 +00:00
|
|
|
rm -rf ~/.opam
|
|
|
|
opam init --yes
|
2017-08-27 11:39:50 +00:00
|
|
|
eval $(opam config env)
|
2018-02-27 19:06:12 +00:00
|
|
|
opam install utop ppx_driver odoc menhir ocaml-migrate-parsetree js_of_ocaml-ppx js_of_ocaml-compiler--yes
|
2017-08-27 09:59:42 +00:00
|
|
|
opam remove jbuilder `opam list --depends-on jbuilder --installed --short` --yes
|
2018-05-02 11:56:12 +00:00
|
|
|
if opam info dune &> /dev/null; then
|
|
|
|
opam remove dune `opam list --depends-on dune --installed --short` --yes
|
|
|
|
fi
|
2017-08-27 09:59:42 +00:00
|
|
|
fi
|
|
|
|
cp -a ~/.opam ~/.opam-start
|
|
|
|
echo -en "travis_fold:end:opam.init\r"
|
|
|
|
fi
|
2017-07-06 14:00:46 +00:00
|
|
|
;;
|
|
|
|
build)
|
2017-11-09 15:38:24 +00:00
|
|
|
UPDATE_OPAM=0
|
2017-08-27 09:59:42 +00:00
|
|
|
if [ $WITH_OPAM -eq 1 ] ; then
|
|
|
|
echo -en "travis_fold:start:opam.deps\r"
|
2017-11-09 16:05:19 +00:00
|
|
|
DATE=$(date +%Y%m%d)
|
2017-08-27 09:59:42 +00:00
|
|
|
eval $(opam config env)
|
2017-11-09 15:38:24 +00:00
|
|
|
if [ $(opam pin list | wc -l) -ne 0 ] ; then
|
|
|
|
UPDATE_OPAM=1
|
|
|
|
opam pin remove jbuilder --no-action --yes
|
|
|
|
opam remove jbuilder --yes
|
2018-05-02 11:56:12 +00:00
|
|
|
if opam pin list -s | grep dune; then
|
|
|
|
opam pin remove dune --no-action --yes
|
|
|
|
opam remove dune --yes || true
|
|
|
|
fi
|
2017-11-09 15:38:24 +00:00
|
|
|
fi
|
2017-11-09 15:51:37 +00:00
|
|
|
if [ ! -e ~/.opam/last-update ] || [ $(cat ~/.opam/last-update) != $DATE ] ; then
|
|
|
|
opam update --yes
|
|
|
|
echo $DATE> ~/.opam/last-update
|
|
|
|
UPDATE_OPAM=1
|
|
|
|
opam upgrade --yes
|
|
|
|
fi
|
2017-08-27 09:59:42 +00:00
|
|
|
opam list
|
2018-05-02 11:56:12 +00:00
|
|
|
echo "version: \"1.0+dev$DATE\"" >> dune.opam
|
|
|
|
mkdir -p ../jbuilder
|
|
|
|
cat > ../jbuilder/jbuilder.opam <<EOF
|
|
|
|
version: "1.0+dev$DATE"
|
|
|
|
opam-version: "1.2"
|
|
|
|
maintainer: "opensource@janestreet.com"
|
|
|
|
authors: ["Jane Street Group, LLC <opensource@janestreet.com>"]
|
|
|
|
homepage: "https://github.com/ocaml/dune"
|
|
|
|
bug-reports: "https://github.com/ocaml/dune/issues"
|
|
|
|
dev-repo: "https://github.com/ocaml/dune.git"
|
|
|
|
license: "Apache-2.0"
|
|
|
|
depends: [ "dune" ]
|
|
|
|
EOF
|
|
|
|
opam pin add dune . --no-action --yes
|
|
|
|
opam pin add jbuilder ../jbuilder --no-action --yes
|
2018-02-23 08:04:50 +00:00
|
|
|
opam install utop ppx_driver odoc ocaml-migrate-parsetree js_of_ocaml-ppx js_of_ocaml-compiler --yes
|
2017-08-27 09:59:42 +00:00
|
|
|
echo -en "travis_fold:end:opam.deps\r"
|
|
|
|
fi
|
2018-05-02 11:56:12 +00:00
|
|
|
echo -en "travis_fold:start:dune.bootstrap\r"
|
2017-07-06 14:00:46 +00:00
|
|
|
ocaml bootstrap.ml
|
2018-05-02 11:56:12 +00:00
|
|
|
echo -en "travis_fold:end:dune.bootstrap\r"
|
2017-07-06 14:00:46 +00:00
|
|
|
./boot.exe --subst
|
2018-05-02 11:56:12 +00:00
|
|
|
echo -en "travis_fold:start:dune.boot\r"
|
2017-07-06 14:00:46 +00:00
|
|
|
./boot.exe --dev
|
2018-05-02 11:56:12 +00:00
|
|
|
echo -en "travis_fold:end:dune.boot\r"
|
2017-08-27 09:59:42 +00:00
|
|
|
if [ $WITH_OPAM -eq 1 ] ; then
|
2018-05-02 11:56:12 +00:00
|
|
|
_build/install/default/bin/dune runtest && \
|
|
|
|
_build/install/default/bin/dune build @test/blackbox-tests/runtest-js && \
|
|
|
|
! _build/install/default/bin/dune build @test/fail-with-background-jobs-running
|
2017-08-27 09:59:42 +00:00
|
|
|
RESULT=$?
|
2017-11-09 15:38:24 +00:00
|
|
|
if [ $UPDATE_OPAM -eq 0 ] ; then
|
|
|
|
rm -rf ~/.opam
|
|
|
|
mv ~/.opam-start ~/.opam
|
|
|
|
fi
|
2017-08-27 09:59:42 +00:00
|
|
|
exit $RESULT
|
|
|
|
fi
|
2017-07-06 14:00:46 +00:00
|
|
|
;;
|
|
|
|
*)
|
|
|
|
echo "bad command $TARGET">&2; exit 1
|
|
|
|
esac
|