blob: 6367a90f39dd201ad05ca6d71d487ce993374cbe [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
Tim Peters0d7ce4e2003-03-21 01:55:41 +000043_csv
44 C support for the comma-separated values module
Tim Peters4b5fb072000-07-01 00:03:43 +000045_socket
46 socketmodule.c
47_sre
48 Unicode-aware regular expression engine
Tim Petersb16c56f2001-02-02 21:24:51 +000049_symtable
50 the _symtable module, symtablemodule.c
Tim Petersd66595f2001-02-04 03:09:53 +000051_testcapi
Tim Petersb16c56f2001-02-02 21:24:51 +000052 tests of the Python C API, run via Lib/test/test_capi.py, and
Tim Petersd66595f2001-02-04 03:09:53 +000053 implemented by module Modules/_testcapimodule.c
Tim Peters2a799bf2002-12-16 20:18:38 +000054datetime
55 datetimemodule.c
Tim Peters4b5fb072000-07-01 00:03:43 +000056mmap
57 mmapmodule.c
58parser
59 the parser module
Tim Petersb012a152002-02-13 23:56:46 +000060pyexpat
61 Python wrapper for accelerated XML parsing, which incorporates stable
62 code from the Expat project: http://sourceforge.net/projects/expat/
Tim Peters4b5fb072000-07-01 00:03:43 +000063select
64 selectmodule.c
Tim Peters19f52c22001-01-24 10:07:22 +000065unicodedata
Tim Peters4b5fb072000-07-01 00:03:43 +000066 large tables of Unicode data
67winreg
68 Windows registry API
69winsound
70 play sounds (typically .wav files) under Windows
71
72The following subprojects will generally NOT build out of the box. They
73wrap code Python doesn't control, and you'll need to download the base
Tim Petersaff12842000-08-25 06:52:44 +000074packages first and unpack them into siblings of PCbuilds's parent
75directory; for example, if your PCbuild is .......\dist\src\PCbuild\,
76unpack into new subdirectories of dist\.
Tim Peters4b5fb072000-07-01 00:03:43 +000077
78_tkinter
Tim Peters077736b2002-11-14 23:24:40 +000079 Python wrapper for the Tk windowing system. Requires building
Tim Petersfaa697a2003-06-22 01:42:20 +000080 Tcl/Tk first. Following are instructions for Tcl/Tk 8.4.3:
Tim Peters077736b2002-11-14 23:24:40 +000081
82 Get source
83 ----------
84 Go to
85 http://prdownloads.sourceforge.net/tcl/
86 and download
Martin v. Löwisb38b0192004-01-02 21:13:28 +000087 tcl845-src.zip
88 tk845-src.zip
Tim Peters077736b2002-11-14 23:24:40 +000089 Unzip into
Martin v. Löwisb38b0192004-01-02 21:13:28 +000090 dist\tcl8.4.5\
91 dist\tk8.4.5\
Tim Peters077736b2002-11-14 23:24:40 +000092 respectively.
93
Tim Petersfaa697a2003-06-22 01:42:20 +000094 Build Tcl first (done here w/ MSVC 6 on Win98SE)
Tim Peters6c629952002-11-15 18:36:11 +000095 ---------------
Martin v. Löwisb38b0192004-01-02 21:13:28 +000096 cd dist\tcl8.4.5\win
Tim Peters077736b2002-11-14 23:24:40 +000097 run vcvars32.bat [necessary even on Win2K]
98 nmake -f makefile.vc
99 nmake -f makefile.vc INSTALLDIR=..\..\tcl84 install
100
101 XXX Should we compile with OPTS=threads?
102
103 XXX Some tests failed in "nmake -f makefile.vc test".
Tim Petersfaa697a2003-06-22 01:42:20 +0000104 XXX all.tcl: Total 10480 Passed 9743 Skipped 719 Failed 18
Tim Peters8f6c7c52003-06-27 15:49:35 +0000105 XXX
106 XXX That was on Win98SE. On Win2K:
107 XXX all.tcl Total 10480 Passed 9781 Skipped 698 Failed 1
Tim Peters077736b2002-11-14 23:24:40 +0000108
Tim Peters077736b2002-11-14 23:24:40 +0000109 Build Tk
Tim Peters6c629952002-11-15 18:36:11 +0000110 --------
Martin v. Löwisb38b0192004-01-02 21:13:28 +0000111 cd dist\tk8.4.5\win
112 nmake -f makefile.vc TCLDIR=..\..\tcl8.4.5
113 nmake -f makefile.vc TCLDIR=..\..\tcl8.4.5 INSTALLDIR=..\..\tcl84 install
Tim Peters077736b2002-11-14 23:24:40 +0000114
115 XXX Should we compile with OPTS=threads?
116
Tim Petersfaa697a2003-06-22 01:42:20 +0000117 XXX I have no idea whether "nmake -f makefile.vc test" passed or
118 XXX failed. It popped up tons of little windows, and did lots of
119 XXX stuff, and nothing blew up.
Tim Peters077736b2002-11-14 23:24:40 +0000120
121 XXX Our installer copies a lot of stuff out of the Tcl/Tk install
122 XXX directory. Is all of that really needed for Python use of Tcl/Tk?
123
Tim Petersa406b582002-11-19 17:38:27 +0000124 Make sure the installer matches
125 -------------------------------
126 Ensure that the Wise compiler vrbl _TCLDIR_ is set to the name of
127 the common Tcl/Tk installation directory (tcl84 for the instructions
128 above). This is needed so the installer can copy various Tcl/Tk
129 files into the Python distribution.
130
Tim Peters4b5fb072000-07-01 00:03:43 +0000131
132zlib
Tim Petersee826f82001-01-31 19:39:44 +0000133 Python wrapper for the zlib compression library. Get the source code
Tim Peters6077f642002-03-13 21:51:55 +0000134 for version 1.1.4 from a convenient mirror at:
135 http://www.gzip.org/zlib/
136 Unpack into dist\zlib-1.1.4.
Tim Petersee826f82001-01-31 19:39:44 +0000137 A custom pre-link step in the zlib project settings should manage to
Tim Peters6077f642002-03-13 21:51:55 +0000138 build zlib-1.1.4\zlib.lib by magic before zlib.pyd (or zlib_d.pyd) is
Tim Petersee826f82001-01-31 19:39:44 +0000139 linked in PCbuild\.
140 However, the zlib project is not smart enough to remove anything under
Tim Peters6077f642002-03-13 21:51:55 +0000141 zlib-1.1.4\ when you do a clean, so if you want to rebuild zlib.lib
142 you need to clean up zlib-1.1.4\ by hand.
Tim Peters4b5fb072000-07-01 00:03:43 +0000143
Tim Petersb0ead4e2002-11-09 04:48:58 +0000144bz2
145 Python wrapper for the libbz2 compression library. Homepage
146 http://sources.redhat.com/bzip2/
147 Download the source tarball, bzip2-1.0.2.tar.gz.
Tim Peters077736b2002-11-14 23:24:40 +0000148 Unpack into dist\bzip2-1.0.2. WARNING: If you're using WinZip, you
Tim Petersb0ead4e2002-11-09 04:48:58 +0000149 must disable its "TAR file smart CR/LF conversion" feature (under
150 Options -> Configuration -> Miscellaneous -> Other) for the duration.
Tim Peters077736b2002-11-14 23:24:40 +0000151
Thomas Heller46a007e2003-08-20 18:27:36 +0000152 A custom pre-link step in the bz2 project settings should manage to
153 build bzip2-1.0.2\libbz2.lib by magic before bz2.pyd (or bz2_d.pyd) is
154 linked in PCbuild\.
155 However, the bz2 project is not smart enough to remove anything under
156 bzip2-1.0.2\ when you do a clean, so if you want to rebuild bzip2.lib
157 you need to clean up bzip2-1.0.2\ by hand.
Tim Peters077736b2002-11-14 23:24:40 +0000158
Thomas Heller46a007e2003-08-20 18:27:36 +0000159 The build step shouldn't yield any warnings or errors, and should end
Tim Petersb0ead4e2002-11-09 04:48:58 +0000160 by displaying 6 blocks each terminated with
161 FC: no differences encountered
162 If FC finds differences, see the warning abou WinZip above (when I
163 first tried it, sample3.ref failed due to CRLF conversion).
Martin v. Löwisb38b0192004-01-02 21:13:28 +0000164
165 # XXX: it fails with vc 7.1, so the tests are skipped for now.
Tim Peters077736b2002-11-14 23:24:40 +0000166
Tim Petersb0ead4e2002-11-09 04:48:58 +0000167 All of this managed to build bzip2-1.0.2\libbz2.lib, which the Python
168 project links in.
169
170
Tim Peters78e35f92002-11-22 20:00:34 +0000171_bsddb
Tim Peters00640262003-01-24 15:31:31 +0000172 Go to Sleepycat's download page:
173 http://www.sleepycat.com/download/
Tim Petersb0ead4e2002-11-09 04:48:58 +0000174
Martin v. Löwisb38b0192004-01-02 21:13:28 +0000175 and download version 4.2.42. The file name is db-4.2.52.NC.zip.
Tim Peters00640262003-01-24 15:31:31 +0000176 XXX with or without strong cryptography? I picked "without".
Tim Peters78e35f92002-11-22 20:00:34 +0000177
Tim Peters00640262003-01-24 15:31:31 +0000178 Unpack into
Martin v. Löwisb38b0192004-01-02 21:13:28 +0000179 dist\db-4.2.52
Tim Peters78e35f92002-11-22 20:00:34 +0000180
Martin v. Löwisb38b0192004-01-02 21:13:28 +0000181 [If using WinZip to unpack the db-4.2.52.NC distro, that requires
Tim Peters00640262003-01-24 15:31:31 +0000182 renaming the directory (to remove ".NC") after unpacking.
183 ]
184
185 Open
Martin v. Löwisb38b0192004-01-02 21:13:28 +0000186 dist\db-4.2.52\docs\index.html
Tim Peters00640262003-01-24 15:31:31 +0000187
188 and follow the Windows instructions for building the Sleepycat
189 software. Note that Berkeley_DB.dsw is in the build_win32 subdirectory.
190 Build the Release version ("build_all -- Win32 Release").
191
Martin v. Löwisb38b0192004-01-02 21:13:28 +0000192 XXX We're actually linking against Release_static\libdb42s.lib.
Tim Peters84c7a3f2002-11-23 18:48:06 +0000193 XXX This yields the following warnings:
194"""
195Compiling...
196_bsddb.c
197Linking...
198 Creating library ./_bsddb.lib and object ./_bsddb.exp
Martin v. Löwisb38b0192004-01-02 21:13:28 +0000199_bsddb.obj : warning LNK4217: locally defined symbol _malloc imported in function __db_associateCallback
200_bsddb.obj : warning LNK4217: locally defined symbol _free imported in function __DB_consume
201_bsddb.obj : warning LNK4217: locally defined symbol _fclose imported in function _DB_verify
202_bsddb.obj : warning LNK4217: locally defined symbol _fopen imported in function _DB_verify
203_bsddb.obj : warning LNK4217: locally defined symbol _strncpy imported in function _init_pybsddb
204__bsddb - 0 error(s), 5 warning(s)
Tim Peters84c7a3f2002-11-23 18:48:06 +0000205"""
206 XXX This isn't encouraging, but I don't know what to do about it.
Tim Peters78e35f92002-11-22 20:00:34 +0000207
Tim Peters00640262003-01-24 15:31:31 +0000208 To run extensive tests, pass "-u bsddb" to regrtest.py. test_bsddb3.py
209 is then enabled. Running in verbose mode may be helpful.
210
211 XXX The test_bsddb3 tests don't always pass, on Windows (according to
212 XXX me) or on Linux (according to Barry). I had much better luck
213 XXX on Win2K than on Win98SE. The common failure mode across platforms
214 XXX is
215 XXX DBAgainError: (11, 'Resource temporarily unavailable -- unable
216 XXX to join the environment')
217 XXX
218 XXX and it appears timing-dependent. On Win2K I also saw this once:
219 XXX
220 XXX test02_SimpleLocks (bsddb.test.test_thread.HashSimpleThreaded) ...
221 XXX Exception in thread reader 1:
222 XXX Traceback (most recent call last):
223 XXX File "C:\Code\python\lib\threading.py", line 411, in __bootstrap
224 XXX self.run()
225 XXX File "C:\Code\python\lib\threading.py", line 399, in run
226 XXX apply(self.__target, self.__args, self.__kwargs)
227 XXX File "C:\Code\python\lib\bsddb\test\test_thread.py", line 268, in
228 XXX readerThread
229 XXX rec = c.next()
230 XXX DBLockDeadlockError: (-30996, 'DB_LOCK_DEADLOCK: Locker killed
231 XXX to resolve a deadlock')
Tim Petersad8605d2003-01-29 00:38:42 +0000232 XXX
233 XXX I'm told that DBLockDeadlockError is expected at times. It
234 XXX doesn't cause a test to fail when it happens (exceptions in
235 XXX threads are invisible to unittest).
Tim Peters00640262003-01-24 15:31:31 +0000236
Tim Peterse8bcb252002-12-04 02:39:52 +0000237
Mark Hammondf229f9f2002-12-03 05:47:26 +0000238_ssl
Tim Peterse8bcb252002-12-04 02:39:52 +0000239 Python wrapper for the secure sockets library.
Tim Peters4b5fb072000-07-01 00:03:43 +0000240
Mark Hammondf229f9f2002-12-03 05:47:26 +0000241 Get the latest source code for OpenSSL from
242 http://www.openssl.org
243
Tim Peterse8bcb252002-12-04 02:39:52 +0000244 You (probably) don't want the "engine" code. For example, get
Martin v. Löwisb38b0192004-01-02 21:13:28 +0000245 openssl-0.9.7c.tar.gz
Tim Peterse8bcb252002-12-04 02:39:52 +0000246 not
Martin v. Löwisb38b0192004-01-02 21:13:28 +0000247 openssl-engine-0.9.7c.tar.gz
Tim Peterse8bcb252002-12-04 02:39:52 +0000248
Mark Hammondf229f9f2002-12-03 05:47:26 +0000249 Unpack into the "dist" directory, retaining the folder name from
250 the archive - for example, the latest stable OpenSSL will install as
251 dist/openssl-0.9.6g
252
253 You can (theoretically) use any version of OpenSSL you like - the
254 build process will automatically select the latest version.
255
256 You must also install ActivePerl from
257 http://www.activestate.com/Products/ActivePerl/
Tim Peterse8bcb252002-12-04 02:39:52 +0000258 as this is used by the OpenSSL build process. Complain to them <wink>.
Mark Hammondf229f9f2002-12-03 05:47:26 +0000259
260 The MSVC project simply invokes PCBuild/build_ssl.py to perform
Tim Peterse8bcb252002-12-04 02:39:52 +0000261 the build. This Python script locates and builds your OpenSSL
Mark Hammondf229f9f2002-12-03 05:47:26 +0000262 installation, then invokes a simple makefile to build the final .pyd.
263
Tim Peters6ee68d22002-12-04 03:16:37 +0000264 Win9x users: see "Win9x note" below.
265
Mark Hammondf229f9f2002-12-03 05:47:26 +0000266 build_ssl.py attempts to catch the most common errors (such as not
267 being able to find OpenSSL sources, or not being able to find a Perl
268 that works with OpenSSL) and give a reasonable error message.
269 If you have a problem that doesn't seem to be handled correctly
270 (eg, you know you have ActivePerl but we can't find it), please take
271 a peek at build_ssl.py and suggest patches. Note that build_ssl.py
272 should be able to be run directly from the command-line.
273
Tim Peterse8bcb252002-12-04 02:39:52 +0000274 build_ssl.py/MSVC isn't clever enough to clean OpenSSL - you must do
275 this by hand.
Tim Peters4b5fb072000-07-01 00:03:43 +0000276
Tim Peters6ee68d22002-12-04 03:16:37 +0000277 Win9x note: If, near the start of the build process, you see
278 something like
279
Martin v. Löwisb38b0192004-01-02 21:13:28 +0000280 C:\Code\openssl-0.9.7c>set OPTS=no-asm
Tim Peters6ee68d22002-12-04 03:16:37 +0000281 Out of environment space
282
Tim Peters21d77f52002-12-04 04:00:12 +0000283 then you're in trouble, and will probably also see these errors near
Tim Peters6ee68d22002-12-04 03:16:37 +0000284 the end of the process:
285
286 NMAKE : fatal error U1073: don't know how to make
287 'crypto\md5\asm\m5_win32.asm'
288 Stop.
289 NMAKE : fatal error U1073: don't know how to make
290 'C:\Code\openssl-0.9.6g/out32/libeay32.lib'
291 Stop.
292
293 You need more environment space. Win9x only has room for 256 bytes
294 by default, and especially after installing ActivePerl (which fiddles
295 the PATH envar), you're likely to run out. KB Q230205
296
297 http://support.microsoft.com/default.aspx?scid=KB;en-us;q230205
298
299 explains how to edit CONFIG.SYS to cure this.
300
301
Tim Petersf9a4a6e2000-07-01 20:38:27 +0000302YOUR OWN EXTENSION DLLs
Tim Peters4b5fb072000-07-01 00:03:43 +0000303-----------------------
304If you want to create your own extension module DLL, there's an example
305with easy-to-follow instructions in ../PC/example/; read the file
306readme.txt there first.