From d6254abc8a3ebec6a135b923951767bd97557de4 Mon Sep 17 00:00:00 2001 From: INADA Naoki Date: Tue, 3 May 2016 11:58:28 +0900 Subject: 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. --- appveyor.yml | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++++ build.cmd | 21 ++++++++++++++++++++ msgpack/_packer.pyx | 4 ++-- 3 files changed, 80 insertions(+), 2 deletions(-) create mode 100644 appveyor.yml create mode 100644 build.cmd diff --git a/appveyor.yml b/appveyor.yml new file mode 100644 index 0000000..02b4461 --- /dev/null +++ b/appveyor.yml @@ -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 diff --git a/build.cmd b/build.cmd new file mode 100644 index 0000000..243dc9a --- /dev/null +++ b/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/msgpack/_packer.pyx b/msgpack/_packer.pyx index 6392655..872465b 100644 --- a/msgpack/_packer.pyx +++ b/msgpack/_packer.pyx @@ -244,7 +244,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 ValueError cdef int ret = msgpack_pack_array(&self.pk, size) @@ -257,7 +257,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 ValueError cdef int ret = msgpack_pack_map(&self.pk, size) -- cgit v1.2.1 From 334dbe2a9652f43abdf27d978d9f4cdaf3f2a34d Mon Sep 17 00:00:00 2001 From: INADA Naoki Date: Thu, 21 Jul 2016 19:19:32 +0900 Subject: Enable Python35-x64 in AppVeyor --- appveyor.yml | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/appveyor.yml b/appveyor.yml index 02b4461..9e766c5 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -13,10 +13,7 @@ environment: - 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" + - PYTHON: "C:\\Python35-x64" install: # We need wheel installed to build wheels -- cgit v1.2.1 From b911b3c652e190e6942a610fb3389aaaf2ccf3cc Mon Sep 17 00:00:00 2001 From: INADA Naoki Date: Thu, 21 Jul 2016 19:32:00 +0900 Subject: Fix ext_hook call (#203) fixes #202 --- msgpack/unpack.h | 4 ++-- setup.py | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/msgpack/unpack.h b/msgpack/unpack.h index 92f4f11..da2cfb6 100644 --- a/msgpack/unpack.h +++ b/msgpack/unpack.h @@ -265,9 +265,9 @@ static inline int unpack_callback_ext(unpack_user* u, const char* base, const ch } // length also includes the typecode, so the actual data is length-1 #if PY_MAJOR_VERSION == 2 - py = PyObject_CallFunction(u->ext_hook, "(is#)", typecode, pos, length-1); + py = PyObject_CallFunction(u->ext_hook, "(is#)", (int)typecode, pos, (Py_ssize_t)length-1); #else - py = PyObject_CallFunction(u->ext_hook, "(iy#)", typecode, pos, length-1); + py = PyObject_CallFunction(u->ext_hook, "(iy#)", (int)typecode, pos, (Py_ssize_t)length-1); #endif if (!py) return -1; diff --git a/setup.py b/setup.py index 37729bd..1363586 100755 --- a/setup.py +++ b/setup.py @@ -20,7 +20,7 @@ except ImportError: def cythonize(src): sys.stderr.write("cythonize: %r\n" % (src,)) - cython_compiler.compile([src], cplus=True, emit_linenums=True) + cython_compiler.compile([src], cplus=True) def ensure_source(src): pyx = os.path.splitext(src)[0] + '.pyx' -- cgit v1.2.1