Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
cpython
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
cpython
Commits
0f164c60
Commit
0f164c60
authored
Apr 13, 2015
by
Antoine Pitrou
Browse files
Options
Browse Files
Download
Plain Diff
Merge
parents
cb46f0ec
50ebf031
Changes
30
Hide whitespace changes
Inline
Side-by-side
Showing
30 changed files
with
1384 additions
and
1378 deletions
+1384
-1378
.hgeol
.hgeol
+6
-0
Doc/make.bat
Doc/make.bat
+133
-133
Lib/ctypes/macholib/fetch_macholib.bat
Lib/ctypes/macholib/fetch_macholib.bat
+1
-1
Lib/idlelib/idle.bat
Lib/idlelib/idle.bat
+4
-4
Modules/_decimal/tests/runall.bat
Modules/_decimal/tests/runall.bat
+111
-111
PC/bdist_wininst/build.bat
PC/bdist_wininst/build.bat
+22
-22
PCbuild/build.bat
PCbuild/build.bat
+43
-43
PCbuild/build_env.bat
PCbuild/build_env.bat
+1
-1
PCbuild/build_pgo.bat
PCbuild/build_pgo.bat
+48
-48
PCbuild/clean.bat
PCbuild/clean.bat
+5
-5
PCbuild/env.bat
PCbuild/env.bat
+16
-16
PCbuild/get_externals.bat
PCbuild/get_externals.bat
+103
-103
PCbuild/idle.bat
PCbuild/idle.bat
+15
-15
PCbuild/prepare_ssl.bat
PCbuild/prepare_ssl.bat
+12
-12
PCbuild/readme.txt
PCbuild/readme.txt
+341
-341
PCbuild/rt.bat
PCbuild/rt.bat
+58
-58
Tools/buildbot/build-amd64.bat
Tools/buildbot/build-amd64.bat
+2
-2
Tools/buildbot/build.bat
Tools/buildbot/build.bat
+20
-20
Tools/buildbot/buildmsi.bat
Tools/buildbot/buildmsi.bat
+8
-8
Tools/buildbot/clean-amd64.bat
Tools/buildbot/clean-amd64.bat
+2
-2
Tools/buildbot/clean.bat
Tools/buildbot/clean.bat
+29
-29
Tools/buildbot/external-amd64.bat
Tools/buildbot/external-amd64.bat
+2
-2
Tools/buildbot/external.bat
Tools/buildbot/external.bat
+2
-2
Tools/buildbot/test-amd64.bat
Tools/buildbot/test-amd64.bat
+7
-7
Tools/buildbot/test.bat
Tools/buildbot/test.bat
+7
-7
Tools/msi/build.bat
Tools/msi/build.bat
+46
-46
Tools/msi/buildrelease.bat
Tools/msi/buildrelease.bat
+163
-163
Tools/msi/testrelease.bat
Tools/msi/testrelease.bat
+114
-114
Tools/msi/uploadrelease.bat
Tools/msi/uploadrelease.bat
+56
-56
Tools/unicode/genwincodecs.bat
Tools/unicode/genwincodecs.bat
+7
-7
No files found.
.hgeol
View file @
0f164c60
...
...
@@ -40,6 +40,12 @@ Lib/venv/scripts/nt/* = BIN
Lib/test/coding20731.py = BIN
# Windows batch files work best with CRLF, there can be subtle problems with LF
**.bat = CRLF
# The Windows readme is likely to be read in Notepad, so make it readable
PCbuild/readme.txt = CRLF
# All other files (which presumably are human-editable) are "native".
# This must be the last rule!
...
...
Doc/make.bat
View file @
0f164c60
@echo
off
setlocal
pushd
%~dp0
set
this
=
%~n0
if
"
%SPHINXBUILD%
"
EQU
""
set
SPHINXBUILD
=
sphinx
-build
if
"
%PYTHON%
"
EQU
""
set
PYTHON
=
py
if
"
%
1"
NEQ
"htmlhelp"
goto
:skiphhcsearch
if
exist
"
%HTMLHELP%
"
goto
:skiphhcsearch
rem Search for HHC in likely places
set
HTMLHELP
=
where
hhc
/q
&&
set
HTMLHELP
=
hhc
&&
goto
:skiphhcsearch
where
/R
..\externals
hhc
>
"
%TEMP%
\hhc.loc"
2
>
nul
&&
set
/P
HTMLHELP
=
<
"
%TEMP%
\hhc.loc"
&
del
"
%TEMP%
\hhc.loc"
if
not
exist
"
%HTMLHELP%
"
where
/R
"
%ProgramFiles
(x86)
%
"
hhc
>
"
%TEMP%
\hhc.loc"
2
>
nul
&&
set
/P
HTMLHELP
=
<
"
%TEMP%
\hhc.loc"
&
del
"
%TEMP%
\hhc.loc"
if
not
exist
"
%HTMLHELP%
"
where
/R
"
%ProgramFiles%
"
hhc
>
"
%TEMP%
\hhc.loc"
2
>
nul
&&
set
/P
HTMLHELP
=
<
"
%TEMP%
\hhc.loc"
&
del
"
%TEMP%
\hhc.loc"
if
not
exist
"
%HTMLHELP%
"
echo
Cannot
find
HHC
on
PATH
or
in
externals
&
exit
/B
1
:skiphhcsearch
if
"
%DISTVERSION%
"
EQU
""
for
/f
"usebackq"
%%v
in
(
`
%PYTHON%
tools/extensions/patchlevel.py`
)
do
set
DISTVERSION
=
%%v
if
"
%BUILDDIR%
"
EQU
""
set
BUILDDIR
=
build
rem Targets that don't require sphinx-build
if
"
%
1"
EQU
""
goto
help
if
"
%
1"
EQU
"help"
goto
help
if
"
%
1"
EQU
"check"
goto
check
if
"
%
1"
EQU
"serve"
goto
serve
if
"
%
1"
==
"clean"
(
rmdir
/q /s
%BUILDDIR%
goto
end
)
%SPHINXBUILD%
2
>
nul
if
errorlevel
9009
(
echo
.
echo
.The
'sphinx-build'
command
was
not
found
.
Make
sure
you
have
Sphinx
echo
.installed
,
then
set
the
SPHINXBUILD
environment
variable
to
point
echo
.to
the
full
path
of
the
'sphinx-build'
executable
.
Alternatively
you
echo
.may
add
the
Sphinx
directory
to
PATH
.
echo
.
echo
.If
you
don
't have Sphinx installed, grab it from
echo.http://sphinx-doc.org/
popd
exit /B 1
)
rem Targets that do require sphinx-build and have their own label
if "
%
1" EQU "htmlview" goto htmlview
rem Everything else
goto build
:help
echo.usage:
%this%
BUILDER [filename ...]
echo.
echo.Call
%this%
with the desired Sphinx builder as the first argument, e.g.
echo.``
%this%
html`` or ``
%this%
doctest``. Interesting targets that are
echo.always available include:
echo.
echo. Provided by Sphinx:
echo. html, htmlhelp, latex, text
echo. suspicious, linkcheck, changes, doctest
echo. Provided by this script:
echo. clean, check, serve, htmlview
echo.
echo.All arguments past the first one are passed through to sphinx-build as
echo.filenames to build or are ignored. See README.txt in this directory or
echo.the documentation for your version of Sphinx for more exhaustive lists
echo.of available targets and descriptions of each.
echo.
echo.This script assumes that the SPHINXBUILD environment variable contains
echo.a legitimate command for calling sphinx-build, or that sphinx-build is
echo.on your PATH if SPHINXBUILD is not set. Options for sphinx-build can
echo.be passed by setting the SPHINXOPTS environment variable.
goto end
:build
if NOT "
%PAPER%
" == "" (
set SPHINXOPTS=-D latex_paper_size=
%PAPER%
%SPHINXOPTS%
)
cmd /C
%SPHINXBUILD%
%SPHINXOPTS%
-b
%
1 -dbuild\doctrees .
%BUILDDIR%
\
%
*
if "
%
1" EQU "htmlhelp" (
if not exist "
%HTMLHELP%
" (
echo.
echo.The HTML Help Workshop was not found. Set the HTMLHELP variable
echo.to the path to hhc.exe or download and install it from
echo.http://msdn.microsoft.com/en-us/library/ms669985
rem Set errorlevel to 1 and exit
cmd /C exit /b 1
goto end
)
cmd /C "
%HTMLHELP%
" build\htmlhelp\python
%DISTVERSION
:.=
%
.hhp
rem hhc.exe seems to always exit with code 1, reset to 0 for less than 2
if not errorlevel 2 cmd /C exit /b 0
)
echo.
if errorlevel 1 (
echo.Build failed (exit code
%ERRORLEVEL%
^)
, check for error messages
echo.above. Any output will be found in
%BUILDDIR%
\
%
1
) else (
echo.Build succeeded. All output should be in
%BUILDDIR%
\
%
1
)
goto end
:htmlview
if NOT "
%
2" EQU "" (
echo.Can'
t
specify
filenames
to
build
with
htmlview
target
,
ignoring
.
)
cmd
/C
%this%
html
if
EXIST
%BUILDDIR%
\html\index.html
(
echo
.Opening
%BUILDDIR%
\html\index.html
in
the
default
web
browser
...
start
%BUILDDIR%
\html\index.html
)
goto
end
:check
cmd
/C
%PYTHON%
tools
\rstlint.py
-i
tools
goto
end
:serve
cmd
/C
%PYTHON%
..\Tools\scripts\serve.py
%BUILDDIR%
\html
goto
end
:end
popd
@echo
off
setlocal
pushd
%~dp0
set
this
=
%~n0
if
"
%SPHINXBUILD%
"
EQU
""
set
SPHINXBUILD
=
sphinx
-build
if
"
%PYTHON%
"
EQU
""
set
PYTHON
=
py
if
"
%
1"
NEQ
"htmlhelp"
goto
:skiphhcsearch
if
exist
"
%HTMLHELP%
"
goto
:skiphhcsearch
rem Search for HHC in likely places
set
HTMLHELP
=
where
hhc
/q
&&
set
HTMLHELP
=
hhc
&&
goto
:skiphhcsearch
where
/R
..\externals
hhc
>
"
%TEMP%
\hhc.loc"
2
>
nul
&&
set
/P
HTMLHELP
=
<
"
%TEMP%
\hhc.loc"
&
del
"
%TEMP%
\hhc.loc"
if
not
exist
"
%HTMLHELP%
"
where
/R
"
%ProgramFiles
(x86)
%
"
hhc
>
"
%TEMP%
\hhc.loc"
2
>
nul
&&
set
/P
HTMLHELP
=
<
"
%TEMP%
\hhc.loc"
&
del
"
%TEMP%
\hhc.loc"
if
not
exist
"
%HTMLHELP%
"
where
/R
"
%ProgramFiles%
"
hhc
>
"
%TEMP%
\hhc.loc"
2
>
nul
&&
set
/P
HTMLHELP
=
<
"
%TEMP%
\hhc.loc"
&
del
"
%TEMP%
\hhc.loc"
if
not
exist
"
%HTMLHELP%
"
echo
Cannot
find
HHC
on
PATH
or
in
externals
&
exit
/B
1
:skiphhcsearch
if
"
%DISTVERSION%
"
EQU
""
for
/f
"usebackq"
%%v
in
(
`
%PYTHON%
tools/extensions/patchlevel.py`
)
do
set
DISTVERSION
=
%%v
if
"
%BUILDDIR%
"
EQU
""
set
BUILDDIR
=
build
rem Targets that don't require sphinx-build
if
"
%
1"
EQU
""
goto
help
if
"
%
1"
EQU
"help"
goto
help
if
"
%
1"
EQU
"check"
goto
check
if
"
%
1"
EQU
"serve"
goto
serve
if
"
%
1"
==
"clean"
(
rmdir
/q /s
%BUILDDIR%
goto
end
)
%SPHINXBUILD%
2
>
nul
if
errorlevel
9009
(
echo
.
echo
.The
'sphinx-build'
command
was
not
found
.
Make
sure
you
have
Sphinx
echo
.installed
,
then
set
the
SPHINXBUILD
environment
variable
to
point
echo
.to
the
full
path
of
the
'sphinx-build'
executable
.
Alternatively
you
echo
.may
add
the
Sphinx
directory
to
PATH
.
echo
.
echo
.If
you
don
't have Sphinx installed, grab it from
echo.http://sphinx-doc.org/
popd
exit /B 1
)
rem Targets that do require sphinx-build and have their own label
if "
%
1" EQU "htmlview" goto htmlview
rem Everything else
goto build
:help
echo.usage:
%this%
BUILDER [filename ...]
echo.
echo.Call
%this%
with the desired Sphinx builder as the first argument, e.g.
echo.``
%this%
html`` or ``
%this%
doctest``. Interesting targets that are
echo.always available include:
echo.
echo. Provided by Sphinx:
echo. html, htmlhelp, latex, text
echo. suspicious, linkcheck, changes, doctest
echo. Provided by this script:
echo. clean, check, serve, htmlview
echo.
echo.All arguments past the first one are passed through to sphinx-build as
echo.filenames to build or are ignored. See README.txt in this directory or
echo.the documentation for your version of Sphinx for more exhaustive lists
echo.of available targets and descriptions of each.
echo.
echo.This script assumes that the SPHINXBUILD environment variable contains
echo.a legitimate command for calling sphinx-build, or that sphinx-build is
echo.on your PATH if SPHINXBUILD is not set. Options for sphinx-build can
echo.be passed by setting the SPHINXOPTS environment variable.
goto end
:build
if NOT "
%PAPER%
" == "" (
set SPHINXOPTS=-D latex_paper_size=
%PAPER%
%SPHINXOPTS%
)
cmd /C
%SPHINXBUILD%
%SPHINXOPTS%
-b
%
1 -dbuild\doctrees .
%BUILDDIR%
\
%
*
if "
%
1" EQU "htmlhelp" (
if not exist "
%HTMLHELP%
" (
echo.
echo.The HTML Help Workshop was not found. Set the HTMLHELP variable
echo.to the path to hhc.exe or download and install it from
echo.http://msdn.microsoft.com/en-us/library/ms669985
rem Set errorlevel to 1 and exit
cmd /C exit /b 1
goto end
)
cmd /C "
%HTMLHELP%
" build\htmlhelp\python
%DISTVERSION
:.=
%
.hhp
rem hhc.exe seems to always exit with code 1, reset to 0 for less than 2
if not errorlevel 2 cmd /C exit /b 0
)
echo.
if errorlevel 1 (
echo.Build failed (exit code
%ERRORLEVEL%
^)
, check for error messages
echo.above. Any output will be found in
%BUILDDIR%
\
%
1
) else (
echo.Build succeeded. All output should be in
%BUILDDIR%
\
%
1
)
goto end
:htmlview
if NOT "
%
2" EQU "" (
echo.Can'
t
specify
filenames
to
build
with
htmlview
target
,
ignoring
.
)
cmd
/C
%this%
html
if
EXIST
%BUILDDIR%
\html\index.html
(
echo
.Opening
%BUILDDIR%
\html\index.html
in
the
default
web
browser
...
start
%BUILDDIR%
\html\index.html
)
goto
end
:check
cmd
/C
%PYTHON%
tools
\rstlint.py
-i
tools
goto
end
:serve
cmd
/C
%PYTHON%
..\Tools\scripts\serve.py
%BUILDDIR%
\html
goto
end
:end
popd
Lib/ctypes/macholib/fetch_macholib.bat
View file @
0f164c60
svn
export
-
-force
http
://svn.red
-bean
.com/bob/macholib/trunk/macholib/ .
svn
export
-
-force
http
://svn.red
-bean
.com/bob/macholib/trunk/macholib/ .
Lib/idlelib/idle.bat
View file @
0f164c60
@echo
off
rem Start IDLE using the appropriate Python interpreter
set
CURRDIR
=
%~dp0
start
"IDLE"
"
%CURRDIR%
..\..\pythonw.exe"
"
%CURRDIR%
idle.pyw"
%
1
%
2
%
3
%
4
%
5
%
6
%
7
%
8
%
9
@echo
off
rem Start IDLE using the appropriate Python interpreter
set
CURRDIR
=
%~dp0
start
"IDLE"
"
%CURRDIR%
..\..\pythonw.exe"
"
%CURRDIR%
idle.pyw"
%
1
%
2
%
3
%
4
%
5
%
6
%
7
%
8
%
9
Modules/_decimal/tests/runall.bat
View file @
0f164c60
@ECHO
OFF
rem Test all machine configurations, pydebug, refleaks, release build.
cd
..\..\..\
echo
.
echo
#
======================================================================
echo
#
Building
Python
echo
#
======================================================================
echo
.
call
"
%VS1
00COMNTOOLS
%
\..\..\VC\vcvarsall.bat"
x64
msbuild
/noconsolelogger /target
:clean
PCbuild
\pcbuild.sln
/p
:Configuration
=
Release
/p
:PlatformTarget
=
x64
msbuild
/noconsolelogger /target
:clean
PCbuild
\pcbuild.sln
/p
:Configuration
=
Debug
/p
:PlatformTarget
=
x64
msbuild
/noconsolelogger
PCbuild
\pcbuild.sln
/p
:Configuration
=
Release
/p
:Platform
=
x64
msbuild
/noconsolelogger
PCbuild
\pcbuild.sln
/p
:Configuration
=
Debug
/p
:Platform
=
x64
call
"
%VS1
00COMNTOOLS
%
\..\..\VC\vcvarsall.bat"
x86
msbuild
/noconsolelogger
PCbuild
\pcbuild.sln
/p
:Configuration
=
Release
/p
:Platform
=
Win32
msbuild
/noconsolelogger
PCbuild
\pcbuild.sln
/p
:Configuration
=
Debug
/p
:Platform
=
Win32
echo
.
echo
.
echo
.
echo
#
======================================================================
echo
#
test_decimal
:
platform
=
x64
echo
#
======================================================================
echo
.
cd
PCbuild
\amd64
echo
#
====================
refleak
tests
=======================
echo
.
python_d
.exe
-m
test
-uall -R
2
:2
test_decimal
echo
.
echo
.
echo
#
====================
regular
tests
=======================
echo
.
python
.exe
-m
test
-uall
test_decimal
echo
.
echo
.
cd
..
echo
.
echo
#
======================================================================
echo
#
test_decimal
:
platform
=
x86
echo
#
======================================================================
echo
.
echo
#
====================
refleak
tests
=======================
echo
.
python_d
.exe
-m
test
-uall -R
2
:2
test_decimal
echo
.
echo
.
echo
#
====================
regular
tests
=======================
echo
.
python
.exe
-m
test
-uall
test_decimal
echo
.
echo
.
cd
amd64
echo
.
echo
#
======================================================================
echo
#
deccheck
:
platform
=
x64
echo
#
======================================================================
echo
.
echo
#
====================
debug
build
=======================
echo
.
python_d
.exe
..\..\Modules\_decimal\tests\deccheck.py
echo
.
echo
.
echo
#
===================
release
build
======================
echo
.
python
.exe
..\..\Modules\_decimal\tests\deccheck.py
echo
.
echo
.
cd
..
echo
.
echo
#
======================================================================
echo
#
deccheck
:
platform
=
x86
echo
#
======================================================================
echo
.
echo
.
echo
#
====================
debug
build
=======================
echo
.
python_d
.exe
..\Modules\_decimal\tests\deccheck.py
echo
.
echo
.
echo
#
===================
release
build
======================
echo
.
python
.exe
..\Modules\_decimal\tests\deccheck.py
echo
.
echo
.
cd
..\Modules\_decimal\tests
@ECHO
OFF
rem Test all machine configurations, pydebug, refleaks, release build.
cd
..\..\..\
echo
.
echo
#
======================================================================
echo
#
Building
Python
echo
#
======================================================================
echo
.
call
"
%VS1
00COMNTOOLS
%
\..\..\VC\vcvarsall.bat"
x64
msbuild
/noconsolelogger /target
:clean
PCbuild
\pcbuild.sln
/p
:Configuration
=
Release
/p
:PlatformTarget
=
x64
msbuild
/noconsolelogger /target
:clean
PCbuild
\pcbuild.sln
/p
:Configuration
=
Debug
/p
:PlatformTarget
=
x64
msbuild
/noconsolelogger
PCbuild
\pcbuild.sln
/p
:Configuration
=
Release
/p
:Platform
=
x64
msbuild
/noconsolelogger
PCbuild
\pcbuild.sln
/p
:Configuration
=
Debug
/p
:Platform
=
x64
call
"
%VS1
00COMNTOOLS
%
\..\..\VC\vcvarsall.bat"
x86
msbuild
/noconsolelogger
PCbuild
\pcbuild.sln
/p
:Configuration
=
Release
/p
:Platform
=
Win32
msbuild
/noconsolelogger
PCbuild
\pcbuild.sln
/p
:Configuration
=
Debug
/p
:Platform
=
Win32
echo
.
echo
.
echo
.
echo
#
======================================================================
echo
#
test_decimal
:
platform
=
x64
echo
#
======================================================================
echo
.
cd
PCbuild
\amd64
echo
#
====================
refleak
tests
=======================
echo
.
python_d
.exe
-m
test
-uall -R
2
:2
test_decimal
echo
.
echo
.
echo
#
====================
regular
tests
=======================
echo
.
python
.exe
-m
test
-uall
test_decimal
echo
.
echo
.
cd
..
echo
.
echo
#
======================================================================
echo
#
test_decimal
:
platform
=
x86
echo
#
======================================================================
echo
.
echo
#
====================
refleak
tests
=======================
echo
.
python_d
.exe
-m
test
-uall -R
2
:2
test_decimal
echo
.
echo
.
echo
#
====================
regular
tests
=======================
echo
.
python
.exe
-m
test
-uall
test_decimal
echo
.
echo
.
cd
amd64
echo
.
echo
#
======================================================================
echo
#
deccheck
:
platform
=
x64
echo
#
======================================================================
echo
.
echo
#
====================
debug
build
=======================
echo
.
python_d
.exe
..\..\Modules\_decimal\tests\deccheck.py
echo
.
echo
.
echo
#
===================
release
build
======================
echo
.
python
.exe
..\..\Modules\_decimal\tests\deccheck.py
echo
.
echo
.
cd
..
echo
.
echo
#
======================================================================
echo
#
deccheck
:
platform
=
x86
echo
#
======================================================================
echo
.
echo
.
echo
#
====================
debug
build
=======================
echo
.
python_d
.exe
..\Modules\_decimal\tests\deccheck.py
echo
.
echo
.
echo
#
===================
release
build
======================
echo
.
python
.exe
..\Modules\_decimal\tests\deccheck.py
echo
.
echo
.
cd
..\Modules\_decimal\tests
PC/bdist_wininst/build.bat
View file @
0f164c60
@echo
off
setlocal
set
D
=
%~dp0
set
PCBUILD
=
%~dp0
..\..\PCBuild\
echo
Building
Lib
\distutils\command\wininst
-xx
.0.exe
call
"
%PCBUILD%
env.bat"
x86
if
errorlevel
1
goto
:eof
msbuild
"
%D%
bdist_wininst.vcxproj"
"/p:SolutionDir=
%PCBUILD%
\"
/p
:Configuration
=
Release
/p
:Platform
=
Win32
if
errorlevel
1
goto
:eof
echo
Building
Lib
\distutils\command\wininst
-xx
.0
-amd
64
.exe
call
"
%PCBUILD%
env.bat"
x86_amd64
if
errorlevel
1
goto
:eof
msbuild
"
%D%
bdist_wininst.vcxproj"
"/p:SolutionDir=
%PCBUILD%
\"
/p
:Configuration
=
Release
/p
:Platform
=
x64
@echo
off
setlocal
set
D
=
%~dp0
set
PCBUILD
=
%~dp0
..\..\PCBuild\
echo
Building
Lib
\distutils\command\wininst
-xx
.0.exe
call
"
%PCBUILD%
env.bat"
x86
if
errorlevel
1
goto
:eof
msbuild
"
%D%
bdist_wininst.vcxproj"
"/p:SolutionDir=
%PCBUILD%
\"
/p
:Configuration
=
Release
/p
:Platform
=
Win32
if
errorlevel
1
goto
:eof
echo
Building
Lib
\distutils\command\wininst
-xx
.0
-amd
64
.exe
call
"
%PCBUILD%
env.bat"
x86_amd64
if
errorlevel
1
goto
:eof
msbuild
"
%D%
bdist_wininst.vcxproj"
"/p:SolutionDir=
%PCBUILD%
\"
/p
:Configuration
=
Release
/p
:Platform
=
x64
PCbuild/build.bat
View file @
0f164c60
@echo
off
rem A batch program to build or rebuild a particular configuration,
rem just for convenience.
rem Arguments:
rem -c Set the configuration (default: Release)
rem -p Set the platform (x64 or Win32, default: Win32)
rem -r Target Rebuild instead of Build
rem -t Set the target manually (Build, Rebuild, Clean, or CleanAll)
rem -d Set the configuration to Debug
rem -e Pull in external libraries using get_externals.bat
rem -M Disable parallel build
rem -v Increased output messages
setlocal
set
platf
=
Win32
set
vs_platf
=
x86
set
conf
=
Release
set
target
=
Build
set
dir
=
%~dp0
set
parallel
=
/m
set
verbose
=
/nologo /v
:m
:CheckOpts
if
'
%
1'
==
'-c'
(
set
conf
=
%
2
)
&
shift
&
shift
&
goto
CheckOpts
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
=)
&
shift
&
goto
CheckOpts
if
'
%
1'
==
'-v'
(
set
verbose
=
/v
:n
)
&
shift
&
goto
CheckOpts
if
'
%platf%
'
==
'x64'
(
set
vs_platf
=
x86_amd64
)
rem Setup the environment
call
"
%dir%
env.bat"
%vs_platf%
>
nul
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
@echo
off
rem A batch program to build or rebuild a particular configuration,
rem just for convenience.
rem Arguments:
rem -c Set the configuration (default: Release)
rem -p Set the platform (x64 or Win32, default: Win32)
rem -r Target Rebuild instead of Build
rem -t Set the target manually (Build, Rebuild, Clean, or CleanAll)
rem -d Set the configuration to Debug
rem -e Pull in external libraries using get_externals.bat
rem -M Disable parallel build
rem -v Increased output messages
setlocal
set
platf
=
Win32
set
vs_platf
=
x86
set
conf
=
Release
set
target
=
Build
set
dir
=
%~dp0
set
parallel
=
/m
set
verbose
=
/nologo /v
:m
:CheckOpts
if
'
%
1'
==
'-c'
(
set
conf
=
%
2
)
&
shift
&
shift
&
goto
CheckOpts
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
=)
&
shift
&
goto
CheckOpts
if
'
%
1'
==
'-v'
(
set
verbose
=
/v
:n
)
&
shift
&
goto
CheckOpts
if
'
%platf%
'
==
'x64'
(
set
vs_platf
=
x86_amd64
)
rem Setup the environment
call
"
%dir%
env.bat"
%vs_platf%
>
nul
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
PCbuild/build_env.bat
View file @
0f164c60
@
%comspec%
/k
env
.bat
%
*
@
%comspec%
/k
env
.bat
%
*
PCbuild/build_pgo.bat
View file @
0f164c60
@echo
off
rem A batch program to build PGO (Profile guided optimization) by first
rem building instrumented binaries, then running the testsuite, and
rem finally building the optimized code.
rem Note, after the first instrumented run, one can just keep on
rem building the PGUpdate configuration while developing.
setlocal
set
platf
=
Win32
set
parallel
=
/m
set
dir
=
%~dp0
rem use the performance testsuite. This is quick and simple
set
job1
=
"
%dir%
..\tools\pybench\pybench.py"
-n
1
-C
1
-
-with-gc
set
path1
=
"
%dir%
..\tools\pybench"
rem or the whole testsuite for more thorough testing
set
job2
=
"
%dir%
..\lib\test\regrtest.py"
set
path2
=
"
%dir%
..\lib"
set
job
=
%job1
%
set
clrpath
=
%path1
%
:CheckOpts
if
"
%
1"
==
"-p"
(
set
platf
=
%
2
)
&
shift
&
shift
&
goto
CheckOpts
if
"
%
1"
==
"-2"
(
set
job
=
%job2
%
)
&
(
set
clrpath
=
%path2
%
)
&
shift
&
goto
CheckOpts
if
"
%
1"
==
"-M"
(
set
parallel
=)
&
shift
&
goto
CheckOpts
rem We cannot cross compile PGO builds, as the optimization needs to be run natively
set
vs_platf
=
x86
set
PGO
=
%dir%
win32
-pgo
if
"
%platf%
"
==
"x64"
(
set
vs_platf
=
amd64
)
&
(
set
PGO
=
%dir%
amd64
-pgo
)
rem Setup the environment
call
"
%dir%
env.bat"
%vs_platf%
rem build the instrumented version
msbuild
"
%dir%
pcbuild.proj"
%parallel%
/t
:Build
/p
:Configuration
=
PGInstrument
/p
:Platform
=
%platf%
%
1
%
2
%
3
%
4
%
5
%
6
%
7
%
8
%
9
rem remove .pyc files, .pgc files and execute the job
"
%PGO%
\python.exe"
"
%dir%
rmpyc.py"
%clrpath%
del
"
%PGO%
\*.pgc"
"
%PGO%
\python.exe"
%job%
rem build optimized version
msbuild
"
%dir%
pcbuild.proj"
%parallel%
/t
:Build
/p
:Configuration
=
PGUpdate
/p
:Platform
=
%platf%
%
1
%
2
%
3
%
4
%
5
%
6
%
7
%
8
%
9
@echo
off
rem A batch program to build PGO (Profile guided optimization) by first
rem building instrumented binaries, then running the testsuite, and
rem finally building the optimized code.
rem Note, after the first instrumented run, one can just keep on
rem building the PGUpdate configuration while developing.
setlocal
set
platf
=
Win32
set
parallel
=
/m
set
dir
=
%~dp0
rem use the performance testsuite. This is quick and simple
set
job1
=
"
%dir%
..\tools\pybench\pybench.py"
-n
1
-C
1
-
-with-gc
set
path1
=
"
%dir%
..\tools\pybench"
rem or the whole testsuite for more thorough testing
set
job2
=
"
%dir%
..\lib\test\regrtest.py"
set
path2
=
"
%dir%
..\lib"
set
job
=
%job1
%
set
clrpath
=
%path1
%
:CheckOpts
if
"
%
1"
==
"-p"
(
set
platf
=
%
2
)
&
shift
&
shift
&
goto
CheckOpts
if
"
%
1"
==
"-2"
(
set
job
=
%job2
%
)
&
(
set
clrpath
=
%path2
%
)
&
shift
&
goto
CheckOpts
if
"
%
1"
==
"-M"
(
set
parallel
=)
&
shift
&
goto
CheckOpts
rem We cannot cross compile PGO builds, as the optimization needs to be run natively
set
vs_platf
=
x86
set
PGO
=
%dir%
win32
-pgo
if
"
%platf%
"
==
"x64"
(
set
vs_platf
=
amd64
)
&
(
set
PGO
=
%dir%
amd64
-pgo
)
rem Setup the environment
call
"
%dir%
env.bat"
%vs_platf%
rem build the instrumented version
msbuild
"
%dir%
pcbuild.proj"
%parallel%
/t
:Build
/p
:Configuration
=
PGInstrument
/p
:Platform
=
%platf%
%
1
%
2
%
3
%
4
%
5
%
6
%
7
%
8
%
9
rem remove .pyc files, .pgc files and execute the job
"
%PGO%
\python.exe"
"
%dir%
rmpyc.py"
%clrpath%
del
"
%PGO%
\*.pgc"
"
%PGO%
\python.exe"
%job%
rem build optimized version
msbuild
"
%dir%
pcbuild.proj"
%parallel%
/t
:Build
/p
:Configuration
=
PGUpdate
/p
:Platform
=
%platf%
%
1
%
2
%
3
%
4
%
5
%
6
%
7
%
8
%
9
PCbuild/clean.bat
View file @
0f164c60
@echo
off
rem A batch program to clean a particular configuration,
rem just for convenience.
call
%~dp0
build
.bat
-t
Clean
%
*
@echo
off
rem A batch program to clean a particular configuration,
rem just for convenience.
call
%~dp0
build
.bat
-t
Clean
%
*
PCbuild/env.bat
View file @
0f164c60
@echo
off
rem This script adds the latest available tools to the path for the current
rem command window. However, most builds of Python will ignore the version
rem of the tools on PATH and use PlatformToolset instead. Ideally, both sets of
rem tools should be the same version to avoid potential conflicts.
rem
rem To build Python with an earlier toolset, pass "/p:PlatformToolset=v100" (or
rem 'v110', 'v120' or 'v140') to the build script.
echo
Build
environments
:
x86
,
amd64
,
x86_amd64
echo
.
set
VSTOOLS
=
%VS1
40
COMNTOOLS
%
if
"
%VSTOOLS%
"
==
""
set
VSTOOLS
=
%VS1
20
COMNTOOLS
%
if
"
%VSTOOLS%
"
==
""
set
VSTOOLS
=
%VS1
10
COMNTOOLS
%
if
"
%VSTOOLS%
"
==
""
set
VSTOOLS
=
%VS1
00
COMNTOOLS
%
call
"
%VSTOOLS%
..\..\VC\vcvarsall.bat"
%
*
@echo
off
rem This script adds the latest available tools to the path for the current
rem command window. However, most builds of Python will ignore the version
rem of the tools on PATH and use PlatformToolset instead. Ideally, both sets of
rem tools should be the same version to avoid potential conflicts.
rem
rem To build Python with an earlier toolset, pass "/p:PlatformToolset=v100" (or
rem 'v110', 'v120' or 'v140') to the build script.
echo
Build
environments
:
x86
,
amd64
,
x86_amd64
echo
.
set
VSTOOLS
=
%VS1
40
COMNTOOLS
%
if
"
%VSTOOLS%
"
==
""
set
VSTOOLS
=
%VS1
20
COMNTOOLS
%
if
"
%VSTOOLS%
"
==
""
set
VSTOOLS
=
%VS1
10
COMNTOOLS
%
if
"
%VSTOOLS%
"
==
""
set
VSTOOLS
=
%VS1
00
COMNTOOLS
%
call
"
%VSTOOLS%
..\..\VC\vcvarsall.bat"
%
*
PCbuild/get_externals.bat
View file @
0f164c60
@echo
off
setlocal
rem Simple script to fetch source for external libraries
if
not
exist
"
%~dp0
..\externals"
mkdir
"
%~dp0
..\externals"
pushd
"
%~dp0
..\externals"
if
"
%SVNROOT%
"
==
""
set
SVNROOT
=
http
://svn.python.org/projects/external/
rem Optionally clean up first. Be warned that this can be very destructive!
if
not
"
%
1"
==
""
(
for
%%c
in
(
-c
-
-clean
-
-clean-only
)
do
(
if
"
%
1"
==
"
%%c
"
goto
clean
)
goto
usage
)
goto
fetch
:clean
echo
.Cleaning
up
external
libraries
.
for
/D
%%d
in
(
bzip2
-*
db
-*
nasm
-*
openssl
-*
tcl
-*
tcltk
*
tk
-*
tix
-*
sqlite
-*
xz
-*
)
do
(
echo
.Removing
%%d
rmdir
/s /q
%%d
)
if
"
%
1"
==
"--clean-only"
(
goto
end
)
:fetch
rem Fetch current versions
svn
-
-version
>
nul
2
>&
1
if
ERRORLEVEL
9009
(
echo
.svn.exe
must
be
on
your
PATH
.
echo
.Try
TortoiseSVN
(
http
://tortoisesvn.net/
^)
and
be
sure
to
check
the
echo
.command
line
tools
option
.
popd
exit
/b
1
)
echo
.Fetching
external
libraries
...
for
%%e
in
(
bzip2
-
1
.0.6
nasm
-
2
.11.06
openssl
-
1
.0.2a
tcl
-core
-
8
.6.3.1
tk
-
8
.6.3.1
tix
-
8
.4.3.4
sqlite
-
3
.8.3.1
xz
-
5
.0.5
)
do
(
if
exist
%%e
(
echo
.
%%e
already
exists
,
skipping
.
)
else
(
echo
.Fetching
%%e
...
svn
export
%SVNROOT%%%
e
)
)
goto
end
:usage
echo
.invalid
argument
:
%
1
echo
.usage:
%~n0
[[
-c
^|
-
-clean
]
^|
-
-clean-only
]
echo
.
echo
.Pull
all
sources
necessary
for
compiling
optional
extension
modules
echo
.that
rely
on
external
libraries
.
Requires
svn
.exe
to
be
on
your
PATH
echo
.and
pulls
sources
from
%SVNROOT%
.
echo
.
echo
.Use
the
-c
or
-
-clean
option
to
clean
up
all
external
library
sources
echo
.before
pulling
in
the
current
versions
.
echo
.
echo
.Use
the
-
-clean-only
option
to
do
the
same
cleaning
,
without
pulling
in
echo
.anything
new
.
echo
.
echo
.Only
the
first
argument
is
checked
,
all
others
are
ignored
.
echo
.
echo
.
**
WARNING
**
:
the
cleaning
options
unconditionally
remove
any
directory
echo
.that
is
a
child
of
echo
.
%CD%
echo
.and
matches
wildcard
patterns
beginning
with
bzip2
-,
db
-,
nasm
-,
openssl
-,
echo
.tcl
-,
tcltk
,
tk
-,
tix
-,
sqlite
-,
or
xz
-,
and
as
such
has
the
potential
echo
.to
be
very
destructive
if
you
are
not
aware
of
what
it
is
doing
.
Use
with
echo
.caution
!
popd
exit
/b
-
1
:end
echo
Finished
.
popd
@echo
off
setlocal
rem Simple script to fetch source for external libraries
if
not
exist
"
%~dp0
..\externals"
mkdir
"
%~dp0
..\externals"
pushd
"
%~dp0
..\externals"
if
"
%SVNROOT%
"
==
""
set
SVNROOT
=
http
://svn.python.org/projects/external/
rem Optionally clean up first. Be warned that this can be very destructive!
if
not
"
%
1"
==
""
(
for
%%c
in
(
-c
-
-clean
-
-clean-only
)
do
(
if
"
%
1"
==
"
%%c
"
goto
clean
)
goto
usage
)
goto
fetch
:clean
echo
.Cleaning
up
external
libraries
.
for
/D
%%d
in
(
bzip2
-*
db
-*
nasm
-*
openssl
-*
tcl
-*
tcltk
*
tk
-*
tix
-*
sqlite
-*
xz
-*
)
do
(
echo
.Removing
%%d
rmdir
/s /q
%%d
)
if
"
%
1"
==
"--clean-only"
(
goto
end
)
:fetch
rem Fetch current versions
svn
-
-version
>
nul
2
>&
1
if
ERRORLEVEL
9009
(
echo
.svn.exe
must
be
on
your
PATH
.
echo
.Try
TortoiseSVN
(
http
://tortoisesvn.net/
^)
and
be
sure
to
check
the
echo
.command
line
tools
option
.
popd
exit
/b
1
)
echo
.Fetching
external
libraries
...
for
%%e
in
(
bzip2
-
1
.0.6
nasm
-
2
.11.06
openssl
-
1
.0.2a
tcl
-core
-
8
.6.3.1
tk
-
8
.6.3.1
tix
-
8
.4.3.4
sqlite
-
3
.8.3.1
xz
-
5
.0.5
)
do
(
if
exist
%%e
(
echo
.
%%e
already
exists
,
skipping
.
)
else
(
echo
.Fetching
%%e
...
svn
export
%SVNROOT%%%
e
)
)
goto
end
:usage
echo
.invalid
argument
:
%
1
echo
.usage:
%~n0
[[
-c
^|
-
-clean
]
^|
-
-clean-only
]
echo
.
echo
.Pull
all
sources
necessary
for
compiling
optional
extension
modules
echo
.that
rely
on
external
libraries
.
Requires
svn
.exe
to
be
on
your
PATH
echo
.and
pulls
sources
from
%SVNROOT%
.
echo
.
echo
.Use
the
-c
or
-
-clean
option
to
clean
up
all
external
library
sources
echo
.before
pulling
in
the
current
versions
.
echo
.
echo
.Use
the
-
-clean-only
option
to
do
the
same
cleaning
,
without
pulling
in
echo
.anything
new
.
echo
.
echo
.Only
the
first
argument
is
checked
,
all
others
are
ignored
.
echo
.
echo
.
**
WARNING
**
:
the
cleaning
options
unconditionally
remove
any
directory
echo
.that
is
a
child
of
echo
.
%CD%
echo
.and
matches
wildcard
patterns
beginning
with
bzip2
-,
db
-,
nasm
-,
openssl
-,
echo
.tcl
-,
tcltk
,
tk
-,
tix
-,
sqlite
-,
or
xz
-,
and
as
such
has
the
potential
echo
.to
be
very
destructive
if
you
are
not
aware
of
what
it
is
doing
.
Use
with
echo
.caution
!
popd
exit
/b
-
1
:end
echo
Finished
.
popd
PCbuild/idle.bat
View file @
0f164c60
@echo
off
rem start idle
rem Usage: idle [-d]
rem -d Run Debug build (python_d.exe). Else release build.
setlocal
set
exe
=
win32
\python
PATH
%PATH%
;
..\externals\tcltk\bin
if
"
%
1"
==
"-d"
(
set
exe
=
%exe%
_d
)
&
shift
set
cmd
=
%exe%
../Lib/idlelib/idle.py
%
1
%
2
%
3
%
4
%
5
%
6
%
7
%
8
%
9
echo
on
%cmd%
@echo
off
rem start idle
rem Usage: idle [-d]
rem -d Run Debug build (python_d.exe). Else release build.
setlocal
set
exe
=
win32
\python
PATH
%PATH%
;
..\externals\tcltk\bin
if
"
%
1"
==
"-d"
(
set
exe
=
%exe%
_d
)
&
shift
set
cmd
=
%exe%
../Lib/idlelib/idle.py
%
1
%
2
%
3
%
4
%
5
%
6
%
7
%
8
%
9
echo
on
%cmd%
PCbuild/prepare_ssl.bat
View file @
0f164c60
@echo
off
if
not
defined
HOST_PYTHON
(
if
%
1
EQU
Debug
(
shift
set
HOST_PYTHON
=
python_d
.exe
if
not
exist
python35_d
.dll
exit
1
)
ELSE
(
set
HOST_PYTHON
=
python
.exe
if
not
exist
python35
.dll
exit
1
)
)
%HOST_PYTHON%
prepare_ssl
.py
%
1
@echo
off
if
not
defined
HOST_PYTHON
(
if
%
1
EQU
Debug
(
shift
set
HOST_PYTHON
=
python_d
.exe
if
not
exist
python35_d
.dll
exit
1
)
ELSE
(
set
HOST_PYTHON
=
python
.exe
if
not
exist
python35
.dll
exit
1
)
)
%HOST_PYTHON%
prepare_ssl
.py
%
1
PCbuild/readme.txt
View file @
0f164c60
Quick Start Guide
-----------------
1. Install Microsoft Visual Studio 2015, any edition.
2. Install Subversion, and make sure 'svn.exe' is on your PATH.
3. Run "build.bat -e" to build Python in 32-bit Release configuration.
4. (Optional, but recommended) Run the test suite with "rt.bat -q".
Building Python using Microsoft Visual C++
------------------------------------------
This directory is used to build CPython for Microsoft Windows NT version
6.0 or higher (Windows Vista, Windows Server 2008, or later) on 32 and 64
bit platforms. Using this directory requires an installation of
Microsoft Visual C++ 2015 (MSVC 14.0) of any edition. The specific
requirements are as follows:
Visual Studio Express 2015 for Desktop
Visual Studio Professional 2015
Either edition is sufficient for building all configurations except
for Profile Guided Optimization.
The Python build solution pcbuild.sln makes use of Solution Folders,
which this edition does not support. Any time pcbuild.sln is opened
or reloaded by Visual Studio, a warning about Solution Folders will
be displayed, which can be safely dismissed with no impact on your
ability to build Python.
Required for building 64-bit Debug and Release configuration builds
Visual Studio Premium 2015
Required for building Release configuration builds that make use of
Profile Guided Optimization (PGO), on either platform.
All you need to do to build is open the solution "pcbuild.sln" in Visual
Studio, select the desired combination of configuration and platform,
then build with "Build Solution". You can also build from the command
line using the "build.bat" script in this directory; see below for
details. The solution is configured to build the projects in the correct
order.
The solution currently supports two platforms. The Win32 platform is
used to build standard x86-compatible 32-bit binaries, output into the
win32 sub-directory. The x64 platform is used for building 64-bit AMD64
(aka x86_64 or EM64T) binaries, output into the amd64 sub-directory.
The Itanium (IA-64) platform is no longer supported. See the "Building
for AMD64" section below for more information about 64-bit builds.
Four configuration options are supported by the solution:
Debug
Used to build Python with extra debugging capabilities, equivalent
to using ./configure --with-pydebug on UNIX. All binaries built
using this configuration have "_d" added to their name:
python35_d.dll, python_d.exe, parser_d.pyd, and so on. Both the
build and rt (run test) batch files in this directory accept a -d
option for debug builds. If you are building Python to help with
development of CPython, you will most likely use this configuration.
PGInstrument, PGUpdate
Used to build Python in Release configuration using PGO, which
requires Premium Edition of Visual Studio. See the "Profile
Guided Optimization" section below for more information. Build
output from each of these configurations lands in its own
sub-directory of this directory. The official Python releases may
be built using these configurations.
Release
Used to build Python as it is meant to be used in production
settings, though without PGO.
Building Python using the build.bat script
----------------------------------------------
In this directory you can find build.bat, a script designed to make
building Python on Windows simpler. This script will use the env.bat
script to detect one of Visual Studio 2015, 2013, 2012, or 2010, any of
which may be used to build Python, though only Visual Studio 2015 is
officially supported.
By default, build.bat will build Python in Release configuration for
the 32-bit Win32 platform. It accepts several arguments to change
this behavior:
-c <configuration> Set the configuration (see above)
-d Shortcut for "-c Debug"
-p <platform> Set the platform to build for ("Win32" or "x64")
-r Rebuild instead of just building
-t <target> Set the target (Build, Rebuild, Clean or CleanAll)
-e Use get_externals.bat to fetch external sources
-M Don't build in parallel
-v Increased output messages
Up to 9 MSBuild switches can also be passed, though they must be passed
after specifying any of the above switches. For example, use:
build.bat -e -d /fl
to do a debug build with externals fetched as needed and write detailed
build logs to a file. If the MSBuild switch requires an equal sign
("="), the entire switch must be quoted:
build.bat -e -d "/p:ExternalsDir=P:\cpython-externals"
There may also be other situations where quotes are necessary.
C Runtime
---------
Visual Studio 2015 uses version 14 of the C runtime (MSVCRT14). The
executables no longer use the "Side by Side" assemblies used in previous
versions of the compiler. This simplifies distribution of applications.
The run time libraries are available under the VC/Redist folder of your
Visual Studio distribution. For more info, see the Readme in the
VC/Redist folder.
Sub-Projects
------------
The CPython project is split up into several smaller sub-projects which
are managed by the pcbuild.sln solution file. Each sub-project is
represented by a .vcxproj and a .vcxproj.filters file starting with the
name of the sub-project. These sub-projects fall into a few general
categories:
The following sub-projects represent the bare minimum required to build
a functioning CPython interpreter. If nothing else builds but these,
you'll have a very limited but usable python.exe:
pythoncore
.dll and .lib
python
.exe
make_buildinfo, make_versioninfo
helpers to provide necessary information to the build process
These sub-projects provide extra executables that are useful for running
CPython in different ways:
pythonw
pythonw.exe, a variant of python.exe that doesn't open a Command
Prompt window
pylauncher
py.exe, the Python Launcher for Windows, see
http://docs.python.org/3/using/windows.html#launcher
pywlauncher
pyw.exe, a variant of py.exe that doesn't open a Command Prompt
window
_testembed
_testembed.exe, a small program that embeds Python for testing
purposes, used by test_capi.py
These are miscellaneous sub-projects that don't really fit the other
categories:
_freeze_importlib
_freeze_importlib.exe, used to regenerate Python\importlib.h after
changes have been made to Lib\importlib\_bootstrap.py
bdist_wininst
..\Lib\distutils\command\wininst-14.0[-amd64].exe, the base
executable used by the distutils bdist_wininst command
python3dll
python3.dll, the PEP 384 Stable ABI dll
xxlimited
builds an example module that makes use of the PEP 384 Stable ABI,
see Modules\xxlimited.c
The following sub-projects are for individual modules of the standard
library which are implemented in C; each one builds a DLL (renamed to
.pyd) of the same name as the project:
_ctypes
_ctypes_test
_decimal
_elementtree
_hashlib
_msi
_multiprocessing
_overlapped
_socket
_testcapi
_testbuffer
_testimportmultiple
pyexpat
select
unicodedata
winsound
The following Python-controlled sub-projects wrap external projects.
Note that these external libraries are not necessary for a working
interpreter, but they do implement several major features. See the
"Getting External Sources" section below for additional information
about getting the source for building these libraries. The sub-projects
are:
_bz2
Python wrapper for version 1.0.6 of the libbzip2 compression library
Homepage:
http://www.bzip.org/
_lzma
Python wrapper for the liblzma compression library, using pre-built
binaries of XZ Utils version 5.0.5
Homepage:
http://tukaani.org/xz/
_ssl
Python wrapper for version 1.0.1j of the OpenSSL secure sockets
library, which is built by ssl.vcxproj
Homepage:
http://www.openssl.org/
Building OpenSSL requires nasm.exe (the Netwide Assembler), version
2.10 or newer from
http://www.nasm.us/
to be somewhere on your PATH. More recent versions of OpenSSL may
need a later version of NASM. If OpenSSL's self tests don't pass,
you should first try to update NASM and do a full rebuild of
OpenSSL. get_externals.py also downloads a snapshot of NASM, and the
libeay and ssleay sub-projects use that version of nasm.exe.
The libeay/ssleay sub-projects expect your OpenSSL sources to have
already been configured and be ready to build. If you get your sources
from svn.python.org as suggested in the "Getting External Sources"
section below, the OpenSSL source will already be ready to go. If
you want to build a different version, you will need to run
PCbuild\prepare_ssl.py path\to\openssl-source-dir
That script will prepare your OpenSSL sources in the same way that
those available on svn.python.org have been prepared. Note that
Perl must be installed and available on your PATH to configure
OpenSSL. ActivePerl is recommended and is available from
http://www.activestate.com/activeperl/
The libeay and ssleay sub-projects will build the modules of OpenSSL
required by _ssl and _hashlib and may need to be manually updated when
upgrading to a newer version of OpenSSL or when adding new
functionality to _ssl or _hashlib. They will not clean up their output
with the normal Clean target; CleanAll should be used instead.
_sqlite3
Wraps SQLite 3.8.3.1, which is itself built by sqlite3.vcxproj
Homepage:
http://www.sqlite.org/
_tkinter
Wraps version 8.6.1 of the Tk windowing system.
Homepage:
http://www.tcl.tk/
Tkinter's dependencies are built by the tcl.vcxproj and tk.vcxproj
projects. The tix.vcxproj project also builds the Tix extended
widget set for use with Tkinter.
Those three projects install their respective components in a
directory alongside the source directories called "tcltk" on
Win32 and "tcltk64" on x64. They also copy the Tcl and Tk DLLs
into the current output directory, which should ensure that Tkinter
is able to load Tcl/Tk without having to change your PATH.
The tcl, tk, and tix sub-projects do not clean their builds with
the normal Clean target; if you need to rebuild, you should use the
CleanAll target or manually delete their builds.
Getting External Sources
------------------------
The last category of sub-projects listed above wrap external projects
Python doesn't control, and as such a little more work is required in
order to download the relevant source files for each project before they
can be built. However, a simple script is provided to make this as
painless as possible, called "get_externals.bat" and located in this
directory. This script extracts all the external sub-projects from
http://svn.python.org/projects/external
via Subversion (so you'll need svn.exe on your PATH) and places them
in ..\externals (relative to this directory).
It is also possible to download sources from each project's homepage,
though you may have to change folder names or pass the names to MSBuild
as the values of certain properties in order for the build solution to
find them. This is an advanced topic and not necessarily fully
supported.
Building for AMD64
------------------
The build process for AMD64 / x64 is very similar to standard builds,
you just have to set x64 as platform. In addition, the HOST_PYTHON
environment variable must point to a Python interpreter (at least 2.4),
to support cross-compilation from Win32.
Profile Guided Optimization
---------------------------
The solution has two configurations for PGO. The PGInstrument
configuration must be built first. The PGInstrument binaries are linked
against a profiling library and contain extra debug information. The
PGUpdate configuration takes the profiling data and generates optimized
binaries.
The build_pgo.bat script automates the creation of optimized binaries.
It creates the PGI files, runs the unit test suite or PyBench with the
PGI python, and finally creates the optimized files.
See
http://msdn.microsoft.com/en-us/library/e7k32f4k(VS.100).aspx
for more on this topic.
Static library
--------------
The solution has no configuration for static libraries. However it is
easy to build a static library instead of a DLL. You simply have to set
the "Configuration Type" to "Static Library (.lib)" and alter the
preprocessor macro "Py_ENABLE_SHARED" to "Py_NO_ENABLE_SHARED". You may
also have to change the "Runtime Library" from "Multi-threaded DLL
(/MD)" to "Multi-threaded (/MT)".
Visual Studio properties
------------------------
The PCbuild solution makes use of Visual Studio property files (*.props)
to simplify each project. The properties can be viewed in the Property
Manager (View -> Other Windows -> Property Manager) but should be
carefully modified by hand.
The property files used are:
* python (versions, directories and build names)
* pyproject (base settings for all projects)
* openssl (used by libeay and ssleay projects)
* tcltk (used by _tkinter, tcl, tk and tix projects)
The pyproject property file defines all of the build settings for each
project, with some projects overriding certain specific values. The GUI
doesn't always reflect the correct settings and may confuse the user
with false information, especially for settings that automatically adapt
for diffirent configurations.
Your Own Extension DLLs
-----------------------
If you want to create your own extension module DLL (.pyd), there's an
example with easy-to-follow instructions in ..\PC\example\; read the
file readme.txt there first.
Quick Start Guide
-----------------
1. Install Microsoft Visual Studio 2015, any edition.
2. Install Subversion, and make sure 'svn.exe' is on your PATH.
3. Run "build.bat -e" to build Python in 32-bit Release configuration.
4. (Optional, but recommended) Run the test suite with "rt.bat -q".
Building Python using Microsoft Visual C++
------------------------------------------
This directory is used to build CPython for Microsoft Windows NT version
6.0 or higher (Windows Vista, Windows Server 2008, or later) on 32 and 64
bit platforms. Using this directory requires an installation of
Microsoft Visual C++ 2015 (MSVC 14.0) of any edition. The specific
requirements are as follows:
Visual Studio Express 2015 for Desktop
Visual Studio Professional 2015
Either edition is sufficient for building all configurations except
for Profile Guided Optimization.
The Python build solution pcbuild.sln makes use of Solution Folders,
which this edition does not support. Any time pcbuild.sln is opened
or reloaded by Visual Studio, a warning about Solution Folders will
be displayed, which can be safely dismissed with no impact on your
ability to build Python.
Required for building 64-bit Debug and Release configuration builds
Visual Studio Premium 2015
Required for building Release configuration builds that make use of
Profile Guided Optimization (PGO), on either platform.
All you need to do to build is open the solution "pcbuild.sln" in Visual
Studio, select the desired combination of configuration and platform,
then build with "Build Solution". You can also build from the command
line using the "build.bat" script in this directory; see below for
details. The solution is configured to build the projects in the correct
order.
The solution currently supports two platforms. The Win32 platform is
used to build standard x86-compatible 32-bit binaries, output into the
win32 sub-directory. The x64 platform is used for building 64-bit AMD64
(aka x86_64 or EM64T) binaries, output into the amd64 sub-directory.
The Itanium (IA-64) platform is no longer supported. See the "Building
for AMD64" section below for more information about 64-bit builds.
Four configuration options are supported by the solution:
Debug
Used to build Python with extra debugging capabilities, equivalent
to using ./configure --with-pydebug on UNIX. All binaries built
using this configuration have "_d" added to their name:
python35_d.dll, python_d.exe, parser_d.pyd, and so on. Both the
build and rt (run test) batch files in this directory accept a -d
option for debug builds. If you are building Python to help with
development of CPython, you will most likely use this configuration.
PGInstrument, PGUpdate
Used to build Python in Release configuration using PGO, which
requires Premium Edition of Visual Studio. See the "Profile
Guided Optimization" section below for more information. Build
output from each of these configurations lands in its own
sub-directory of this directory. The official Python releases may
be built using these configurations.
Release
Used to build Python as it is meant to be used in production
settings, though without PGO.
Building Python using the build.bat script
----------------------------------------------
In this directory you can find build.bat, a script designed to make
building Python on Windows simpler. This script will use the env.bat
script to detect one of Visual Studio 2015, 2013, 2012, or 2010, any of
which may be used to build Python, though only Visual Studio 2015 is
officially supported.
By default, build.bat will build Python in Release configuration for
the 32-bit Win32 platform. It accepts several arguments to change
this behavior:
-c <configuration> Set the configuration (see above)
-d Shortcut for "-c Debug"
-p <platform> Set the platform to build for ("Win32" or "x64")
-r Rebuild instead of just building
-t <target> Set the target (Build, Rebuild, Clean or CleanAll)
-e Use get_externals.bat to fetch external sources
-M Don't build in parallel
-v Increased output messages
Up to 9 MSBuild switches can also be passed, though they must be passed
after specifying any of the above switches. For example, use:
build.bat -e -d /fl
to do a debug build with externals fetched as needed and write detailed
build logs to a file. If the MSBuild switch requires an equal sign
("="), the entire switch must be quoted:
build.bat -e -d "/p:ExternalsDir=P:\cpython-externals"
There may also be other situations where quotes are necessary.
C Runtime
---------
Visual Studio 2015 uses version 14 of the C runtime (MSVCRT14). The
executables no longer use the "Side by Side" assemblies used in previous
versions of the compiler. This simplifies distribution of applications.
The run time libraries are available under the VC/Redist folder of your
Visual Studio distribution. For more info, see the Readme in the
VC/Redist folder.
Sub-Projects
------------
The CPython project is split up into several smaller sub-projects which
are managed by the pcbuild.sln solution file. Each sub-project is
represented by a .vcxproj and a .vcxproj.filters file starting with the
name of the sub-project. These sub-projects fall into a few general
categories:
The following sub-projects represent the bare minimum required to build
a functioning CPython interpreter. If nothing else builds but these,
you'll have a very limited but usable python.exe:
pythoncore
.dll and .lib
python
.exe
make_buildinfo, make_versioninfo
helpers to provide necessary information to the build process
These sub-projects provide extra executables that are useful for running
CPython in different ways:
pythonw
pythonw.exe, a variant of python.exe that doesn't open a Command
Prompt window
pylauncher
py.exe, the Python Launcher for Windows, see
http://docs.python.org/3/using/windows.html#launcher
pywlauncher
pyw.exe, a variant of py.exe that doesn't open a Command Prompt
window
_testembed
_testembed.exe, a small program that embeds Python for testing
purposes, used by test_capi.py
These are miscellaneous sub-projects that don't really fit the other
categories:
_freeze_importlib
_freeze_importlib.exe, used to regenerate Python\importlib.h after
changes have been made to Lib\importlib\_bootstrap.py
bdist_wininst
..\Lib\distutils\command\wininst-14.0[-amd64].exe, the base
executable used by the distutils bdist_wininst command
python3dll
python3.dll, the PEP 384 Stable ABI dll
xxlimited
builds an example module that makes use of the PEP 384 Stable ABI,
see Modules\xxlimited.c
The following sub-projects are for individual modules of the standard
library which are implemented in C; each one builds a DLL (renamed to
.pyd) of the same name as the project:
_ctypes
_ctypes_test
_decimal
_elementtree
_hashlib
_msi
_multiprocessing
_overlapped
_socket
_testcapi
_testbuffer
_testimportmultiple
pyexpat
select
unicodedata
winsound
The following Python-controlled sub-projects wrap external projects.
Note that these external libraries are not necessary for a working
interpreter, but they do implement several major features. See the
"Getting External Sources" section below for additional information
about getting the source for building these libraries. The sub-projects
are:
_bz2
Python wrapper for version 1.0.6 of the libbzip2 compression library
Homepage:
http://www.bzip.org/
_lzma
Python wrapper for the liblzma compression library, using pre-built
binaries of XZ Utils version 5.0.5
Homepage:
http://tukaani.org/xz/
_ssl
Python wrapper for version 1.0.1j of the OpenSSL secure sockets
library, which is built by ssl.vcxproj
Homepage:
http://www.openssl.org/
Building OpenSSL requires nasm.exe (the Netwide Assembler), version
2.10 or newer from
http://www.nasm.us/
to be somewhere on your PATH. More recent versions of OpenSSL may
need a later version of NASM. If OpenSSL's self tests don't pass,
you should first try to update NASM and do a full rebuild of
OpenSSL. get_externals.py also downloads a snapshot of NASM, and the
libeay and ssleay sub-projects use that version of nasm.exe.
The libeay/ssleay sub-projects expect your OpenSSL sources to have
already been configured and be ready to build. If you get your sources
from svn.python.org as suggested in the "Getting External Sources"
section below, the OpenSSL source will already be ready to go. If
you want to build a different version, you will need to run
PCbuild\prepare_ssl.py path\to\openssl-source-dir
That script will prepare your OpenSSL sources in the same way that
those available on svn.python.org have been prepared. Note that
Perl must be installed and available on your PATH to configure
OpenSSL. ActivePerl is recommended and is available from
http://www.activestate.com/activeperl/
The libeay and ssleay sub-projects will build the modules of OpenSSL
required by _ssl and _hashlib and may need to be manually updated when
upgrading to a newer version of OpenSSL or when adding new
functionality to _ssl or _hashlib. They will not clean up their output
with the normal Clean target; CleanAll should be used instead.
_sqlite3
Wraps SQLite 3.8.3.1, which is itself built by sqlite3.vcxproj
Homepage:
http://www.sqlite.org/
_tkinter
Wraps version 8.6.1 of the Tk windowing system.
Homepage:
http://www.tcl.tk/
Tkinter's dependencies are built by the tcl.vcxproj and tk.vcxproj
projects. The tix.vcxproj project also builds the Tix extended
widget set for use with Tkinter.
Those three projects install their respective components in a
directory alongside the source directories called "tcltk" on
Win32 and "tcltk64" on x64. They also copy the Tcl and Tk DLLs
into the current output directory, which should ensure that Tkinter
is able to load Tcl/Tk without having to change your PATH.
The tcl, tk, and tix sub-projects do not clean their builds with
the normal Clean target; if you need to rebuild, you should use the
CleanAll target or manually delete their builds.
Getting External Sources
------------------------
The last category of sub-projects listed above wrap external projects
Python doesn't control, and as such a little more work is required in
order to download the relevant source files for each project before they
can be built. However, a simple script is provided to make this as
painless as possible, called "get_externals.bat" and located in this
directory. This script extracts all the external sub-projects from
http://svn.python.org/projects/external
via Subversion (so you'll need svn.exe on your PATH) and places them
in ..\externals (relative to this directory).
It is also possible to download sources from each project's homepage,
though you may have to change folder names or pass the names to MSBuild
as the values of certain properties in order for the build solution to
find them. This is an advanced topic and not necessarily fully
supported.
Building for AMD64
------------------
The build process for AMD64 / x64 is very similar to standard builds,
you just have to set x64 as platform. In addition, the HOST_PYTHON
environment variable must point to a Python interpreter (at least 2.4),
to support cross-compilation from Win32.
Profile Guided Optimization
---------------------------
The solution has two configurations for PGO. The PGInstrument
configuration must be built first. The PGInstrument binaries are linked
against a profiling library and contain extra debug information. The
PGUpdate configuration takes the profiling data and generates optimized
binaries.
The build_pgo.bat script automates the creation of optimized binaries.
It creates the PGI files, runs the unit test suite or PyBench with the
PGI python, and finally creates the optimized files.
See
http://msdn.microsoft.com/en-us/library/e7k32f4k(VS.100).aspx
for more on this topic.
Static library
--------------
The solution has no configuration for static libraries. However it is
easy to build a static library instead of a DLL. You simply have to set
the "Configuration Type" to "Static Library (.lib)" and alter the
preprocessor macro "Py_ENABLE_SHARED" to "Py_NO_ENABLE_SHARED". You may
also have to change the "Runtime Library" from "Multi-threaded DLL
(/MD)" to "Multi-threaded (/MT)".
Visual Studio properties
------------------------
The PCbuild solution makes use of Visual Studio property files (*.props)
to simplify each project. The properties can be viewed in the Property
Manager (View -> Other Windows -> Property Manager) but should be
carefully modified by hand.
The property files used are:
* python (versions, directories and build names)
* pyproject (base settings for all projects)
* openssl (used by libeay and ssleay projects)
* tcltk (used by _tkinter, tcl, tk and tix projects)
The pyproject property file defines all of the build settings for each
project, with some projects overriding certain specific values. The GUI
doesn't always reflect the correct settings and may confuse the user
with false information, especially for settings that automatically adapt
for diffirent configurations.
Your Own Extension DLLs
-----------------------
If you want to create your own extension module DLL (.pyd), there's an
example with easy-to-follow instructions in ..\PC\example\; read the
file readme.txt there first.
PCbuild/rt.bat
View file @
0f164c60
@echo
off
rem Run Tests. Run the regression test suite.
rem Usage: rt [-d] [-O] [-q] [-x64] regrtest_args
rem -d Run Debug build (python_d.exe). Else release build.
rem -O Run python.exe or python_d.exe (see -d) with -O.
rem -q "quick" -- normally the tests are run twice, the first time
rem after deleting all the .py[co] files reachable from Lib/.
rem -q runs the tests just once, and without deleting .py[co] files.
rem -x64 Run the 64-bit build of python (or python_d if -d was specified)
rem from the 'amd64' dir instead of the 32-bit build in this dir.
rem All leading instances of these switches are shifted off, and
rem whatever remains (up to 9 arguments) is passed to regrtest.py.
rem For example,
rem rt -O -d -x test_thread
rem runs
rem python_d -O ../lib/test/regrtest.py -x test_thread
rem twice, and
rem rt -q -g test_binascii
rem runs
rem python_d ../lib/test/regrtest.py -g test_binascii
rem to generate the expected-output file for binascii quickly.
rem
rem Confusing: if you want to pass a comma-separated list, like
rem -u network,largefile
rem then you have to quote it on the rt line, like
rem rt -u "network,largefile"
setlocal
set
pcbuild
=
%~dp0
set
prefix
=
%pcbuild%
win32
\
set
suffix
=
set
qmode
=
set
dashO
=
:CheckOpts
if
"
%
1"
==
"-O"
(
set
dashO
=
-O
)
&
shift
&
goto
CheckOpts
if
"
%
1"
==
"-q"
(
set
qmode
=
yes
)
&
shift
&
goto
CheckOpts
if
"
%
1"
==
"-d"
(
set
suffix
=
_d
)
&
shift
&
goto
CheckOpts
if
"
%
1"
==
"-x64"
(
set
prefix
=
%pcbuild%
amd64
\
)
&
shift
&
goto
CheckOpts
set
exe
=
%prefix%
python
%suffix%
.exe
set
cmd
=
"
%exe%
"
%dashO%
-Wd -E -bb
"
%pcbuild%
..\lib\test\regrtest.py"
%
1
%
2
%
3
%
4
%
5
%
6
%
7
%
8
%
9
if
defined
qmode
goto
Qmode
echo
Deleting
.pyc/.pyo
files
...
"
%exe%
"
"
%pcbuild%
rmpyc.py"
echo
on
%cmd%
@echo
off
echo
About
to
run
again
without
deleting
.pyc/.pyo
first
:
pause
:Qmode
echo
on
%cmd%
@echo
off
rem Run Tests. Run the regression test suite.
rem Usage: rt [-d] [-O] [-q] [-x64] regrtest_args
rem -d Run Debug build (python_d.exe). Else release build.
rem -O Run python.exe or python_d.exe (see -d) with -O.
rem -q "quick" -- normally the tests are run twice, the first time
rem after deleting all the .py[co] files reachable from Lib/.
rem -q runs the tests just once, and without deleting .py[co] files.
rem -x64 Run the 64-bit build of python (or python_d if -d was specified)
rem from the 'amd64' dir instead of the 32-bit build in this dir.
rem All leading instances of these switches are shifted off, and
rem whatever remains (up to 9 arguments) is passed to regrtest.py.
rem For example,
rem rt -O -d -x test_thread
rem runs
rem python_d -O ../lib/test/regrtest.py -x test_thread
rem twice, and
rem rt -q -g test_binascii
rem runs
rem python_d ../lib/test/regrtest.py -g test_binascii
rem to generate the expected-output file for binascii quickly.
rem
rem Confusing: if you want to pass a comma-separated list, like
rem -u network,largefile
rem then you have to quote it on the rt line, like
rem rt -u "network,largefile"
setlocal
set
pcbuild
=
%~dp0
set
prefix
=
%pcbuild%
win32
\
set
suffix
=
set
qmode
=
set
dashO
=
:CheckOpts
if
"
%
1"
==
"-O"
(
set
dashO
=
-O
)
&
shift
&
goto
CheckOpts
if
"
%
1"
==
"-q"
(
set
qmode
=
yes
)
&
shift
&
goto
CheckOpts
if
"
%
1"
==
"-d"
(
set
suffix
=
_d
)
&
shift
&
goto
CheckOpts
if
"
%
1"
==
"-x64"
(
set
prefix
=
%pcbuild%
amd64
\
)
&
shift
&
goto
CheckOpts
set
exe
=
%prefix%
python
%suffix%
.exe
set
cmd
=
"
%exe%
"
%dashO%
-Wd -E -bb
"
%pcbuild%
..\lib\test\regrtest.py"
%
1
%
2
%
3
%
4
%
5
%
6
%
7
%
8
%
9
if
defined
qmode
goto
Qmode
echo
Deleting
.pyc/.pyo
files
...
"
%exe%
"
"
%pcbuild%
rmpyc.py"
echo
on
%cmd%
@echo
off
echo
About
to
run
again
without
deleting
.pyc/.pyo
first
:
pause
:Qmode
echo
on
%cmd%
Tools/buildbot/build-amd64.bat
View file @
0f164c60
@rem
Used
by
the
buildbot
"compile"
step
.
call
"
%~dp0
build.bat"
-p
x64
%
*
@rem
Used
by
the
buildbot
"compile"
step
.
call
"
%~dp0
build.bat"
-p
x64
%
*
Tools/buildbot/build.bat
View file @
0f164c60
@rem
Used
by
the
buildbot
"compile"
step
.
@rem
Clean
up
set
PLAT
=
if
'
%
1'
EQU
'-p'
if
'
%
2'
EQU
'x64'
(
set
PLAT
=
-amd
64
)
call
"
%~dp0
clean
%PLAT%
.bat"
@rem
If
you
need
the
buildbots
to
start
fresh
(
such
as
when
upgrading
to
@rem
a
new
version
of
an
external
library
,
especially
Tcl
/Tk
)
:
@rem
1
)
uncomment
the
following
line
:
@rem
call
"
%~dp0
..\..\PCbuild\get_externals.bat"
-
-clean-only
@rem
2
)
commit
and
push
@rem
3
)
wait
for
all
Windows
bots
to
start
a
build
with
that
changeset
@rem
4
)
re
-comment
,
commit
and
push
again
@rem
Do
the
build
call
"
%~dp0
..\..\PCbuild\build.bat"
-e -d -v
%
*
@rem
Used
by
the
buildbot
"compile"
step
.
@rem
Clean
up
set
PLAT
=
if
'
%
1'
EQU
'-p'
if
'
%
2'
EQU
'x64'
(
set
PLAT
=
-amd
64
)
call
"
%~dp0
clean
%PLAT%
.bat"
@rem
If
you
need
the
buildbots
to
start
fresh
(
such
as
when
upgrading
to
@rem
a
new
version
of
an
external
library
,
especially
Tcl
/Tk
)
:
@rem
1
)
uncomment
the
following
line
:
@rem
call
"
%~dp0
..\..\PCbuild\get_externals.bat"
-
-clean-only
@rem
2
)
commit
and
push
@rem
3
)
wait
for
all
Windows
bots
to
start
a
build
with
that
changeset
@rem
4
)
re
-comment
,
commit
and
push
again
@rem
Do
the
build
call
"
%~dp0
..\..\PCbuild\build.bat"
-e -d -v
%
*
Tools/buildbot/buildmsi.bat
View file @
0f164c60
@rem
Used
by
the
buildbot
"buildmsi"
step
.
setlocal
pushd
@rem
build
both
snapshot
MSIs
call
"
%~dp0
..\msi\build.bat"
-x
86
-x
64
@rem
Used
by
the
buildbot
"buildmsi"
step
.
setlocal
pushd
@rem
build
both
snapshot
MSIs
call
"
%~dp0
..\msi\build.bat"
-x
86
-x
64
popd
\ No newline at end of file
Tools/buildbot/clean-amd64.bat
View file @
0f164c60
@rem
Used
by
the
buildbot
"clean"
step
.
@call
"
%~dp0
clean.bat"
x64
@rem
Used
by
the
buildbot
"clean"
step
.
@call
"
%~dp0
clean.bat"
x64
Tools/buildbot/clean.bat
View file @
0f164c60
@echo
off
rem Used by the buildbot "clean" step.
setlocal
set
root
=
%~dp0
..\..
set
pcbuild
=
%root%
\PCbuild
if
"
%
1"
==
"x64"
(
set
vcvars_target
=
x86_amd64
set
platform
=
x64
)
else
(
set
vcvars_target
=
x86
set
platform
=
Win32
)
call
"
%pcbuild%
\env.bat"
%vcvars_target%
echo
.Attempting
to
kill
Pythons
...
msbuild
/v
:m
/nologo /target
:KillPython
"
%pcbuild%
\pythoncore.vcxproj"
/p
:Configuration
=
Release
/p
:Platform
=
%platform%
/p
:KillPython
=
true
echo
Deleting
.pyc/.pyo
files
...
del
/s
"
%root%
\Lib\*.pyc"
"
%root%
\Lib\*.pyo"
echo
Deleting
test
leftovers
...
rmdir
/s /q
"
%root%
\build"
echo
Deleting
build
msbuild
/v
:m
/nologo /target
:clean
"
%pcbuild%
\pcbuild.proj"
/p
:Configuration
=
Release
/p
:Platform
=
%platform%
msbuild
/v
:m
/nologo /target
:clean
"
%pcbuild%
\pcbuild.proj"
/p
:Configuration
=
Debug
/p
:Platform
=
%platform%
@echo
off
rem Used by the buildbot "clean" step.
setlocal
set
root
=
%~dp0
..\..
set
pcbuild
=
%root%
\PCbuild
if
"
%
1"
==
"x64"
(
set
vcvars_target
=
x86_amd64
set
platform
=
x64
)
else
(
set
vcvars_target
=
x86
set
platform
=
Win32
)
call
"
%pcbuild%
\env.bat"
%vcvars_target%
echo
.Attempting
to
kill
Pythons
...
msbuild
/v
:m
/nologo /target
:KillPython
"
%pcbuild%
\pythoncore.vcxproj"
/p
:Configuration
=
Release
/p
:Platform
=
%platform%
/p
:KillPython
=
true
echo
Deleting
.pyc/.pyo
files
...
del
/s
"
%root%
\Lib\*.pyc"
"
%root%
\Lib\*.pyo"
echo
Deleting
test
leftovers
...
rmdir
/s /q
"
%root%
\build"
echo
Deleting
build
msbuild
/v
:m
/nologo /target
:clean
"
%pcbuild%
\pcbuild.proj"
/p
:Configuration
=
Release
/p
:Platform
=
%platform%
msbuild
/v
:m
/nologo /target
:clean
"
%pcbuild%
\pcbuild.proj"
/p
:Configuration
=
Debug
/p
:Platform
=
%platform%
Tools/buildbot/external-amd64.bat
View file @
0f164c60
@echo
Please
use
PCbuild
\get_externals.bat
instead
.
@
"
%~dp0
..\..\PCbuild\get_externals.bat"
%
*
@echo
Please
use
PCbuild
\get_externals.bat
instead
.
@
"
%~dp0
..\..\PCbuild\get_externals.bat"
%
*
Tools/buildbot/external.bat
View file @
0f164c60
@echo
Please
use
PCbuild
\get_externals.bat
instead
.
@
"
%~dp0
..\..\PCbuild\get_externals.bat"
%
*
@echo
Please
use
PCbuild
\get_externals.bat
instead
.
@
"
%~dp0
..\..\PCbuild\get_externals.bat"
%
*
Tools/buildbot/test-amd64.bat
View file @
0f164c60
@rem
Used
by
the
buildbot
"test"
step
.
setlocal
rem The following line should be removed before #20035 is closed
set
TCL_LIBRARY
=
%~dp0
..\..\externals\tcltk64\lib\tcl8.6
call
"
%~dp0
..\..\PCbuild\rt.bat"
-d -q -x
64
-uall -rwW -n
-
-timeout
=
3600
%
*
@rem
Used
by
the
buildbot
"test"
step
.
setlocal
rem The following line should be removed before #20035 is closed
set
TCL_LIBRARY
=
%~dp0
..\..\externals\tcltk64\lib\tcl8.6
call
"
%~dp0
..\..\PCbuild\rt.bat"
-d -q -x
64
-uall -rwW -n
-
-timeout
=
3600
%
*
Tools/buildbot/test.bat
View file @
0f164c60
@rem
Used
by
the
buildbot
"test"
step
.
setlocal
rem The following line should be removed before #20035 is closed
set
TCL_LIBRARY
=
%~dp0
..\..\externals\tcltk\lib\tcl8.6
call
"
%~dp0
..\..\PCbuild\rt.bat"
-d -q -uall -rwW -n
-
-timeout
=
3600
%
*
@rem
Used
by
the
buildbot
"test"
step
.
setlocal
rem The following line should be removed before #20035 is closed
set
TCL_LIBRARY
=
%~dp0
..\..\externals\tcltk\lib\tcl8.6
call
"
%~dp0
..\..\PCbuild\rt.bat"
-d -q -uall -rwW -n
-
-timeout
=
3600
%
*
Tools/msi/build.bat
View file @
0f164c60
@echo
off
setlocal
set
D
=
%~dp0
set
PCBUILD
=
%D%
..\..\PCBuild\
set
BUILDX86
=
set
BUILDX64
=
set
BUILDDOC
=
:CheckOpts
if
'
%
1'
==
'-x86'
(
set
BUILDX86
=
1
)
&&
shift
&&
goto
CheckOpts
if
'
%
1'
==
'-x64'
(
set
BUILDX64
=
1
)
&&
shift
&&
goto
CheckOpts
if
'
%
1'
==
'--doc'
(
set
BUILDDOC
=
1
)
&&
shift
&&
goto
CheckOpts
if
not
defined
BUILDX86
if
not
defined
BUILDX64
(
set
BUILDX86
=
1
)
&&
(
set
BUILDX64
=
1
)
call
"
%PCBUILD%
env.bat"
x86
if
defined
BUILDX86
(
call
"
%PCBUILD%
build.bat"
-d
if
errorlevel
1
goto
:eof
call
"
%PCBUILD%
build.bat"
if
errorlevel
1
goto
:eof
)
if
defined
BUILDX64
(
call
"
%PCBUILD%
build.bat"
-p
x64
-d
if
errorlevel
1
goto
:eof
call
"
%PCBUILD%
build.bat"
-p
x64
if
errorlevel
1
goto
:eof
)
if
defined
BUILDDOC
(
call
"
%PCBUILD%
..\Doc\make.bat"
htmlhelp
if
errorlevel
1
goto
:eof
)
if
defined
BUILDX86
(
"
%PCBUILD%
win32\python.exe"
"
%D%
get_wix.py"
msbuild
"
%D%
bundle\snapshot.wixproj"
if
errorlevel
1
goto
:eof
)
if
defined
BUILDX64
(
"
%PCBUILD%
amd64\python.exe"
"
%D%
get_wix.py"
msbuild
"
%D%
bundle\snapshot.wixproj"
/p
:Platform
=
x64
if
errorlevel
1
goto
:eof
)
@echo
off
setlocal
set
D
=
%~dp0
set
PCBUILD
=
%D%
..\..\PCBuild\
set
BUILDX86
=
set
BUILDX64
=
set
BUILDDOC
=
:CheckOpts
if
'
%
1'
==
'-x86'
(
set
BUILDX86
=
1
)
&&
shift
&&
goto
CheckOpts
if
'
%
1'
==
'-x64'
(
set
BUILDX64
=
1
)
&&
shift
&&
goto
CheckOpts
if
'
%
1'
==
'--doc'
(
set
BUILDDOC
=
1
)
&&
shift
&&
goto
CheckOpts
if
not
defined
BUILDX86
if
not
defined
BUILDX64
(
set
BUILDX86
=
1
)
&&
(
set
BUILDX64
=
1
)
call
"
%PCBUILD%
env.bat"
x86
if
defined
BUILDX86
(
call
"
%PCBUILD%
build.bat"
-d
if
errorlevel
1
goto
:eof
call
"
%PCBUILD%
build.bat"
if
errorlevel
1
goto
:eof
)
if
defined
BUILDX64
(
call
"
%PCBUILD%
build.bat"
-p
x64
-d
if
errorlevel
1
goto
:eof
call
"
%PCBUILD%
build.bat"
-p
x64
if
errorlevel
1
goto
:eof
)
if
defined
BUILDDOC
(
call
"
%PCBUILD%
..\Doc\make.bat"
htmlhelp
if
errorlevel
1
goto
:eof
)
if
defined
BUILDX86
(
"
%PCBUILD%
win32\python.exe"
"
%D%
get_wix.py"
msbuild
"
%D%
bundle\snapshot.wixproj"
if
errorlevel
1
goto
:eof
)
if
defined
BUILDX64
(
"
%PCBUILD%
amd64\python.exe"
"
%D%
get_wix.py"
msbuild
"
%D%
bundle\snapshot.wixproj"
/p
:Platform
=
x64
if
errorlevel
1
goto
:eof
)
Tools/msi/buildrelease.bat
View file @
0f164c60
@setlocal
@echo
off
rem This script is intended for building official releases of Python.
rem To use it to build alternative releases, you should clone this file
rem and modify the following three URIs.
rem
rem The first two will ensure that your release can be installed
rem alongside an official Python release, while the second specifies
rem the URL that will be used to download installation files. The
rem files available from this URL *will* conflict with your installer.
rem Trust me, you don't want them, even if it seems like a good idea.
set
RELEASE_URI_X86
=
http
://www.python.org/win32
set
RELEASE_URI_X64
=
http
://www.python.org/amd64
set
DOWNLOAD_URL_BASE
=
https
://www.python.org/ftp/python
set
DOWNLOAD_URL
=
set
D
=
%~dp0
set
PCBUILD
=
%D%
..\..\PCBuild\
set
BUILDX86
=
set
BUILDX64
=
set
TARGET
=
Rebuild
set
TESTTARGETDIR
=
:CheckOpts
if
"
%
1"
EQU
"-h"
goto
Help
if
"
%
1"
EQU
"-c"
(
set
CERTNAME
=
%
~
2
)
&&
shift
&&
shift
&&
goto
CheckOpts
if
"
%
1"
EQU
"--certificate"
(
set
CERTNAME
=
%
~
2
)
&&
shift
&&
shift
&&
goto
CheckOpts
if
"
%
1"
EQU
"-o"
(
set
OUTDIR
=
%
~
2
)
&&
shift
&&
shift
&&
goto
CheckOpts
if
"
%
1"
EQU
"--out"
(
set
OUTDIR
=
%
~
2
)
&&
shift
&&
shift
&&
goto
CheckOpts
if
"
%
1"
EQU
"-D"
(
set
SKIPDOC
=
1
)
&&
shift
&&
goto
CheckOpts
if
"
%
1"
EQU
"--skip-doc"
(
set
SKIPDOC
=
1
)
&&
shift
&&
goto
CheckOpts
if
"
%
1"
EQU
"-B"
(
set
SKIPBUILD
=
1
)
&&
shift
&&
goto
CheckOpts
if
"
%
1"
EQU
"--skip-build"
(
set
SKIPBUILD
=
1
)
&&
shift
&&
goto
CheckOpts
if
"
%
1"
EQU
"--download"
(
set
DOWNLOAD_URL
=
%
~
2
)
&&
shift
&&
shift
&&
goto
CheckOpts
if
"
%
1"
EQU
"--test"
(
set
TESTTARGETDIR
=
%
~
2
)
&&
shift
&&
shift
&&
goto
CheckOpts
if
"
%
1"
EQU
"-b"
(
set
TARGET
=
Build
)
&&
shift
&&
goto
CheckOpts
if
"
%
1"
EQU
"--build"
(
set
TARGET
=
Build
)
&&
shift
&&
goto
CheckOpts
if
"
%
1"
EQU
"-x86"
(
set
BUILDX86
=
1
)
&&
shift
&&
goto
CheckOpts
if
"
%
1"
EQU
"-x64"
(
set
BUILDX64
=
1
)
&&
shift
&&
goto
CheckOpts
if
not
defined
BUILDX86
if
not
defined
BUILDX64
(
set
BUILDX86
=
1
)
&&
(
set
BUILDX64
=
1
)
:builddoc
if
"
%SKIPBUILD%
"
EQU
"1"
goto
skipdoc
if
"
%SKIPDOC%
"
EQU
"1"
goto
skipdoc
if
not
defined
PYTHON
where
py
-q
||
echo
Cannot
find
py
on
path
and
PYTHON
is
not
set
.
&&
exit
/B
1
if
not
defined
SPHINXBUILD
where
sphinx
-build -q
||
echo
Cannot
find
sphinx
-build on
path
and
SPHINXBUILD
is
not
set
.
&&
exit
/B
1
call
"
%D%
..\..\doc\make.bat"
htmlhelp
if
errorlevel
1
goto
:eof
:skipdoc
where
hg
/q
||
echo
Cannot
find
Mercurial
on
PATH
&&
exit
/B
1
where
dlltool
/q
&&
goto
skipdlltoolsearch
set
_DLLTOOL_PATH
=
where
/R
"
%D%
..\..\externals"
dlltool
>
"
%TEMP%
\dlltool.loc"
2
>
nul
&&
set
/P
_DLLTOOL_PATH
=
<
"
%TEMP%
\dlltool.loc"
&
del
"
%TEMP%
\dlltool.loc"
if
not
exist
"
%_DLLTOOL_PATH%
"
echo
Cannot
find
binutils
on
PATH
or
in
external
&&
exit
/B
1
for
%%f
in
(
%_DLLTOOL_PATH%
)
do
set
PATH
=
%PATH%
;
%%~dpf
set
_DLLTOOL_PATH
=
:skipdlltoolsearch
if
defined
BUILDX86
(
call
:build
x86
if
errorlevel
1
exit
/B
)
if
defined
BUILDX64
(
call
:build
x64
if
errorlevel
1
exit
/B
)
if
defined
TESTTARGETDIR
(
call
"
%D%
testrelease.bat"
-t
"
%TESTTARGETDIR%
"
)
exit
/B
0
:build
@setlocal
@echo
off
if
"
%
1"
EQU
"x86"
(
call
"
%PCBUILD%
env.bat"
x86
set
BUILD
=
%PCBUILD%
win32
\
set
BUILD_PLAT
=
Win32
set
OUTDIR_PLAT
=
win32
set
OBJDIR_PLAT
=
x86
set
RELEASE_URI
=
%RELEASE
_URI_X86
%
)
ELSE
(
call
"
%PCBUILD%
env.bat"
x86_amd64
set
BUILD
=
%PCBUILD%
amd64
\
set
BUILD_PLAT
=
x64
set
OUTDIR_PLAT
=
amd64
set
OBJDIR_PLAT
=
x64
set
RELEASE_URI
=
%RELEASE
_URI_X64
%
)
if
exist
"
%BUILD%
en-us"
(
echo
Deleting
%BUILD%
en
-us
rmdir
/q/s
"
%BUILD%
en-us"
if
errorlevel
1
exit
/B
)
if
exist
"
%D%
obj\Release_
%OBJDIR_PLAT%
"
(
echo
Deleting
"
%D%
obj\Release_
%OBJDIR_PLAT%
"
rmdir
/q/s
"
%D%
obj\Release_
%OBJDIR_PLAT%
"
if
errorlevel
1
exit
/B
)
if
not
"
%CERTNAME%
"
EQU
""
(
set
CERTOPTS
=
"/p:SigningCertificate=
%CERTNAME%
"
)
else
(
set
CERTOPTS
=
)
if
not
"
%SKIPBUILD%
"
EQU
"1"
(
call
"
%PCBUILD%
build.bat"
-e -p
%BUILD_PLAT%
-d -t
%TARGET%
%CERTOPTS%
if
errorlevel
1
exit
/B
call
"
%PCBUILD%
build.bat"
-p
%BUILD_PLAT%
-t
%TARGET%
%CERTOPTS%
if
errorlevel
1
exit
/B
@rem
build
.bat
turns
echo
back
on
,
so
we
disable
it
again
@echo
off
)
"
%BUILD%
python.exe"
"
%D%
get_wix.py"
set
BUILDOPTS
=
/p
:Platform
=
%
1
/p
:BuildForRelease
=
true
/p
:DownloadUrl
=
%DOWNLOAD_URL%
/p
:DownloadUrlBase
=
%DOWNLOAD_URL_BASE%
/p
:ReleaseUri
=
%RELEASE_URI%
msbuild
"
%D%
bundle\releaselocal.wixproj"
/t
:Rebuild
%BUILDOPTS%
%CERTOPTS%
/p
:RebuildAll
=
true
if
errorlevel
1
exit
/B
msbuild
"
%D%
bundle\releaseweb.wixproj"
/t
:Rebuild
%BUILDOPTS%
%CERTOPTS%
/p
:RebuildAll
=
false
if
errorlevel
1
exit
/B
if
not
"
%OUTDIR%
"
EQU
""
(
mkdir
"
%OUTDIR%
\
%OUTDIR_PLAT%
"
copy
/Y
"
%BUILD%
en-us\*.cab"
"
%OUTDIR%
\
%OUTDIR_PLAT%
"
copy
/Y
"
%BUILD%
en-us\*.exe"
"
%OUTDIR%
\
%OUTDIR_PLAT%
"
copy
/Y
"
%BUILD%
en-us\*.msi"
"
%OUTDIR%
\
%OUTDIR_PLAT%
"
copy
/Y
"
%BUILD%
en-us\*.msu"
"
%OUTDIR%
\
%OUTDIR_PLAT%
"
)
exit
/B
0
:Help
echo
buildrelease
.bat
[-
-out
DIR
]
[
-x
86
]
[
-x
64
]
[-
-certificate
CERTNAME
]
[-
-build
]
[-
-skip-build
]
echo
[-
-skip-doc
]
[-
-download
DOWNLOAD
URL
]
[-
-test
TARGETDIR
]
[
-h
]
echo
.
echo
-
-out
(
-o
)
Specify
an
additional
output
directory
for
installers
echo
-x
86
Build
x86
installers
echo
-x
64
Build
x64
installers
echo
-
-build
(
-b
)
Incrementally
build
Python
rather
than
rebuilding
echo
-
-skip-build
(
-B
)
Do
not
build
Python
(
just
do
the
installers
)
echo
-
-skip-doc
(
-D
)
Do
not
build
documentation
echo
-
-download
Specify
the
full
download
URL
for
MSIs
(
should
include
{
2
})
echo
-
-test
Specify
the
test
directory
to
run
the
installer
tests
echo
-h
Display
this
help
information
echo
.
echo
If
no
architecture
is
specified
,
all
architectures
will
be
built
.
echo
If
-
-test
is
not
specified
,
the
installer
tests
are
not
run
.
@setlocal
@echo
off
rem This script is intended for building official releases of Python.
rem To use it to build alternative releases, you should clone this file
rem and modify the following three URIs.
rem
rem The first two will ensure that your release can be installed
rem alongside an official Python release, while the second specifies
rem the URL that will be used to download installation files. The
rem files available from this URL *will* conflict with your installer.
rem Trust me, you don't want them, even if it seems like a good idea.
set
RELEASE_URI_X86
=
http
://www.python.org/win32
set
RELEASE_URI_X64
=
http
://www.python.org/amd64
set
DOWNLOAD_URL_BASE
=
https
://www.python.org/ftp/python
set
DOWNLOAD_URL
=
set
D
=
%~dp0
set
PCBUILD
=
%D%
..\..\PCBuild\
set
BUILDX86
=
set
BUILDX64
=
set
TARGET
=
Rebuild
set
TESTTARGETDIR
=
:CheckOpts
if
"
%
1"
EQU
"-h"
goto
Help
if
"
%
1"
EQU
"-c"
(
set
CERTNAME
=
%
~
2
)
&&
shift
&&
shift
&&
goto
CheckOpts
if
"
%
1"
EQU
"--certificate"
(
set
CERTNAME
=
%
~
2
)
&&
shift
&&
shift
&&
goto
CheckOpts
if
"
%
1"
EQU
"-o"
(
set
OUTDIR
=
%
~
2
)
&&
shift
&&
shift
&&
goto
CheckOpts
if
"
%
1"
EQU
"--out"
(
set
OUTDIR
=
%
~
2
)
&&
shift
&&
shift
&&
goto
CheckOpts
if
"
%
1"
EQU
"-D"
(
set
SKIPDOC
=
1
)
&&
shift
&&
goto
CheckOpts
if
"
%
1"
EQU
"--skip-doc"
(
set
SKIPDOC
=
1
)
&&
shift
&&
goto
CheckOpts
if
"
%
1"
EQU
"-B"
(
set
SKIPBUILD
=
1
)
&&
shift
&&
goto
CheckOpts
if
"
%
1"
EQU
"--skip-build"
(
set
SKIPBUILD
=
1
)
&&
shift
&&
goto
CheckOpts
if
"
%
1"
EQU
"--download"
(
set
DOWNLOAD_URL
=
%
~
2
)
&&
shift
&&
shift
&&
goto
CheckOpts
if
"
%
1"
EQU
"--test"
(
set
TESTTARGETDIR
=
%
~
2
)
&&
shift
&&
shift
&&
goto
CheckOpts
if
"
%
1"
EQU
"-b"
(
set
TARGET
=
Build
)
&&
shift
&&
goto
CheckOpts
if
"
%
1"
EQU
"--build"
(
set
TARGET
=
Build
)
&&
shift
&&
goto
CheckOpts
if
"
%
1"
EQU
"-x86"
(
set
BUILDX86
=
1
)
&&
shift
&&
goto
CheckOpts
if
"
%
1"
EQU
"-x64"
(
set
BUILDX64
=
1
)
&&
shift
&&
goto
CheckOpts
if
not
defined
BUILDX86
if
not
defined
BUILDX64
(
set
BUILDX86
=
1
)
&&
(
set
BUILDX64
=
1
)
:builddoc
if
"
%SKIPBUILD%
"
EQU
"1"
goto
skipdoc
if
"
%SKIPDOC%
"
EQU
"1"
goto
skipdoc
if
not
defined
PYTHON
where
py
-q
||
echo
Cannot
find
py
on
path
and
PYTHON
is
not
set
.
&&
exit
/B
1
if
not
defined
SPHINXBUILD
where
sphinx
-build -q
||
echo
Cannot
find
sphinx
-build on
path
and
SPHINXBUILD
is
not
set
.
&&
exit
/B
1
call
"
%D%
..\..\doc\make.bat"
htmlhelp
if
errorlevel
1
goto
:eof
:skipdoc
where
hg
/q
||
echo
Cannot
find
Mercurial
on
PATH
&&
exit
/B
1
where
dlltool
/q
&&
goto
skipdlltoolsearch
set
_DLLTOOL_PATH
=
where
/R
"
%D%
..\..\externals"
dlltool
>
"
%TEMP%
\dlltool.loc"
2
>
nul
&&
set
/P
_DLLTOOL_PATH
=
<
"
%TEMP%
\dlltool.loc"
&
del
"
%TEMP%
\dlltool.loc"
if
not
exist
"
%_DLLTOOL_PATH%
"
echo
Cannot
find
binutils
on
PATH
or
in
external
&&
exit
/B
1
for
%%f
in
(
%_DLLTOOL_PATH%
)
do
set
PATH
=
%PATH%
;
%%~dpf
set
_DLLTOOL_PATH
=
:skipdlltoolsearch
if
defined
BUILDX86
(
call
:build
x86
if
errorlevel
1
exit
/B
)
if
defined
BUILDX64
(
call
:build
x64
if
errorlevel
1
exit
/B
)
if
defined
TESTTARGETDIR
(
call
"
%D%
testrelease.bat"
-t
"
%TESTTARGETDIR%
"
)
exit
/B
0
:build
@setlocal
@echo
off
if
"
%
1"
EQU
"x86"
(
call
"
%PCBUILD%
env.bat"
x86
set
BUILD
=
%PCBUILD%
win32
\
set
BUILD_PLAT
=
Win32
set
OUTDIR_PLAT
=
win32
set
OBJDIR_PLAT
=
x86
set
RELEASE_URI
=
%RELEASE
_URI_X86
%
)
ELSE
(
call
"
%PCBUILD%
env.bat"
x86_amd64
set
BUILD
=
%PCBUILD%
amd64
\
set
BUILD_PLAT
=
x64
set
OUTDIR_PLAT
=
amd64
set
OBJDIR_PLAT
=
x64
set
RELEASE_URI
=
%RELEASE
_URI_X64
%
)
if
exist
"
%BUILD%
en-us"
(
echo
Deleting
%BUILD%
en
-us
rmdir
/q/s
"
%BUILD%
en-us"
if
errorlevel
1
exit
/B
)
if
exist
"
%D%
obj\Release_
%OBJDIR_PLAT%
"
(
echo
Deleting
"
%D%
obj\Release_
%OBJDIR_PLAT%
"
rmdir
/q/s
"
%D%
obj\Release_
%OBJDIR_PLAT%
"
if
errorlevel
1
exit
/B
)
if
not
"
%CERTNAME%
"
EQU
""
(
set
CERTOPTS
=
"/p:SigningCertificate=
%CERTNAME%
"
)
else
(
set
CERTOPTS
=
)
if
not
"
%SKIPBUILD%
"
EQU
"1"
(
call
"
%PCBUILD%
build.bat"
-e -p
%BUILD_PLAT%
-d -t
%TARGET%
%CERTOPTS%
if
errorlevel
1
exit
/B
call
"
%PCBUILD%
build.bat"
-p
%BUILD_PLAT%
-t
%TARGET%
%CERTOPTS%
if
errorlevel
1
exit
/B
@rem
build
.bat
turns
echo
back
on
,
so
we
disable
it
again
@echo
off
)
"
%BUILD%
python.exe"
"
%D%
get_wix.py"
set
BUILDOPTS
=
/p
:Platform
=
%
1
/p
:BuildForRelease
=
true
/p
:DownloadUrl
=
%DOWNLOAD_URL%
/p
:DownloadUrlBase
=
%DOWNLOAD_URL_BASE%
/p
:ReleaseUri
=
%RELEASE_URI%
msbuild
"
%D%
bundle\releaselocal.wixproj"
/t
:Rebuild
%BUILDOPTS%
%CERTOPTS%
/p
:RebuildAll
=
true
if
errorlevel
1
exit
/B
msbuild
"
%D%
bundle\releaseweb.wixproj"
/t
:Rebuild
%BUILDOPTS%
%CERTOPTS%
/p
:RebuildAll
=
false
if
errorlevel
1
exit
/B
if
not
"
%OUTDIR%
"
EQU
""
(
mkdir
"
%OUTDIR%
\
%OUTDIR_PLAT%
"
copy
/Y
"
%BUILD%
en-us\*.cab"
"
%OUTDIR%
\
%OUTDIR_PLAT%
"
copy
/Y
"
%BUILD%
en-us\*.exe"
"
%OUTDIR%
\
%OUTDIR_PLAT%
"
copy
/Y
"
%BUILD%
en-us\*.msi"
"
%OUTDIR%
\
%OUTDIR_PLAT%
"
copy
/Y
"
%BUILD%
en-us\*.msu"
"
%OUTDIR%
\
%OUTDIR_PLAT%
"
)
exit
/B
0
:Help
echo
buildrelease
.bat
[-
-out
DIR
]
[
-x
86
]
[
-x
64
]
[-
-certificate
CERTNAME
]
[-
-build
]
[-
-skip-build
]
echo
[-
-skip-doc
]
[-
-download
DOWNLOAD
URL
]
[-
-test
TARGETDIR
]
[
-h
]
echo
.
echo
-
-out
(
-o
)
Specify
an
additional
output
directory
for
installers
echo
-x
86
Build
x86
installers
echo
-x
64
Build
x64
installers
echo
-
-build
(
-b
)
Incrementally
build
Python
rather
than
rebuilding
echo
-
-skip-build
(
-B
)
Do
not
build
Python
(
just
do
the
installers
)
echo
-
-skip-doc
(
-D
)
Do
not
build
documentation
echo
-
-download
Specify
the
full
download
URL
for
MSIs
(
should
include
{
2
})
echo
-
-test
Specify
the
test
directory
to
run
the
installer
tests
echo
-h
Display
this
help
information
echo
.
echo
If
no
architecture
is
specified
,
all
architectures
will
be
built
.
echo
If
-
-test
is
not
specified
,
the
installer
tests
are
not
run
.
echo
.
\ No newline at end of file
Tools/msi/testrelease.bat
View file @
0f164c60
@setlocal
@echo
off
set
D
=
%~dp0
set
PCBUILD
=
%D%
..\..\PCBuild\
set
TARGETDIR
=
%TEMP%
set
TESTX86
=
set
TESTX64
=
set
TESTALLUSER
=
set
TESTPERUSER
=
:CheckOpts
if
"
%
1"
EQU
"-h"
goto
Help
if
"
%
1"
EQU
"-x86"
(
set
TESTX86
=
1
)
&&
shift
&&
goto
CheckOpts
if
"
%
1"
EQU
"-x64"
(
set
TESTX64
=
1
)
&&
shift
&&
goto
CheckOpts
if
"
%
1"
EQU
"-t"
(
set
TARGETDIR
=
%
~
2
)
&&
shift
&&
shift
&&
goto
CheckOpts
if
"
%
1"
EQU
"--target"
(
set
TARGETDIR
=
%
~
2
)
&&
shift
&&
shift
&&
goto
CheckOpts
if
"
%
1"
EQU
"-a"
(
set
TESTALLUSER
=
1
)
&&
shift
&&
goto
CheckOpts
if
"
%
1"
EQU
"--alluser"
(
set
TESTALLUSER
=
1
)
&&
shift
&&
goto
CheckOpts
if
"
%
1"
EQU
"-p"
(
set
TESTPERUSER
=
1
)
&&
shift
&&
goto
CheckOpts
if
"
%
1"
EQU
"--peruser"
(
set
TESTPERUSER
=
1
)
&&
shift
&&
goto
CheckOpts
if
not
defined
TESTX86
if
not
defined
TESTX64
(
set
TESTX86
=
1
)
&&
(
set
TESTX64
=
1
)
if
not
defined
TESTALLUSER
if
not
defined
TESTPERUSER
(
set
TESTALLUSER
=
1
)
&&
(
set
TESTPERUSER
=
1
)
if
defined
TESTX86
(
for
%%f
in
(
"
%PCBUILD%
win32\en-us\*.exe"
)
do
(
if
defined
TESTALLUSER
call
:test
"
%%~ff
"
"
%TARGETDIR%
\
%%~nf
-alluser"
"InstallAllUsers=1 CompileAll=1"
if
errorlevel
1
exit
/B
if
defined
TESTPERUSER
call
:test
"
%%~ff
"
"
%TARGETDIR%
\
%%~nf
-peruser"
"InstallAllUsers=0 CompileAll=0"
if
errorlevel
1
exit
/B
)
)
if
defined
TESTX64
(
for
%%f
in
(
"
%PCBUILD%
amd64\en-us\*.exe"
)
do
(
if
defined
TESTALLUSER
call
:test
"
%%~ff
"
"
%TARGETDIR%
\
%%~nf
-alluser"
"InstallAllUsers=1 CompileAll=1"
if
errorlevel
1
exit
/B
if
defined
TESTPERUSER
call
:test
"
%%~ff
"
"
%TARGETDIR%
\
%%~nf
-peruser"
"InstallAllUsers=0 CompileAll=0"
if
errorlevel
1
exit
/B
)
)
exit
/B
0
:test
@setlocal
@echo
on
@if
not
exist
"
%
~1"
exit
/B
1
@set
EXITCODE
=
0
@echo
Installing
%
1
into
%
2
"
%
~1"
/passive /log
"
%
~2\install\log.txt"
TargetDir
=
"
%
~2\Python"
Include_debug
=
1
Include_symbols
=
1
%
~
3
@if
not
errorlevel
1
(
@echo
Printing
version
"
%
~2\Python\python.exe"
-c
"import sys; print(sys.version)"
>
"
%
~2\version.txt"
2
>&
1
)
@if
not
errorlevel
1
(
@echo
Capturing
Start
Menu
@dir
/s/b
"
%PROGRAMDATA%
\Microsoft\Windows\Start Menu\Programs"
|
findstr
/ic
:
"python"
>
"
%
~2\startmenu.txt"
2
>&
1
@dir
/s/b
"
%APPDATA%
\Microsoft\Windows\Start Menu\Programs"
|
findstr
/ic
:
"python"
>>
"
%
~2\startmenu.txt"
2
>&
1
@echo
Capturing
registry
@for
/F
"usebackq"
%%f
in
(
`reg query HKCR /s /f python /k`
)
do
@
(
echo
%%f
>>
"
%
~2\hkcr.txt"
reg
query
"
%%f
"
/s
>>
"
%
~2\hkcr.txt"
2
>&
1
)
@reg
query
HKCU
\Software\Python
/s
>
"
%
~2\hkcu.txt"
2
>&
1
@reg
query
HKLM
\Software\Python
/reg
:32
/s
>
"
%
~2\hklm.txt"
2
>&
1
@reg
query
HKLM
\Software\Python
/reg
:64
/s
>>
"
%
~2\hklm.txt"
2
>&
1
cmd
/k
exit
0
)
@if
not
errorlevel
1
(
@echo
Installing
package
"
%
~2\Python\python.exe"
-m
pip
install
"azure<0.10"
>
"
%
~2\pip.txt"
2
>&
1
@if
not
errorlevel
1
(
"
%
~2\Python\python.exe"
-m
pip
uninstall
-y
azure
python
-dateutil
six
>>
"
%
~2\pip.txt"
2
>&
1
)
)
@if
not
errorlevel
1
(
@echo
Testing
Tcl
/tk
@set
TCL_LIBRARY
=
%
~
2
\Python\tcl\tcl8.6
"
%
~2\Python\python.exe"
-m
test
-uall -v
test_ttk_guionly
test_tk
test_idle
>
"
%
~2\tcltk.txt"
2
>&
1
@set
TCL_LIBRARY
=
)
@set
EXITCODE
=
%ERRORLEVEL%
@echo
Result
was
%EXITCODE%
@echo
Removing
%
1
"
%
~1"
/passive /uninstall /log
"
%
~2\uninstall\log.txt"
@echo
off
exit
/B
%EXITCODE%
:Help
echo
testrelease
.bat
[-
-target
TARGET
]
[
-x
86
]
[
-x
64
]
[-
-alluser
]
[-
-peruser
]
[
-h
]
echo
.
echo
-
-target
(
-t
)
Specify
the
target
directory
for
installs
and
logs
echo
-x
86
Run
tests
for
x86
installers
echo
-x
64
Run
tests
for
x64
installers
echo
-
-alluser
(
-a
)
Run
tests
for
all
-user
installs
(
requires
Administrator
)
echo
-
-peruser
(
-p
)
Run
tests
for
per
-user
installs
echo
-h
Display
this
help
information
echo
.
echo
If
no
test
architecture
is
specified
,
all
architectures
will
be
tested
.
echo
If
no
install
type
is
selected
,
all
install
types
will
be
tested
.
echo
.
@setlocal
@echo
off
set
D
=
%~dp0
set
PCBUILD
=
%D%
..\..\PCBuild\
set
TARGETDIR
=
%TEMP%
set
TESTX86
=
set
TESTX64
=
set
TESTALLUSER
=
set
TESTPERUSER
=
:CheckOpts
if
"
%
1"
EQU
"-h"
goto
Help
if
"
%
1"
EQU
"-x86"
(
set
TESTX86
=
1
)
&&
shift
&&
goto
CheckOpts
if
"
%
1"
EQU
"-x64"
(
set
TESTX64
=
1
)
&&
shift
&&
goto
CheckOpts
if
"
%
1"
EQU
"-t"
(
set
TARGETDIR
=
%
~
2
)
&&
shift
&&
shift
&&
goto
CheckOpts
if
"
%
1"
EQU
"--target"
(
set
TARGETDIR
=
%
~
2
)
&&
shift
&&
shift
&&
goto
CheckOpts
if
"
%
1"
EQU
"-a"
(
set
TESTALLUSER
=
1
)
&&
shift
&&
goto
CheckOpts
if
"
%
1"
EQU
"--alluser"
(
set
TESTALLUSER
=
1
)
&&
shift
&&
goto
CheckOpts
if
"
%
1"
EQU
"-p"
(
set
TESTPERUSER
=
1
)
&&
shift
&&
goto
CheckOpts
if
"
%
1"
EQU
"--peruser"
(
set
TESTPERUSER
=
1
)
&&
shift
&&
goto
CheckOpts
if
not
defined
TESTX86
if
not
defined
TESTX64
(
set
TESTX86
=
1
)
&&
(
set
TESTX64
=
1
)
if
not
defined
TESTALLUSER
if
not
defined
TESTPERUSER
(
set
TESTALLUSER
=
1
)
&&
(
set
TESTPERUSER
=
1
)
if
defined
TESTX86
(
for
%%f
in
(
"
%PCBUILD%
win32\en-us\*.exe"
)
do
(
if
defined
TESTALLUSER
call
:test
"
%%~ff
"
"
%TARGETDIR%
\
%%~nf
-alluser"
"InstallAllUsers=1 CompileAll=1"
if
errorlevel
1
exit
/B
if
defined
TESTPERUSER
call
:test
"
%%~ff
"
"
%TARGETDIR%
\
%%~nf
-peruser"
"InstallAllUsers=0 CompileAll=0"
if
errorlevel
1
exit
/B
)
)
if
defined
TESTX64
(
for
%%f
in
(
"
%PCBUILD%
amd64\en-us\*.exe"
)
do
(
if
defined
TESTALLUSER
call
:test
"
%%~ff
"
"
%TARGETDIR%
\
%%~nf
-alluser"
"InstallAllUsers=1 CompileAll=1"
if
errorlevel
1
exit
/B
if
defined
TESTPERUSER
call
:test
"
%%~ff
"
"
%TARGETDIR%
\
%%~nf
-peruser"
"InstallAllUsers=0 CompileAll=0"
if
errorlevel
1
exit
/B
)
)
exit
/B
0
:test
@setlocal
@echo
on
@if
not
exist
"
%
~1"
exit
/B
1
@set
EXITCODE
=
0
@echo
Installing
%
1
into
%
2
"
%
~1"
/passive /log
"
%
~2\install\log.txt"
TargetDir
=
"
%
~2\Python"
Include_debug
=
1
Include_symbols
=
1
%
~
3
@if
not
errorlevel
1
(
@echo
Printing
version
"
%
~2\Python\python.exe"
-c
"import sys; print(sys.version)"
>
"
%
~2\version.txt"
2
>&
1
)
@if
not
errorlevel
1
(
@echo
Capturing
Start
Menu
@dir
/s/b
"
%PROGRAMDATA%
\Microsoft\Windows\Start Menu\Programs"
|
findstr
/ic
:
"python"
>
"
%
~2\startmenu.txt"
2
>&
1
@dir
/s/b
"
%APPDATA%
\Microsoft\Windows\Start Menu\Programs"
|
findstr
/ic
:
"python"
>>
"
%
~2\startmenu.txt"
2
>&
1
@echo
Capturing
registry
@for
/F
"usebackq"
%%f
in
(
`reg query HKCR /s /f python /k`
)
do
@
(
echo
%%f
>>
"
%
~2\hkcr.txt"
reg
query
"
%%f
"
/s
>>
"
%
~2\hkcr.txt"
2
>&
1
)
@reg
query
HKCU
\Software\Python
/s
>
"
%
~2\hkcu.txt"
2
>&
1
@reg
query
HKLM
\Software\Python
/reg
:32
/s
>
"
%
~2\hklm.txt"
2
>&
1
@reg
query
HKLM
\Software\Python
/reg
:64
/s
>>
"
%
~2\hklm.txt"
2
>&
1
cmd
/k
exit
0
)
@if
not
errorlevel
1
(
@echo
Installing
package
"
%
~2\Python\python.exe"
-m
pip
install
"azure<0.10"
>
"
%
~2\pip.txt"
2
>&
1
@if
not
errorlevel
1
(
"
%
~2\Python\python.exe"
-m
pip
uninstall
-y
azure
python
-dateutil
six
>>
"
%
~2\pip.txt"
2
>&
1
)
)
@if
not
errorlevel
1
(
@echo
Testing
Tcl
/tk
@set
TCL_LIBRARY
=
%
~
2
\Python\tcl\tcl8.6
"
%
~2\Python\python.exe"
-m
test
-uall -v
test_ttk_guionly
test_tk
test_idle
>
"
%
~2\tcltk.txt"
2
>&
1
@set
TCL_LIBRARY
=
)
@set
EXITCODE
=
%ERRORLEVEL%
@echo
Result
was
%EXITCODE%
@echo
Removing
%
1
"
%
~1"
/passive /uninstall /log
"
%
~2\uninstall\log.txt"
@echo
off
exit
/B
%EXITCODE%
:Help
echo
testrelease
.bat
[-
-target
TARGET
]
[
-x
86
]
[
-x
64
]
[-
-alluser
]
[-
-peruser
]
[
-h
]
echo
.
echo
-
-target
(
-t
)
Specify
the
target
directory
for
installs
and
logs
echo
-x
86
Run
tests
for
x86
installers
echo
-x
64
Run
tests
for
x64
installers
echo
-
-alluser
(
-a
)
Run
tests
for
all
-user
installs
(
requires
Administrator
)
echo
-
-peruser
(
-p
)
Run
tests
for
per
-user
installs
echo
-h
Display
this
help
information
echo
.
echo
If
no
test
architecture
is
specified
,
all
architectures
will
be
tested
.
echo
If
no
install
type
is
selected
,
all
install
types
will
be
tested
.
echo
.
Tools/msi/uploadrelease.bat
View file @
0f164c60
@setlocal
@echo
off
set
D
=
%~dp0
set
PCBUILD
=
%D%
..\..\PCBuild\
set
HOST
=
set
USER
=
set
TARGET
=
set
DRYRUN
=
false
:CheckOpts
if
"
%
1"
EQU
"-h"
goto
Help
if
"
%
1"
EQU
"-o"
(
set
HOST
=
%
~
2
)
&&
shift
&&
shift
&&
goto
CheckOpts
if
"
%
1"
EQU
"--host"
(
set
HOST
=
%
~
2
)
&&
shift
&&
shift
&&
goto
CheckOpts
if
"
%
1"
EQU
"-u"
(
set
USER
=
%
~
2
)
&&
shift
&&
shift
&&
goto
CheckOpts
if
"
%
1"
EQU
"--user"
(
set
USER
=
%
~
2
)
&&
shift
&&
shift
&&
goto
CheckOpts
if
"
%
1"
EQU
"-t"
(
set
TARGET
=
%
~
2
)
&&
shift
&&
shift
&&
goto
CheckOpts
if
"
%
1"
EQU
"--target"
(
set
TARGET
=
%
~
2
)
&&
shift
&&
shift
&&
goto
CheckOpts
if
"
%
1"
EQU
"--dry-run"
(
set
DRYRUN
=
true
)
&&
shift
&&
goto
CheckOpts
if
not
defined
PLINK
where
plink
>
"
%TEMP%
\plink.loc"
2
>
nul
&&
set
/P
PLINK
=
<
"
%TEMP%
\plink.loc"
&
del
"
%TEMP%
\plink.loc"
if
not
defined
PLINK
where
/R
"
%ProgramFiles
(x86)
%
\PuTTY"
plink
>
"
%TEMP%
\plink.loc"
2
>
nul
&&
set
/P
PLINK
=
<
"
%TEMP%
\plink.loc"
&
del
"
%TEMP%
\plink.loc"
if
not
defined
PLINK
where
/R
"
%ProgramFiles
(x86)
%
"
plink
>
"
%TEMP%
\plink.loc"
2
>
nul
&&
set
/P
PLINK
=
<
"
%TEMP%
\plink.loc"
&
del
"
%TEMP%
\plink.loc"
if
not
defined
PLINK
echo
Cannot
locate
plink
.exe
&
exit
/B
1
echo
Found
plink
.exe
at
%PLINK%
if
not
defined
PSCP
where
pscp
>
"
%TEMP%
\pscp.loc"
2
>
nul
&&
set
/P
pscp
=
<
"
%TEMP%
\pscp.loc"
&
del
"
%TEMP%
\pscp.loc"
if
not
defined
PSCP
where
/R
"
%ProgramFiles
(x86)
%
\PuTTY"
pscp
>
"
%TEMP%
\pscp.loc"
2
>
nul
&&
set
/P
pscp
=
<
"
%TEMP%
\pscp.loc"
&
del
"
%TEMP%
\pscp.loc"
if
not
defined
PSCP
where
/R
"
%ProgramFiles
(x86)
%
"
pscp
>
"
%TEMP%
\pscp.loc"
2
>
nul
&&
set
/P
pscp
=
<
"
%TEMP%
\pscp.loc"
&
del
"
%TEMP%
\pscp.loc"
if
not
defined
PSCP
echo
Cannot
locate
pscp
.exe
&
exit
/B
1
echo
Found
pscp
.exe
at
%PSCP%
if
not
defined
GPG
where
gpg2
>
"
%TEMP%
\gpg.loc"
2
>
nul
&&
set
/P
GPG
=
<
"
%TEMP%
\gpg.loc"
&
del
"
%TEMP%
\gpg.loc"
if
not
defined
GPG
where
/R
"
%PCBUILD%
..\externals"
gpg2
>
"
%TEMP%
\gpg.loc"
2
>
nul
&&
set
/P
GPG
=
<
"
%TEMP%
\gpg.loc"
&
del
"
%TEMP%
\gpg.loc"
if
not
defined
GPG
echo
Cannot
locate
gpg2
.exe
.
Signatures
will
not
be
uploaded
&
pause
echo
Found
gpg2
.exe
at
%GPG%
call
"
%PCBUILD%
env.bat"
>
nul
2
>
nul
pushd
"
%D%
"
msbuild
/v
:m
/nologo
uploadrelease
.proj
/t
:Upload
/p
:Platform
=
x86
msbuild
/v
:m
/nologo
uploadrelease
.proj
/t
:Upload
/p
:Platform
=
x64
/p
:IncludeDoc
=
false
msbuild
/v
:m
/nologo
uploadrelease
.proj
/t
:ShowHashes
/p
:Platform
=
x86
msbuild
/v
:m
/nologo
uploadrelease
.proj
/t
:ShowHashes
/p
:Platform
=
x64
/p
:IncludeDoc
=
false
popd
exit
/B
0
:Help
echo
uploadrelease
.bat
-
-host
HOST
-
-user
USERNAME
[-
-target
TARGET
]
[-
-dry-run
]
[
-h
]
echo
.
echo
-
-host
(
-o
)
Specify
the
upload
host
(
required
)
echo
-
-user
(
-u
)
Specify
the
user
on
the
host
(
required
)
echo
-
-target
(
-t
)
Specify
the
target
directory
on
the
host
echo
-
-dry-run
Display
commands
and
filenames
without
executing
them
echo
-h
Display
this
help
information
echo
.
@setlocal
@echo
off
set
D
=
%~dp0
set
PCBUILD
=
%D%
..\..\PCBuild\
set
HOST
=
set
USER
=
set
TARGET
=
set
DRYRUN
=
false
:CheckOpts
if
"
%
1"
EQU
"-h"
goto
Help
if
"
%
1"
EQU
"-o"
(
set
HOST
=
%
~
2
)
&&
shift
&&
shift
&&
goto
CheckOpts
if
"
%
1"
EQU
"--host"
(
set
HOST
=
%
~
2
)
&&
shift
&&
shift
&&
goto
CheckOpts
if
"
%
1"
EQU
"-u"
(
set
USER
=
%
~
2
)
&&
shift
&&
shift
&&
goto
CheckOpts
if
"
%
1"
EQU
"--user"
(
set
USER
=
%
~
2
)
&&
shift
&&
shift
&&
goto
CheckOpts
if
"
%
1"
EQU
"-t"
(
set
TARGET
=
%
~
2
)
&&
shift
&&
shift
&&
goto
CheckOpts
if
"
%
1"
EQU
"--target"
(
set
TARGET
=
%
~
2
)
&&
shift
&&
shift
&&
goto
CheckOpts
if
"
%
1"
EQU
"--dry-run"
(
set
DRYRUN
=
true
)
&&
shift
&&
goto
CheckOpts
if
not
defined
PLINK
where
plink
>
"
%TEMP%
\plink.loc"
2
>
nul
&&
set
/P
PLINK
=
<
"
%TEMP%
\plink.loc"
&
del
"
%TEMP%
\plink.loc"
if
not
defined
PLINK
where
/R
"
%ProgramFiles
(x86)
%
\PuTTY"
plink
>
"
%TEMP%
\plink.loc"
2
>
nul
&&
set
/P
PLINK
=
<
"
%TEMP%
\plink.loc"
&
del
"
%TEMP%
\plink.loc"
if
not
defined
PLINK
where
/R
"
%ProgramFiles
(x86)
%
"
plink
>
"
%TEMP%
\plink.loc"
2
>
nul
&&
set
/P
PLINK
=
<
"
%TEMP%
\plink.loc"
&
del
"
%TEMP%
\plink.loc"
if
not
defined
PLINK
echo
Cannot
locate
plink
.exe
&
exit
/B
1
echo
Found
plink
.exe
at
%PLINK%
if
not
defined
PSCP
where
pscp
>
"
%TEMP%
\pscp.loc"
2
>
nul
&&
set
/P
pscp
=
<
"
%TEMP%
\pscp.loc"
&
del
"
%TEMP%
\pscp.loc"
if
not
defined
PSCP
where
/R
"
%ProgramFiles
(x86)
%
\PuTTY"
pscp
>
"
%TEMP%
\pscp.loc"
2
>
nul
&&
set
/P
pscp
=
<
"
%TEMP%
\pscp.loc"
&
del
"
%TEMP%
\pscp.loc"
if
not
defined
PSCP
where
/R
"
%ProgramFiles
(x86)
%
"
pscp
>
"
%TEMP%
\pscp.loc"
2
>
nul
&&
set
/P
pscp
=
<
"
%TEMP%
\pscp.loc"
&
del
"
%TEMP%
\pscp.loc"
if
not
defined
PSCP
echo
Cannot
locate
pscp
.exe
&
exit
/B
1
echo
Found
pscp
.exe
at
%PSCP%
if
not
defined
GPG
where
gpg2
>
"
%TEMP%
\gpg.loc"
2
>
nul
&&
set
/P
GPG
=
<
"
%TEMP%
\gpg.loc"
&
del
"
%TEMP%
\gpg.loc"
if
not
defined
GPG
where
/R
"
%PCBUILD%
..\externals"
gpg2
>
"
%TEMP%
\gpg.loc"
2
>
nul
&&
set
/P
GPG
=
<
"
%TEMP%
\gpg.loc"
&
del
"
%TEMP%
\gpg.loc"
if
not
defined
GPG
echo
Cannot
locate
gpg2
.exe
.
Signatures
will
not
be
uploaded
&
pause
echo
Found
gpg2
.exe
at
%GPG%
call
"
%PCBUILD%
env.bat"
>
nul
2
>
nul
pushd
"
%D%
"
msbuild
/v
:m
/nologo
uploadrelease
.proj
/t
:Upload
/p
:Platform
=
x86
msbuild
/v
:m
/nologo
uploadrelease
.proj
/t
:Upload
/p
:Platform
=
x64
/p
:IncludeDoc
=
false
msbuild
/v
:m
/nologo
uploadrelease
.proj
/t
:ShowHashes
/p
:Platform
=
x86
msbuild
/v
:m
/nologo
uploadrelease
.proj
/t
:ShowHashes
/p
:Platform
=
x64
/p
:IncludeDoc
=
false
popd
exit
/B
0
:Help
echo
uploadrelease
.bat
-
-host
HOST
-
-user
USERNAME
[-
-target
TARGET
]
[-
-dry-run
]
[
-h
]
echo
.
echo
-
-host
(
-o
)
Specify
the
upload
host
(
required
)
echo
-
-user
(
-u
)
Specify
the
user
on
the
host
(
required
)
echo
-
-target
(
-t
)
Specify
the
target
directory
on
the
host
echo
-
-dry-run
Display
commands
and
filenames
without
executing
them
echo
-h
Display
this
help
information
echo
.
Tools/unicode/genwincodecs.bat
View file @
0f164c60
@rem
Recreate
some
python
charmap
codecs
from
the
Windows
function
@rem
MultiByteToWideChar
.
@cd
/d
%~dp0
@mkdir
build
@rem
Arabic
DOS
code
page
c
:\python30\python
genwincodec
.py
720
>
build
/cp
720
.py
@rem
Recreate
some
python
charmap
codecs
from
the
Windows
function
@rem
MultiByteToWideChar
.
@cd
/d
%~dp0
@mkdir
build
@rem
Arabic
DOS
code
page
c
:\python30\python
genwincodec
.py
720
>
build
/cp
720
.py
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment