#!/bin/bash
set -ev

if [ $ANALYZE = "true" ]; then
    cd $LOCAL_PKG
    # travis caches the $LOCAL_PKG dir. If it is loaded, we don't need to reinstall the packages
    if [ "$CC" = "clang" ]; then
        clang --version
    else
        if [ ! -f $LOCAL_PKG/.cached_analyze ]; then
            # Install newer cppcheck
            wget https://github.com/danmar/cppcheck/archive/1.73.tar.gz -O cppcheck-1.73.tar.gz
            tar xf cppcheck-1.73.tar.gz
            cd $LOCAL_PKG/cppcheck-1.73
            make SRCDIR=build CFGDIR="$LOCAL_PKG/cppcheck-1.73/cfg" HAVE_RULES=yes CXXFLAGS="-O2 -DNDEBUG -Wall -Wno-sign-compare -Wno-unused-function" -j8
            ln -s $LOCAL_PKG/cppcheck-1.73/cppcheck $LOCAL_PKG/cppcheck
            # create cached flag
            touch $LOCAL_PKG/.cached_analyze
        else
            echo "\n## Using local packages from cache\n"
        fi
        g++ --version
        cppcheck --version
    fi
else
    cd $LOCAL_PKG

    # travis caches the $LOCAL_PKG dir. If it is loaded, we don't need to reinstall the packages
    if [ ! -f $LOCAL_PKG/.cached ]; then

        # Install newer valgrind
        mkdir -p $LOCAL_PKG/package && cd $LOCAL_PKG/package
        wget http://valgrind.org/downloads/valgrind-3.11.0.tar.bz2
        tar xf valgrind-3.11.0.tar.bz2
        cd valgrind-3.11.0
        ./configure --prefix=$LOCAL_PKG
        make -s -j8 install
        echo "\n### Installed valgrind version: $(valgrind --version)"
        cd $LOCAL_PKG

        # Install specific check version which is not yet in the apt package
        wget http://ftp.de.debian.org/debian/pool/main/c/check/check_0.10.0-3_amd64.deb
        dpkg -x check_0.10.0-3_amd64.deb $LOCAL_PKG/package
        # change pkg-config file path
        sed -i "s|prefix=/usr|prefix=${LOCAL_PKG}|g" $LOCAL_PKG/package/usr/lib/x86_64-linux-gnu/pkgconfig/check.pc
        sed -i 's|libdir=.*|libdir=${prefix}/lib|g' $LOCAL_PKG/package/usr/lib/x86_64-linux-gnu/pkgconfig/check.pc
        # move files to globally included dirs
        cp -R $LOCAL_PKG/package/usr/lib/x86_64-linux-gnu/* $LOCAL_PKG/lib/
        cp -R $LOCAL_PKG/package/usr/include/* $LOCAL_PKG/include/
        cp -R $LOCAL_PKG/package/usr/bin/* $LOCAL_PKG/

        # Install specific liburcu version which is not yet in the apt package
        wget https://launchpad.net/ubuntu/+source/liburcu/0.8.5-1ubuntu1/+build/6513813/+files/liburcu2_0.8.5-1ubuntu1_amd64.deb
        wget https://launchpad.net/ubuntu/+source/liburcu/0.8.5-1ubuntu1/+build/6513813/+files/liburcu-dev_0.8.5-1ubuntu1_amd64.deb
        dpkg -x liburcu2_0.8.5-1ubuntu1_amd64.deb $LOCAL_PKG/package
        dpkg -x liburcu-dev_0.8.5-1ubuntu1_amd64.deb $LOCAL_PKG/package
        # move files to globally included dirs
        cp -R $LOCAL_PKG/package/usr/lib/x86_64-linux-gnu/* $LOCAL_PKG/lib/
        cp -R $LOCAL_PKG/package/usr/include/* $LOCAL_PKG/include/

        # create cached flag
        touch $LOCAL_PKG/.cached

    else
        echo "\n## Using local packages from cache\n"
    fi

    pip install --user cpp-coveralls
    pip install --user sphinx
    pip install --user sphinx_rtd_theme
fi