Browse Source

Fix python 3.5/3.6

Bo Yang 7 years ago
parent
commit
b93dd59d6f
2 changed files with 72 additions and 16 deletions
  1. 48 2
      appveyor.bat
  2. 24 14
      appveyor.yml

+ 48 - 2
appveyor.bat

@@ -1,29 +1,75 @@
 setlocal
 
-dir %MINGW%
 pip install wheel
 
 REM Checkout release commit
 cd %REPO_DIR%
 git checkout %BUILD_COMMIT%
 
-REM Build protobuf library
+REM ======================
+REM Build Protobuf Library
+REM ======================
+
 mkdir src\.libs
+
+IF %PYTHON_VERSION%==2.7 GOTO build_core_mingw
+IF %PYTHON_VERSION%==3.4 GOTO build_core_mingw
+IF %PYTHON_VERSION%==3.5 GOTO build_core_msvc
+IF %PYTHON_VERSION%==3.6 GOTO build_core_msvc
+
+:build_core_mingw
 pushd src\.libs
 cmake -G "%generator%" -Dprotobuf_BUILD_SHARED_LIBS=%BUILD_DLL% -Dprotobuf_UNICODE=%UNICODE% -DZLIB_ROOT=%ZLIB_ROOT% -Dprotobuf_BUILD_TESTS=OFF -D"CMAKE_MAKE_PROGRAM:PATH=%MINGW%/mingw32-make.exe" ../../cmake
 mingw32-make
+dir
+SET PATH=%cd%;%PATH%
+popd
+GOTO build_core_end
+
+:build_core_msvc
+mkdir vcprojects
+pushd vcprojects
+cmake -G "%generator%" -Dprotobuf_BUILD_SHARED_LIBS=%BUILD_DLL% -Dprotobuf_UNICODE=%UNICODE% -Dprotobuf_BUILD_TESTS=OFF ../cmake
+msbuild protobuf.sln /p:Platform=%vcplatform% /p:Configuration=Release /logger:"C:\Program Files\AppVeyor\BuildAgent\Appveyor.MSBuildLogger.dll"
+dir /s /b
 popd
+copy vcprojects\Release\libprotobuf.lib src\.libs\libprotobuf.a
+copy vcprojects\Release\libprotobuf-lite.lib src\.libs\libprotobuf-lite.a
+SET PATH=%cd%\vcprojects\Release;%PATH%
+dir vcprojects\Release
+GOTO build_core_end
 
+:build_core_end
+
+REM ======================
 REM Build python library
+REM ======================
+
 cd python
+
+REM https://github.com/Theano/Theano/issues/4926
 sed -i '/Wno-sign-compare/a \ \ \ \ extra_compile_args.append(\'-D_hypot=hypot\')' setup.py
 sed -i 's/\'-DPYTHON_PROTO2_CPP_IMPL_V2\'/\'-DPYTHON_PROTO2_CPP_IMPL_V2\',\'-D_hypot=hypot\'/g' setup.py
 
+REM https://github.com/tpaviot/pythonocc-core/issues/48
 IF NOT %PYTHON_ARCH%==64 GOTO no_win64_change
 sed -i '/Wno-sign-compare/a \ \ \ \ extra_compile_args.append(\'-DMS_WIN64\')' setup.py
 sed -i 's/\'-DPYTHON_PROTO2_CPP_IMPL_V2\'/\'-DPYTHON_PROTO2_CPP_IMPL_V2\',\'-DMS_WIN64\'/g' setup.py
 :no_win64_change
 
+REM MSVS default is dymanic
+IF NOT DEFINED vcplatform GOTO msvc_static_build_end
+sed -i '/Wno-sign-compare/a \ \ \ \ extra_compile_args.append(\'/MT\')' setup.py
+sed -i 's/\'-DPYTHON_PROTO2_CPP_IMPL_V2\'/\'-DPYTHON_PROTO2_CPP_IMPL_V2\',\'\/MT\'/g' setup.py
+:msvc_static_build_end
+
+REM MSVC doesn't recognize these options
+IF NOT DEFINED vcplatform GOTO msvc_remove_flags_end
+sed -i '/-Wno-write-strings/c\    extra_compile_args = []' setup.py
+sed -i '/-Wno-invalid-offsetof/d' setup.py
+sed -i '/-Wno-sign-compare/d' setup.py
+:msvc_remove_flags_end
+
 cat setup.py
 python setup.py bdist_wheel --cpp_implementation --compile_static_extension
 cd ..\..

