瀏覽代碼

CI: Various OSX build fixes

Stefan Profanter 5 年之前
父節點
當前提交
9dd5a34ca4
共有 4 個文件被更改,包括 31 次插入3 次删除
  1. 5 1
      .travis.yml
  2. 7 0
      tests/CMakeLists.txt
  3. 6 1
      tools/travis/travis_osx_script.sh
  4. 13 1
      tools/valgrind_check_error.py

+ 5 - 1
.travis.yml

@@ -224,7 +224,11 @@ matrix:
     - os: osx
       compiler: clang
       # disable homebrew auto update which takes a lot of time
-      env: HOMEBREW_NO_AUTO_UPDATE=1
+      env:
+        - HOMEBREW_NO_AUTO_UPDATE=1
+        # libcheck needs custom temp dir, otherwise it fails since it does not can create the pipe
+        # check_msg.c:317: Unable to create temporary file for communication; may not have permissions to do so
+        - TEMP=${TRAVIS_BUILD_DIR}/tmp
       cache:
         directories:
           - $HOME/Library/Caches/Homebrew

+ 7 - 0
tests/CMakeLists.txt

@@ -12,6 +12,13 @@ if(CMAKE_HOST_SYSTEM_NAME MATCHES "OpenBSD")
     add_definitions(-Wno-gnu-zero-variadic-macro-arguments)
 endif()
 
+if(APPLE)
+    # CLang on Apple complains about many cases like this:
+    # /Users/travis/build/open62541/open62541/tests/check_chunking.c:148:22: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'intmax_t' (aka 'long') [-Wsign-conversion]
+    #    ck_assert_int_eq(counter,9); //10 chunks allocated - callback called 4 times
+    add_definitions(-Wno-sign-conversion)
+endif()
+
 get_property(open62541_BUILD_INCLUDE_DIRS TARGET open62541 PROPERTY INTERFACE_INCLUDE_DIRECTORIES)
 include_directories(${open62541_BUILD_INCLUDE_DIRS})
 # ua_server_internal.h

+ 6 - 1
tools/travis/travis_osx_script.sh

@@ -25,6 +25,7 @@ cmake \
     -DUA_BUILD_EXAMPLES=ON \
     -DUA_NAMESPACE_ZERO=FULL ..
 make -j
+if [ $? -ne 0 ] ; then exit 1 ; fi
 cd .. && rm -rf build
 echo -en 'travis_fold:end:script.build.ns0\\r'
 
@@ -36,7 +37,9 @@ 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-osx.tar.gz LICENSE AUTHORS README.md ${TRAVIS_BUILD_DIR}/open62541-osx/*
 rm -rf build
@@ -48,6 +51,7 @@ cmake \
     -DUA_BUILD_EXAMPLES=ON \
     -DUA_ENABLE_MULTITHREADING=ON ..
 make -j
+if [ $? -ne 0 ] ; then exit 1 ; fi
 cd .. && rm -rf build
 echo -en 'travis_fold:end:script.build.multithread\\r'
 
@@ -58,11 +62,12 @@ cmake \
     -DCMAKE_BUILD_TYPE=Debug \
     -DUA_BUILD_EXAMPLES=ON \
     -DUA_BUILD_UNIT_TESTS=ON \
-    -DUA_ENABLE_COVERAGE=ON \
+    -DUA_ENABLE_COVERAGE=OFF \
     -DUA_ENABLE_DISCOVERY=ON \
     -DUA_ENABLE_DISCOVERY_MULTICAST=ON \
     -DUA_ENABLE_ENCRYPTION=ON \
     -DUA_ENABLE_UNIT_TESTS_MEMCHECK=ON ..
 make -j && make test ARGS="-V"
+if [ $? -ne 0 ] ; then exit 1 ; fi
 cd .. && rm -rf build
 echo -en 'travis_fold:end:script.build.unit_test\\r'

+ 13 - 1
tools/valgrind_check_error.py

@@ -13,6 +13,7 @@ import sys
 import subprocess
 import os.path
 import re
+import os
 
 logfile = sys.argv[1]
 
@@ -20,7 +21,18 @@ valgrind_command = ' '.join('"' + item + '"' for item in sys.argv[2:])
 
 # Execute a command and output its stdout text
 def execute(command):
-    process = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
+
+    my_env = os.environ.copy()
+    my_env["TEMP"] = my_env["TRAVIS_BUILD_DIR"] + "/tmp"
+    my_env["TMPDIR"] = my_env["TRAVIS_BUILD_DIR"] + "/tmp"
+
+    print("Temp Dir: " + my_env["TMPDIR"])
+
+    f= open(my_env["TMPDIR"] + "/test.txt","w+")
+    f.write("This is line %d\r\n")
+    f.close()
+
+    process = subprocess.Popen(command, env=my_env, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
 
     # Poll process for new output until finished
     while True: