forked from ocaml/dune
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path.travis-ci.sh
executable file
·132 lines (125 loc) · 3.96 KB
/
.travis-ci.sh
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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
#!/bin/bash -xue
PATH=~/ocaml/bin:$PATH; export PATH
OPAMYES="true"; export OPAMYES
OPAM_VERSION="2.0.3"
ODOC="odoc.1.4.0"
TARGET="$1"; shift
opam_install_test_deps () {
opam install \
ocamlfind \
utop \
ppxlib \
ppx_expect \
$ODOC \
menhir \
ocaml-migrate-parsetree \
js_of_ocaml-ppx \
js_of_ocaml-compiler \
coq
}
case "$TARGET" in
prepare)
echo -en "travis_fold:start:ocaml\r"
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
cd ../..
rm -rf src
echo "$OCAML_VERSION.$OCAML_RELEASE" > ~/ocaml/cached-version
fi
echo -en "travis_fold:end:ocaml\r"
if [ $WITH_OPAM -eq 1 ] ; then
echo -en "travis_fold:start:opam.init\r"
if [ "$TRAVIS_OS_NAME" = "osx" ] ; then
brew update
brew install aspcud
PREFIX=/Users/travis
else
PREFIX=/home/travis
fi
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/$OPAM_VERSION/opam-full-$OPAM_VERSION.tar.gz
tar -xzf opam-full-$OPAM_VERSION.tar.gz
cd opam-full-$OPAM_VERSION
./configure --prefix=$PREFIX/ocaml
make lib-ext
make all
make install
cd ../..
rm -rf src
rm -rf ~/.opam
opam init --disable-sandboxing
eval $(opam config env)
_boot/install/default/bin/dune runtest && \
opam_install_test_deps
opam remove dune jbuilder \
`opam list --depends-on jbuilder --installed --short` \
`opam list --depends-on dune --installed --short`
if opam info dune &> /dev/null; then
opam remove dune `opam list --depends-on dune --installed --short`
fi
fi
cp -a ~/.opam ~/.opam-start
echo -en "travis_fold:end:opam.init\r"
fi
;;
build)
UPDATE_OPAM=0
RUNTEST_NO_DEPS=runtest-no-deps.out
echo -en "travis_fold:start:dune.bootstrap\r"
ocaml bootstrap.ml
echo -en "travis_fold:end:dune.bootstrap\r"
./boot.exe --subst
echo -en "travis_fold:start:dune.boot\r"
./boot.exe
if [ $WITH_OPAM -eq 1 ] ; then
echo -en "travis_fold:start:opam.deps\r"
DATE=$(date +%Y%m%d)
eval $(opam config env)
for pkg in $(opam pin list --short); do
UPDATE_OPAM=1
opam pin remove $pkg --no-action
opam remove $pkg || true
done
if [ ! -e ~/.opam/last-update ] || [ $(cat ~/.opam/last-update) != $DATE ] ; then
opam update
echo $DATE> ~/.opam/last-update
UPDATE_OPAM=1
opam upgrade
fi
if ! ./_boot/install/default/bin/dune build @runtest-no-deps &> $RUNTEST_NO_DEPS ; then
cat $RUNTEST_NO_DEPS;
exit 1;
fi
opam list
opam pin add dune . --no-action
opam_install_test_deps
echo -en "travis_fold:end:opam.deps\r"
fi
echo -en "travis_fold:end:dune.boot\r"
if [ $WITH_OPAM -eq 1 ] ; then
cat $RUNTEST_NO_DEPS;
_boot/install/default/bin/dune runtest && \
_boot/install/default/bin/dune build @test/blackbox-tests/runtest-js && \
_boot/install/default/bin/dune build @test/blackbox-tests/runtest-coq && \
! _boot/install/default/bin/dune build @test/fail-with-background-jobs-running
RESULT=$?
if [ $UPDATE_OPAM -eq 0 ] ; then
rm -rf ~/.opam
mv ~/.opam-start ~/.opam
fi
exit $RESULT
fi
;;
*)
echo "bad command $TARGET">&2; exit 1
esac