diff options
author | 2016-05-06 12:58:30 -0700 | |
---|---|---|
committer | 2016-05-07 13:01:14 -0700 | |
commit | b4e82f7897c8a840249f39f17bc9afb986206588 (patch) | |
tree | 0ad9a123f3aff26c6e27430102ca48a66bbb0e94 /tools/run_tests/build_artifact_python.bat | |
parent | 8c33c7442c79682d2e545820f5653cabf25fd07e (diff) |
Fix windows linkage in Python grpcio-tools
Diffstat (limited to 'tools/run_tests/build_artifact_python.bat')
-rw-r--r-- | tools/run_tests/build_artifact_python.bat | 29 |
1 files changed, 19 insertions, 10 deletions
diff --git a/tools/run_tests/build_artifact_python.bat b/tools/run_tests/build_artifact_python.bat index 342469bba8..fea0275426 100644 --- a/tools/run_tests/build_artifact_python.bat +++ b/tools/run_tests/build_artifact_python.bat @@ -41,7 +41,7 @@ copy /Y vsprojects\Release\grpc_dll.dll src\python\grpcio\grpc\_cython\_windows\ copy /Y vsprojects\x64\Release\grpc_dll.dll src\python\grpcio\grpc\_cython\_windows\grpc_c.64.python || goto :error -set PATH=C:\%1;C:\%1\scripts;%PATH% +set PATH=C:\%1;C:\%1\scripts;C:\msys64\mingw%2\bin;%PATH% pip install --upgrade six pip install --upgrade setuptools @@ -55,19 +55,28 @@ set GRPC_PYTHON_BUILD_WITH_CYTHON=1 python setup.py bdist_wheel @rem Build gRPC Python tools -set PATH=C:\msys64\mingw%2\bin;%PATH% -set CC=C:\msys64\mingw%2\bin\g++.exe -set CFLAGS=-fno-wrapv +@rem +@rem Because this is windows and *everything seems to hate Windows* we have to +@rem set all of these flags ourselves because Python won't help us (see the +@rem setup.py of the grpcio_tools project). +set GRPC_PYTHON_CFLAGS=-fno-wrapv -frtti -std=c++11 +@rem Further confusing things, MSYS2's mingw64 tries to dynamically link +@rem libgcc, libstdc++, and winpthreads. We have to override this or our +@rem extensions end up linking to MSYS2 DLLs, which the normal Python on +@rem Windows user won't have... and ON TOP OF THIS, there's MinGW's GCC default +@rem behavior of linking msvcrt.dll as the C runtime library, which we need to +@rem override so that Python's distutils doesn't link us against multiple C +@rem runtimes. +python -c "from distutils.cygwinccompiler import get_msvcr; print(get_msvcr()[0])" > temp.txt +set /p PYTHON_MSVCR=<temp.txt +set GRPC_PYTHON_LDFLAGS=-static-libgcc -static-libstdc++ -mcrtdll=%PYTHON_MSVCR% -static -lpthread python tools\distrib\python\make_grpcio_tools.py -@rem The following commands *must* be run with the right version of python -@rem otherwise the build get SNAFU'd (so we use the .exe suffix to invoke the python -@rem we set in the %PATH% variable above). if %2 == 32 ( - python.exe tools\distrib\python\grpcio_tools\setup.py build_ext -c mingw32 + python tools\distrib\python\grpcio_tools\setup.py build_ext -c mingw32 ) else ( - python.exe tools\distrib\python\grpcio_tools\setup.py build_ext -c mingw32 -DMS_WIN64 + python tools\distrib\python\grpcio_tools\setup.py build_ext -c mingw32 -DMS_WIN64 ) -python.exe tools\distrib\python\grpcio_tools\setup.py bdist_wheel +python tools\distrib\python\grpcio_tools\setup.py bdist_wheel mkdir artifacts xcopy /Y /I /S dist\* artifacts\ || goto :error |