| Building Python using VC++ 6.0 or 5.0 | |
| ------------------------------------- | |
| This directory is used to build Python for Win32 platforms, e.g. Windows | |
| 2000 and XP. It requires Microsoft Visual C++ 6.x or 5.x and Platform | |
| SDK February 2003 Edition (Core SDK). | |
| (For other Windows platforms and compilers, see ../readme.txt.) | |
| All you need to do is open the workspace "pcbuild.dsw" in MSVC++, select | |
| the Debug or Release setting (using Build -> Set Active Configuration...), | |
| and build the projects. | |
| The proper order to build subprojects: | |
| 1) pythoncore (this builds the main Python DLL and library files, | |
| python27.{dll, lib} in Release mode) | |
| 2) python (this builds the main Python executable, | |
| python.exe in Release mode) | |
| 3) the other subprojects, as desired or needed (note: you probably don't | |
| want to build most of the other subprojects, unless you're building an | |
| entire Python distribution from scratch, or specifically making changes | |
| to the subsystems they implement; see SUBPROJECTS below) | |
| When using the Debug setting, the output files have a _d added to | |
| their name: python27_d.dll, python_d.exe, pyexpat_d.pyd, and so on. | |
| SUBPROJECTS | |
| ----------- | |
| These subprojects should build out of the box. Subprojects other than the | |
| main ones (pythoncore, python, pythonw) generally build a DLL (renamed to | |
| .pyd) from a specific module so that users don't have to load the code | |
| supporting that module unless they import the module. | |
| pythoncore | |
| .dll and .lib | |
| python | |
| .exe | |
| pythonw | |
| pythonw.exe, a variant of python.exe that doesn't pop up a DOS box | |
| _msi | |
| _msi.c. You need to install Windows Installer SDK to build this module. | |
| _socket | |
| socketmodule.c | |
| _testcapi | |
| tests of the Python C API, run via Lib/test/test_capi.py, and | |
| implemented by module Modules/_testcapimodule.c | |
| pyexpat | |
| Python wrapper for accelerated XML parsing, which incorporates stable | |
| code from the Expat project: http://sourceforge.net/projects/expat/ | |
| select | |
| selectmodule.c | |
| unicodedata | |
| large tables of Unicode data | |
| winsound | |
| play sounds (typically .wav files) under Windows | |
| The following subprojects will generally NOT build out of the box. They | |
| wrap code Python doesn't control, and you'll need to download the base | |
| packages first and unpack them into siblings of PCbuilds's parent | |
| directory; for example, if your PCbuild is .......\dist\src\PCbuild\, | |
| unpack into new subdirectories of dist\. | |
| _tkinter | |
| Python wrapper for the Tk windowing system. Requires building | |
| Tcl/Tk first. Following are instructions for Tcl/Tk 8.5.2. | |
| Get source | |
| ---------- | |
| In the dist directory, run | |
| svn export http://svn.python.org/projects/external/tcl-8.5.2.1 tcl8.5.2 | |
| svn export http://svn.python.org/projects/external/tk-8.5.2.0 tk8.5.2 | |
| svn export http://svn.python.org/projects/external/tix-8.4.3.1 tix8.4.3 | |
| Debug Build | |
| ----------- | |
| To build debug version, add DEBUG=1 to all nmake call bellow. | |
| Build Tcl first (done here w/ MSVC 6 on Win2K) | |
| --------------- | |
| If your environment doesn't have struct _stat64, you need to apply | |
| tcl852.patch in this directory to dist\tcl8.5.2\generic\tcl.h. | |
| cd dist\tcl8.5.2\win | |
| run vcvars32.bat | |
| nmake -f makefile.vc | |
| nmake -f makefile.vc INSTALLDIR=..\..\tcltk install | |
| XXX Should we compile with OPTS=threads? | |
| Optional: run tests, via | |
| nmake -f makefile.vc test | |
| all.tcl: Total 24242 Passed 23358 Skipped 877 Failed 7 | |
| Sourced 137 Test Files. | |
| Files with failing tests: exec.test http.test io.test main.test string.test stri | |
| ngObj.test | |
| Build Tk | |
| -------- | |
| cd dist\tk8.5.2\win | |
| nmake -f makefile.vc TCLDIR=..\..\tcl8.5.2 | |
| nmake -f makefile.vc TCLDIR=..\..\tcl8.5.2 INSTALLDIR=..\..\tcltk install | |
| XXX Should we compile with OPTS=threads? | |
| XXX I have no idea whether "nmake -f makefile.vc test" passed or | |
| XXX failed. It popped up tons of little windows, and did lots of | |
| XXX stuff, and nothing blew up. | |
| Build Tix | |
| --------- | |
| cd dist\tix8.4.3\win | |
| nmake -f python.mak TCL_MAJOR=8 TCL_MINOR=5 TCL_PATCH=2 MACHINE=IX86 DEBUG=0 | |
| nmake -f python.mak TCL_MAJOR=8 TCL_MINOR=5 TCL_PATCH=2 MACHINE=IX86 DEBUG=0 INSTALL_DIR=..\..\tcltk install | |
| bz2 | |
| Python wrapper for the libbz2 compression library. Homepage | |
| http://www.bzip.org/ | |
| Download the source from the python.org copy into the dist | |
| directory: | |
| svn export http://svn.python.org/projects/external/bzip2-1.0.6 | |
| And requires building bz2 first. | |
| cd dist\bzip2-1.0.6 | |
| nmake -f makefile.msc | |
| All of this managed to build bzip2-1.0.6\libbz2.lib, which the Python | |
| project links in. | |
| _bsddb | |
| To use the version of bsddb that Python is built with by default, invoke | |
| (in the dist directory) | |
| svn export http://svn.python.org/projects/external/db-4.7.25.0 db-4.7.25 | |
| Then open db-4.7.25\build_windows\Berkeley_DB.dsw and build the | |
| "db_static" project for "Release" mode. | |
| Alternatively, if you want to start with the original sources, | |
| go to Oracle's download page: | |
| http://www.oracle.com/technology/software/products/berkeley-db/db/ | |
| and download version 4.7.25. | |
| With or without strong cryptography? You can choose either with or | |
| without strong cryptography, as per the instructions below. By | |
| default, Python is built and distributed WITHOUT strong crypto. | |
| Unpack the sources; if you downloaded the non-crypto version, rename | |
| the directory from db-4.7.25.NC to db-4.7.25. | |
| Now apply any patches that apply to your version. | |
| To run extensive tests, pass "-u bsddb" to regrtest.py. test_bsddb3.py | |
| is then enabled. Running in verbose mode may be helpful. | |
| XXX The test_bsddb3 tests don't always pass, on Windows (according to | |
| XXX me) or on Linux (according to Barry). (I had much better luck | |
| XXX on Win2K than on Win98SE.) The common failure mode across platforms | |
| XXX is | |
| XXX DBAgainError: (11, 'Resource temporarily unavailable -- unable | |
| XXX to join the environment') | |
| XXX | |
| XXX and it appears timing-dependent. On Win2K I also saw this once: | |
| XXX | |
| XXX test02_SimpleLocks (bsddb.test.test_thread.HashSimpleThreaded) ... | |
| XXX Exception in thread reader 1: | |
| XXX Traceback (most recent call last): | |
| XXX File "C:\Code\python\lib\threading.py", line 411, in __bootstrap | |
| XXX self.run() | |
| XXX File "C:\Code\python\lib\threading.py", line 399, in run | |
| XXX apply(self.__target, self.__args, self.__kwargs) | |
| XXX File "C:\Code\python\lib\bsddb\test\test_thread.py", line 268, in | |
| XXX readerThread | |
| XXX rec = c.next() | |
| XXX DBLockDeadlockError: (-30996, 'DB_LOCK_DEADLOCK: Locker killed | |
| XXX to resolve a deadlock') | |
| XXX | |
| XXX I'm told that DBLockDeadlockError is expected at times. It | |
| XXX doesn't cause a test to fail when it happens (exceptions in | |
| XXX threads are invisible to unittest). | |
| _sqlite3 | |
| Python wrapper for SQLite library. | |
| Get the source code through | |
| svn export http://svn.python.org/projects/external/sqlite-source-3.3.4 | |
| To use the extension module in a Python build tree, copy sqlite3.dll into | |
| the PC/VC6 folder. | |
| _ssl | |
| Python wrapper for the secure sockets library. | |
| Get the latest source code for OpenSSL from | |
| http://www.openssl.org | |
| You (probably) don't want the "engine" code. For example, don't get | |
| openssl-engine-0.9.6g.tar.gz | |
| Unpack into the "dist" directory, retaining the folder name from | |
| the archive - for example, the latest stable OpenSSL will install as | |
| dist/openssl-1.0.0a | |
| You can (theoretically) use any version of OpenSSL you like - the | |
| build process will automatically select the latest version. | |
| You can install the NASM assembler from | |
| http://www.nasm.us/ | |
| for x86 builds. Put nasmw.exe anywhere in your PATH. | |
| Note: recent releases of nasm only have nasm.exe. Just rename it to | |
| nasmw.exe. | |
| You can also install ActivePerl from | |
| http://www.activestate.com/activeperl/ | |
| if you like to use the official sources instead of the files from | |
| python's subversion repository. The svn version contains pre-build | |
| makefiles and assembly files. | |
| The MSVC project simply invokes PC/VC6/build_ssl.py to perform | |
| the build. This Python script locates and builds your OpenSSL | |
| installation, then invokes a simple makefile to build the final .pyd. | |
| build_ssl.py attempts to catch the most common errors (such as not | |
| being able to find OpenSSL sources, or not being able to find a Perl | |
| that works with OpenSSL) and give a reasonable error message. | |
| If you have a problem that doesn't seem to be handled correctly | |
| (eg, you know you have ActivePerl but we can't find it), please take | |
| a peek at build_ssl.py and suggest patches. Note that build_ssl.py | |
| should be able to be run directly from the command-line. | |
| build_ssl.py/MSVC isn't clever enough to clean OpenSSL - you must do | |
| this by hand. | |
| YOUR OWN EXTENSION DLLs | |
| ----------------------- | |
| If you want to create your own extension module DLL, there's an example | |
| with easy-to-follow instructions in ../PC/example/; read the file | |
| readme.txt there first. |