Parcourir la source

CI: Streamline analysis and install builds (Travis)

Ralph Lange il y a 5 ans
Parent
commit
d6b3f97a5a
2 fichiers modifiés avec 230 ajouts et 231 suppressions
  1. 0 5
      .travis.yml
  2. 230 226
      tools/travis/travis_linux_script.sh

+ 0 - 5
.travis.yml

@@ -45,7 +45,6 @@ matrix:
             - xutils-dev
             - zip
       env:
-        - ANALYZE=false
         - CC=gcc-4.8
         - CXX=g++-4.8
         - PYTHON=python2
@@ -73,7 +72,6 @@ matrix:
             - texlive-latex-recommended
             - valgrind
       env:
-        - ANALYZE=false
         - CC=gcc-8
         - CXX=g++-8
         - PYTHON=python2
@@ -96,7 +94,6 @@ matrix:
             - texlive-latex-recommended
             - valgrind
       env:
-        - ANALYZE=false
         - CC=clang-6.0
         - CXX=clang++-6.0
         - PYTHON=python2
@@ -119,7 +116,6 @@ matrix:
             - texlive-latex-recommended
             - valgrind
       env:
-        - ANALYZE=false
         - CC=clang-6.0
         - CXX=clang++-6.0
         - PYTHON=python3
@@ -137,7 +133,6 @@ matrix:
             - texlive-latex-extra
             - texlive-latex-recommended
       env:
-        - ANALYZE=false
         - CC=tcc
         - PYTHON=python2
     - os: linux

+ 230 - 226
tools/travis/travis_linux_script.sh

@@ -60,7 +60,7 @@ fi
 
 # INSTALL build test
 if ! [ -z ${INSTALL+x} ]; then
-
+echo "=== Install build, then compile minimal example ===" && echo -en 'travis_fold:start:script.build.install\\r'
     # Use make install to deploy files and then test if we can build an example based on the installed files
     mkdir -p build
     cd build
@@ -75,10 +75,12 @@ if ! [ -z ${INSTALL+x} ]; then
     if [ $? -ne 0 ] ; then exit 1 ; fi
 
     cd .. && rm build -rf
+    echo -en 'travis_fold:end:script.build.install\\r'
 
+    echo -en 'travis_fold:start:script.build.mini-example\\r'
     # Now create a simple CMake Project which uses the installed file
     mkdir compile && cd compile
-cat > CMakeLists.txt <<- EOM
+    cat > CMakeLists.txt << EOM
 cmake_minimum_required(VERSION 2.8)
 project(install-test)
 find_package(open62541 REQUIRED COMPONENTS FullNamespace)
@@ -91,10 +93,11 @@ EOM
     if [ $? -ne 0 ] ; then exit 1 ; fi
     cd ..
     rm -rf compile
+    echo -en 'travis_fold:end:script.build.mini-example\\r'
     exit 0
 fi
 
-if [ $ANALYZE = "true" ]; then
+if ! [ -z ${ANALYZE+x} ]; then
     echo "=== Running static code analysis ===" && echo -en 'travis_fold:start:script.analyze\\r'
     if ! case $CC in clang*) false;; esac; then
         mkdir -p build
@@ -146,110 +149,37 @@ if [ $ANALYZE = "true" ]; then
         fi
     fi
     echo -en 'travis_fold:end:script.analyze\\r'
