travis_linux_before_install.sh 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. #!/bin/bash
  2. set -ev
  3. echo "=== Updating the build environment in $LOCAL_PKG ==="
  4. echo "=== Installing python packages ==="
  5. pip install --user cpp-coveralls
  6. pip install --user sphinx
  7. pip install --user sphinx_rtd_theme
  8. # Increase the environment version to force a rebuild of the packages
  9. # The version is writen to the cache file after every build of the dependencies
  10. ENV_VERSION="1"
  11. ENV_INSTALLED=""
  12. if [ -e $LOCAL_PKG/.build_env ]; then
  13. echo "=== No cached build environment ==="
  14. read -r ENV_INSTALLED < $LOCAL_PKG/.build_env
  15. fi
  16. # travis caches the $LOCAL_PKG dir. If it is loaded, we don't need to reinstall the packages
  17. if [ "$ENV_VERSION" = "$ENV_INSTALLED" ]; then
  18. echo "=== The build environment is current ==="
  19. # Print version numbers
  20. clang --version
  21. g++ --version
  22. cppcheck --version
  23. valgrind --version
  24. exit 0
  25. fi
  26. echo "=== The build environment is outdated ==="
  27. if [ -z ${LOCAL_PKG} ]; then
  28. echo "ERROR: LOCAL_PKG variable is not defined. Aborting"
  29. exit 1
  30. fi
  31. # Clean up
  32. rm -rf $LOCAL_PKG/*
  33. # Install newer valgrind
  34. echo "=== Installing valgrind ==="
  35. wget http://valgrind.org/downloads/valgrind-3.11.0.tar.bz2
  36. tar xf valgrind-3.11.0.tar.bz2
  37. cd valgrind-3.11.0
  38. ./configure --prefix=$LOCAL_PKG
  39. make -s -j8 install
  40. cd ..
  41. # Install specific check version which is not yet in the apt package
  42. echo "=== Installing check ==="
  43. mkdir tmp_check
  44. wget http://ftp.de.debian.org/debian/pool/main/c/check/check_0.10.0-3_amd64.deb
  45. dpkg -x check_0.10.0-3_amd64.deb ./tmp_check
  46. # change pkg-config file path
  47. sed -i "s|prefix=/usr|prefix=${LOCAL_PKG}|g" ./tmp_check/usr/lib/x86_64-linux-gnu/pkgconfig/check.pc
  48. sed -i 's|libdir=.*|libdir=${prefix}/lib|g' ./tmp_check/usr/lib/x86_64-linux-gnu/pkgconfig/check.pc
  49. # move files to globally included dirs
  50. cp -R ./tmp_check/usr/lib/x86_64-linux-gnu/* $LOCAL_PKG/lib/
  51. cp -R ./tmp_check/usr/include/* $LOCAL_PKG/include/
  52. cp -R ./tmp_check/usr/bin/* $LOCAL_PKG/
  53. # Install specific liburcu version which is not yet in the apt package
  54. echo "=== Installing liburcu ==="
  55. mkdir tmp_liburcu
  56. wget https://launchpad.net/ubuntu/+source/liburcu/0.8.5-1ubuntu1/+build/6513813/+files/liburcu2_0.8.5-1ubuntu1_amd64.deb
  57. wget https://launchpad.net/ubuntu/+source/liburcu/0.8.5-1ubuntu1/+build/6513813/+files/liburcu-dev_0.8.5-1ubuntu1_amd64.deb
  58. dpkg -x liburcu2_0.8.5-1ubuntu1_amd64.deb ./tmp_liburcu
  59. dpkg -x liburcu-dev_0.8.5-1ubuntu1_amd64.deb ./tmp_liburcu
  60. # move files to globally included dirs
  61. cp -R ./tmp_liburcu/usr/lib/x86_64-linux-gnu/* $LOCAL_PKG/lib/
  62. cp -R ./tmp_liburcu/usr/include/* $LOCAL_PKG/include/
  63. # Install newer cppcheck
  64. echo "=== Installing cppcheck ==="
  65. wget https://github.com/danmar/cppcheck/archive/1.73.tar.gz -O cppcheck-1.73.tar.gz
  66. tar xf cppcheck-1.73.tar.gz
  67. cd cppcheck-1.73
  68. make PREFIX="$LOCAL_PKG" SRCDIR=build CFGDIR="$LOCAL_PKG/cppcheck-cfg" HAVE_RULES=yes CXXFLAGS="-O2 -DNDEBUG -Wall -Wno-sign-compare -Wno-unused-function" -j8
  69. make PREFIX="$LOCAL_PKG" SRCDIR=build CFGDIR="$LOCAL_PKG/cppcheck-cfg" HAVE_RULES=yes install
  70. cd ..
  71. # create cached flag
  72. echo "=== Store cache flag ==="
  73. echo $ENV_VERSION > $LOCAL_PKG/.build_env
  74. # Print version numbers
  75. echo "=== Installed versions are ==="
  76. clang --version
  77. g++ --version
  78. cppcheck --version
  79. valgrind --version