blob: 5c91806e289f936d4f58727ed634f0c962fc217c [file] [log] [blame]
Tim Petersff8505d2004-01-03 05:45:59 +00001Building Python using VC++ 6.0 or 5.0
2-------------------------------------
3This directory is used to build Python for Win32 platforms, e.g. Windows
Hirokazu Yamamotoeea8eda2008-08-14 01:33:44 +000042000 and XP. It requires Microsoft Visual C++ 6.x or 5.x.
Tim Petersff8505d2004-01-03 05:45:59 +00005(For other Windows platforms and compilers, see ../readme.txt.)
6
7All you need to do is open the workspace "pcbuild.dsw" in MSVC++, select
8the Debug or Release setting (using Build -> Set Active Configuration...),
9and build the projects.
10
11The proper order to build subprojects:
12
131) pythoncore (this builds the main Python DLL and library files,
Hirokazu Yamamotoeea8eda2008-08-14 01:33:44 +000014 python26.{dll, lib} in Release mode)
Tim Petersff8505d2004-01-03 05:45:59 +000015
162) python (this builds the main Python executable,
17 python.exe in Release mode)
18
193) the other subprojects, as desired or needed (note: you probably don't
20 want to build most of the other subprojects, unless you're building an
21 entire Python distribution from scratch, or specifically making changes
22 to the subsystems they implement; see SUBPROJECTS below)
23
24When using the Debug setting, the output files have a _d added to
Hirokazu Yamamotoeea8eda2008-08-14 01:33:44 +000025their name: python26_d.dll, python_d.exe, pyexpat_d.pyd, and so on.
Tim Petersff8505d2004-01-03 05:45:59 +000026
27SUBPROJECTS
28-----------
29These subprojects should build out of the box. Subprojects other than the
30main ones (pythoncore, python, pythonw) generally build a DLL (renamed to
31.pyd) from a specific module so that users don't have to load the code
32supporting that module unless they import the module.
33
34pythoncore
35 .dll and .lib
36python
37 .exe
38pythonw
39 pythonw.exe, a variant of python.exe that doesn't pop up a DOS box
Hirokazu Yamamotoeea8eda2008-08-14 01:33:44 +000040_msi
41 _msi.c. You need to install Windows Installer SDK to build this module.
42 http://www.microsoft.com/msdownload/platformsdk/sdkupdate/psdk-full.htm
Tim Petersff8505d2004-01-03 05:45:59 +000043_socket
44 socketmodule.c
Tim Petersff8505d2004-01-03 05:45:59 +000045_testcapi
46 tests of the Python C API, run via Lib/test/test_capi.py, and
47 implemented by module Modules/_testcapimodule.c
Tim Petersff8505d2004-01-03 05:45:59 +000048pyexpat
49 Python wrapper for accelerated XML parsing, which incorporates stable
50 code from the Expat project: http://sourceforge.net/projects/expat/
51select
52 selectmodule.c
53unicodedata
54 large tables of Unicode data
Tim Petersff8505d2004-01-03 05:45:59 +000055winsound
56 play sounds (typically .wav files) under Windows
57
58The following subprojects will generally NOT build out of the box. They
59wrap code Python doesn't control, and you'll need to download the base
60packages first and unpack them into siblings of PCbuilds's parent
61directory; for example, if your PCbuild is .......\dist\src\PCbuild\,
62unpack into new subdirectories of dist\.
63
64_tkinter
65 Python wrapper for the Tk windowing system. Requires building
Hirokazu Yamamoto7963ccf2009-01-10 09:24:47 +000066 Tcl/Tk first. Following are instructions for Tcl/Tk 8.5.2.
Tim Petersff8505d2004-01-03 05:45:59 +000067
68 Get source
69 ----------
Martin v. Löwis7addebf2006-10-17 15:18:06 +000070 In the dist directory, run
Hirokazu Yamamoto7963ccf2009-01-10 09:24:47 +000071 svn export http://svn.python.org/projects/external/tcl-8.5.2.1 tcl8.5.2
72 svn export http://svn.python.org/projects/external/tk-8.5.2.0 tk8.5.2
73 svn export http://svn.python.org/projects/external/tix-8.4.3.1 tix8.4.3
Tim Petersff8505d2004-01-03 05:45:59 +000074
Martin v. Löwis7addebf2006-10-17 15:18:06 +000075 Build Tcl first (done here w/ MSVC 6 on Win2K)
Tim Petersff8505d2004-01-03 05:45:59 +000076 ---------------
Hirokazu Yamamoto7963ccf2009-01-10 09:24:47 +000077 If your environment doesn't have struct _stat64, you need to apply
78 tcl852.patch in this directory to dist\tcl8.5.2\generic\tcl.h.
79
80 cd dist\tcl8.5.2\win
Martin v. Löwis7addebf2006-10-17 15:18:06 +000081 run vcvars32.bat
Tim Petersff8505d2004-01-03 05:45:59 +000082 nmake -f makefile.vc
Martin v. Löwis7addebf2006-10-17 15:18:06 +000083 nmake -f makefile.vc INSTALLDIR=..\..\tcltk install
Tim Petersff8505d2004-01-03 05:45:59 +000084
85 XXX Should we compile with OPTS=threads?
86
Martin v. Löwis7addebf2006-10-17 15:18:06 +000087 Optional: run tests, via
88 nmake -f makefile.vc test
89
Hirokazu Yamamoto7963ccf2009-01-10 09:24:47 +000090 all.tcl: Total 24242 Passed 23358 Skipped 877 Failed 7
91 Sourced 137 Test Files.
92 Files with failing tests: exec.test http.test io.test main.test string.test stri
Martin v. Löwis7addebf2006-10-17 15:18:06 +000093 ngObj.test
Tim Petersff8505d2004-01-03 05:45:59 +000094
95 Build Tk
96 --------
Hirokazu Yamamoto7963ccf2009-01-10 09:24:47 +000097 cd dist\tk8.5.2\win
98 nmake -f makefile.vc TCLDIR=..\..\tcl8.5.2
99 nmake -f makefile.vc TCLDIR=..\..\tcl8.5.2 INSTALLDIR=..\..\tcltk install
Tim Petersff8505d2004-01-03 05:45:59 +0000100
101 XXX Should we compile with OPTS=threads?
102
103 XXX I have no idea whether "nmake -f makefile.vc test" passed or
104 XXX failed. It popped up tons of little windows, and did lots of
105 XXX stuff, and nothing blew up.
106
Hirokazu Yamamoto7963ccf2009-01-10 09:24:47 +0000107 Build Tix
108 ---------
109 cd dist\tix8.4.3\win
110 nmake -f python.mak TCL_MAJOR=8 TCL_MINOR=5 TCL_PATCH=2 MACHINE=IX86 DEBUG=0
111 nmake -f python.mak TCL_MAJOR=8 TCL_MINOR=5 TCL_PATCH=2 MACHINE=IX86 DEBUG=0 INSTALL_DIR=..\..\tcltk install
Tim Petersff8505d2004-01-03 05:45:59 +0000112
113bz2
114 Python wrapper for the libbz2 compression library. Homepage
Hirokazu Yamamoto195ccc12009-01-09 03:56:58 +0000115 http://www.bzip.org/
Martin v. Löwis7addebf2006-10-17 15:18:06 +0000116 Download the source from the python.org copy into the dist
117 directory:
Tim Petersff8505d2004-01-03 05:45:59 +0000118
Hirokazu Yamamoto195ccc12009-01-09 03:56:58 +0000119 svn export http://svn.python.org/projects/external/bzip2-1.0.5
Tim Petersff8505d2004-01-03 05:45:59 +0000120
Martin v. Löwis7addebf2006-10-17 15:18:06 +0000121 And requires building bz2 first.
Tim Petersff8505d2004-01-03 05:45:59 +0000122
Hirokazu Yamamoto195ccc12009-01-09 03:56:58 +0000123 cd dist\bzip2-1.0.5
Martin v. Löwis7addebf2006-10-17 15:18:06 +0000124 nmake -f makefile.msc
125
Hirokazu Yamamoto195ccc12009-01-09 03:56:58 +0000126 All of this managed to build bzip2-1.0.5\libbz2.lib, which the Python
Tim Petersff8505d2004-01-03 05:45:59 +0000127 project links in.
128
129
130_bsddb
Martin v. Löwis7addebf2006-10-17 15:18:06 +0000131 To use the version of bsddb that Python is built with by default, invoke
132 (in the dist directory)
Tim Petersff8505d2004-01-03 05:45:59 +0000133
Hirokazu Yamamotof8956b62009-01-09 04:14:13 +0000134 svn export http://svn.python.org/projects/external/db-4.7.25.0 db-4.7.25
Tim Petersff8505d2004-01-03 05:45:59 +0000135
Hirokazu Yamamotof8956b62009-01-09 04:14:13 +0000136 Then open db-4.7.25\build_windows\Berkeley_DB.dsw and build the
137 "db_static" project for "Release" mode.
Tim Petersff8505d2004-01-03 05:45:59 +0000138
Martin v. Löwis7addebf2006-10-17 15:18:06 +0000139 Alternatively, if you want to start with the original sources,
Hirokazu Yamamotof8956b62009-01-09 04:14:13 +0000140 go to Oracle's download page:
141 http://www.oracle.com/technology/software/products/berkeley-db/db/
Tim Petersff8505d2004-01-03 05:45:59 +0000142
Hirokazu Yamamotof8956b62009-01-09 04:14:13 +0000143 and download version 4.7.25.
Tim Petersff8505d2004-01-03 05:45:59 +0000144
Martin v. Löwis7addebf2006-10-17 15:18:06 +0000145 With or without strong cryptography? You can choose either with or
146 without strong cryptography, as per the instructions below. By
147 default, Python is built and distributed WITHOUT strong crypto.
Tim Petersff8505d2004-01-03 05:45:59 +0000148
Martin v. Löwis7addebf2006-10-17 15:18:06 +0000149 Unpack the sources; if you downloaded the non-crypto version, rename
Hirokazu Yamamotof8956b62009-01-09 04:14:13 +0000150 the directory from db-4.7.25.NC to db-4.7.25.
Martin v. Löwis7addebf2006-10-17 15:18:06 +0000151
152 Now apply any patches that apply to your version.
Tim Petersff8505d2004-01-03 05:45:59 +0000153
154 To run extensive tests, pass "-u bsddb" to regrtest.py. test_bsddb3.py
155 is then enabled. Running in verbose mode may be helpful.
156
157 XXX The test_bsddb3 tests don't always pass, on Windows (according to
Martin v. Löwis7addebf2006-10-17 15:18:06 +0000158 XXX me) or on Linux (according to Barry). (I had much better luck
159 XXX on Win2K than on Win98SE.) The common failure mode across platforms
Tim Petersff8505d2004-01-03 05:45:59 +0000160 XXX is
161 XXX DBAgainError: (11, 'Resource temporarily unavailable -- unable
162 XXX to join the environment')
163 XXX
164 XXX and it appears timing-dependent. On Win2K I also saw this once:
165 XXX
166 XXX test02_SimpleLocks (bsddb.test.test_thread.HashSimpleThreaded) ...
167 XXX Exception in thread reader 1:
168 XXX Traceback (most recent call last):
169 XXX File "C:\Code\python\lib\threading.py", line 411, in __bootstrap
170 XXX self.run()
171 XXX File "C:\Code\python\lib\threading.py", line 399, in run
172 XXX apply(self.__target, self.__args, self.__kwargs)
173 XXX File "C:\Code\python\lib\bsddb\test\test_thread.py", line 268, in
174 XXX readerThread
175 XXX rec = c.next()
176 XXX DBLockDeadlockError: (-30996, 'DB_LOCK_DEADLOCK: Locker killed
177 XXX to resolve a deadlock')
178 XXX
179 XXX I'm told that DBLockDeadlockError is expected at times. It
180 XXX doesn't cause a test to fail when it happens (exceptions in
181 XXX threads are invisible to unittest).
182
183
Hirokazu Yamamotoeea8eda2008-08-14 01:33:44 +0000184_sqlite3
185 Python wrapper for SQLite library.
186
187 Get the source code through
188
189 svn export http://svn.python.org/projects/external/sqlite-source-3.3.4
190
191 To use the extension module in a Python build tree, copy sqlite3.dll into
192 the PC/VC6 folder.
193
194
Tim Petersff8505d2004-01-03 05:45:59 +0000195_ssl
196 Python wrapper for the secure sockets library.
197
198 Get the latest source code for OpenSSL from
199 http://www.openssl.org
200
201 You (probably) don't want the "engine" code. For example, get
202 openssl-0.9.6g.tar.gz
203 not
204 openssl-engine-0.9.6g.tar.gz
205
206 Unpack into the "dist" directory, retaining the folder name from
207 the archive - for example, the latest stable OpenSSL will install as
208 dist/openssl-0.9.6g
209
210 You can (theoretically) use any version of OpenSSL you like - the
211 build process will automatically select the latest version.
212
213 You must also install ActivePerl from
214 http://www.activestate.com/Products/ActivePerl/
215 as this is used by the OpenSSL build process. Complain to them <wink>.
216
Hirokazu Yamamotoeea8eda2008-08-14 01:33:44 +0000217 The MSVC project simply invokes PC/VC6/build_ssl.py to perform
Tim Petersff8505d2004-01-03 05:45:59 +0000218 the build. This Python script locates and builds your OpenSSL
219 installation, then invokes a simple makefile to build the final .pyd.
220
Tim Petersff8505d2004-01-03 05:45:59 +0000221 build_ssl.py attempts to catch the most common errors (such as not
222 being able to find OpenSSL sources, or not being able to find a Perl
223 that works with OpenSSL) and give a reasonable error message.
224 If you have a problem that doesn't seem to be handled correctly
225 (eg, you know you have ActivePerl but we can't find it), please take
226 a peek at build_ssl.py and suggest patches. Note that build_ssl.py
227 should be able to be run directly from the command-line.
228
229 build_ssl.py/MSVC isn't clever enough to clean OpenSSL - you must do
230 this by hand.
231
Tim Petersff8505d2004-01-03 05:45:59 +0000232
233YOUR OWN EXTENSION DLLs
234-----------------------
235If you want to create your own extension module DLL, there's an example
236with easy-to-follow instructions in ../PC/example/; read the file
237readme.txt there first.