aboutsummaryrefslogtreecommitdiffhomepage
path: root/dev/ci/ci-common.sh
blob: 58c90ff11df4e0860a65afc561f09b4fc187e97a (plain)
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
#!/usr/bin/env bash

set -xe

if [ -n "${GITLAB_CI}" ];
then
    export COQBIN=`pwd`/_install_ci/bin
    export CI_BRANCH="$CI_COMMIT_REF_NAME"
else
    if [ -n "${TRAVIS}" ];
    then
        export CI_PULL_REQUEST="$TRAVIS_PULL_REQUEST"
        export CI_BRANCH="$TRAVIS_BRANCH"
    elif [ -n "${CIRCLECI}" ];
    then
        export CI_PULL_REQUEST="$CIRCLE_PR_NUMBER"
        export CI_BRANCH="$CIRCLE_BRANCH"
    fi
    export COQBIN=`pwd`/bin
fi
export PATH="$COQBIN:$PATH"

# Coq's tools need an ending slash :S, we should fix them.
export COQBIN="$COQBIN/"

ls "$COQBIN"

# Where we clone and build external developments
CI_BUILD_DIR=`pwd`/_build_ci

for overlay in ${ci_dir}/user-overlays/*.sh; do
  source ${overlay}
done
source ${ci_dir}/ci-basic-overlay.sh

mathcomp_CI_DIR=${CI_BUILD_DIR}/math-comp

# git_checkout branch url dest will create a git repository
# in <dest> (if it does not exist already) and checkout the
# remote branch <branch> from <url>
git_checkout()
{
  local _BRANCH=${1}
  local _URL=${2}
  local _DEST=${3}

  # Allow an optional 4th argument for the commit
  local _COMMIT=${4:-FETCH_HEAD}
  local _DEPTH=$(if [ -z "${4}" ]; then echo "--depth 1"; fi)

  mkdir -p ${_DEST}
  ( cd ${_DEST}                                                && \
    if [ ! -d .git ] ; then git clone ${_DEPTH} ${_URL} . ; fi && \
    echo "Checking out ${_DEST}"                               && \
    git fetch ${_URL} ${_BRANCH}                               && \
    git checkout ${_COMMIT}                                    && \
    echo "${_DEST}: `git log -1 --format='%s | %H | %cd | %aN'`" )
}

checkout_mathcomp()
{
  git_checkout ${mathcomp_CI_BRANCH} ${mathcomp_CI_GITURL} ${1}
}

make()
{
    # +x: add x only if defined
    if [ -z "${MAKEFLAGS+x}" ] && [ -n "${NJOBS}" ];
    then
        # Not submake and parallel make requested
        command make -j "$NJOBS" "$@"
    else
        command make "$@"
    fi
}

# this installs just the ssreflect library of math-comp
install_ssreflect()
{
  echo 'Installing ssreflect' && echo -en 'travis_fold:start:ssr.install\\r'

  checkout_mathcomp ${mathcomp_CI_DIR}
  ( cd ${mathcomp_CI_DIR}/mathcomp   && \
    sed -i.bak '/ssrtest/d'     Make && \
    sed -i.bak '/odd_order/d'   Make && \
    sed -i.bak '/all\/all.v/d'  Make && \
    sed -i.bak '/character/d'   Make && \
    sed -i.bak '/real_closed/d' Make && \
    sed -i.bak '/solvable/d'    Make && \
    sed -i.bak '/field/d'       Make && \
    sed -i.bak '/fingroup/d'    Make && \
    sed -i.bak '/algebra/d'     Make && \
    make Makefile.coq && make -f Makefile.coq all && make install )

  echo -en 'travis_fold:end:ssr.install\\r'

}