Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 436bbdb

Browse filesBrowse files
committed
CI: test in windows and build packages
1 parent 238de49 commit 436bbdb
Copy full SHA for 436bbdb
Expand file treeCollapse file tree

16 files changed

+627
-0
lines changed

‎appveyor.yml

Copy file name to clipboard
+91Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
# With infos from
2+
# http://tjelvarolsson.com/blog/how-to-continuously-test-your-python-code-on-windows-using-appveyor/
3+
# https://packaging.python.org/en/latest/appveyor/
4+
# https://github.com/rmcgibbo/python-appveyor-conda-example
5+
6+
7+
environment:
8+
9+
global:
10+
# SDK v7.0 MSVC Express 2008's SetEnv.cmd script will fail if the
11+
# /E:ON and /V:ON options are not enabled in the batch script intepreter
12+
# See: http://stackoverflow.com/a/13751649/163740
13+
CMD_IN_ENV: "cmd /E:ON /V:ON /C .\\ci\\appveyor\\run_with_env.cmd"
14+
15+
matrix:
16+
- PYTHON: "C:\\Python35_64"
17+
PYTHON_VERSION: "3.5"
18+
PYTHON_ARCH: "64"
19+
CONDA_PY: "35"
20+
CONDA_NPY: "18"
21+
22+
- PYTHON: "C:\\Python27_32"
23+
PYTHON_VERSION: "2.7"
24+
PYTHON_ARCH: "32"
25+
CONDA_PY: "27"
26+
CONDA_NPY: "18"
27+
28+
# We always use a 64-bit machine, but can build x86 distributions
29+
# with the PYTHON_ARCH variable (which is used by CMD_IN_ENV).
30+
platform:
31+
- x64
32+
33+
# all our python builds have to happen in tests_script...
34+
build: false
35+
36+
init:
37+
- "ECHO %PYTHON_VERSION% %MINICONDA%"
38+
39+
install:
40+
- powershell .\\ci\\appveyor\\install.ps1
41+
- "SET PATH=%PYTHON%;%PYTHON%\\Scripts;%PATH%"
42+
- cmd: conda config --set show_channel_urls yes
43+
# for msinttypes
44+
- cmd: conda config --add channels conda-forge
45+
# this is now the downloaded conda...
46+
- conda info -a
47+
# same things as in tools/conda_recipe
48+
- cmd: conda create -y -q -n test-environment python=%PYTHON_VERSION% pip setuptools numpy python-dateutil freetype=2.4 msinttypes pyparsing pytz tornado libpng zlib pyqt cycler nose mock
49+
- activate test-environment
50+
# This is needed for the installer to find the dlls...
51+
- set LIBRARY_LIB=%CONDA_DEFAULT_ENV%\\Library\\lib
52+
- dir %LIBRARY_LIB%
53+
- mkdir libs
54+
- copy %LIBRARY_LIB%\\zlibstatic.lib libs\\z.lib
55+
- copy %LIBRARY_LIB%\\zlibstatic.lib libs\\z.lib
56+
- copy %LIBRARY_LIB%\\libpng_static.lib libs\\png.lib
57+
- set LIB=%LIBRARY_LIB%;.\libs
58+
- set LIBPATH=%LIBRARY_LIB%;.\libs
59+
# the ; is needed as without the path gets a space in the end which lets the test for freetfail
60+
- set INCLUDE=%CONDA_DEFAULT_ENV%\\Library\\include;
61+
- set CPLUS_INCLUDE_PATH=%INCLUDE%
62+
- dir %INCLUDE%
63+
# Show the installed packages + versions
64+
- conda list
65+
66+
test_script:
67+
# Now build the thing..
68+
- pip install -e .
69+
# tests
70+
# for now, just let them pass to get the after_test parts...
71+
# - 'python tests.py || cmd /c "exit /b 0"'
72+
73+
after_test:
74+
# After the tests were a success, build packages (wheels and conda)
75+
76+
# There is a bug in wheels which prevents building wheels when the package uses namespaces
77+
#- cmd: '%CMD_IN_ENV% python setup.py bdist_wheel'
78+
# Note also that our setup.py script, which is called by conda-build, writes
79+
# a __conda_version__.txt file, so the version number on the binary package
80+
# is set dynamically. This unfortunately mean that conda build --output
81+
# doesn't really work.
82+
- cmd: '%CMD_IN_ENV% conda config --get channels'
83+
- cmd: '%CMD_IN_ENV% conda build .\\ci\\conda_recipe'
84+
# Move the conda package into the dist directory, to register it
85+
# as an "artifact" for Appveyor.
86+
- cmd: 'copy /Y %PYTHON%\conda-bld\win-32\*.bz2 dist || cmd /c "exit /b 0"'
87+
- cmd: 'copy /Y %PYTHON%\conda-bld\win-64\*.bz2 dist || cmd /c "exit /b 0"'
88+
89+
artifacts:
90+
- path: dist\*
91+
name: packages

