diff --git a/.travis.yml b/.travis.yml index 1ee45170460..ba1041e83fa 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,20 +1,56 @@ language: cpp -sudo: required -dist: precise -group: legacy +matrix: + include: + # QT4 based build with Python 2 // using a sudo environment + - os: linux + env: QT_VERSION=4 + sudo: true + dist: precise + group: legacy + addons: + postgresql: "9.1" + compiler: + - clang + # QT5 based build with Python 3 // using container based builds and prebuild binary dependencies in osgeo4travis + - os: linux + env: QT_VERSION=5 + sudo: false + cache: + apt: true + ccache: true + compiler: + - clang + addons: + postgresql: "9.4" + apt: + sources: + - llvm-toolchain-precise-3.6 + - ubuntu-toolchain-r-test + - george-edison55-precise-backports # doxygen 1.8.3 + packages: + - doxygen + - bison + - flex + - graphviz + - libpq-dev + - libfcgi-dev + - pkg-config + - poppler-utils + - python3 + - python3-dev + - python3-setuptools + - txt2tags + - xvfb + - flip + - clang-3.6 + # OSX based build with QT4 and Python 2 + - os: osx -os: - - linux - - osx - -compiler: - - clang git: depth: 30 -cache: apt notifications: irc: "chat.freenode.net#qgis-test" @@ -30,9 +66,6 @@ notifications: on_failure: always # options: [always|never|change] default: always on_start: never # default: never -addons: - postgresql: "9.1" - before_install: - ./ci/travis/${TRAVIS_OS_NAME}/before_install.sh diff --git a/ci/travis/linux/before_install.sh b/ci/travis/linux/before_install.sh index 2b173048ce8..625eee1d841 100755 --- a/ci/travis/linux/before_install.sh +++ b/ci/travis/linux/before_install.sh @@ -1,73 +1,4 @@ -export DEBIAN_FRONTEND=noninteractive - -wget -O - http://llvm.org/apt/llvm-snapshot.gpg.key | sudo apt-key add - -sudo add-apt-repository 'deb http://llvm.org/apt/precise/ llvm-toolchain-precise main' -y - -sudo add-apt-repository ppa:ubuntugis/ppa -y -sudo add-apt-repository ppa:ubuntugis/ubuntugis-unstable -y # For postgresql-9.1-postgis-2.1 -sudo add-apt-repository ppa:smspillaz/cmake-3.0.2 -y -sudo add-apt-repository ppa:kedazo/doxygen-updates-precise -y # For doxygen 1.8.8 -sudo add-apt-repository ppa:ubuntu-toolchain-r/test -y -sudo apt-get update -qq -sudo apt-get install --force-yes --no-install-recommends --no-install-suggests \ - bison \ - cmake \ - cmake-data \ - doxygen \ - flex \ - gdal-bin \ - git \ - graphviz \ - grass-dev \ - libexpat1-dev \ - libfcgi-dev \ - libgdal1-dev \ - libgeos-dev \ - libgsl0-dev \ - libpq-dev \ - libproj-dev \ - libqca2-dev \ - libqca2-plugin-ossl \ - libqscintilla2-dev \ - libqt4-dev \ - libqt4-opengl-dev \ - libqt4-sql-sqlite \ - libqtwebkit-dev \ - libqwt-dev \ - libspatialindex-dev \ - libspatialite-dev \ - libsqlite3-dev \ - lighttpd \ - pkg-config \ - poppler-utils \ - pyqt4-dev-tools \ - python \ - python-dev \ - python-qt4 \ - python-qt4-dev \ - python-qt4-sql \ - python-qscintilla2 \ - python-sip \ - python-sip-dev \ - python-psycopg2 \ - python-numpy \ - python-gdal \ - spawn-fcgi \ - txt2tags \ - xauth \ - xfonts-100dpi \ - xfonts-75dpi \ - xfonts-base \ - xfonts-scalable \ - xvfb \ - python-pip \ - flip \ - jq \ - postgresql-9.1-postgis-2.1/precise # from ubuntugis-unstable, not pgdg - -sudo -H pip install autopep8 # TODO when switching to trusty or above: replace python-pip with python-autopep8 -sudo -H pip install nose2 pyyaml mock - -#update clang -sudo apt-get install --force-yes llvm-3.8 llvm-3.8-dev clang-3.8 libstdc++-4.9-dev +#!/bin/bash +DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +${DIR}/qt${QT_VERSION}/before_install.sh diff --git a/ci/travis/linux/install.sh b/ci/travis/linux/install.sh index a0feb87cc4a..0c8a6bd8204 100755 --- a/ci/travis/linux/install.sh +++ b/ci/travis/linux/install.sh @@ -1,25 +1,4 @@ -mkdir build -cd build +#!/bin/bash -export CXX="clang++-3.8" -export CC="clang-3.8" - -cmake --version -${CC} --version - -CLANG_WARNINGS="-Wimplicit-fallthrough" - -cmake -DWITH_SERVER=ON \ - -DWITH_STAGED_PLUGINS=ON \ - -DWITH_GRASS=ON \ - -DSUPPRESS_QT_WARNINGS=ON \ - -DENABLE_MODELTEST=ON \ - -DENABLE_PGTEST=ON \ - -DWITH_QWTPOLAR=OFF \ - -DWITH_APIDOC=ON \ - -DWITH_ASTYLE=ON \ - -DWITH_PYSPATIALITE=ON \ - -DGRASS_PREFIX7=/usr/lib/grass70 \ - -DGRASS_INCLUDE_DIR7=/usr/lib/grass70/include \ - -DCXX_EXTRA_FLAGS="$CLANG_WARNINGS" \ - .. +DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +${DIR}/qt${QT_VERSION}/install.sh diff --git a/ci/travis/linux/qt4/before_install.sh b/ci/travis/linux/qt4/before_install.sh new file mode 100755 index 00000000000..2b173048ce8 --- /dev/null +++ b/ci/travis/linux/qt4/before_install.sh @@ -0,0 +1,73 @@ +export DEBIAN_FRONTEND=noninteractive + +wget -O - http://llvm.org/apt/llvm-snapshot.gpg.key | sudo apt-key add - +sudo add-apt-repository 'deb http://llvm.org/apt/precise/ llvm-toolchain-precise main' -y + +sudo add-apt-repository ppa:ubuntugis/ppa -y +sudo add-apt-repository ppa:ubuntugis/ubuntugis-unstable -y # For postgresql-9.1-postgis-2.1 +sudo add-apt-repository ppa:smspillaz/cmake-3.0.2 -y +sudo add-apt-repository ppa:kedazo/doxygen-updates-precise -y # For doxygen 1.8.8 +sudo add-apt-repository ppa:ubuntu-toolchain-r/test -y +sudo apt-get update -qq +sudo apt-get install --force-yes --no-install-recommends --no-install-suggests \ + bison \ + cmake \ + cmake-data \ + doxygen \ + flex \ + gdal-bin \ + git \ + graphviz \ + grass-dev \ + libexpat1-dev \ + libfcgi-dev \ + libgdal1-dev \ + libgeos-dev \ + libgsl0-dev \ + libpq-dev \ + libproj-dev \ + libqca2-dev \ + libqca2-plugin-ossl \ + libqscintilla2-dev \ + libqt4-dev \ + libqt4-opengl-dev \ + libqt4-sql-sqlite \ + libqtwebkit-dev \ + libqwt-dev \ + libspatialindex-dev \ + libspatialite-dev \ + libsqlite3-dev \ + lighttpd \ + pkg-config \ + poppler-utils \ + pyqt4-dev-tools \ + python \ + python-dev \ + python-qt4 \ + python-qt4-dev \ + python-qt4-sql \ + python-qscintilla2 \ + python-sip \ + python-sip-dev \ + python-psycopg2 \ + python-numpy \ + python-gdal \ + spawn-fcgi \ + txt2tags \ + xauth \ + xfonts-100dpi \ + xfonts-75dpi \ + xfonts-base \ + xfonts-scalable \ + xvfb \ + python-pip \ + flip \ + jq \ + postgresql-9.1-postgis-2.1/precise # from ubuntugis-unstable, not pgdg + +sudo -H pip install autopep8 # TODO when switching to trusty or above: replace python-pip with python-autopep8 +sudo -H pip install nose2 pyyaml mock + +#update clang +sudo apt-get install --force-yes llvm-3.8 llvm-3.8-dev clang-3.8 libstdc++-4.9-dev + diff --git a/ci/travis/linux/qt4/install.sh b/ci/travis/linux/qt4/install.sh new file mode 100755 index 00000000000..a0feb87cc4a --- /dev/null +++ b/ci/travis/linux/qt4/install.sh @@ -0,0 +1,25 @@ +mkdir build +cd build + +export CXX="clang++-3.8" +export CC="clang-3.8" + +cmake --version +${CC} --version + +CLANG_WARNINGS="-Wimplicit-fallthrough" + +cmake -DWITH_SERVER=ON \ + -DWITH_STAGED_PLUGINS=ON \ + -DWITH_GRASS=ON \ + -DSUPPRESS_QT_WARNINGS=ON \ + -DENABLE_MODELTEST=ON \ + -DENABLE_PGTEST=ON \ + -DWITH_QWTPOLAR=OFF \ + -DWITH_APIDOC=ON \ + -DWITH_ASTYLE=ON \ + -DWITH_PYSPATIALITE=ON \ + -DGRASS_PREFIX7=/usr/lib/grass70 \ + -DGRASS_INCLUDE_DIR7=/usr/lib/grass70/include \ + -DCXX_EXTRA_FLAGS="$CLANG_WARNINGS" \ + .. diff --git a/ci/travis/linux/qt4/script.sh b/ci/travis/linux/qt4/script.sh new file mode 100755 index 00000000000..6c729f1fec2 --- /dev/null +++ b/ci/travis/linux/qt4/script.sh @@ -0,0 +1 @@ +xvfb-run ctest -V -E 'qgis_openstreetmaptest|qgis_wcsprovidertest' -S ./qgis-test-travis.ctest --output-on-failure diff --git a/ci/travis/linux/qt5/before_install.sh b/ci/travis/linux/qt5/before_install.sh new file mode 100755 index 00000000000..03b60b8bc97 --- /dev/null +++ b/ci/travis/linux/qt5/before_install.sh @@ -0,0 +1,16 @@ +export DEBIAN_FRONTEND=noninteractive +export CORES=2 + +################################################## +# +# Get precompiled dependencies +# +################################################## + +pushd ${HOME} + +curl -L https://github.com/opengisch/osgeo4travis/raw/binary/osgeo4travis.tar.xz | tar -JxC /home/travis +curl -L https://cmake.org/files/v3.5/cmake-3.5.0-Linux-x86_64.tar.gz | tar --strip-components=1 -zxC /home/travis/osgeo4travis +popd + +# easy_install3 --prefix=${HOME}/osgeo4travis/ pyspatialite diff --git a/ci/travis/linux/qt5/install.sh b/ci/travis/linux/qt5/install.sh new file mode 100755 index 00000000000..6597774c3d9 --- /dev/null +++ b/ci/travis/linux/qt5/install.sh @@ -0,0 +1,39 @@ +mkdir build +cd build + +ln -s /usr/bin/ccache ${HOME}/osgeo4travis/bin/clang++-3.6 +ln -s /usr/bin/ccache ${HOME}/osgeo4travis/bin/clang-3.6 + +ccache -s + +export CXX="clang++-3.6" +export CC="clang-3.6" +export PATH=${HOME}/osgeo4travis/bin:${PATH} +export PYTHONPATH=${HOME}/osgeo4travis/lib/python3/dist-packages/ + +cmake --version +${CC} --version +${CXX} --version + +CLANG_WARNINGS="-Wimplicit-fallthrough" + +# Include this line for debug reasons +# -DCMAKE_BUILD_TYPE=RelWithDebInfo \ +# +# Server fails at the moment on Qt5 because QFtp has been removed +# -DWITH_SERVER=ON \ +cmake \ + -DCMAKE_PREFIX_PATH=/home/travis/osgeo4travis \ + -DWITH_STAGED_PLUGINS=ON \ + -DWITH_GRASS=ON \ + -DSUPPRESS_QT_WARNINGS=ON \ + -DENABLE_MODELTEST=ON \ + -DENABLE_PGTEST=ON \ + -DWITH_QWTPOLAR=OFF \ + -DWITH_QTWEBKIT=OFF \ + -DWITH_APIDOC=ON \ + -DWITH_ASTYLE=ON \ + -DENABLE_QT5=ON \ + -DCXX_EXTRA_FLAGS="$CLANG_WARNINGS" \ + -DPYTHON_LIBRARY=/usr/lib/libpython3.2mu.so \ + .. diff --git a/ci/travis/linux/qt5/script.sh b/ci/travis/linux/qt5/script.sh new file mode 100755 index 00000000000..54fe09b9717 --- /dev/null +++ b/ci/travis/linux/qt5/script.sh @@ -0,0 +1,3 @@ +export PYTHONPATH=${HOME}/osgeo4travis/lib/python3/dist-packages/ + +xvfb-run ctest -V -R 'qgis_applicationtest' -S ./qgis-test-travis.ctest --output-on-failure diff --git a/ci/travis/linux/script.sh b/ci/travis/linux/script.sh index 6c729f1fec2..61ae744d926 100755 --- a/ci/travis/linux/script.sh +++ b/ci/travis/linux/script.sh @@ -1 +1,4 @@ -xvfb-run ctest -V -E 'qgis_openstreetmaptest|qgis_wcsprovidertest' -S ./qgis-test-travis.ctest --output-on-failure +#!/bin/bash + +DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +${DIR}/qt${QT_VERSION}/script.sh