From 54fac962e0194584b12d83c90063b66cdcf13e80 Mon Sep 17 00:00:00 2001 From: Thomas Ferreira de Lima Date: Mon, 12 Mar 2018 11:42:57 -0400 Subject: [PATCH] initial travis config for OSX test script for klayout python binding build script w python3 filtering output to reduce log size (travis complains about >4Mb) Fixing exit code in macbuild Adding unit tests including long tests in ut_runner --- .travis.yml | 49 +++++++++++++++++++++++++++++++++++++++++++ Brewfile | 6 ++++++ filter-clang.sh | 3 +++ macbuild/build4mac.py | 2 -- test-pylib-script.py | 18 ++++++++++++---- 5 files changed, 72 insertions(+), 6 deletions(-) create mode 100644 .travis.yml create mode 100644 Brewfile create mode 100644 filter-clang.sh diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 000000000..2db5b7711 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,49 @@ +# qt app example with linux and mac: https://stackoverflow.com/questions/29721240/ci-for-qt-app-build-with-different-qt-versions + +matrix: + include: + - os: osx + osx_image: xcode9.3beta + env: + - MATRIX_EVAL="" + + # - os: osx + # osx_image: xcode8 + # env: + # - MATRIX_EVAL="CC=gcc-4.9 && CXX=g++-4.9" + + # - os: osx + # osx_image: xcode8 + # env: + # - MATRIX_EVAL="brew install gcc5 && CC=gcc-5 && CXX=g++-5" + + # - os: osx + # osx_image: xcode8 + # env: + # - MATRIX_EVAL="brew install gcc6 && CC=gcc-6 && CXX=g++-6" + + # - os: osx + # osx_image: xcode8 + # env: + # - MATRIX_EVAL="brew install gcc && CC=gcc-7 && CXX=g++-7" + +before_install: + - eval "${MATRIX_EVAL}" + - brew update + - brew bundle + +install: + - git clone https://github.com/kristovatlas/osx-config-check + - cd osx-config-check ; python2.7 app.py --report-only --skip-sudo-checks ; cd .. + +script: + - python3 build4mac.py -p B36 -q Qt5Brew -c + - source filter-clang.sh; python3 build4mac.py -p B36 -q Qt5Brew | filter + - python3 build4mac.py -p B36 -q Qt5Brew -y + - qt5.pkg.macos-HighSierra-release/klayout.app/Contents/MacOS/klayout -b -r test-pylib-script.py + - cd qt5.build.macos-HighSierra-release + - ln -s klayout.app/Contents/MacOS/klayout klayout + - export TESTTMP=testtmp # path to a directory that will hold temporary data (will be created) + - export TESTSRC=.. # path to the source directory + - ./ut_runner -h + - ./ut_runner -s diff --git a/Brewfile b/Brewfile new file mode 100644 index 000000000..53d3f65bc --- /dev/null +++ b/Brewfile @@ -0,0 +1,6 @@ +tap "homebrew/core" +brew "postgresql" +brew "mysql" +brew "python3" +brew "python@2", link: false +brew "qt" diff --git a/filter-clang.sh b/filter-clang.sh new file mode 100644 index 000000000..7697038a9 --- /dev/null +++ b/filter-clang.sh @@ -0,0 +1,3 @@ +filter () { + sed -E 's/^\/Applications\/Xcode.app\/Contents\/Developer\/Toolchains\/XcodeDefault\.xctoolchain\/usr\/bin\/clang\+\+ -c[[:space:]]+([^[:space:]]+[[:space:]]+)*/Compiling \1/' +} diff --git a/macbuild/build4mac.py b/macbuild/build4mac.py index 907226d2e..ae7b97c18 100755 --- a/macbuild/build4mac.py +++ b/macbuild/build4mac.py @@ -1012,8 +1012,6 @@ def main(): if not ret2 == 0: sys.exit(1) - else: - sys.exit(0) #=================================================================================== if __name__ == "__main__": diff --git a/test-pylib-script.py b/test-pylib-script.py index 52d1c0673..0325b5ba9 100644 --- a/test-pylib-script.py +++ b/test-pylib-script.py @@ -6,9 +6,20 @@ installed_packages_list = sorted(["%s==%s" % (i.key, i.version) for i in installed_packages]) print(installed_packages_list) +def get_pip_main(): + import pip + # check if pip version is new: + if int(pip.__version__.split('.')[0]) > 9: + from pip._internal import main + else: + from pip import main + return main + print("-------------") -if pip.main(['install', '--upgrade', 'numpy']) > 0: +pipmain = get_pip_main() + +if pipmain(['install', '--upgrade', 'numpy']) > 0: exit(1) print("-------------") @@ -18,12 +29,11 @@ import numpy print("-------------") -import sys; +import sys print("Executing from: ", sys.executable) print("-------------") import os print("Environment variables:") for variable, value in os.environ.items(): - print(variable, ":", value) - + print(variable, ":", value) \ No newline at end of file