‎ci/appveyor/install.ps1

Copy file name to clipboard
+96Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
# Sample script to install Miniconda under Windows
2+
# Authors: Olivier Grisel, Jonathan Helmus and Kyle Kastner, Robert McGibbon
3+
# License: CC0 1.0 Universal: http://creativecommons.org/publicdomain/zero/1.0/
4+
5+
$MINICONDA_URL = "http://repo.continuum.io/miniconda/"
6+
7+
8+
function DownloadMiniconda ($python_version, $platform_suffix) {
9+
$webclient = New-Object System.Net.WebClient
10+
if ($python_version -match "3.4") {
11+
$filename = "Miniconda3-latest-Windows-" + $platform_suffix + ".exe"
12+
} else {
13+
$filename = "Miniconda-latest-Windows-" + $platform_suffix + ".exe"
14+
}
15+
$url = $MINICONDA_URL + $filename
16+
17+
$basedir = $pwd.Path + "\"
18+
$filepath = $basedir + $filename
19+
if (Test-Path $filename) {
20+
Write-Host "Reusing" $filepath
21+
return $filepath
22+
}
23+
24+
# Download and retry up to 3 times in case of network transient errors.
25+
Write-Host "Downloading" $filename "from" $url
26+
$retry_attempts = 2
27+
for($i=0; $i -lt $retry_attempts; $i++){
28+
try {
29+
$webclient.DownloadFile($url, $filepath)
30+
break
31+
}
32+
Catch [Exception]{
33+
Start-Sleep 1
34+
}
35+
}
36+
if (Test-Path $filepath) {
37+
Write-Host "File saved at" $filepath
38+
} else {
39+
# Retry once to get the error message if any at the last try
40+
$webclient.DownloadFile($url, $filepath)
41+
}
42+
return $filepath
43+
}
44+
45+
46+
function InstallMiniconda ($python_version, $architecture, $python_home) {
47+
Write-Host "Installing Python" $python_version "for" $architecture "bit architecture to" $python_home
48+
if (Test-Path $python_home) {
49+
Write-Host $python_home "already exists, skipping."
50+
return $false
51+
}
52+
if ($architecture -match "32") {
53+
$platform_suffix = "x86"
54+
} else {
55+
$platform_suffix = "x86_64"
56+
}
57+
58+
$filepath = DownloadMiniconda $python_version $platform_suffix
59+
Write-Host "Installing" $filepath "to" $python_home
60+
$install_log = $python_home + ".log"
61+
$args = "/S /D=$python_home"
62+
Write-Host $filepath $args
63+
Start-Process -FilePath $filepath -ArgumentList $args -Wait -Passthru
64+
if (Test-Path $python_home) {
65+
Write-Host "Python $python_version ($architecture) installation complete"
66+
} else {
67+
Write-Host "Failed to install Python in $python_home"
68+
Get-Content -Path $install_log
69+
Exit 1
70+
}
71+
}
72+
73+
74+
function InstallCondaPackages ($python_home, $spec) {
75+
$conda_path = $python_home + "\Scripts\conda.exe"
76+
$args = "install --yes " + $spec
77+
Write-Host ("conda " + $args)
78+
Start-Process -FilePath "$conda_path" -ArgumentList $args -Wait -Passthru
79+
}
80+
81+
function UpdateConda ($python_home) {
82+
$conda_path = $python_home + "\Scripts\conda.exe"
83+
Write-Host "Updating conda..."
84+
$args = "update --yes conda"
85+
Write-Host $conda_path $args
86+
Start-Process -FilePath "$conda_path" -ArgumentList $args -Wait -Passthru
87+
}
88+
89+
90+
function main () {
91+
InstallMiniconda $env:PYTHON_VERSION $env:PYTHON_ARCH $env:PYTHON
92+
UpdateConda $env:PYTHON
93+
InstallCondaPackages $env:PYTHON "conda-build jinja2 anaconda-client"
94+
}
95+
96+
main

