travis-ci: Build C/C++/Python matrix
authorKyle Manna <kyle@kylemanna.com>
Mon, 21 Sep 2015 05:58:54 +0000 (22:58 -0700)
committerKyle Manna <kyle@kylemanna.com>
Mon, 21 Sep 2015 15:38:35 +0000 (08:38 -0700)
* Test a number of C compilers
* Travis CI can't handle three languages (C, C++, Python)
* Add support for swapping python2/3 binaries
* Scons has made no attempts to support python3 yet:
* Build the matrix manually
* Scons doesn't inherit $CC/$CXX from parent environement,
  so pass compiler flags directly

.travis.yml

index 5848c42..6b8db51 100644 (file)
@@ -1,21 +1,49 @@
-language: c
+# Travis CI has no ability to handle 3 langauges (c, c++, python)
+# and it overrides $CC/$CXX if language is set to c/c++ (only one, not both).
+#
+# Set language to python since at least the result of that is something useful.
+language: python
+
+python:
+    - "2.7"
+    - "3.4"
+
+# Manage the C/C++ compiler manually
+env:
+    - CC=gcc     CXX=g++
+    - CC=gcc-4.8 CXX=g++-4.8
+    - CC=gcc-4.9 CXX=g++-4.9
+    - CC=gcc-5   CXX=g++-5
+    - CC=clang   CXX=clang++
+
+addons:
+    apt:
+        sources:
+            - ubuntu-toolchain-r-test
+        packages:
+            - gcc-4.8
+            - g++-4.8
+            - gcc-4.9
+            - g++-4.9
+            - gcc-5
+            - g++-5
 
-compiler:
-    - gcc
-    - clang
 
 before_install:
     - export PATH=$HOME/.local/bin:$HOME/protobuf/bin:$PATH
     - export MAKEFLAGS=-j$(grep processor /proc/cpuinfo | wc -l)
     - $CC --version
+    - $CXX --version
     - python --version
     - lsb_release -a
 
-cache:
-    directories:
-        - $HOME/protobuf
+# Seems to be issues with concurrent builds
+#cache:
+#    directories:
+#        - $HOME/protobuf
+
 install:
-    - pip install --user protobuf
+    - pip install protobuf
     - test \! -d $HOME/protobuf
       && curl -L https://github.com/google/protobuf/releases/download/v2.6.1/protobuf-2.6.1.tar.bz2 | tar xjf -
       && pushd protobuf-2.6.1
@@ -23,6 +51,6 @@ install:
       && popd
       || true # True if test is false as the cache exists
 
-script: 
+script:
     - pushd generator/proto && make && popd
-    - pushd tests && scons && popd
+    - pushd tests && python2 $(which scons) CC=$CC CXX=$CXX && popd