ocaml/tools/ci-build

143 lines
3.4 KiB
Plaintext
Raw Normal View History

#!/bin/sh
#########################################################################
# #
# OCaml #
# #
# Damien Doligez, projet Gallium, INRIA Rocquencourt #
# #
# Copyright 2014 Institut National de Recherche en Informatique et #
# en Automatique. All rights reserved. This file is distributed #
# under the terms of the Q Public License version 1.0. #
# #
#########################################################################
# This script is run on our continuous-integration servers to recompile
# from scratch and run the test suite.
# arguments:
# 1. architecture: bsd, macos, linux, cygwin, mingw, mingw64, msvc, msvc64
# 2. for windows, directory in which to build (trunk, 4.02, etc)
# 3. options:
# -conf configure-option
error () {
echo "$1" >&2
exit 3
}
#########################################################################
# If we are called from a Windows batch script, we must set up the
# Unix environment variables (e.g. PATH).
case "$1" in
bsd|macos|linux) ;;
cygwin|mingw|mingw64)
. /etc/profile
. "$HOME/.profile"
;;
msvc)
. /etc/profile
. "$HOME/.profile"
. "$HOME/.msenv32"
;;
msvc64)
. /etc/profile
. "$HOME/.profile"
. "$HOME/.msenv64"
;;
*) error "unknown architecture: $1";;
esac
#########################################################################
# be verbose and stop on error
set -ex
# parse command line
# Configure options are not allowed to have spaces or special characters
# for the moment. We'll fix that when needed.
arch="$1"
branch="$2"
confoptions=""
shift 2
while [ $# -gt 0 ]; do
case $1 in
-conf) confoptions="$confoptions $2"; shift 2;;
*) error "unknown option $1";;
esac
done
#########################################################################
# set up variables
# default values
make=make
instdir="$HOME/ocaml-tmp-install"
workdir=.
docheckout=false
nt=
case "$arch" in
bsd)
make=gmake
;;
macos) ;; # FIXME to be checked
linux) ;;
cygwin)
workdir="$HOME/jenkins-workspace/$branch"
docheckout=true
;;
mingw)
instdir=/cygdrive/c/ocamlmgw
workdir="$HOME/jenkins-workspace/$branch"
docheckout=true
nt=.nt
;;
mingw64)
instdir=/cygdrive/c/ocamlmgw64
workdir="$HOME/jenkins-workspace/$branch"
docheckout=true
nt=.nt
;;
msvc)
instdir=/cygdrive/c/ocamlms
workdir="$HOME/jenkins-workspace/$branch"
docheckout=true
nt=.nt
;;
msvc64)
instdir=/cygdrive/c/ocamlms64
workdir="$HOME/jenkins-workspace/$branch"
docheckout=true
nt=.nt
;;
*) error "unknown architecture: $arch";;
esac
#########################################################################
cd "$workdir"
$make -f Makefile$nt distclean || :
if $docheckout; then
svn update --accept theirs-full
fi
case $nt in
"") ./configure -prefix "$instdir" $confoptions;;
.nt)
cp config/m-nt.h config/m.h
cp config/s-nt.h config/s.h
cp config/Makefile.$arch config/Makefile
;;
*) error "internal error";;
esac
$make -f Makefile$nt world.opt
$make -f Makefile$nt install
rm -rf "$instdir"
cd testsuite
$make all