‎ci/appveyor/run_with_env.cmd

Copy file name to clipboard
+47Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
:: To build extensions for 64 bit Python 3, we need to configure environment
2+
:: variables to use the MSVC 2010 C++ compilers from GRMSDKX_EN_DVD.iso of:
3+
:: MS Windows SDK for Windows 7 and .NET Framework 4 (SDK v7.1)
4+
::
5+
:: To build extensions for 64 bit Python 2, we need to configure environment
6+
:: variables to use the MSVC 2008 C++ compilers from GRMSDKX_EN_DVD.iso of:
7+
:: MS Windows SDK for Windows 7 and .NET Framework 3.5 (SDK v7.0)
8+
::
9+
:: 32 bit builds do not require specific environment configurations.
10+
::
11+
:: Note: this script needs to be run with the /E:ON and /V:ON flags for the
12+
:: cmd interpreter, at least for (SDK v7.0)
13+
::
14+
:: More details at:
15+
:: https://github.com/cython/cython/wiki/64BitCythonExtensionsOnWindows
16+
:: http://stackoverflow.com/a/13751649/163740
17+
::
18+
:: Author: Olivier Grisel
19+
:: License: CC0 1.0 Universal: http://creativecommons.org/publicdomain/zero/1.0/
20+
@ECHO OFF
21+
22+
SET COMMAND_TO_RUN=%*
23+
SET WIN_SDK_ROOT=C:\Program Files\Microsoft SDKs\Windows
24+
25+
SET MAJOR_PYTHON_VERSION="%PYTHON_VERSION:~0,1%"
26+
IF %MAJOR_PYTHON_VERSION% == "2" (
27+
SET WINDOWS_SDK_VERSION="v7.0"
28+
) ELSE IF %MAJOR_PYTHON_VERSION% == "3" (
29+
SET WINDOWS_SDK_VERSION="v7.1"
30+
) ELSE (
31+
ECHO Unsupported Python version: "%MAJOR_PYTHON_VERSION%"
32+
EXIT 1
33+
)
34+
35+
IF "%PYTHON_ARCH%"=="64" (
36+
ECHO Configuring Windows SDK %WINDOWS_SDK_VERSION% for Python %MAJOR_PYTHON_VERSION% on a 64 bit architecture
37+
SET DISTUTILS_USE_SDK=1
38+
SET MSSdk=1
39+
"%WIN_SDK_ROOT%\%WINDOWS_SDK_VERSION%\Setup\WindowsSdkVer.exe" -q -version:%WINDOWS_SDK_VERSION%
40+
"%WIN_SDK_ROOT%\%WINDOWS_SDK_VERSION%\Bin\SetEnv.cmd" /x64 /release
41+
ECHO Executing: %COMMAND_TO_RUN%
42+
call %COMMAND_TO_RUN% || EXIT 1
43+
) ELSE (
44+
ECHO Using default MSVC build environment for 32 bit architecture
45+
ECHO Executing: %COMMAND_TO_RUN%
46+
call %COMMAND_TO_RUN% || EXIT 1
47+
)

‎ci/conda_recipe/README.md

Copy file name to clipboard
+3Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
# conda package
2+
3+
Up to now, this is mainly used to build a test conda package on windows on appveyor.

‎ci/conda_recipe/bld.bat

Copy file name to clipboard
+26Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
mkdir lib
2+
copy %LIBRARY_LIB%\zlibstatic.lib lib\z.lib
3+
if errorlevel 1 exit 1
4+
copy %LIBRARY_LIB%\libpng_static.lib lib\png.lib
5+
if errorlevel 1 exit 1
6+
7+
set LIB=%LIBRARY_LIB%;.\lib
8+
set LIBPATH=%LIBRARY_LIB%;.\lib
9+
set INCLUDE=%LIBRARY_INC%
10+
11+
copy setup.cfg.template setup.cfg
12+
if errorlevel 1 exit 1
13+
14+
python setup.py install
15+
if errorlevel 1 exit 1
16+
17+
rd /s /q %SP_DIR%\dateutil
18+
rd /s /q %SP_DIR%\numpy
19+
20+
if "%ARCH%"=="64" (
21+
set PLAT=win-amd64
22+
) else (
23+
set PLAT=win32
24+
)
25+
26+
copy C:\Tcl%ARCH%\bin\t*.dll %SP_DIR%\matplotlib-%PKG_VERSION%-py%PY_VER%-%PLAT%.egg\matplotlib\backends

