aboutsummaryrefslogtreecommitdiffstats
path: root/src/scripts/ci/travis/install.sh
blob: bea57cc8289b61add433d5f2e83bbfdc2dcd92cc (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
#!/bin/bash
set -ev
which shellcheck > /dev/null && shellcheck "$0" # Run shellcheck on this if available

if [ "$BUILD_MODE" = "coverage" ]; then
    wget http://ftp.de.debian.org/debian/pool/main/l/lcov/lcov_1.13.orig.tar.gz
    tar -xvf lcov_1.13.orig.tar.gz
    make PREFIX="/tmp" -C lcov-1.13/ install

    pip install --user coverage

    pip install --user codecov
fi

if [ "$BUILD_MODE" = "sonarqube" ]; then
    curl -LsS https://sonarqube.com/static/cpp/build-wrapper-linux-x86.zip > build-wrapper-linux-x86.zip
    unzip build-wrapper-linux-x86.zip
fi

if [ "$TRAVIS_OS_NAME" = "linux" ]; then
    sudo apt-get -qq update

    if [ "$BUILD_MODE" = "lint" ]; then
        pip install --user pylint
        pip3 install --user pylint
    fi

    if [ "$BUILD_MODE" = "docs" ]; then
        sudo apt-get install doxygen

        # The version of Sphinx in 14.04 is too old (1.2.2) and does not support
        # all C++ features used in the manual. Install python-requests to avoid
        # problem in Ubuntu packaged version, see
        # http://stackoverflow.com/questions/32779919/no-module-named-for-requests
        sudo apt-get remove python-requests python-openssl
        sudo pip install requests sphinx pyopenssl
    fi

    if [ "$BUILD_MODE" = "coverage" ]; then
        sudo apt-get install trousers libtspi-dev

        # SoftHSMv1 in 14.04 does not work
        # Installs prebuilt SoftHSMv2 binaries into /tmp
        wget https://www.randombit.net/softhsm2-trusty-bin.tar.bz2
        tar -C / -xvjf softhsm2-trusty-bin.tar.bz2
        /tmp/softhsm/bin/softhsm2-util --init-token --free --label test --pin 123456 --so-pin 12345678
    fi

    if [ "$BUILD_MODE" = "valgrind" ] || [ "${BUILD_MODE:0:5}" = "cross" ]; then
        if [ "$BUILD_MODE" = "valgrind" ]; then
            sudo apt-get install valgrind
        elif [ "$BUILD_MODE" = "cross-win32" ]; then
            sudo apt-get install g++-mingw-w64-i686 mingw-w64-i686-dev

            # See https://github.com/travis-ci/travis-ci/issues/6460
            sudo dpkg --add-architecture i386
            sudo apt-get -qq update # have to update again due to adding i386 above
            sudo apt-get install wine
        else

            # Need updated qemu
            sudo add-apt-repository -y ppa:ubuntu-cloud-archive/kilo-staging
            sudo apt-get -qq update
            sudo apt-get install qemu

            if [ "$BUILD_MODE" = "cross-arm32" ]; then
                sudo apt-get install g++-4.8-arm-linux-gnueabihf libc6-dev-armhf-cross
            elif [ "$BUILD_MODE" = "cross-arm64" ]; then
                sudo apt-get install g++-4.8-aarch64-linux-gnu libc6-dev-arm64-cross
            elif [ "$BUILD_MODE" = "cross-ppc32" ]; then
                sudo apt-get install g++-4.8-powerpc-linux-gnu libc6-dev-powerpc-cross
            elif [ "$BUILD_MODE" = "cross-ppc64" ]; then
                sudo apt-get install g++-4.8-powerpc64le-linux-gnu libc6-dev-ppc64el-cross
            fi
        fi
    fi
fi

if [ "$TRAVIS_OS_NAME" = "osx" ]; then
    # Workaround for https://github.com/Homebrew/homebrew/issues/42553
    brew update || brew update

    brew install ccache

    if [ "$BUILD_MODE" != "cross-arm32" ] && [ "$BUILD_MODE" != "cross-arm64" ]; then
        brew install xz
        # Python2 is already installed
        brew install python3

        # Boost 1.58 is installed on Travis OS X images
        # brew install boost
    fi

fi