Fix transient refleaks in test_docxmlrpc.
[python.git] / PC / VC6 / readme.txt
blob0dd804a49420d05452df86c976c2458c0ee95262
1 Building Python using VC++ 6.0 or 5.0
2 -------------------------------------
3 This directory is used to build Python for Win32 platforms, e.g. Windows
4 2000 and XP.  It requires Microsoft Visual C++ 6.x or 5.x.
5 (For other Windows platforms and compilers, see ../readme.txt.)
7 All you need to do is open the workspace "pcbuild.dsw" in MSVC++, select
8 the Debug or Release setting (using Build -> Set Active Configuration...),
9 and build the projects.
11 The proper order to build subprojects:
13 1) pythoncore (this builds the main Python DLL and library files,
14                python27.{dll, lib} in Release mode)
16 2) python (this builds the main Python executable,
17            python.exe in Release mode)
19 3) 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)
24 When using the Debug setting, the output files have a _d added to
25 their name:  python27_d.dll, python_d.exe, pyexpat_d.pyd, and so on.
27 SUBPROJECTS
28 -----------
29 These subprojects should build out of the box.  Subprojects other than the
30 main 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
32 supporting that module unless they import the module.
34 pythoncore
35     .dll and .lib
36 python
37     .exe
38 pythonw
39     pythonw.exe, a variant of python.exe that doesn't pop up a DOS box
40 _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
43 _socket
44     socketmodule.c
45 _testcapi
46     tests of the Python C API, run via Lib/test/test_capi.py, and
47     implemented by module Modules/_testcapimodule.c
48 pyexpat
49     Python wrapper for accelerated XML parsing, which incorporates stable
50     code from the Expat project:  http://sourceforge.net/projects/expat/
51 select
52     selectmodule.c
53 unicodedata
54     large tables of Unicode data
55 winsound
56     play sounds (typically .wav files) under Windows
58 The following subprojects will generally NOT build out of the box.  They
59 wrap code Python doesn't control, and you'll need to download the base
60 packages first and unpack them into siblings of PCbuilds's parent
61 directory; for example, if your PCbuild is  .......\dist\src\PCbuild\,
62 unpack into new subdirectories of dist\.
64 _tkinter
65     Python wrapper for the Tk windowing system.  Requires building
66     Tcl/Tk first.  Following are instructions for Tcl/Tk 8.5.2.
68     Get source
69     ----------
70     In the dist directory, run
71     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
75     Debug Build
76     -----------
77     To build debug version, add DEBUG=1 to all nmake call bellow.
79     Build Tcl first (done here w/ MSVC 6 on Win2K)
80     ---------------
81     If your environment doesn't have struct _stat64, you need to apply
82     tcl852.patch in this directory to dist\tcl8.5.2\generic\tcl.h.
84     cd dist\tcl8.5.2\win
85     run vcvars32.bat
86     nmake -f makefile.vc
87     nmake -f makefile.vc INSTALLDIR=..\..\tcltk install
89     XXX Should we compile with OPTS=threads?
91     Optional:  run tests, via
92         nmake -f makefile.vc test
94         all.tcl:        Total   24242   Passed  23358   Skipped 877     Failed  7
95         Sourced 137 Test Files.
96         Files with failing tests: exec.test http.test io.test main.test string.test stri
97         ngObj.test
99     Build Tk
100     --------
101     cd dist\tk8.5.2\win
102     nmake -f makefile.vc TCLDIR=..\..\tcl8.5.2
103     nmake -f makefile.vc TCLDIR=..\..\tcl8.5.2 INSTALLDIR=..\..\tcltk install
105     XXX Should we compile with OPTS=threads?
107     XXX I have no idea whether "nmake -f makefile.vc test" passed or
108     XXX failed.  It popped up tons of little windows, and did lots of
109     XXX stuff, and nothing blew up.
111     Build Tix
112     ---------
113     cd dist\tix8.4.3\win
114     nmake -f python.mak TCL_MAJOR=8 TCL_MINOR=5 TCL_PATCH=2 MACHINE=IX86 DEBUG=0
115     nmake -f python.mak TCL_MAJOR=8 TCL_MINOR=5 TCL_PATCH=2 MACHINE=IX86 DEBUG=0 INSTALL_DIR=..\..\tcltk install
118     Python wrapper for the libbz2 compression library.  Homepage
119         http://www.bzip.org/
120     Download the source from the python.org copy into the dist
121     directory:
123     svn export http://svn.python.org/projects/external/bzip2-1.0.5
125     And requires building bz2 first.
127     cd dist\bzip2-1.0.5
128     nmake -f makefile.msc
130     All of this managed to build bzip2-1.0.5\libbz2.lib, which the Python
131     project links in.
134 _bsddb
135     To use the version of bsddb that Python is built with by default, invoke
136     (in the dist directory)
138      svn export http://svn.python.org/projects/external/db-4.7.25.0 db-4.7.25
140     Then open db-4.7.25\build_windows\Berkeley_DB.dsw and build the
141     "db_static" project for "Release" mode.
143     Alternatively, if you want to start with the original sources,
144     go to Oracle's download page:
145         http://www.oracle.com/technology/software/products/berkeley-db/db/
147     and download version 4.7.25.
149     With or without strong cryptography? You can choose either with or
150     without strong cryptography, as per the instructions below.  By
151     default, Python is built and distributed WITHOUT strong crypto.
153     Unpack the sources; if you downloaded the non-crypto version, rename
154     the directory from db-4.7.25.NC to db-4.7.25.
156     Now apply any patches that apply to your version.
158     To run extensive tests, pass "-u bsddb" to regrtest.py.  test_bsddb3.py
159     is then enabled.  Running in verbose mode may be helpful.
161     XXX The test_bsddb3 tests don't always pass, on Windows (according to
162     XXX me) or on Linux (according to Barry).  (I had much better luck
163     XXX on Win2K than on Win98SE.)  The common failure mode across platforms
164     XXX is
165     XXX     DBAgainError: (11, 'Resource temporarily unavailable -- unable
166     XXX                         to join the environment')
167     XXX
168     XXX and it appears timing-dependent.  On Win2K I also saw this once:
169     XXX
170     XXX test02_SimpleLocks (bsddb.test.test_thread.HashSimpleThreaded) ...
171     XXX Exception in thread reader 1:
172     XXX Traceback (most recent call last):
173     XXX File "C:\Code\python\lib\threading.py", line 411, in __bootstrap
174     XXX    self.run()
175     XXX File "C:\Code\python\lib\threading.py", line 399, in run
176     XXX    apply(self.__target, self.__args, self.__kwargs)
177     XXX File "C:\Code\python\lib\bsddb\test\test_thread.py", line 268, in
178     XXX                  readerThread
179     XXX    rec = c.next()
180     XXX DBLockDeadlockError: (-30996, 'DB_LOCK_DEADLOCK: Locker killed
181     XXX                                to resolve a deadlock')
182     XXX
183     XXX I'm told that DBLockDeadlockError is expected at times.  It
184     XXX doesn't cause a test to fail when it happens (exceptions in
185     XXX threads are invisible to unittest).
188 _sqlite3
189     Python wrapper for SQLite library.
190     
191     Get the source code through
192     
193     svn export http://svn.python.org/projects/external/sqlite-source-3.3.4
194     
195     To use the extension module in a Python build tree, copy sqlite3.dll into
196     the PC/VC6 folder.
199 _ssl
200     Python wrapper for the secure sockets library.
202     Get the latest source code for OpenSSL from
203         http://www.openssl.org
205     You (probably) don't want the "engine" code.  For example, get
206         openssl-0.9.8g.tar.gz
207     not
208         openssl-engine-0.9.8g.tar.gz
210     Unpack into the "dist" directory, retaining the folder name from
211     the archive - for example, the latest stable OpenSSL will install as
212         dist/openssl-0.9.8g
214     You can (theoretically) use any version of OpenSSL you like - the
215     build process will automatically select the latest version.
217     You must also install ActivePerl from
218         http://www.activestate.com/Products/ActivePerl/
219     as this is used by the OpenSSL build process.  Complain to them <wink>.
221     The MSVC project simply invokes PC/VC6/build_ssl.py to perform
222     the build.  This Python script locates and builds your OpenSSL
223     installation, then invokes a simple makefile to build the final .pyd.
225     build_ssl.py attempts to catch the most common errors (such as not
226     being able to find OpenSSL sources, or not being able to find a Perl
227     that works with OpenSSL) and give a reasonable error message.
228     If you have a problem that doesn't seem to be handled correctly
229     (eg, you know you have ActivePerl but we can't find it), please take
230     a peek at build_ssl.py and suggest patches.  Note that build_ssl.py
231     should be able to be run directly from the command-line.
233     build_ssl.py/MSVC isn't clever enough to clean OpenSSL - you must do
234     this by hand.
237 YOUR OWN EXTENSION DLLs
238 -----------------------
239 If you want to create your own extension module DLL, there's an example
240 with easy-to-follow instructions in ../PC/example/; read the file
241 readme.txt there first.