Skip to content

Backport CI fixes to v3.3.x #18850

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
57 changes: 28 additions & 29 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,7 @@ matrix:
env:
- PRE=--pre
- os: osx
osx_image: xcode9
language: generic # https://github.com/travis-ci/travis-ci/issues/2312
only: master
cache:
Expand All @@ -101,26 +102,15 @@ matrix:
allow_failures:
- python: "nightly"

before_install: |
before_install:
- |
# Install OS dependencies and set up ccache
case "$TRAVIS_OS_NAME" in
linux)
export PATH=/usr/lib/ccache:$PATH
;;
osx)
set -e
ci/silence brew update
brew uninstall numpy gdal postgis
brew unlink python@2
brew install python || brew upgrade python
brew install ffmpeg imagemagick mplayer ccache
hash -r
which python
python --version
set +e
# We could install ghostscript and inkscape here to test svg and pdf
# but this makes the test time really long.
# brew install ghostscript inkscape
export PATH=/usr/local/opt/python/libexec/bin:/usr/local/opt/ccache/libexec:$PATH
ci/osx-deps
;;
esac

Expand All @@ -143,19 +133,28 @@ install:
# install was successful by trying to import the toolkit (sometimes, the
# install appears to be successful but shared libraries cannot be loaded at
# runtime, so an actual import is a better check).
python -mpip install --upgrade pycairo cairocffi>=0.8
python -mpip install --upgrade PyGObject &&
python -c 'import gi; gi.require_version("Gtk", "3.0"); from gi.repository import Gtk' &&
echo 'PyGObject is available' ||
echo 'PyGObject is not available'
python -mpip install --upgrade pyqt5 &&
python -c 'import PyQt5.QtCore' &&
echo 'PyQt5 is available' ||
echo 'PyQt5 is not available'
python -mpip install --upgrade pyside2 &&
python -c 'import PySide2.QtCore' &&
echo 'PySide2 is available' ||
echo 'PySide2 is not available'

# PyGObject, pycairo, and cariocffi do not install on OSX 10.12

# There are not functioning wheels available for OSX 10.12 (as of
# Sept 2020) for either pyqt5 (there are only wheels for 10.13+)
# or pyside2 (the latest version (5.13.2) with 10.12 wheels has a
# fatal to us bug, it was fixed in 5.14.0 which has 10.13 wheels)
if [[ $TRAVIS_OS_NAME != 'osx' ]]; then
python -mpip install --upgrade pycairo cairocffi>=0.8
python -mpip install --upgrade PyGObject &&
python -c 'import gi; gi.require_version("Gtk", "3.0"); from gi.repository import Gtk' &&
echo 'PyGObject is available' ||
echo 'PyGObject is not available'
python -mpip install --upgrade pyqt5 &&
python -c 'import PyQt5.QtCore' &&
echo 'PyQt5 is available' ||
echo 'PyQt5 is not available'
python -mpip install --upgrade pyside2 &&
python -c 'import PySide2.QtCore' &&
echo 'PySide2 is available' ||
echo 'PySide2 is not available'
fi
python -mpip install --upgrade \
-f https://extras.wxpython.org/wxPython4/extras/linux/gtk3/ubuntu-16.04 \
wxPython &&
Expand All @@ -169,7 +168,7 @@ install:
export CPPFLAGS=--coverage
fi
- |
python -mpip install -ve . # Install Matplotlib.
python -mpip install -e . # Install Matplotlib.
- |
if [[ $TRAVIS_OS_NAME != 'osx' ]]; then
unset CPPFLAGS
Expand Down
65 changes: 65 additions & 0 deletions ci/osx-deps
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
#!/bin/bash

set -euo pipefail
cache="$HOME"/.cache/matplotlib

fold_start() {
key=$1
title=$2
echo -e "travis_fold:start:$key\e[2K"
echo -e "travis_time:start:$key\e[2K"
tick="$(date +%s)"
echo "$title"
}

fold_end() {
key=$1
tock="$(date +%s)"
nano=000000000
echo -e "travis_time:end:$key:start=$tick$nano,finish=$tock$nano,duration=$((tock - tick))$nano\e[2K"
echo -e "travis_fold:end:$key\e[2K"
}

cached_download() {
file=$1
url=$2
shasum=$3
path="$cache/$file"
if [[ ! -f "$path"
|| "$(shasum -a 256 "$path" | awk '{print $1}')" != "$shasum" ]]
then
curl -L -o "$path" "$url"
fi
}

fold_start Python "Install Python 3.8 from python.org"
cached_download python-3.8.5-macosx10.9.pkg \
https://www.python.org/ftp/python/3.8.5/python-3.8.5-macosx10.9.pkg \
e27c5a510c10f830084fb9c60b9e9aa8719d92e4537a80e6b4252c02396f0d29
sudo installer -package "$cache"/python-3.8.5-macosx10.9.pkg -target /
sudo ln -s /usr/local/bin/python3 /usr/local/bin/python
hash -r
fold_end Python

fold_start ccache 'Install ccache (compile it ourselves)'
cached_download ccache-3.7.11.tar.xz \
https://github.com/ccache/ccache/releases/download/v3.7.11/ccache-3.7.11.tar.xz \
8d450208099a4d202bd7df87caaec81baee20ce9dd62da91e9ea7b95a9072f68
tar xf "$cache"/ccache-3.7.11.tar.xz
pushd ccache-3.7.11
./configure --prefix=/usr/local
make -j2
make install
popd
for compiler in clang clang++ cc gcc c++ g++; do
ln -sf ccache /usr/local/bin/$compiler
done
fold_end ccache

fold_start freetype 'Install freetype (just unpack into the build directory)'
cached_download freetype-2.6.1.tar.gz \
https://download.savannah.gnu.org/releases/freetype/freetype-2.6.1.tar.gz \
0a3c7dfbda6da1e8fce29232e8e96d987ababbbf71ebc8c75659e4132c367014
mkdir -p build
tar -x -C build -f "$cache"/freetype-2.6.1.tar.gz
fold_end freetype