1Building Python using VC++ 6.0 or 5.0 2------------------------------------- 3This directory is used to build Python for Win32 platforms, e.g. Windows 42000 and XP. It requires Microsoft Visual C++ 6.x or 5.x and Platform 5SDK February 2003 Edition (Core SDK). 6(For other Windows platforms and compilers, see ../readme.txt.) 7 8All you need to do is open the workspace "pcbuild.dsw" in MSVC++, select 9the Debug or Release setting (using Build -> Set Active Configuration...), 10and build the projects. 11 12The proper order to build subprojects: 13 141) pythoncore (this builds the main Python DLL and library files, 15 python27.{dll, lib} in Release mode) 16 172) python (this builds the main Python executable, 18 python.exe in Release mode) 19 203) the other subprojects, as desired or needed (note: you probably don't 21 want to build most of the other subprojects, unless you're building an 22 entire Python distribution from scratch, or specifically making changes 23 to the subsystems they implement; see SUBPROJECTS below) 24 25When using the Debug setting, the output files have a _d added to 26their name: python27_d.dll, python_d.exe, pyexpat_d.pyd, and so on. 27 28SUBPROJECTS 29----------- 30These subprojects should build out of the box. Subprojects other than the 31main ones (pythoncore, python, pythonw) generally build a DLL (renamed to 32.pyd) from a specific module so that users don't have to load the code 33supporting that module unless they import the module. 34 35pythoncore 36 .dll and .lib 37python 38 .exe 39pythonw 40 pythonw.exe, a variant of python.exe that doesn't pop up a DOS box 41_msi 42 _msi.c. You need to install Windows Installer SDK to build this module. 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 48pyexpat 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 55winsound 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 66 Tcl/Tk first. Following are instructions for Tcl/Tk 8.5.2. 67 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 74 75 Debug Build 76 ----------- 77 To build debug version, add DEBUG=1 to all nmake call bellow. 78 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. 83 84 cd dist\tcl8.5.2\win 85 run vcvars32.bat 86 nmake -f makefile.vc 87 nmake -f makefile.vc INSTALLDIR=..\..\tcltk install 88 89 XXX Should we compile with OPTS=threads? 90 91 Optional: run tests, via 92 nmake -f makefile.vc test 93 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 98 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 104 105 XXX Should we compile with OPTS=threads? 106 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. 110 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 116 117bz2 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: 122 123 svn export http://svn.python.org/projects/external/bzip2-1.0.6 124 125 And requires building bz2 first. 126 127 cd dist\bzip2-1.0.6 128 nmake -f makefile.msc 129 130 All of this managed to build bzip2-1.0.6\libbz2.lib, which the Python 131 project links in. 132 133 134_bsddb 135 To use the version of bsddb that Python is built with by default, invoke 136 (in the dist directory) 137 138 svn export http://svn.python.org/projects/external/db-4.7.25.0 db-4.7.25 139 140 Then open db-4.7.25\build_windows\Berkeley_DB.dsw and build the 141 "db_static" project for "Release" mode. 142 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/ 146 147 and download version 4.7.25. 148 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. 152 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. 155 156 Now apply any patches that apply to your version. 157 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. 160 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). 186 187 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. 197 198 199_ssl 200 Python wrapper for the secure sockets library. 201 202 Get the latest source code for OpenSSL from 203 http://www.openssl.org 204 205 You (probably) don't want the "engine" code. For example, don't get 206 openssl-engine-0.9.6g.tar.gz 207 208 Unpack into the "dist" directory, retaining the folder name from 209 the archive - for example, the latest stable OpenSSL will install as 210 dist/openssl-1.0.0a 211 212 You can (theoretically) use any version of OpenSSL you like - the 213 build process will automatically select the latest version. 214 215 You can install the NASM assembler from 216 http://www.nasm.us/ 217 for x86 builds. Put nasmw.exe anywhere in your PATH. 218 Note: recent releases of nasm only have nasm.exe. Just rename it to 219 nasmw.exe. 220 221 You can also install ActivePerl from 222 http://www.activestate.com/activeperl/ 223 if you like to use the official sources instead of the files from 224 python's subversion repository. The svn version contains pre-build 225 makefiles and assembly files. 226 227 The MSVC project simply invokes PC/VC6/build_ssl.py to perform 228 the build. This Python script locates and builds your OpenSSL 229 installation, then invokes a simple makefile to build the final .pyd. 230 231 build_ssl.py attempts to catch the most common errors (such as not 232 being able to find OpenSSL sources, or not being able to find a Perl 233 that works with OpenSSL) and give a reasonable error message. 234 If you have a problem that doesn't seem to be handled correctly 235 (eg, you know you have ActivePerl but we can't find it), please take 236 a peek at build_ssl.py and suggest patches. Note that build_ssl.py 237 should be able to be run directly from the command-line. 238 239 build_ssl.py/MSVC isn't clever enough to clean OpenSSL - you must do 240 this by hand. 241 242 243YOUR OWN EXTENSION DLLs 244----------------------- 245If you want to create your own extension module DLL, there's an example 246with easy-to-follow instructions in ../PC/example/; read the file 247readme.txt there first. 248