This is an automated email from the ASF dual-hosted git repository. jdanek pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/qpid-dispatch.git
commit 83b4c836e94cb71156f3f9c405b66f2f65d2dbb3 Author: Jiri Danek <[email protected]> AuthorDate: Fri Jun 14 14:13:38 2019 +0200 DISPATCH-1282 - Add macOS to .travis.yml matrix # Observations - DYLD_FALLBACK_LIBRARY_PATH doesn't work on travis, see `csrutil status` - Cyrus SASL is not in Brew, it is in MacPorts, though - MacPorts require setting export COLUMNS=80` - The macOS build matrix row is set to never fail the build --- .travis.yml | 40 ++++++++++++++++++++------- macports.sh | 90 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 120 insertions(+), 10 deletions(-) diff --git a/.travis.yml b/.travis.yml index aa62cde..a50402a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -17,14 +17,32 @@ # under the License # -os: linux sudo: true language: c cache: ccache -env: - - PROTON_VERSION=master BUILD_TYPE=Debug - - PROTON_VERSION=0.29.0 BUILD_TYPE=Coverage - - PROTON_VERSION=0.29.0 BUILD_TYPE=RelWithDebInfo +matrix: + fast_finish: true + allow_failures: + - os: osx + include: + - os: linux + env: + - PROTON_VERSION=master BUILD_TYPE=Debug + - os: linux + env: + - PROTON_VERSION=0.29.0 BUILD_TYPE=Coverage + - os: linux + env: + - PROTON_VERSION=0.29.0 BUILD_TYPE=RelWithDebInfo + - os: osx + osx_image: xcode10.1 + env: + - PATH="/opt/local/bin:/opt/local/sbin:/usr/local/opt/python/libexec/bin:/usr/local/bin:$PATH" PROTON_VERSION=master + before_install: + - sudo /usr/bin/python -m easy_install unittest2 + - bash ./macports.sh + - export COLUMNS=80 + - yes | sudo port install swig swig-python libuv jsoncpp cyrus-sasl2 pkgconfig addons: apt: @@ -49,29 +67,31 @@ addons: - lcov install: +- NPROC=2 - PREFIX=$PWD/install - git clone --depth=10 --branch=$PROTON_VERSION https://github.com/apache/qpid-proton.git -# Build and install latest proton from source. +# Build and install proton from source. - mkdir qpid-proton/build - pushd qpid-proton/build - export PATH="/usr/bin:$PATH" # Avoid mismatched python interpreters in /opt -- cmake .. -DCMAKE_INSTALL_PREFIX=$PREFIX -DBUILD_PYTHON=YES -DBUILD_JAVASCRIPT=NO -DBUILD_CPP=NO -DBUILD_GO=NO -DBUILD_RUBY=NO -DBUILD_PHP=NO -DBUILD_PERL=NO -- cmake --build . --target install +- cmake .. -DCMAKE_INSTALL_PREFIX=$PREFIX -DBUILD_PYTHON=YES -DBUILD_JAVASCRIPT=NO -DBUILD_CPP=NO -DBUILD_GO=NO -DBUILD_RUBY=NO -DBUILD_PHP=NO -DBUILD_PERL=NO +- cmake --build . --target install -- -j $NPROC - popd before_script: -- PREFIX=$PWD/install - source qpid-proton/build/config.sh - mkdir build - pushd build - cmake .. -DCMAKE_INSTALL_PREFIX=$PREFIX -DUSE_VALGRIND=NO -DCMAKE_BUILD_TYPE=${BUILD_TYPE} -DDISPATCH_TEST_TIMEOUT=600 -- cmake --build . --target install +- cmake --build . --target install -- -j $NPROC script: - pushd ../qpid-proton - echo $(echo "Current proton commit:") $(git rev-parse HEAD) "(${PROTON_VERSION})" - popd +# Workaround on macOS for PROTON-808 Binaries have their library locations stripped +- if [[ "$OSTYPE" == "darwin"* ]]; then install_name_tool -add_rpath $PREFIX/lib/. $PREFIX/lib/proton/bindings/python/_cproton.so; fi - ctest -V && if [ "$BUILD_TYPE" = "Coverage" ]; then cmake --build . --target coverage; fi - popd - mvn apache-rat:check diff --git a/macports.sh b/macports.sh new file mode 100644 index 0000000..4c4ed4c --- /dev/null +++ b/macports.sh @@ -0,0 +1,90 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +# Based on https://github.com/GiovanniBussi/macports-ci + +set -Exeuo pipefail + +export COLUMNS=80 + +MACPORTS_VERSION=2.5.4 +MACPORTS_PREFIX=/opt/local +MACPORTS_SYNC=tarball + +pushd "$(mktemp -d)" + +OSX_VERSION="$(sw_vers -productVersion | sed 's/\.[^\.]*$//')" + +if test "$OSX_VERSION" == 10.10 ; then + OSX_NAME=Yosemite +elif test "$OSX_VERSION" == 10.11 ; then + OSX_NAME=ElCapitan +elif test "$OSX_VERSION" == 10.12 ; then + OSX_NAME=Sierra +elif test "$OSX_VERSION" == 10.13 ; then + OSX_NAME=HighSierra +elif test "$OSX_VERSION" == 10.14 ; then + OSX_NAME=Mojave +else + echo "macports-ci: Unknown OSX version $OSX_VERSION" + exit 1 +fi + +echo "macports-ci: OSX version $OSX_VERSION $OSX_NAME" + +MACPORTS_PKG=MacPorts-${MACPORTS_VERSION}-${OSX_VERSION}-${OSX_NAME}.pkg + +URL="https://distfiles.macports.org/MacPorts" +URL="https://github.com/macports/macports-base/releases/download/v$MACPORTS_VERSION/" + +echo "macports-ci: Base URL is $URL" + +# download installer: +curl -LO $URL/$MACPORTS_PKG +# install: +sudo installer -verbose -pkg $MACPORTS_PKG -target / + +# update: +export PATH="$MACPORTS_PREFIX/bin:$PATH" + +i=1 +# run through a while to retry upon failure +while true +do + echo "macports-ci: Trying to selfupdate (iteration $i)" +# here I test for the presence of a known portfile +# this check confirms that ports were installed +# notice that port -N selfupdate && break is not sufficient as a test +# (sometime it returns a success even though ports have not been installed) +# for some misterious reasons, running without "-d" does not work in some case + sudo port -d -N selfupdate 2>&1 | grep -v DEBUG | awk '{if($1!="x")print}' + port info xdrfile > /dev/null && break || true + sleep 5 + i=$((i+1)) + if ((i>20)) ; then + echo "macports-ci: Failed after $i iterations" + exit 1 + fi +done + +echo "macports-ci: Selfupdate successful after $i iterations" + +dir="$PWD" +popd +sudo rm -rf $dir --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
