Skip to content

Commit

Permalink
Merge pull request matplotlib#6442 from matthew-brett/dynamic-tkagg
Browse files Browse the repository at this point in the history
MRG: loading TCL / Tk symbols dynamically

cherry-pick of commit f3e5576

Conflicts resolved:
    .travis.yml
    appveyor.yml
    setupext.py
  • Loading branch information
efiring committed May 24, 2016
1 parent cab8cf7 commit 7069119
Show file tree
Hide file tree
Showing 5 changed files with 526 additions and 319 deletions.
4 changes: 4 additions & 0 deletions .travis.yml
Expand Up @@ -119,6 +119,10 @@ script:
# multiple processes
- python -c "from matplotlib import font_manager"
- |
echo Testing import of tkagg backend
MPLBACKEND="tkagg" python -c 'import matplotlib.pyplot as plt; print(plt.get_backend())'
echo Testing using $NPROC processes
echo The following args are passed to nose $NOSE_ARGS
if [[ $BUILD_DOCS == false ]]; then
export MPL_REPO_DIR=$PWD # needed for pep8-conformance test of the examples
gdb -return-child-result -batch -ex r -ex bt --args python tests.py -s --processes=$NPROC --process-timeout=300 $TEST_ARGS
Expand Down
136 changes: 136 additions & 0 deletions appveyor.yml
@@ -0,0 +1,136 @@
# With infos from
# http://tjelvarolsson.com/blog/how-to-continuously-test-your-python-code-on-windows-using-appveyor/
# https://packaging.python.org/en/latest/appveyor/
# https://github.com/rmcgibbo/python-appveyor-conda-example

# Backslashes in quotes need to be escaped: \ -> "\\"

environment:

global:
# SDK v7.0 MSVC Express 2008's SetEnv.cmd script will fail if the
# /E:ON and /V:ON options are not enabled in the batch script intepreter
# See: http://stackoverflow.com/a/13751649/163740
CMD_IN_ENV: "cmd /E:ON /V:ON /C obvci_appveyor_python_build_env.cmd"
# Workaround for https://github.com/conda/conda-build/issues/636
PYTHONIOENCODING: "UTF-8"

matrix:
# for testing purpose: numpy 1.8 on py2.7, for the rest use 1.10/latest
- TARGET_ARCH: "x86"
CONDA_PY: "27"
CONDA_NPY: "18"
PYTHON_VERSION: "2.7"
CONDA_INSTALL_LOCN: "C:\\Miniconda"
- TARGET_ARCH: "x64"
CONDA_PY: "27"
CONDA_NPY: "18"
PYTHON_VERSION: "2.7"
CONDA_INSTALL_LOCN: "C:\\Miniconda-x64"
- TARGET_ARCH: "x64"
CONDA_PY: "34"
CONDA_NPY: "110"
PYTHON_VERSION: "3.4"
CONDA_INSTALL_LOCN: "C:\\Miniconda3-x64"
- TARGET_ARCH: "x64"
CONDA_PY: "35"
CONDA_NPY: "110"
PYTHON_VERSION: "3.5"
CONDA_INSTALL_LOCN: "C:\\Miniconda35-x64"


# We always use a 64-bit machine, but can build x86 distributions
# with the PYTHON_ARCH variable (which is used by CMD_IN_ENV).
platform:
- x64

# all our python builds have to happen in tests_script...
build: false

init:
- cmd: "ECHO %PYTHON_VERSION% %CONDA_INSTALL_LOCN%"

install:
- cmd: set PATH=%CONDA_INSTALL_LOCN%;%CONDA_INSTALL_LOCN%\scripts;%PATH%;
- cmd: set PYTHONUNBUFFERED=1
- cmd: conda install -c http://conda.anaconda.org/pelson/channel/development --yes --quiet obvious-ci
- cmd: obvci_install_conda_build_tools.py
- cmd: conda config --set show_channel_urls yes
# for msinttypes
- cmd: conda config --add channels conda-forge
# this is now the downloaded conda...
- conda info -a

# Fix the appveyor build environment to work with conda build
# workaround for missing vcvars64.bat in py34 64bit
- cmd: copy ci\appveyor\vcvars64.bat "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64"
# workaround for conda build on py27 prefering the normal installed
# VS tools instead of the also installed Py27 VS compiler (which wouldn't need this workarounds...)
- cmd: copy "C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\vcvars64.bat" "C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\amd64\vcvarsamd64.bat"

# same things as the requirements in ci/conda_recipe/meta.yaml
- cmd: conda create -y -q -n test-environment python=%PYTHON_VERSION% pip setuptools numpy python-dateutil freetype msinttypes tk pyparsing pytz tornado libpng zlib pyqt cycler nose mock msvc_runtime
- activate test-environment
- cmd: echo %PYTHON_VERSION% %TARGET_ARCH%
- cmd: IF %PYTHON_VERSION% == 2.7 conda install -y functools32

# Let the install prefer the static builds of the libs
- set LIBRARY_LIB=%CONDA_DEFAULT_ENV%\Library\lib
- cmd: 'mkdir lib || cmd /c "exit /b 0"'
- copy %LIBRARY_LIB%\zlibstatic.lib lib\z.lib
- copy %LIBRARY_LIB%\libpng_static.lib lib\png.lib
- set MPLBASEDIRLIST=%CONDA_DEFAULT_ENV%\Library\;.
# enables the local freetype build
- copy ci\travis\setup.cfg .
# Show the installed packages + versions
- conda list

test_script:
# Now build the thing..
- '%CMD_IN_ENV% python setup.py develop'
# Test import of tkagg backend
- python -c "import matplotlib as m; m.use('tkagg'); import matplotlib.pyplot as plt; print(plt.get_backend())"
# tests
- python tests.py
# remove to get around libpng issue?
- python visual_tests.py

after_test:
# After the tests were a success, build packages (wheels and conda)

# Build the wheel
# Hide the output, the copied files really clutter the build log...
- cmd: '%CMD_IN_ENV% python setup.py bdist_wheel > NUL:'

# And now the conda build after a cleanup...
# cleanup build files so that they don't pollute the conda build but keep the wheel in dist...
- cmd: git clean -d -x -f -e dist/
# cleanup the environment so that the test-environment does not leak into the conda build...
- cmd: set MPLBASEDIRLIST=
- cmd: set LIBRARY_LIB=
- cmd: deactivate
- cmd: path
- cmd: where python
- cmd: '%CMD_IN_ENV% conda config --get channels'
# - cmd: '%CMD_IN_ENV% conda build .\ci\conda_recipe'

# Move the conda package into the dist directory, to register it
# as an "artifact" for Appveyor.
- cmd: 'copy /Y %CONDA_INSTALL_LOCN%\conda-bld\win-32\*.bz2 dist || cmd /c "exit /b 0"'
- cmd: 'copy /Y %CONDA_INSTALL_LOCN%\conda-bld\win-64\*.bz2 dist || cmd /c "exit /b 0"'
- cmd: dir dist\
- cmd: echo finished...

artifacts:
- path: dist\*
name: packages

- path: result_images\*
name: result_images
type: zip

on_failure:
- python visual_tests.py
- echo zipping images after a failure...
- 7z a result_images.zip result_images\ |grep -v "Compressing"
- appveyor PushArtifact result_images.zip

0 comments on commit 7069119

Please sign in to comment.