GDAL Compilation and testing farms
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
- Builds with a rich set of dependencies
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 bindings are tested under Travis-CI : see python3 builds at https://travis-ci.org/rouault/gdal_coverage/builds. Autotest suite is run.
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 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.
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.
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.