| # | 
 | # 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.6.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 |