blob: 02227a2c836f3e973f24c3066ee0e7c6ec1dca81 [file] [log] [blame]
Martin v. Löwisb38b0192004-01-02 21:13:28 +00001Building Python using VC++ 7.1
Guido van Rossuma29b3602000-03-29 01:51:37 +00002-------------------------------------
Tim Peters4b5fb072000-07-01 00:03:43 +00003This directory is used to build Python for Win32 platforms, e.g. Windows
Martin v. Löwisb38b0192004-01-02 21:13:28 +0000495, 98 and NT. It requires Microsoft Visual C++ 7.1
5(a.k.a. Visual Studio .NET 2003).
Guido van Rossum15b239f1998-05-26 14:16:23 +00006(For other Windows platforms and compilers, see ../PC/readme.txt.)
7
Martin v. Löwisb38b0192004-01-02 21:13:28 +00008All you need to do is open the workspace "pcbuild.sln" in MSVC++, select
9the Debug or Release setting (using "Solution Configuration" from
10the "Standard" toolbar"), and build the projects.
Guido van Rossum15b239f1998-05-26 14:16:23 +000011
Tim Petersbefc97c2001-01-18 19:01:39 +000012The proper order to build subprojects:
Guido van Rossum15b239f1998-05-26 14:16:23 +000013
Tim Peters97c96402001-01-17 23:23:13 +0000141) pythoncore (this builds the main Python DLL and library files,
Tim Petersbefc97c2001-01-18 19:01:39 +000015 python21.{dll, lib} in Release mode)
16 NOTE: in previous releases, this subproject was
17 named after the release number, e.g. python20.
Guido van Rossum15b239f1998-05-26 14:16:23 +000018
Tim Petersbefc97c2001-01-18 19:01:39 +0000192) python (this builds the main Python executable,
20 python.exe in Release mode)
Tim Peters4b5fb072000-07-01 00:03:43 +000021
223) the other subprojects, as desired or needed (note: you probably don't
23 want to build most of the other subprojects, unless you're building an
24 entire Python distribution from scratch, or specifically making changes
25 to the subsystems they implement; see SUBPROJECTS below)
Guido van Rossum15b239f1998-05-26 14:16:23 +000026
27When using the Debug setting, the output files have a _d added to
Martin v. Löwisb38b0192004-01-02 21:13:28 +000028their name: python24_d.dll, python_d.exe, parser_d.pyd, and so on.
Guido van Rossume79cf321998-07-07 22:35:03 +000029
Tim Peters4b5fb072000-07-01 00:03:43 +000030SUBPROJECTS
31-----------
Tim Peters610a8272000-07-01 02:51:23 +000032These subprojects should build out of the box. Subprojects other than the
Tim Petersbefc97c2001-01-18 19:01:39 +000033main ones (pythoncore, python, pythonw) generally build a DLL (renamed to
Tim Peters610a8272000-07-01 02:51:23 +000034.pyd) from a specific module so that users don't have to load the code
Tim Peters4b5fb072000-07-01 00:03:43 +000035supporting that module unless they import the module.
Guido van Rossume79cf321998-07-07 22:35:03 +000036
Tim Peters97c96402001-01-17 23:23:13 +000037pythoncore
Tim Peters4b5fb072000-07-01 00:03:43 +000038 .dll and .lib
39python
40 .exe
41pythonw
42 pythonw.exe, a variant of python.exe that doesn't pop up a DOS box
43_socket
44 socketmodule.c
Tim Petersd66595f2001-02-04 03:09:53 +000045_testcapi
Tim Petersb16c56f2001-02-02 21:24:51 +000046 tests of the Python C API, run via Lib/test/test_capi.py, and
Tim Petersd66595f2001-02-04 03:09:53 +000047 implemented by module Modules/_testcapimodule.c
Tim Petersb012a152002-02-13 23:56:46 +000048pyexpat
49 Python wrapper for accelerated XML parsing, which incorporates stable
50 code from the Expat project: http://sourceforge.net/projects/expat/
Tim Peters4b5fb072000-07-01 00:03:43 +000051select
52 selectmodule.c
Tim Peters19f52c22001-01-24 10:07:22 +000053unicodedata
Tim Peters4b5fb072000-07-01 00:03:43 +000054 large tables of Unicode data
Tim Peters4b5fb072000-07-01 00:03:43 +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
Tim Petersaff12842000-08-25 06:52:44 +000060packages 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\.
Tim Peters4b5fb072000-07-01 00:03:43 +000063
64_tkinter
Tim Peters077736b2002-11-14 23:24:40 +000065 Python wrapper for the Tk windowing system. Requires building
Tim Petersfaa697a2003-06-22 01:42:20 +000066 Tcl/Tk first. Following are instructions for Tcl/Tk 8.4.3:
Tim Peters077736b2002-11-14 23:24:40 +000067
68 Get source
69 ----------
70 Go to
71 http://prdownloads.sourceforge.net/tcl/
72 and download
Martin v. Löwisb38b0192004-01-02 21:13:28 +000073 tcl845-src.zip
74 tk845-src.zip
Tim Peters077736b2002-11-14 23:24:40 +000075 Unzip into
Martin v. Löwisb38b0192004-01-02 21:13:28 +000076 dist\tcl8.4.5\
77 dist\tk8.4.5\
Tim Peters077736b2002-11-14 23:24:40 +000078 respectively.
79
Tim Petersfaa697a2003-06-22 01:42:20 +000080 Build Tcl first (done here w/ MSVC 6 on Win98SE)
Tim Peters6c629952002-11-15 18:36:11 +000081 ---------------
Martin v. Löwisb38b0192004-01-02 21:13:28 +000082 cd dist\tcl8.4.5\win
Tim Peters077736b2002-11-14 23:24:40 +000083 run vcvars32.bat [necessary even on Win2K]
84 nmake -f makefile.vc
85 nmake -f makefile.vc INSTALLDIR=..\..\tcl84 install
86
87 XXX Should we compile with OPTS=threads?
88
89 XXX Some tests failed in "nmake -f makefile.vc test".
Tim Petersfaa697a2003-06-22 01:42:20 +000090 XXX all.tcl: Total 10480 Passed 9743 Skipped 719 Failed 18
Tim Peters8f6c7c52003-06-27 15:49:35 +000091 XXX
92 XXX That was on Win98SE. On Win2K:
93 XXX all.tcl Total 10480 Passed 9781 Skipped 698 Failed 1
Tim Peters077736b2002-11-14 23:24:40 +000094
Tim Peters077736b2002-11-14 23:24:40 +000095 Build Tk
Tim Peters6c629952002-11-15 18:36:11 +000096 --------
Martin v. Löwisb38b0192004-01-02 21:13:28 +000097 cd dist\tk8.4.5\win
98 nmake -f makefile.vc TCLDIR=..\..\tcl8.4.5
99 nmake -f makefile.vc TCLDIR=..\..\tcl8.4.5 INSTALLDIR=..\..\tcl84 install
Tim Peters077736b2002-11-14 23:24:40 +0000100
101 XXX Should we compile with OPTS=threads?
102
Tim Petersfaa697a2003-06-22 01:42:20 +0000103 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.
Tim Peters077736b2002-11-14 23:24:40 +0000106
107 XXX Our installer copies a lot of stuff out of the Tcl/Tk install
108 XXX directory. Is all of that really needed for Python use of Tcl/Tk?
109
Tim Petersa406b582002-11-19 17:38:27 +0000110 Make sure the installer matches
111 -------------------------------
112 Ensure that the Wise compiler vrbl _TCLDIR_ is set to the name of
113 the common Tcl/Tk installation directory (tcl84 for the instructions
114 above). This is needed so the installer can copy various Tcl/Tk
115 files into the Python distribution.
116
Tim Peters4b5fb072000-07-01 00:03:43 +0000117
118zlib
Tim Petersee826f82001-01-31 19:39:44 +0000119 Python wrapper for the zlib compression library. Get the source code
Jeremy Hylton73b3df92004-01-09 16:05:07 +0000120 for version 1.2.1 from a convenient mirror at:
Tim Peters6077f642002-03-13 21:51:55 +0000121 http://www.gzip.org/zlib/
Jeremy Hylton73b3df92004-01-09 16:05:07 +0000122 Unpack into dist\zlib-1.2.1.
Tim Petersee826f82001-01-31 19:39:44 +0000123 A custom pre-link step in the zlib project settings should manage to
Jeremy Hylton73b3df92004-01-09 16:05:07 +0000124 build zlib-1.2.1\zlib.lib by magic before zlib.pyd (or zlib_d.pyd) is
Tim Petersee826f82001-01-31 19:39:44 +0000125 linked in PCbuild\.
126 However, the zlib project is not smart enough to remove anything under
Jeremy Hylton73b3df92004-01-09 16:05:07 +0000127 zlib-1.2.1\ when you do a clean, so if you want to rebuild zlib.lib
128 you need to clean up zlib-1.2.1\ by hand.
Tim Peters4b5fb072000-07-01 00:03:43 +0000129
Tim Petersb0ead4e2002-11-09 04:48:58 +0000130bz2
131 Python wrapper for the libbz2 compression library. Homepage
132 http://sources.redhat.com/bzip2/
133 Download the source tarball, bzip2-1.0.2.tar.gz.
Tim Peters077736b2002-11-14 23:24:40 +0000134 Unpack into dist\bzip2-1.0.2. WARNING: If you're using WinZip, you
Tim Petersb0ead4e2002-11-09 04:48:58 +0000135 must disable its "TAR file smart CR/LF conversion" feature (under
136 Options -> Configuration -> Miscellaneous -> Other) for the duration.
Tim Peters077736b2002-11-14 23:24:40 +0000137
Thomas Heller46a007e2003-08-20 18:27:36 +0000138 A custom pre-link step in the bz2 project settings should manage to
139 build bzip2-1.0.2\libbz2.lib by magic before bz2.pyd (or bz2_d.pyd) is
140 linked in PCbuild\.
141 However, the bz2 project is not smart enough to remove anything under
142 bzip2-1.0.2\ when you do a clean, so if you want to rebuild bzip2.lib
143 you need to clean up bzip2-1.0.2\ by hand.
Tim Peters077736b2002-11-14 23:24:40 +0000144
Thomas Heller46a007e2003-08-20 18:27:36 +0000145 The build step shouldn't yield any warnings or errors, and should end
Tim Petersb0ead4e2002-11-09 04:48:58 +0000146 by displaying 6 blocks each terminated with
147 FC: no differences encountered
148 If FC finds differences, see the warning abou WinZip above (when I
149 first tried it, sample3.ref failed due to CRLF conversion).
Tim Peterscaba60a2004-01-04 02:04:35 +0000150
Martin v. Löwisb38b0192004-01-02 21:13:28 +0000151 # XXX: it fails with vc 7.1, so the tests are skipped for now.
Tim Peters077736b2002-11-14 23:24:40 +0000152
Tim Petersb0ead4e2002-11-09 04:48:58 +0000153 All of this managed to build bzip2-1.0.2\libbz2.lib, which the Python
154 project links in.
155
156
Tim Peters78e35f92002-11-22 20:00:34 +0000157_bsddb
Tim Peters00640262003-01-24 15:31:31 +0000158 Go to Sleepycat's download page:
159 http://www.sleepycat.com/download/
Tim Petersb0ead4e2002-11-09 04:48:58 +0000160
Mark Hammond2362da82004-01-06 04:04:01 +0000161 and download version 4.2.52.
162
163 With or without strong cryptography? You can choose either with or
164 without strong cryptography, as per the instructions below. By
165 default, Python is built and distributed WITHOUT strong crypto
166 XXX - is the above correct?
167
168 Unpack into the dist\. directory, ensuring you expand with folder names.
169
170 If you downloaded with strong crypto, this will create a dist\db-4.2.52
171 directory, and is ready to use.
172
173 If you downloaded WITHOUT strong crypto, this will create a
174 dist\db-4.2.52.NC directory - this directory should be renamed to
175 dist\db-4.2.52 before use.
176
Tim Peters00640262003-01-24 15:31:31 +0000177 Open
Martin v. Löwisb38b0192004-01-02 21:13:28 +0000178 dist\db-4.2.52\docs\index.html
Tim Peters00640262003-01-24 15:31:31 +0000179
Mark Hammond2362da82004-01-06 04:04:01 +0000180 and follow the "Windows->Building Berkeley DB with Visual C++ .NET"
181 instructions for building the Sleepycat
Tim Peters00640262003-01-24 15:31:31 +0000182 software. Note that Berkeley_DB.dsw is in the build_win32 subdirectory.
183 Build the Release version ("build_all -- Win32 Release").
184
Martin v. Löwisb38b0192004-01-02 21:13:28 +0000185 XXX We're actually linking against Release_static\libdb42s.lib.
Tim Peters84c7a3f2002-11-23 18:48:06 +0000186 XXX This yields the following warnings:
187"""
188Compiling...
189_bsddb.c
190Linking...
191 Creating library ./_bsddb.lib and object ./_bsddb.exp
Martin v. Löwisb38b0192004-01-02 21:13:28 +0000192_bsddb.obj : warning LNK4217: locally defined symbol _malloc imported in function __db_associateCallback
193_bsddb.obj : warning LNK4217: locally defined symbol _free imported in function __DB_consume
194_bsddb.obj : warning LNK4217: locally defined symbol _fclose imported in function _DB_verify
195_bsddb.obj : warning LNK4217: locally defined symbol _fopen imported in function _DB_verify
196_bsddb.obj : warning LNK4217: locally defined symbol _strncpy imported in function _init_pybsddb
197__bsddb - 0 error(s), 5 warning(s)
Tim Peters84c7a3f2002-11-23 18:48:06 +0000198"""
199 XXX This isn't encouraging, but I don't know what to do about it.
Tim Peters78e35f92002-11-22 20:00:34 +0000200
Tim Peters00640262003-01-24 15:31:31 +0000201 To run extensive tests, pass "-u bsddb" to regrtest.py. test_bsddb3.py
202 is then enabled. Running in verbose mode may be helpful.
203
204 XXX The test_bsddb3 tests don't always pass, on Windows (according to
205 XXX me) or on Linux (according to Barry). I had much better luck
206 XXX on Win2K than on Win98SE. The common failure mode across platforms
207 XXX is
208 XXX DBAgainError: (11, 'Resource temporarily unavailable -- unable
209 XXX to join the environment')
210 XXX
211 XXX and it appears timing-dependent. On Win2K I also saw this once:
212 XXX
213 XXX test02_SimpleLocks (bsddb.test.test_thread.HashSimpleThreaded) ...
214 XXX Exception in thread reader 1:
215 XXX Traceback (most recent call last):
216 XXX File "C:\Code\python\lib\threading.py", line 411, in __bootstrap
217 XXX self.run()
218 XXX File "C:\Code\python\lib\threading.py", line 399, in run
219 XXX apply(self.__target, self.__args, self.__kwargs)
220 XXX File "C:\Code\python\lib\bsddb\test\test_thread.py", line 268, in
221 XXX readerThread
222 XXX rec = c.next()
223 XXX DBLockDeadlockError: (-30996, 'DB_LOCK_DEADLOCK: Locker killed
224 XXX to resolve a deadlock')
Tim Petersad8605d2003-01-29 00:38:42 +0000225 XXX
226 XXX I'm told that DBLockDeadlockError is expected at times. It
227 XXX doesn't cause a test to fail when it happens (exceptions in
228 XXX threads are invisible to unittest).
Tim Peters00640262003-01-24 15:31:31 +0000229
Tim Peterse8bcb252002-12-04 02:39:52 +0000230
Mark Hammondf229f9f2002-12-03 05:47:26 +0000231_ssl
Tim Peterse8bcb252002-12-04 02:39:52 +0000232 Python wrapper for the secure sockets library.
Tim Peters4b5fb072000-07-01 00:03:43 +0000233
Mark Hammondf229f9f2002-12-03 05:47:26 +0000234 Get the latest source code for OpenSSL from
235 http://www.openssl.org
236
Tim Peterse8bcb252002-12-04 02:39:52 +0000237 You (probably) don't want the "engine" code. For example, get
Martin v. Löwisb38b0192004-01-02 21:13:28 +0000238 openssl-0.9.7c.tar.gz
Tim Peterse8bcb252002-12-04 02:39:52 +0000239 not
Martin v. Löwisb38b0192004-01-02 21:13:28 +0000240 openssl-engine-0.9.7c.tar.gz
Tim Peterse8bcb252002-12-04 02:39:52 +0000241
Mark Hammondf229f9f2002-12-03 05:47:26 +0000242 Unpack into the "dist" directory, retaining the folder name from
243 the archive - for example, the latest stable OpenSSL will install as
244 dist/openssl-0.9.6g
245
246 You can (theoretically) use any version of OpenSSL you like - the
247 build process will automatically select the latest version.
248
249 You must also install ActivePerl from
250 http://www.activestate.com/Products/ActivePerl/
Tim Peterse8bcb252002-12-04 02:39:52 +0000251 as this is used by the OpenSSL build process. Complain to them <wink>.
Mark Hammondf229f9f2002-12-03 05:47:26 +0000252
253 The MSVC project simply invokes PCBuild/build_ssl.py to perform
Tim Peterse8bcb252002-12-04 02:39:52 +0000254 the build. This Python script locates and builds your OpenSSL
Mark Hammondf229f9f2002-12-03 05:47:26 +0000255 installation, then invokes a simple makefile to build the final .pyd.
256
Tim Peters6ee68d22002-12-04 03:16:37 +0000257 Win9x users: see "Win9x note" below.
258
Mark Hammondf229f9f2002-12-03 05:47:26 +0000259 build_ssl.py attempts to catch the most common errors (such as not
260 being able to find OpenSSL sources, or not being able to find a Perl
261 that works with OpenSSL) and give a reasonable error message.
262 If you have a problem that doesn't seem to be handled correctly
263 (eg, you know you have ActivePerl but we can't find it), please take
264 a peek at build_ssl.py and suggest patches. Note that build_ssl.py
265 should be able to be run directly from the command-line.
266
Tim Peterse8bcb252002-12-04 02:39:52 +0000267 build_ssl.py/MSVC isn't clever enough to clean OpenSSL - you must do
268 this by hand.
Tim Peters4b5fb072000-07-01 00:03:43 +0000269
Tim Peters6ee68d22002-12-04 03:16:37 +0000270 Win9x note: If, near the start of the build process, you see
271 something like
272
Martin v. Löwisb38b0192004-01-02 21:13:28 +0000273 C:\Code\openssl-0.9.7c>set OPTS=no-asm
Tim Peters6ee68d22002-12-04 03:16:37 +0000274 Out of environment space
275
Tim Peters21d77f52002-12-04 04:00:12 +0000276 then you're in trouble, and will probably also see these errors near
Tim Peters6ee68d22002-12-04 03:16:37 +0000277 the end of the process:
278
279 NMAKE : fatal error U1073: don't know how to make
280 'crypto\md5\asm\m5_win32.asm'
281 Stop.
282 NMAKE : fatal error U1073: don't know how to make
283 'C:\Code\openssl-0.9.6g/out32/libeay32.lib'
284 Stop.
285
286 You need more environment space. Win9x only has room for 256 bytes
287 by default, and especially after installing ActivePerl (which fiddles
288 the PATH envar), you're likely to run out. KB Q230205
289
290 http://support.microsoft.com/default.aspx?scid=KB;en-us;q230205
291
292 explains how to edit CONFIG.SYS to cure this.
293
294
Tim Petersf9a4a6e2000-07-01 20:38:27 +0000295YOUR OWN EXTENSION DLLs
Tim Peters4b5fb072000-07-01 00:03:43 +0000296-----------------------
297If you want to create your own extension module DLL, there's an example
298with easy-to-follow instructions in ../PC/example/; read the file
299readme.txt there first.