Issue #24986: Allow building Python without external libraries on Windows
This modifies the behavior of the '-e' flag to PCbuild\build.bat: when '-e' is not supplied, no attempt will be made to build extension modules that require external libraries, even if the external libraries are present. Also adds '--no-<module>' flags to PCbuild\build.bat, where '<module>' is one of 'ssl', 'tkinter', or 'bsddb', to allow skipping just those modules (if '-e' is given).
This commit is contained in:
parent
e74fe18ebb
commit
b27f3c3e20
|
@ -62,6 +62,12 @@ Tests
|
|||
- PCbuild\rt.bat now accepts an unlimited number of arguments to pass along
|
||||
to regrtest.py. Previously there was a limit of 9.
|
||||
|
||||
Build
|
||||
-----
|
||||
|
||||
- Issue #24986: It is now possible to build Python on Windows without errors
|
||||
when external libraries are not available.
|
||||
|
||||
|
||||
What's New in Python 3.5.0 release candidate 3?
|
||||
===============================================
|
||||
|
|
|
@ -18,12 +18,19 @@ echo. -V Display version information for the current build
|
|||
echo. -r Target Rebuild instead of Build
|
||||
echo. -d Set the configuration to Debug
|
||||
echo. -e Build external libraries fetched by get_externals.bat
|
||||
echo. Extension modules that depend on external libraries will not attempt
|
||||
echo. to build if this flag is not present
|
||||
echo. -m Enable parallel build (enabled by default)
|
||||
echo. -M Disable parallel build
|
||||
echo. -v Increased output messages
|
||||
echo. -k Attempt to kill any running Pythons before building (usually done
|
||||
echo. automatically by the pythoncore project)
|
||||
echo.
|
||||
echo.Available flags to avoid building certain modules.
|
||||
echo.These flags have no effect if '-e' is not given:
|
||||
echo. --no-ssl Do not attempt to build _ssl
|
||||
echo. --no-tkinter Do not attempt to build Tkinter
|
||||
echo.
|
||||
echo.Available arguments:
|
||||
echo. -c Release ^| Debug ^| PGInstrument ^| PGUpdate
|
||||
echo. Set the configuration (default: Release)
|
||||
|
@ -51,12 +58,21 @@ if "%~1"=="-p" (set platf=%2) & shift & shift & goto CheckOpts
|
|||
if "%~1"=="-r" (set target=Rebuild) & shift & goto CheckOpts
|
||||
if "%~1"=="-t" (set target=%2) & shift & shift & goto CheckOpts
|
||||
if "%~1"=="-d" (set conf=Debug) & shift & goto CheckOpts
|
||||
if "%~1"=="-e" call "%dir%get_externals.bat" & shift & goto CheckOpts
|
||||
if "%~1"=="-m" (set parallel=/m) & shift & goto CheckOpts
|
||||
if "%~1"=="-M" (set parallel=) & shift & goto CheckOpts
|
||||
if "%~1"=="-v" (set verbose=/v:n) & shift & goto CheckOpts
|
||||
if "%~1"=="-k" (set kill=true) & shift & goto CheckOpts
|
||||
if "%~1"=="-V" shift & goto Version
|
||||
rem These use the actual property names used by MSBuild. We could just let
|
||||
rem them in through the environment, but we specify them on the command line
|
||||
rem anyway for visibility so set defaults after this
|
||||
if "%~1"=="-e" (set IncludeExternals=true) & call "%dir%get_externals.bat" & shift & goto CheckOpts
|
||||
if "%~1"=="--no-ssl" (set IncludeSSL=false) & shift & goto CheckOpts
|
||||
if "%~1"=="--no-tkinter" (set IncludeTkinter=false) & shift & goto CheckOpts
|
||||
|
||||
if "%IncludeExternals%"=="" set IncludeExternals=false
|
||||
if "%IncludeSSL%"=="" set IncludeSSL=true
|
||||
if "%IncludeTkinter%"=="" set IncludeTkinter=true
|
||||
|
||||
if "%platf%"=="x64" (set vs_platf=x86_amd64)
|
||||
|
||||
|
@ -71,7 +87,11 @@ rem Call on MSBuild to do the work, echo the command.
|
|||
rem Passing %1-9 is not the preferred option, but argument parsing in
|
||||
rem batch is, shall we say, "lackluster"
|
||||
echo on
|
||||
msbuild "%dir%pcbuild.proj" /t:%target% %parallel% %verbose% /p:Configuration=%conf% /p:Platform=%platf% %1 %2 %3 %4 %5 %6 %7 %8 %9
|
||||
msbuild "%dir%pcbuild.proj" /t:%target% %parallel% %verbose%^
|
||||
/p:Configuration=%conf% /p:Platform=%platf%^
|
||||
/p:IncludeExternals=%IncludeExternals%^
|
||||
/p:IncludeSSL=%IncludeSSL% /p:IncludeTkinter=%IncludeTkinter%^
|
||||
%1 %2 %3 %4 %5 %6 %7 %8 %9
|
||||
|
||||
@goto :eof
|
||||
|
||||
|
|
|
@ -5,8 +5,10 @@
|
|||
<Platform Condition="'$(Platform)' == ''">Win32</Platform>
|
||||
<Configuration Condition="'$(Configuration)' == ''">Release</Configuration>
|
||||
<IncludeExtensions Condition="'$(IncludeExtensions)' == ''">true</IncludeExtensions>
|
||||
<IncludeExternals Condition="'$(IncludeExternals)' == ''">true</IncludeExternals>
|
||||
<IncludeTests Condition="'$(IncludeTest)' == ''">true</IncludeTests>
|
||||
<IncludeSSL Condition="'$(IncludeSSL)' == ''">true</IncludeSSL>
|
||||
<IncludeTkinter Condition="'$(IncludeTkinter)' == ''">true</IncludeTkinter>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemDefinitionGroup>
|
||||
|
@ -25,7 +27,7 @@
|
|||
<!--
|
||||
Parallel build is explicitly disabled for this project because it
|
||||
causes many conflicts between pythoncore and projects that depend
|
||||
in pythoncore. Once the core DLL has been built, subsequent
|
||||
on pythoncore. Once the core DLL has been built, subsequent
|
||||
projects will be built in parallel.
|
||||
-->
|
||||
<Projects Include="pythoncore.vcxproj">
|
||||
|
@ -40,10 +42,14 @@
|
|||
<!-- _freeze_importlib -->
|
||||
<Projects Include="_freeze_importlib.vcxproj" />
|
||||
<!-- Extension modules -->
|
||||
<ExtensionModules Include="_bz2;_ctypes;_decimal;_elementtree;_lzma;_msi;_multiprocessing;_overlapped;_sqlite3;_tkinter;tix;pyexpat;select;unicodedata;winsound" />
|
||||
<ExtensionModules Include="_ctypes;_decimal;_elementtree;_msi;_multiprocessing;_overlapped;pyexpat;select;unicodedata;winsound" />
|
||||
<!-- Extension modules that require external sources -->
|
||||
<ExternalModules Include="_bz2;_lzma;_sqlite3" />
|
||||
<!-- _ssl will build _socket as well, which may cause conflicts in parallel builds -->
|
||||
<ExtensionModules Include="_socket" Condition="!$(IncludeSSL)" />
|
||||
<ExtensionModules Include="_ssl;_hashlib" Condition="$(IncludeSSL)" />
|
||||
<ExtensionModules Include="_socket" Condition="!$(IncludeSSL) or !$(IncludeExternals)" />
|
||||
<ExternalModules Include="_ssl;_hashlib" Condition="$(IncludeSSL)" />
|
||||
<ExternalModules Include="_tkinter;tix" Condition="$(IncludeTkinter)" />
|
||||
<ExtensionModules Include="@(ExternalModules->'%(Identity)')" Condition="$(IncludeExternals)" />
|
||||
<Projects Include="@(ExtensionModules->'%(Identity).vcxproj')" Condition="$(IncludeExtensions)" />
|
||||
<!-- Test modules -->
|
||||
<TestModules Include="_ctypes_test;_testbuffer;_testcapi;_testembed;_testimportmultiple;_testmultiphase" />
|
||||
|
|
Loading…
Reference in New Issue