-else
-    echo -en "\r\n=== Building ===\r\n"
-
-    echo -e "\r\n== Documentation and certificate build =="  && echo -en 'travis_fold:start:script.build.doc\\r'
-    mkdir -p build
-    cd build
-    cmake \
-        -DCMAKE_BUILD_TYPE=Release \
-        -DPYTHON_EXECUTABLE:FILEPATH=/usr/bin/$PYTHON \
-        -DUA_BUILD_EXAMPLES=ON \
-        -DUA_BUILD_SELFSIGNED_CERTIFICATE=ON ..
-    make doc
-    make doc_pdf
-    make selfsigned
-    cp -r doc ../../
-    cp -r doc_latex ../../
-    cp ./examples/server_cert.der ../../
-    cd .. && rm build -rf
-    echo -en 'travis_fold:end:script.build.doc\\r'
-
-    # cross compilation only with gcc
-    if ! [ -z ${MINGW+x} ]; then
-        echo -e "\r\n== Cross compile release build for MinGW 32 bit =="  && echo -en 'travis_fold:start:script.build.cross_mingw32\\r'
-        mkdir -p build && cd build
-        cmake \
-            -DBUILD_SHARED_LIBS=ON \
-            -DCMAKE_BUILD_TYPE=RelWithDebInfo \
-            -DCMAKE_INSTALL_PREFIX=${TRAVIS_BUILD_DIR}/open62541-win32 \
-            -DCMAKE_TOOLCHAIN_FILE=../tools/cmake/Toolchain-mingw32.cmake \
-            -DUA_BUILD_EXAMPLES=ON \
-            -DUA_ENABLE_AMALGAMATION=OFF ..
-        make -j
-        if [ $? -ne 0 ] ; then exit 1 ; fi
-        make install
-        if [ $? -ne 0 ] ; then exit 1 ; fi
-        cd ..
-        zip -r open62541-win32.zip ../doc_latex/open62541.pdf LICENSE AUTHORS README.md open62541-win32/*
-        rm build -rf
-        echo -en 'travis_fold:end:script.build.cross_mingw32\\r'
-
-        echo -e "\r\n== Cross compile release build for MinGW 64 bit =="  && echo -en 'travis_fold:start:script.build.cross_mingw64\\r'
-        mkdir -p build && cd build
-        cmake \
-            -DBUILD_SHARED_LIBS=ON \
-            -DCMAKE_BUILD_TYPE=RelWithDebInfo \
-            -DCMAKE_INSTALL_PREFIX=${TRAVIS_BUILD_DIR}/open62541-win64 \
-            -DCMAKE_TOOLCHAIN_FILE=../tools/cmake/Toolchain-mingw64.cmake \
-            -DUA_BUILD_EXAMPLES=ON \
-            -DUA_ENABLE_AMALGAMATION=OFF ..
-        make -j
-        if [ $? -ne 0 ] ; then exit 1 ; fi
-        make install
-        if [ $? -ne 0 ] ; then exit 1 ; fi
-        cd ..
-        zip -r open62541-win64.zip ../doc_latex/open62541.pdf LICENSE AUTHORS README.md open62541-win64/*
-        rm build -rf
-        echo -en 'travis_fold:end:script.build.cross_mingw64\\r'
-
-        echo -e "\r\n== Cross compile release build for 32-bit linux =="  && echo -en 'travis_fold:start:script.build.cross_linux\\r'
-        mkdir -p build && cd build
-        cmake \
-            -DBUILD_SHARED_LIBS=ON \
-            -DCMAKE_BUILD_TYPE=RelWithDebInfo \
-            -DCMAKE_INSTALL_PREFIX=${TRAVIS_BUILD_DIR}/open62541-linux32 \
-            -DCMAKE_TOOLCHAIN_FILE=../tools/cmake/Toolchain-gcc-m32.cmake \
-            -DUA_BUILD_EXAMPLES=ON \
-            -DUA_ENABLE_AMALGAMATION=OFF ..
-        make -j
-        if [ $? -ne 0 ] ; then exit 1 ; fi
-        make install
-        if [ $? -ne 0 ] ; then exit 1 ; fi
-        cd ..
-        tar -pczf open62541-linux32.tar.gz ../doc_latex/open62541.pdf LICENSE AUTHORS README.md open62541-linux32/*
-        rm build -rf
-        echo -en 'travis_fold:end:script.build.cross_linux\\r'
-
-        echo -e "\r\n== Cross compile release build for RaspberryPi =="  && echo -en 'travis_fold:start:script.build.cross_raspi\\r'
-        mkdir -p build && cd build
-        git clone https://github.com/raspberrypi/tools
-        export PATH=$PATH:./tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/
-        cmake \
-            -DBUILD_SHARED_LIBS=ON \
-            -DCMAKE_BUILD_TYPE=RelWithDebInfo \
-            -DCMAKE_INSTALL_PREFIX=${TRAVIS_BUILD_DIR}/open62541-raspberrypi \
-            -DCMAKE_TOOLCHAIN_FILE=../tools/cmake/Toolchain-rpi64.cmake \
-            -DUA_BUILD_EXAMPLES=ON \
-            -DUA_ENABLE_AMALGAMATION=OFF ..
-        make -j
-        if [ $? -ne 0 ] ; then exit 1 ; fi
-        make install
-        if [ $? -ne 0 ] ; then exit 1 ; fi
-        cd ..
-        tar -pczf open62541-raspberrypi.tar.gz ../doc_latex/open62541.pdf LICENSE AUTHORS README.md open62541-raspberrypi/*
-        rm build -rf
-        echo -en 'travis_fold:end:script.build.cross_raspi\\r'
-    fi
+    exit 0
+fi
 
-    echo -e "\r\n== Compile release build for 64-bit linux =="  && echo -en 'travis_fold:start:script.build.linux_64\\r'
+echo -en "\r\n=== Building ===\r\n"
+
+echo -e "\r\n== Documentation and certificate build =="  && echo -en 'travis_fold:start:script.build.doc\\r'
+mkdir -p build
+cd build
+cmake \
+    -DCMAKE_BUILD_TYPE=Release \
+    -DPYTHON_EXECUTABLE:FILEPATH=/usr/bin/$PYTHON \
+    -DUA_BUILD_EXAMPLES=ON \
+    -DUA_BUILD_SELFSIGNED_CERTIFICATE=ON ..
+make doc
+make doc_pdf
+make selfsigned
+cp -r doc ../../
+cp -r doc_latex ../../
+cp ./examples/server_cert.der ../../
+cd .. && rm build -rf
+echo -en 'travis_fold:end:script.build.doc\\r'
+
+# cross compilation only with gcc
+if ! [ -z ${MINGW+x} ]; then
+    echo -e "\r\n== Cross compile release build for MinGW 32 bit =="  && echo -en 'travis_fold:start:script.build.cross_mingw32\\r'
     mkdir -p build && cd build
     cmake \
         -DBUILD_SHARED_LIBS=ON \
         -DCMAKE_BUILD_TYPE=RelWithDebInfo \
-        -DCMAKE_INSTALL_PREFIX=${TRAVIS_BUILD_DIR}/open62541-linux64 \
-        -DPYTHON_EXECUTABLE:FILEPATH=/usr/bin/$PYTHON \
+        -DCMAKE_INSTALL_PREFIX=${TRAVIS_BUILD_DIR}/open62541-win32 \
+        -DCMAKE_TOOLCHAIN_FILE=../tools/cmake/Toolchain-mingw32.cmake \
         -DUA_BUILD_EXAMPLES=ON \
         -DUA_ENABLE_AMALGAMATION=OFF ..
     make -j
@@ -257,186 +187,260 @@ else
     make install
     if [ $? -ne 0 ] ; then exit 1 ; fi
     cd ..
-    tar -pczf open62541-linux64.tar.gz ../doc_latex/open62541.pdf LICENSE AUTHORS README.md open62541-linux64/*
+    zip -r open62541-win32.zip ../doc_latex/open62541.pdf LICENSE AUTHORS README.md open62541-win32/*
     rm build -rf
-    echo -en 'travis_fold:end:script.build.linux_64\\r'
+    echo -en 'travis_fold:end:script.build.cross_mingw32\\r'
 
-    echo -e "\r\n== Compile with amalgamation =="  && echo -en 'travis_fold:start:script.build.amalgamate\\r'
+    echo -e "\r\n== Cross compile release build for MinGW 64 bit =="  && echo -en 'travis_fold:start:script.build.cross_mingw64\\r'
     mkdir -p build && cd build
     cmake \
         -DBUILD_SHARED_LIBS=ON \
         -DCMAKE_BUILD_TYPE=RelWithDebInfo \
-        -DCMAKE_INSTALL_PREFIX=${TRAVIS_BUILD_DIR}/open62541-linux64 \
-        -DPYTHON_EXECUTABLE:FILEPATH=/usr/bin/$PYTHON \
-        -DUA_BUILD_EXAMPLES=OFF \
-        -DUA_ENABLE_AMALGAMATION=ON ..
+        -DCMAKE_INSTALL_PREFIX=${TRAVIS_BUILD_DIR}/open62541-win64 \
+        -DCMAKE_TOOLCHAIN_FILE=../tools/cmake/Toolchain-mingw64.cmake \
+        -DUA_BUILD_EXAMPLES=ON \
+        -DUA_ENABLE_AMALGAMATION=OFF ..
     make -j
-    cp open62541.h ../.. # copy single file-release
-    cp open62541.c ../.. # copy single file-release
-    gcc -std=c99 -c open62541.c
-    g++ ../examples/server.cpp -I./ open62541.o -lrt -o cpp-server
     if [ $? -ne 0 ] ; then exit 1 ; fi
-    cd .. && rm build -rf
-    echo -en 'travis_fold:end:script.build.amalgamate\\r'
+    make install
+    if [ $? -ne 0 ] ; then exit 1 ; fi
+    cd ..
+    zip -r open62541-win64.zip ../doc_latex/open62541.pdf LICENSE AUTHORS README.md open62541-win64/*
+    rm build -rf
+    echo -en 'travis_fold:end:script.build.cross_mingw64\\r'
 
-    echo "Compile as shared lib version" && echo -en 'travis_fold:start:script.build.shared_libs\\r'
+    echo -e "\r\n== Cross compile release build for 32-bit linux =="  && echo -en 'travis_fold:start:script.build.cross_linux\\r'
     mkdir -p build && cd build
     cmake \
         -DBUILD_SHARED_LIBS=ON \
-        -DPYTHON_EXECUTABLE:FILEPATH=/usr/bin/$PYTHON \
+        -DCMAKE_BUILD_TYPE=RelWithDebInfo \
+        -DCMAKE_INSTALL_PREFIX=${TRAVIS_BUILD_DIR}/open62541-linux32 \
+        -DCMAKE_TOOLCHAIN_FILE=../tools/cmake/Toolchain-gcc-m32.cmake \
         -DUA_BUILD_EXAMPLES=ON \
         -DUA_ENABLE_AMALGAMATION=OFF ..
     make -j
     if [ $? -ne 0 ] ; then exit 1 ; fi
-    cd .. && rm build -rf
-    echo -en 'travis_fold:end:script.build.shared_libs\\r'
+    make install
+    if [ $? -ne 0 ] ; then exit 1 ; fi
+    cd ..
+    tar -pczf open62541-linux32.tar.gz ../doc_latex/open62541.pdf LICENSE AUTHORS README.md open62541-linux32/*
+    rm build -rf
+    echo -en 'travis_fold:end:script.build.cross_linux\\r'
 
-    echo "Compile as shared lib version with amalgamation" && echo -en 'travis_fold:start:script.build.shared_libs_amalgamate\\r'
+    echo -e "\r\n== Cross compile release build for RaspberryPi =="  && echo -en 'travis_fold:start:script.build.cross_raspi\\r'
     mkdir -p build && cd build
+    git clone https://github.com/raspberrypi/tools
+    export PATH=$PATH:./tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/
     cmake \
         -DBUILD_SHARED_LIBS=ON \
-        -DPYTHON_EXECUTABLE:FILEPATH=/usr/bin/$PYTHON \
-        -DUA_BUILD_EXAMPLES=OFF \
-        -DUA_ENABLE_AMALGAMATION=ON ..
+        -DCMAKE_BUILD_TYPE=RelWithDebInfo \
+        -DCMAKE_INSTALL_PREFIX=${TRAVIS_BUILD_DIR}/open62541-raspberrypi \
+        -DCMAKE_TOOLCHAIN_FILE=../tools/cmake/Toolchain-rpi64.cmake \
+        -DUA_BUILD_EXAMPLES=ON \
+        -DUA_ENABLE_AMALGAMATION=OFF ..
     make -j
     if [ $? -ne 0 ] ; then exit 1 ; fi
-    cd .. && rm build -rf
-    echo -en 'travis_fold:end:script.build.shared_libs_amalgamate\\r'
-
-    if [ "$CC" != "tcc" ]; then
-        echo -e "\r\n==Compile multithreaded version==" && echo -en 'travis_fold:start:script.build.multithread\\r'
-        mkdir -p build && cd build
-        cmake \
-        -DPYTHON_EXECUTABLE:FILEPATH=/usr/bin/$PYTHON \
-        -DUA_BUILD_EXAMPLES=ON \
-        -DUA_ENABLE_MULTITHREADING=ON ..
-        make -j
-        if [ $? -ne 0 ] ; then exit 1 ; fi
-        cd .. && rm build -rf
-        echo -en 'travis_fold:end:script.build.multithread\\r'
-    fi
+    make install
+    if [ $? -ne 0 ] ; then exit 1 ; fi
+    cd ..
+    tar -pczf open62541-raspberrypi.tar.gz ../doc_latex/open62541.pdf LICENSE AUTHORS README.md open62541-raspberrypi/*
+    rm build -rf
+    echo -en 'travis_fold:end:script.build.cross_raspi\\r'
+fi
 
-    echo -e "\r\n== Compile with encryption ==" && echo -en 'travis_fold:start:script.build.encryption\\r'
+echo -e "\r\n== Compile release build for 64-bit linux =="  && echo -en 'travis_fold:start:script.build.linux_64\\r'
+mkdir -p build && cd build
+cmake \
+    -DBUILD_SHARED_LIBS=ON \
+    -DCMAKE_BUILD_TYPE=RelWithDebInfo \
+    -DCMAKE_INSTALL_PREFIX=${TRAVIS_BUILD_DIR}/open62541-linux64 \
+    -DPYTHON_EXECUTABLE:FILEPATH=/usr/bin/$PYTHON \
+    -DUA_BUILD_EXAMPLES=ON \
+    -DUA_ENABLE_AMALGAMATION=OFF ..
+make -j
+if [ $? -ne 0 ] ; then exit 1 ; fi
+make install
+if [ $? -ne 0 ] ; then exit 1 ; fi
+cd ..
+tar -pczf open62541-linux64.tar.gz ../doc_latex/open62541.pdf LICENSE AUTHORS README.md open62541-linux64/*
+rm build -rf
+echo -en 'travis_fold:end:script.build.linux_64\\r'
+
+echo -e "\r\n== Compile with amalgamation =="  && echo -en 'travis_fold:start:script.build.amalgamate\\r'
+mkdir -p build && cd build
+cmake \
+    -DBUILD_SHARED_LIBS=ON \
+    -DCMAKE_BUILD_TYPE=RelWithDebInfo \
+    -DCMAKE_INSTALL_PREFIX=${TRAVIS_BUILD_DIR}/open62541-linux64 \
+    -DPYTHON_EXECUTABLE:FILEPATH=/usr/bin/$PYTHON \
+    -DUA_BUILD_EXAMPLES=OFF \
+    -DUA_ENABLE_AMALGAMATION=ON ..
+make -j
+cp open62541.h ../.. # copy single file-release
+cp open62541.c ../.. # copy single file-release
+gcc -std=c99 -c open62541.c
+g++ ../examples/server.cpp -I./ open62541.o -lrt -o cpp-server
+if [ $? -ne 0 ] ; then exit 1 ; fi
+cd .. && rm build -rf
+echo -en 'travis_fold:end:script.build.amalgamate\\r'
+
+echo "Compile as shared lib version" && echo -en 'travis_fold:start:script.build.shared_libs\\r'
+mkdir -p build && cd build
+cmake \
+    -DBUILD_SHARED_LIBS=ON \
+    -DPYTHON_EXECUTABLE:FILEPATH=/usr/bin/$PYTHON \
+    -DUA_BUILD_EXAMPLES=ON \
+    -DUA_ENABLE_AMALGAMATION=OFF ..
+make -j
+if [ $? -ne 0 ] ; then exit 1 ; fi
+cd .. && rm build -rf
+echo -en 'travis_fold:end:script.build.shared_libs\\r'
+
+echo "Compile as shared lib version with amalgamation" && echo -en 'travis_fold:start:script.build.shared_libs_amalgamate\\r'
+mkdir -p build && cd build
+cmake \
+    -DBUILD_SHARED_LIBS=ON \
+    -DPYTHON_EXECUTABLE:FILEPATH=/usr/bin/$PYTHON \
+    -DUA_BUILD_EXAMPLES=OFF \
+    -DUA_ENABLE_AMALGAMATION=ON ..
+make -j
+if [ $? -ne 0 ] ; then exit 1 ; fi
+cd .. && rm build -rf
+echo -en 'travis_fold:end:script.build.shared_libs_amalgamate\\r'
+
+if [ "$CC" != "tcc" ]; then
+    echo -e "\r\n==Compile multithreaded version==" && echo -en 'travis_fold:start:script.build.multithread\\r'
     mkdir -p build && cd build
     cmake \
-        -DPYTHON_EXECUTABLE:FILEPATH=/usr/bin/$PYTHON \
-        -DUA_BUILD_EXAMPLES=ON \
-        -DUA_ENABLE_ENCRYPTION=ON ..
+    -DPYTHON_EXECUTABLE:FILEPATH=/usr/bin/$PYTHON \
+    -DUA_BUILD_EXAMPLES=ON \
+    -DUA_ENABLE_MULTITHREADING=ON ..
     make -j
     if [ $? -ne 0 ] ; then exit 1 ; fi
     cd .. && rm build -rf
-    echo -en 'travis_fold:end:script.build.encryption\\r'
+    echo -en 'travis_fold:end:script.build.multithread\\r'
+fi
 
-    echo -e "\r\n== Compile without discovery version ==" && echo -en 'travis_fold:start:script.build.discovery\\r'
+echo -e "\r\n== Compile with encryption ==" && echo -en 'travis_fold:start:script.build.encryption\\r'
+mkdir -p build && cd build
+cmake \
+    -DPYTHON_EXECUTABLE:FILEPATH=/usr/bin/$PYTHON \
+    -DUA_BUILD_EXAMPLES=ON \
+    -DUA_ENABLE_ENCRYPTION=ON ..
+make -j
+if [ $? -ne 0 ] ; then exit 1 ; fi
+cd .. && rm build -rf
+echo -en 'travis_fold:end:script.build.encryption\\r'
+
+echo -e "\r\n== Compile without discovery version ==" && echo -en 'travis_fold:start:script.build.discovery\\r'
+mkdir -p build && cd build
+cmake \
+    -DPYTHON_EXECUTABLE:FILEPATH=/usr/bin/$PYTHON \
+    -DUA_BUILD_EXAMPLES=ON \
+    -DUA_ENABLE_DISCOVERY=OFF \
+    -DUA_ENABLE_DISCOVERY_MULTICAST=OFF ..
+make -j
+if [ $? -ne 0 ] ; then exit 1 ; fi
+cd .. && rm build -rf
+echo -en 'travis_fold:end:script.build.discovery\\r'
+
+if [ "$CC" != "tcc" ]; then
+    echo -e "\r\n== Compile multithreaded version with discovery ==" && echo -en 'travis_fold:start:script.build.multithread_discovery\\r'
     mkdir -p build && cd build
     cmake \
         -DPYTHON_EXECUTABLE:FILEPATH=/usr/bin/$PYTHON \
         -DUA_BUILD_EXAMPLES=ON \
-        -DUA_ENABLE_DISCOVERY=OFF \
-        -DUA_ENABLE_DISCOVERY_MULTICAST=OFF ..
+        -DUA_ENABLE_DISCOVERY=ON \
+        -DUA_ENABLE_DISCOVERY_MULTICAST=ON \
+        -DUA_ENABLE_MULTITHREADING=ON ..
     make -j
     if [ $? -ne 0 ] ; then exit 1 ; fi
     cd .. && rm build -rf
-    echo -en 'travis_fold:end:script.build.discovery\\r'
-
-    if [ "$CC" != "tcc" ]; then
-        echo -e "\r\n== Compile multithreaded version with discovery ==" && echo -en 'travis_fold:start:script.build.multithread_discovery\\r'
-        mkdir -p build && cd build
-        cmake \
-            -DPYTHON_EXECUTABLE:FILEPATH=/usr/bin/$PYTHON \
-            -DUA_BUILD_EXAMPLES=ON \
-            -DUA_ENABLE_DISCOVERY=ON \
-            -DUA_ENABLE_DISCOVERY_MULTICAST=ON \
-            -DUA_ENABLE_MULTITHREADING=ON ..
-        make -j
-        if [ $? -ne 0 ] ; then exit 1 ; fi
-        cd .. && rm build -rf
-        echo -en 'travis_fold:end:script.build.multithread_discovery\\r'
-    fi
+    echo -en 'travis_fold:end:script.build.multithread_discovery\\r'
+fi
 
-    echo -e "\r\n== Compile JSON encoding ==" && echo -en 'travis_fold:start:script.build.json\\r'
-    mkdir -p build && cd build
-    cmake \
-        -DPYTHON_EXECUTABLE:FILEPATH=/usr/bin/$PYTHON \
-        -DUA_ENABLE_JSON_ENCODING=ON ..
-    make -j
+echo -e "\r\n== Compile JSON encoding ==" && echo -en 'travis_fold:start:script.build.json\\r'
+mkdir -p build && cd build
+cmake \
+    -DPYTHON_EXECUTABLE:FILEPATH=/usr/bin/$PYTHON \
+    -DUA_ENABLE_JSON_ENCODING=ON ..
+make -j
+if [ $? -ne 0 ] ; then exit 1 ; fi
+cd .. && rm build -rf
+echo -en 'travis_fold:end:script.build.json\\r'
+
+echo -e "\r\n== Unit tests (full NS0) ==" && echo -en 'travis_fold:start:script.build.unit_test_ns0_full\\r'
+mkdir -p build && cd build
+# Valgrind cannot handle the full NS0 because the generated file is too big. Thus run NS0 full without valgrind
+cmake \
+    -DCMAKE_BUILD_TYPE=Debug \
+    -DPYTHON_EXECUTABLE:FILEPATH=/usr/bin/$PYTHON \
+    -DUA_BUILD_EXAMPLES=ON \
+    -DUA_BUILD_UNIT_TESTS=ON \
+    -DUA_ENABLE_COVERAGE=OFF \
+    -DUA_ENABLE_DA=ON \
+    -DUA_ENABLE_DISCOVERY=ON \
+    -DUA_ENABLE_DISCOVERY_MULTICAST=ON \
+    -DUA_ENABLE_ENCRYPTION=ON \
+    -DUA_ENABLE_JSON_ENCODING=ON \
+    -DUA_ENABLE_PUBSUB=ON \
+    -DUA_ENABLE_PUBSUB_DELTAFRAMES=ON \
+    -DUA_ENABLE_PUBSUB_INFORMATIONMODEL=ON \
+    -DUA_ENABLE_SUBSCRIPTIONS=ON \
+    -DUA_ENABLE_SUBSCRIPTIONS_EVENTS=ON \
+    -DUA_ENABLE_UNIT_TESTS_MEMCHECK=OFF \
+    -DUA_NAMESPACE_ZERO=FULL ..
+make -j && make test ARGS="-V"
+if [ $? -ne 0 ] ; then exit 1 ; fi
+cd .. && rm build -rf
+echo -en 'travis_fold:end:script.build.unit_test_ns0_full\\r'
+
+if ! [ -z ${DEBIAN+x} ]; then
+    echo -e "\r\n== Building the Debian package =="  && echo -en 'travis_fold:start:script.build.debian\\r'
+    dpkg-buildpackage -b
     if [ $? -ne 0 ] ; then exit 1 ; fi
-    cd .. && rm build -rf
-    echo -en 'travis_fold:end:script.build.json\\r'
+    cp ../open62541*.deb .
+    # Copy for github release script
+    cp ../open62541*.deb ../..
+    echo -en 'travis_fold:end:script.build.debian\\r'
+fi
+
 
-    echo -e "\r\n== Unit tests (full NS0) ==" && echo -en 'travis_fold:start:script.build.unit_test_ns0_full\\r'
+if [ "$CC" != "tcc" ]; then
+    echo -e "\r\n== Unit tests (minimal NS0) ==" && echo -en 'travis_fold:start:script.build.unit_test_ns0_minimal\\r'
     mkdir -p build && cd build
-    # Valgrind cannot handle the full NS0 because the generated file is too big. Thus run NS0 full without valgrind
     cmake \
         -DCMAKE_BUILD_TYPE=Debug \
         -DPYTHON_EXECUTABLE:FILEPATH=/usr/bin/$PYTHON \
         -DUA_BUILD_EXAMPLES=ON \
         -DUA_BUILD_UNIT_TESTS=ON \
-        -DUA_ENABLE_COVERAGE=OFF \
+        -DUA_ENABLE_COVERAGE=ON \
         -DUA_ENABLE_DA=ON \
         -DUA_ENABLE_DISCOVERY=ON \
         -DUA_ENABLE_DISCOVERY_MULTICAST=ON \
         -DUA_ENABLE_ENCRYPTION=ON \
-        -DUA_ENABLE_JSON_ENCODING=ON \
         -DUA_ENABLE_PUBSUB=ON \
         -DUA_ENABLE_PUBSUB_DELTAFRAMES=ON \
         -DUA_ENABLE_PUBSUB_INFORMATIONMODEL=ON \
-        -DUA_ENABLE_SUBSCRIPTIONS=ON \
-        -DUA_ENABLE_SUBSCRIPTIONS_EVENTS=ON \
-        -DUA_ENABLE_UNIT_TESTS_MEMCHECK=OFF \
-        -DUA_NAMESPACE_ZERO=FULL ..
+        -DUA_ENABLE_UNIT_TESTS_MEMCHECK=ON ..
     make -j && make test ARGS="-V"
     if [ $? -ne 0 ] ; then exit 1 ; fi
-    cd .. && rm build -rf
-    echo -en 'travis_fold:end:script.build.unit_test_ns0_full\\r'
+    echo -en 'travis_fold:end:script.build.unit_test_ns0_minimal\\r'
 
-    if ! [ -z ${DEBIAN+x} ]; then
-        echo -e "\r\n== Building the Debian package =="  && echo -en 'travis_fold:start:script.build.debian\\r'
-        dpkg-buildpackage -b
+    # only run coveralls on main repo and when MINGW=true
+    # We only want to build coveralls once, so we just take the travis run where MINGW=true which is only enabled once
+    echo -e "\r\n== -> Current repo: ${TRAVIS_REPO_SLUG} =="
+    if [ $MINGW = "true" ] && [ "${TRAVIS_REPO_SLUG}" = "open62541/open62541" ]; then
+        echo -en "\r\n==   Building codecov.io for ${TRAVIS_REPO_SLUG} ==" && echo -en 'travis_fold:start:script.build.codecov\\r'
+        cd ..
+        /bin/bash -c "bash <(curl -s https://codecov.io/bash)"
         if [ $? -ne 0 ] ; then exit 1 ; fi
-        cp ../open62541*.deb .
-        # Copy for github release script
-        cp ../open62541*.deb ../..
-        echo -en 'travis_fold:end:script.build.debian\\r'
-    fi
-
+        cd build
+        echo -en 'travis_fold:end:script.build.codecov\\r'
 
-    if [ "$CC" != "tcc" ]; then
-        echo -e "\r\n== Unit tests (minimal NS0) ==" && echo -en 'travis_fold:start:script.build.unit_test_ns0_minimal\\r'
-        mkdir -p build && cd build
-        cmake \
-            -DCMAKE_BUILD_TYPE=Debug \
-            -DPYTHON_EXECUTABLE:FILEPATH=/usr/bin/$PYTHON \
-            -DUA_BUILD_EXAMPLES=ON \
-            -DUA_BUILD_UNIT_TESTS=ON \
-            -DUA_ENABLE_COVERAGE=ON \
-            -DUA_ENABLE_DA=ON \
-            -DUA_ENABLE_DISCOVERY=ON \
-            -DUA_ENABLE_DISCOVERY_MULTICAST=ON \
-            -DUA_ENABLE_ENCRYPTION=ON \
-            -DUA_ENABLE_PUBSUB=ON \
-            -DUA_ENABLE_PUBSUB_DELTAFRAMES=ON \
-            -DUA_ENABLE_PUBSUB_INFORMATIONMODEL=ON \
-            -DUA_ENABLE_UNIT_TESTS_MEMCHECK=ON ..
-        make -j && make test ARGS="-V"
-        if [ $? -ne 0 ] ; then exit 1 ; fi
-        echo -en 'travis_fold:end:script.build.unit_test_ns0_minimal\\r'
-
-        # only run coveralls on main repo and when MINGW=true
-        # We only want to build coveralls once, so we just take the travis run where MINGW=true which is only enabled once
-        echo -e "\r\n== -> Current repo: ${TRAVIS_REPO_SLUG} =="
-        if [ $MINGW = "true" ] && [ "${TRAVIS_REPO_SLUG}" = "open62541/open62541" ]; then
-            echo -en "\r\n==   Building codecov.io for ${TRAVIS_REPO_SLUG} ==" && echo -en 'travis_fold:start:script.build.codecov\\r'
-            cd ..
-            /bin/bash -c "bash <(curl -s https://codecov.io/bash)"
-            if [ $? -ne 0 ] ; then exit 1 ; fi
-            cd build
-            echo -en 'travis_fold:end:script.build.codecov\\r'
-
-            echo -en "\r\n==   Building coveralls for ${TRAVIS_REPO_SLUG} ==" && echo -en 'travis_fold:start:script.build.coveralls\\r'
-            coveralls -E '.*/build/CMakeFiles/.*' -E '.*/examples/.*' -E '.*/tests/.*' -E '.*\.h' -E '.*CMakeCXXCompilerId\.cpp' -E '.*CMakeCCompilerId\.c' -r ../ || true # ignore result since coveralls is unreachable from time to time
-            echo -en 'travis_fold:end:script.build.coveralls\\r'
-        fi
-        cd .. && rm build -rf
+        echo -en "\r\n==   Building coveralls for ${TRAVIS_REPO_SLUG} ==" && echo -en 'travis_fold:start:script.build.coveralls\\r'
+        coveralls -E '.*/build/CMakeFiles/.*' -E '.*/examples/.*' -E '.*/tests/.*' -E '.*\.h' -E '.*CMakeCXXCompilerId\.cpp' -E '.*CMakeCCompilerId\.c' -r ../ || true # ignore result since coveralls is unreachable from time to time
+        echo -en 'travis_fold:end:script.build.coveralls\\r'
     fi
+    cd .. && rm build -rf
 fi