+ 24 - 14
appveyor.yml

@@ -7,7 +7,6 @@ environment:
     REPO_DIR: protobuf
     PACKAGE_NAME: protobuf
     BUILD_COMMIT: v3.5.1
-    PROTOC_VERSION: 3.5.1
     MINGW_32: C:\mingw-w64\i686-6.3.0-posix-dwarf-rt_v5-rev1\mingw32\bin
     MINGW_64: C:\mingw-w64\x86_64-6.3.0-posix-seh-rt_v5-rev1\mingw64\bin
     BUILD_DLL: OFF
@@ -72,12 +71,6 @@ install:
     - python --version
     - python -c "import struct; print(struct.calcsize('P') * 8)"
 
-    # Install protoc
-    - curl -L -o protoc-%PROTOC_VERSION%.zip https://github.com/google/protobuf/releases/download/v%PROTOC_VERSION%/protoc-%PROTOC_VERSION%-win32.zip
-    - 7z x protoc-%PROTOC_VERSION%.zip
-    - del /Q protoc-%PROTOC_VERSION%.zip
-    - SET PATH=%cd%\bin;%PATH%
-
     # Install zlib
     - mkdir zlib
     - curl -L -o zlib.zip http://www.winimage.com/zLibDll/zlib123dll.zip
@@ -89,15 +82,32 @@ install:
     - del /Q zlib-src.zip
 
 before_build:
+    - if %PYTHON%==C:\Python35 set generator=Visual Studio 14
+    - if %PYTHON%==C:\Python35 set vcplatform=Win32
+
+    - if %PYTHON%==C:\Python35-x64 set generator=Visual Studio 14 Win64
+    - if %PYTHON%==C:\Python35-x64 set vcplatform=x64
+
+    - if %PYTHON%==C:\Python36 set generator=Visual Studio 14
+    - if %PYTHON%==C:\Python36 set vcplatform=Win32
+
+    - if %PYTHON%==C:\Python36-x64 set generator=Visual Studio 14 Win64
+    - if %PYTHON%==C:\Python36-x64 set vcplatform=x64
+
+    - if %PYTHON%==C:\Python27 set MINGW=%MINGW_32%
+    - if %PYTHON%==C:\Python27-x64 set MINGW=%MINGW_64%
+    - if %PYTHON%==C:\Python34 set MINGW=%MINGW_32%
+    - if %PYTHON%==C:\Python34-x64 set MINGW=%MINGW_64%
+
     - if %PYTHON_VERSION%==2.7 set generator=MSYS Makefiles
+    - if %PYTHON_VERSION%==2.7 set PATH=%MINGW%;%PATH%
+    - if %PYTHON_VERSION%==2.7 echo [build] > %PYTHON%\Lib\distutils\distutils.cfg
+    - if %PYTHON_VERSION%==2.7 echo.compiler = mingw32 >> %PYTHON%\Lib\distutils\distutils.cfg
+
     - if %PYTHON_VERSION%==3.4 set generator=MSYS Makefiles
-    - if %PYTHON_VERSION%==3.5 set generator=Visual Studio 14
-    - if %PYTHON_VERSION%==3.6 set generator=Visual Studio 14
-    - if %PYTHON_ARCH%==32 set MINGW=%MINGW_32%
-    - if %PYTHON_ARCH%==64 set MINGW=%MINGW_64%
-    - set PATH=%MINGW%;%PATH%
-    - echo [build] > %PYTHON%\Lib\distutils\distutils.cfg
-    - echo.compiler = mingw32 >> %PYTHON%\Lib\distutils\distutils.cfg
+    - if %PYTHON_VERSION%==3.4 set PATH=%MINGW%;%PATH%
+    - if %PYTHON_VERSION%==3.4 echo [build] > %PYTHON%\Lib\distutils\distutils.cfg
+    - if %PYTHON_VERSION%==3.4 echo.compiler = mingw32 >> %PYTHON%\Lib\distutils\distutils.cfg
 
 build_script:
     - CALL appveyor.bat