Use AppVeyor to build windows wheel (#188)

* Add AppVeyor support to build windows wheel
* Fix test_limits on 32bit environments
* Ignore Python35-x64 test fail for now
  Should be fixed in next version.
This commit is contained in:
INADA Naoki 2016-05-03 11:58:28 +09:00
parent 6b113a6fb3
commit ceb9635a3f
3 changed files with 80 additions and 2 deletions

57
appveyor.yml Normal file
View file

@ -0,0 +1,57 @@
environment:
matrix:
# For Python versions available on Appveyor, see
# http://www.appveyor.com/docs/installed-software#python
# The list here is complete (excluding Python 2.6, which
# isn't covered by this document) at the time of writing.
- PYTHON: "C:\\Python27"
- PYTHON: "C:\\Python34"
- PYTHON: "C:\\Python35"
- PYTHON: "C:\\Python27-x64"
- PYTHON: "C:\\Python34-x64"
DISTUTILS_USE_SDK: "1"
# Python35-x64 test fails with MemoryError
# TODO: investigate it
#- PYTHON: "C:\\Python35-x64"
install:
# We need wheel installed to build wheels
- "%PYTHON%\\python.exe -m pip install -U pip wheel pytest cython"
build: off
test_script:
# Put your test command here.
# If you don't need to build C extensions on 64-bit Python 3.3 or 3.4,
# you can remove "build.cmd" from the front of the command, as it's
# only needed to support those cases.
# 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.
- "build.cmd %PYTHON%\\python.exe setup.py build_ext -i"
- "build.cmd %PYTHON%\\python.exe setup.py install"
- "%PYTHON%\\python.exe -c \"import sys; print(hex(sys.maxsize))\""
- "%PYTHON%\\python.exe -c \"from msgpack import _packer, _unpacker\""
- "%PYTHON%\\Scripts\\py.test test"
- "build.cmd %PYTHON%\\python.exe setup.py bdist_wheel"
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
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.
# vim: set shiftwidth=2

21
build.cmd Normal file
View file

@ -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 %*

View file

@ -271,7 +271,7 @@ cdef class Packer(object):
msgpack_pack_ext(&self.pk, typecode, len(data))
msgpack_pack_raw_body(&self.pk, data, len(data))
def pack_array_header(self, size_t size):
def pack_array_header(self, long long size):
if size > (2**32-1):
raise PackValueError
cdef int ret = msgpack_pack_array(&self.pk, size)
@ -284,7 +284,7 @@ cdef class Packer(object):
self.pk.length = 0
return buf
def pack_map_header(self, size_t size):
def pack_map_header(self, long long size):
if size > (2**32-1):
raise PackValueError
cdef int ret = msgpack_pack_map(&self.pk, size)