wiki:Buildbot

GDAL Compilation and testing farms

Windows

Builds and regression testing of GDAL for 32-bit and 64-bit Windows platforms with various versions of the MSVC compilers are done on a daily basis on gisinternals. The set of optional drivers compiled in is rather extensive. The packages with the generated executables can also be downloaded.

There is also a Appveyor continuous integration build. It builds a minimal GDAL (no optional dependency) in DEBUG mode with Visual Studio 2008 (aka VC9 / MSVC 1500) - trunk_vc9 - and VS 2015 (a.k.a VC13 / MSVC 1900) - trunk_vc13. There is a more complete build - trunk_vc12_full - with Visual Studio 2013 (a.k.a VC12 / MSVC 1800) with the following dependencies: curl, expat, geos, sqlite, PostgreSQL, MySQL, Xerces, LIBKML, Poppler, OpenJPEG 2.1, ECW 3.3, HDF5, KEA, netCDF 4. The builds can be see at : https://ci.appveyor.com/project/rouault/gdal-coverage . The Python autotest suite is run.

Travis-CI builds with mingw and mingw-w64 are also available : see trunk_mingw and trunk_mingw_w64 builds at https://travis-ci.org/rouault/gdal_coverage/builds . They include just Proj 4.8.0 as a dependency, and run the autotest suite with Python under Wine

Linux

  • Builds with a rich set of dependencies

A Travis-CI instance has been configured to build GDAL and run of the Java, Perl and Python tests for each SVN commit in trunk. For that, a git clone of GDAL is regularly synchronized with SVN.

Another github repository is slightly modified to generate coverage information from the run of the GDAL autotest suite. The results are available here.

The result of builds is also published on #gdal on irc.freenode.net and emailed to gdal-commits at lists.osgeo.org (only failures, or failure->success transitions are notified). It seems that a full build with tests takes about ~ 10 minutes (but I guess this may vary according to the load of the service).

When committing, you can prevent a build from being triggered by including the "[ci skip]" string in the commit message.

For GDAL committers that wish to tweak .travis.yml at the root of the trunk, you can find the syntax of that file at http://about.travis-ci.org/docs/user/build-configuration/ . This file contains the instructions to download dependency libraries, setup databases (PostgreSQL, MySQL) that will be used for testing, build GDAL and its bindings, and run the tests.

The OS os the Travis-CI virtual machines is Ubuntu 12.04 64bit. The GDAL build is configured with almost any possible dependencies to external libraries :

LIBZ support: external
LIBLZMA support: yes
GRASS support: no
CFITSIO support: no
PCRaster support: internal
LIBPNG support: external
GTA support: yes
LIBTIFF support: internal (BigTIFF=yes)
LIBGEOTIFF support: internal
LIBJPEG support: external
8/12 bit JPEG TIFF: no
LIBGIF support: external
OGDI support: yes
HDF4 support: yes
HDF5 support: yes
NetCDF support: yes
Kakadu support: no
JasPer support: yes (GeoJP2=yes)
OpenJPEG support: no
ECW support: yes
MrSID support: yes
MrSID/MG4 Lidar support: yes
MSG support: no
GRIB support: yes
EPSILON support: yes
WebP support: yes
cURL support (wms/wcs/...):yes
PostgreSQL support: yes
MySQL support: yes
Ingres support: no
Xerces-C support: yes
NAS support: yes
Expat support: yes
libxml2 support: yes
Google libkml support: yes
ODBC support: yes
PGeo support: yes
FGDB support: yes
MDB support: yes
PCIDSK support: internal
OCI support: no
GEORASTER support: no
SDE support: no
Rasdaman support: no
DODS support: no
SQLite support: yes
PCRE support: yes
SpatiaLite support: yes
DWGdirect support no
INFORMIX DataBlade support:no
GEOS support: yes
VFK support: yes
Poppler support: yes
Podofo support: yes
OpenCL support: no
Armadillo support: no
FreeXL support: yes
Statically link PROJ.4: no
enable pthread support: yes
enable POSIX iconv support:yes
hide internal symbols: no
  • Builds with a minimalistic set of dependencies

The PostGIS team has set up a Jenkins instance that, in addition to PostGIS, includes builds of GDAL trunk and runs the Python autotest suite. The OS of that Jenkins instance is apparently Linux Debian. Note : the list of optional GDAL/OGR drivers that rely on dependant libraries included in those builds is still minimal.

Python 3

Python 3 bindings are tested under Travis-CI : see python3 builds at https://travis-ci.org/rouault/gdal_coverage/builds. Autotest suite is run.

Android

Android builds are done under Travis-CI : see trunk_android builds at https://travis-ci.org/rouault/gdal_coverage/builds. Just cross compilation is done.

MacOS-X

MacOS-X builds are done under Travis-CI : see trunk_travis_macosx builds at https://travis-ci.org/rouault/gdal_coverage/builds. Autotest suite is run.

C++ 11 compatibility

A build enabling C++11 mode is done under Travis-CI : see trunk_gcc4.8_stdc11 builds at https://travis-ci.org/rouault/gdal_coverage/builds. Autotest suite is run.

C++ 14 compatibility

A build enabling C++14 mode is done under Travis-CI : see trunk_gcc5.2_sanitize builds at https://travis-ci.org/rouault/gdal_coverage/builds. Autotest suite is run.

Big-endian host

A cross compilation for a big endian host (armeb) is done under Travis-CI : see trunk_big_endian builds at https://travis-ci.org/rouault/gdal_coverage/builds. Just cross compilation is done.

Ubuntu Precise 12.04 i386 (32-bit) build

See trunk_32bit builds at https://travis-ci.org/rouault/gdal_coverage/builds. Autotest suite is run.

Ubuntu Trusty 14.04 amd64 build

See trunk_trusty builds at https://travis-ci.org/rouault/gdal_coverage/builds. Autotest suite is run.

GCC 5.2 sanitizers

A build enabling GCC 5.2 address and undefined behaviour sanitizers is done under Travis-CI : see trunk_gcc5.2_sanitize builds at https://travis-ci.org/rouault/gdal_coverage/builds. Autotest suite is run. Warnings emitted by the sanitizers aren't generally causing build failures (except when the test fork an external process and checks 'ERROR' in the error stream), so looking at the build log is necessary.

CLang Static Analyzer 3.7.0

A static code analyzis is done with CLang Static Analyzer under Travis-CI : see trunk_clang_static_analyzer builds at https://travis-ci.org/rouault/gdal_coverage/builds. It includes a fairly number of drivers, excluding grib (to stay in the time limit of jobs, and because degrib throws a lot of warning). The default checkers are used + alpha.unix.cstring.OutOfBounds? and alpha.unix.cstring.BufferOverlap? . C.S.A. can have false positive warnings, which can generally be workarounded, which has been done in the whole code base (except a few blacklisted components: internal libpng and libjpeg, hdf-eos library and generated Bison parsers). The caveats of C.S.A is that it doesn't do checks accross compilation units, hence it will not know that CSLCount(list) > 0 implies liest != NULL. C.S.A can also do branch hypothesis that aren't possible.

History

Note: There used to be an OSGeo Buildbot farm that included GDAL builds, but it is no longer working. You can still consult the old content.

Last modified 20 months ago Last modified on Feb 3, 2016 6:18:08 AM