‎ci/conda_recipe/build.sh

Copy file name to clipboard
+23Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
#!/bin/bash
2+
3+
if [ `uname` == Linux ]; then
4+
pushd $PREFIX/lib
5+
ln -s libtcl8.5.so libtcl.so
6+
ln -s libtk8.5.so libtk.so
7+
popd
8+
fi
9+
10+
if [ `uname` == Darwin ]; then
11+
sed s:'#ifdef WITH_NEXT_FRAMEWORK':'#if 1':g -i src/_macosx.m
12+
fi
13+
14+
cp setup.cfg.template setup.cfg || exit 1
15+
16+
sed s:/usr/local:$PREFIX:g -i setupext.py
17+
18+
$PYTHON setup.py install
19+
20+
rm -rf $SP_DIR/PySide
21+
rm -rf $SP_DIR/__pycache__
22+
rm -rf $PREFIX/bin/nose*
23+

‎ci/conda_recipe/cfg.patch

Copy file name to clipboard
+13Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
diff --git setup.cfg.template setup.cfg.template
2+
index ba4cde3..8d8b7c5 100644
3+
--- setup.cfg.template
4+
+++ setup.cfg.template
5+
@@ -63,7 +63,7 @@
6+
#macosx = auto
7+
#pyside = auto
8+
#qt4agg = auto
9+
-#tkagg = auto
10+
+tkagg = True
11+
#windowing = auto
12+
#wxagg = auto
13+

‎ci/conda_recipe/cfg_notests.patch

Copy file name to clipboard
+13Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
diff --git setup.cfg.template setup.cfg.template
2+
index 09fd92f..2085832 100644
3+
--- setup.cfg.template
4+
+++ setup.cfg.template
5+
@@ -18,7 +18,7 @@
6+
# optional. They are all installed by default, but they may be turned
7+
# off here.
8+
#
9+
-#tests = True
10+
+tests = False
11+
#sample_data = True
12+
#toolkits = True
13+
# Tests for the toolkits are only automatically installed

‎ci/conda_recipe/cfg_qt4agg.patch

Copy file name to clipboard
+11Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
diff --git setup.cfg.template setup.cfg.template
2+
index 8af8b6d..4e4f9d2 100644
3+
--- setup.cfg.template
4+
+++ setup.cfg.template
5+
@@ -78,5 +78,5 @@
6+
# if you have disabled the relevent extension modules. Agg will be used
7+
# by default.
8+
#
9+
-#backend = Agg
10+
+backend = Qt4Agg
11+
#

‎ci/conda_recipe/meta.yaml

Copy file name to clipboard
+53Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
# stolen from https://github.com/conda/conda-recipes/tree/master/matplotlib
2+
3+
package:
4+
name: matplotlib-test
5+
version: 1.5.0.9
6+
7+
source:
8+
path: ../../
9+
10+
patches:
11+
- setupext.patch
12+
- cfg.patch
13+
- cfg_notests.patch
14+
- cfg_qt4agg.patch [not osx]
15+
- rctmp_pyside.patch [not osx]
16+
- osx-tk.patch [osx]
17+
18+
requirements:
19+
build:
20+
- python
21+
- setuptools
22+
- numpy x.x
23+
- python-dateutil
24+
- freetype
25+
- pyparsing
26+
- pytz
27+
- py2cairo [linux and py2k]
28+
- tornado
29+
- libpng >=2.5,<2.6
30+
- zlib [win]
31+
- msinttypes [win] # this package is from the conda-forge channel!
32+
- pyqt [not osx]
33+
- cycler
34+
35+
run:
36+
- python
37+
- numpy x.x
38+
- python-dateutil
39+
- freetype [unix]
40+
- pytz
41+
- pyparsing
42+
- py2cairo [linux and py2k]
43+
- libpng [unix]
44+
- pyqt [not osx]
45+
46+
test:
47+
requires:
48+
- nose
49+
- mock
50+
51+
about:
52+
home: http://matplotlib.sourceforge.net/
53+
license: PSF-based (http://matplotlib.sourceforge.net/users/license.html)

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.