diff --git a/.appveyor.yml b/.appveyor.yml new file mode 100644 index 0000000..62d8a54 --- /dev/null +++ b/.appveyor.yml @@ -0,0 +1,65 @@ +# adapted from https://packaging.python.org/en/latest/appveyor/ + + +environment: + # we tell Tox to use "twisted[windows]", to get pypiwin32 installed + #TWISTED_EXTRAS: "[windows]" + # that didn't work (it seems to work when I run it locally, but on appveyor + # it fails to install the pypiwin32 package). So don't bother telling + # Twisted to support windows: just install it ourselves. + EXTRA_DEPENDENCY: "pypiwin32" + matrix: + # For Python versions available on Appveyor, see + # http://www.appveyor.com/docs/installed-software#python + - PYTHON: "C:\\Python27" + - PYTHON: "C:\\Python27-x64" + - PYTHON: "C:\\Python33" + - PYTHON: "C:\\Python33-x64" + DISTUTILS_USE_SDK: "1" + - PYTHON: "C:\\Python34" + - PYTHON: "C:\\Python34-x64" + DISTUTILS_USE_SDK: "1" + - PYTHON: "C:\\Python35" + - PYTHON: "C:\\Python35-x64" + DISTUTILS_USE_SDK: "1" + +# tox-2.3.1 has a windows bug (#314), fixed in hg but not yet released. When +# the next release comes out, replace this with just: +# %PYTHON%\python.exe -m pip install wheel tox + +install: + - | + %PYTHON%\python.exe -m pip install -U pip virtualenv + %PYTHON%\python.exe -m pip install wheel "hg+https://bitbucket.org/hpk42/tox#egg=tox" + +# note: +# %PYTHON% has: python.exe +# %PYTHON%\Scripts has: pip.exe, tox.exe (and others installed by bare pip) + + +build: off + +test_script: + # Put your test command here. + # Note that you must use the environment variable %PYTHON% to refer to + # the interpreter you're using - Appveyor does not do anything special + # to put the Python evrsion you want to use on PATH. + - | + misc\windows-build.cmd %PYTHON%\Scripts\tox.exe -e py,meta + +after_test: + # This step builds your wheels. + # Again, you only need build.cmd if you're building C extensions for + # 64-bit Python 3.3/3.4. And you need to use %PYTHON% to get the correct + # interpreter + - | + misc\windows-build.cmd %PYTHON%\python.exe setup.py bdist_wheel + +artifacts: + # bdist_wheel puts your built wheel in the dist directory + - path: dist\* + +#on_success: +# You can use this step to upload your artifacts to a public website. +# See Appveyor's documentation for more details. Or you can simply +# access your wheels from the Appveyor "artifacts" tab for your build. diff --git a/misc/windows-build.cmd b/misc/windows-build.cmd new file mode 100644 index 0000000..243dc9a --- /dev/null +++ b/misc/windows-build.cmd @@ -0,0 +1,21 @@ +@echo off +:: To build extensions for 64 bit Python 3, we need to configure environment +:: variables to use the MSVC 2010 C++ compilers from GRMSDKX_EN_DVD.iso of: +:: MS Windows SDK for Windows 7 and .NET Framework 4 +:: +:: More details at: +:: https://github.com/cython/cython/wiki/64BitCythonExtensionsOnWindows + +IF "%DISTUTILS_USE_SDK%"=="1" ( + ECHO Configuring environment to build with MSVC on a 64bit architecture + ECHO Using Windows SDK 7.1 + "C:\Program Files\Microsoft SDKs\Windows\v7.1\Setup\WindowsSdkVer.exe" -q -version:v7.1 + CALL "C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.cmd" /x64 /release + SET MSSdk=1 + REM Need the following to allow tox to see the SDK compiler + SET TOX_TESTENV_PASSENV=DISTUTILS_USE_SDK MSSdk INCLUDE LIB +) ELSE ( + ECHO Using default MSVC build environment +) + +CALL %* diff --git a/tox.ini b/tox.ini index f58a124..4ed629b 100644 --- a/tox.ini +++ b/tox.ini @@ -13,14 +13,31 @@ skip_missing_interpreters = True # all builds with a copy of Twisted from git 'trunk' until Twisted-16.0.0 is # released and we can just depend on that. +# On windows we need "pypiwin32" installed. It's supposedly possible to make +# Twisted do this by depending upon "twisted[windows]" instead of just +# "twisted", but when I try this via Appveyor, the extra is ignored. +# git+https://github.com/twisted/twisted#egg=twisted{env:TWISTED_EXTRAS:} +# #twisted{env:TWISTED_EXTRAS:} +# So instead we have the .appveyor.yml set EXTRA_DEPENDENCY=pypiwin32. In +# other environments, this variable will be empty, and tox will ignore the +# blank value. + [testenv] deps = git+https://github.com/twisted/twisted#egg=twisted #twisted + {env:EXTRA_DEPENDENCY:} coverage commands = trial {posargs:wormhole} +# on windows, trial is installed as venv/bin/trial.py, not .exe, but (at +# least appveyor) adds .PY to $PATHEXT. So "trial wormhole" might work on +# windows, and certainly does on unix. To get "coverage run" to work, we need +# a script name (since "python -m twisted.scripts.trial" doesn't have a 'if +# __name__ == "__main__": run()' -style clause). The script name will vary on +# the platform. + [testenv:meta] deps = pyflakes