| Martin v. Löwis | b38b019 | 2004-01-02 21:13:28 +0000 | [diff] [blame] | 1 | Building Python using VC++ 7.1 | 
| Guido van Rossum | a29b360 | 2000-03-29 01:51:37 +0000 | [diff] [blame] | 2 | ------------------------------------- | 
| Tim Peters | 4b5fb07 | 2000-07-01 00:03:43 +0000 | [diff] [blame] | 3 | This directory is used to build Python for Win32 platforms, e.g. Windows | 
| Martin v. Löwis | b38b019 | 2004-01-02 21:13:28 +0000 | [diff] [blame] | 4 | 95, 98 and NT.  It requires Microsoft Visual C++ 7.1 | 
 | 5 | (a.k.a. Visual Studio .NET 2003). | 
| Guido van Rossum | 15b239f | 1998-05-26 14:16:23 +0000 | [diff] [blame] | 6 | (For other Windows platforms and compilers, see ../PC/readme.txt.) | 
 | 7 |  | 
| Martin v. Löwis | b38b019 | 2004-01-02 21:13:28 +0000 | [diff] [blame] | 8 | All you need to do is open the workspace "pcbuild.sln" in MSVC++, select | 
 | 9 | the Debug or Release setting (using "Solution Configuration" from | 
 | 10 | the "Standard" toolbar"), and build the projects. | 
| Guido van Rossum | 15b239f | 1998-05-26 14:16:23 +0000 | [diff] [blame] | 11 |  | 
| Tim Peters | befc97c | 2001-01-18 19:01:39 +0000 | [diff] [blame] | 12 | The proper order to build subprojects: | 
| Guido van Rossum | 15b239f | 1998-05-26 14:16:23 +0000 | [diff] [blame] | 13 |  | 
| Tim Peters | 97c9640 | 2001-01-17 23:23:13 +0000 | [diff] [blame] | 14 | 1) pythoncore (this builds the main Python DLL and library files, | 
| Tim Peters | 63db628 | 2005-08-07 02:47:12 +0000 | [diff] [blame] | 15 |                python25.{dll, lib} in Release mode) | 
| Tim Peters | befc97c | 2001-01-18 19:01:39 +0000 | [diff] [blame] | 16 |               NOTE:  in previous releases, this subproject was | 
 | 17 |               named after the release number, e.g. python20. | 
| Guido van Rossum | 15b239f | 1998-05-26 14:16:23 +0000 | [diff] [blame] | 18 |  | 
| Tim Peters | befc97c | 2001-01-18 19:01:39 +0000 | [diff] [blame] | 19 | 2) python (this builds the main Python executable, | 
 | 20 |            python.exe in Release mode) | 
| Tim Peters | 4b5fb07 | 2000-07-01 00:03:43 +0000 | [diff] [blame] | 21 |  | 
 | 22 | 3) 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 Rossum | 15b239f | 1998-05-26 14:16:23 +0000 | [diff] [blame] | 26 |  | 
 | 27 | When using the Debug setting, the output files have a _d added to | 
| Tim Peters | 63db628 | 2005-08-07 02:47:12 +0000 | [diff] [blame] | 28 | their name:  python25_d.dll, python_d.exe, parser_d.pyd, and so on. | 
| Guido van Rossum | e79cf32 | 1998-07-07 22:35:03 +0000 | [diff] [blame] | 29 |  | 
| Tim Peters | 4b5fb07 | 2000-07-01 00:03:43 +0000 | [diff] [blame] | 30 | SUBPROJECTS | 
 | 31 | ----------- | 
| Tim Peters | 610a827 | 2000-07-01 02:51:23 +0000 | [diff] [blame] | 32 | These subprojects should build out of the box.  Subprojects other than the | 
| Tim Peters | befc97c | 2001-01-18 19:01:39 +0000 | [diff] [blame] | 33 | main ones (pythoncore, python, pythonw) generally build a DLL (renamed to | 
| Tim Peters | 610a827 | 2000-07-01 02:51:23 +0000 | [diff] [blame] | 34 | .pyd) from a specific module so that users don't have to load the code | 
| Tim Peters | 4b5fb07 | 2000-07-01 00:03:43 +0000 | [diff] [blame] | 35 | supporting that module unless they import the module. | 
| Guido van Rossum | e79cf32 | 1998-07-07 22:35:03 +0000 | [diff] [blame] | 36 |  | 
| Tim Peters | 97c9640 | 2001-01-17 23:23:13 +0000 | [diff] [blame] | 37 | pythoncore | 
| Tim Peters | 4b5fb07 | 2000-07-01 00:03:43 +0000 | [diff] [blame] | 38 |     .dll and .lib | 
 | 39 | python | 
 | 40 |     .exe | 
 | 41 | pythonw | 
 | 42 |     pythonw.exe, a variant of python.exe that doesn't pop up a DOS box | 
 | 43 | _socket | 
 | 44 |     socketmodule.c | 
| Tim Peters | d66595f | 2001-02-04 03:09:53 +0000 | [diff] [blame] | 45 | _testcapi | 
| Tim Peters | b16c56f | 2001-02-02 21:24:51 +0000 | [diff] [blame] | 46 |     tests of the Python C API, run via Lib/test/test_capi.py, and | 
| Tim Peters | d66595f | 2001-02-04 03:09:53 +0000 | [diff] [blame] | 47 |     implemented by module Modules/_testcapimodule.c | 
| Tim Peters | b012a15 | 2002-02-13 23:56:46 +0000 | [diff] [blame] | 48 | pyexpat | 
 | 49 |     Python wrapper for accelerated XML parsing, which incorporates stable | 
 | 50 |     code from the Expat project:  http://sourceforge.net/projects/expat/ | 
| Tim Peters | 4b5fb07 | 2000-07-01 00:03:43 +0000 | [diff] [blame] | 51 | select | 
 | 52 |     selectmodule.c | 
| Tim Peters | 19f52c2 | 2001-01-24 10:07:22 +0000 | [diff] [blame] | 53 | unicodedata | 
| Tim Peters | 4b5fb07 | 2000-07-01 00:03:43 +0000 | [diff] [blame] | 54 |     large tables of Unicode data | 
| Tim Peters | 4b5fb07 | 2000-07-01 00:03:43 +0000 | [diff] [blame] | 55 | winsound | 
 | 56 |     play sounds (typically .wav files) under Windows | 
 | 57 |  | 
 | 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 | 
| Tim Peters | aff1284 | 2000-08-25 06:52:44 +0000 | [diff] [blame] | 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\. | 
| Tim Peters | 4b5fb07 | 2000-07-01 00:03:43 +0000 | [diff] [blame] | 63 |  | 
 | 64 | _tkinter | 
| Tim Peters | 077736b | 2002-11-14 23:24:40 +0000 | [diff] [blame] | 65 |     Python wrapper for the Tk windowing system.  Requires building | 
| Martin v. Löwis | 6de2d4d | 2004-08-30 09:22:04 +0000 | [diff] [blame] | 66 |     Tcl/Tk first.  Following are instructions for Tcl/Tk 8.4.7; these | 
| Guido van Rossum | d54357d | 2004-03-20 21:00:26 +0000 | [diff] [blame] | 67 |     should work for version 8.4.6 too, with suitable substitutions: | 
| Tim Peters | 077736b | 2002-11-14 23:24:40 +0000 | [diff] [blame] | 68 |  | 
 | 69 |     Get source | 
 | 70 |     ---------- | 
 | 71 |     Go to | 
 | 72 |         http://prdownloads.sourceforge.net/tcl/ | 
 | 73 |     and download | 
| Martin v. Löwis | 6de2d4d | 2004-08-30 09:22:04 +0000 | [diff] [blame] | 74 |         tcl847-src.zip | 
 | 75 |         tk847-src.zip | 
| Tim Peters | 077736b | 2002-11-14 23:24:40 +0000 | [diff] [blame] | 76 |     Unzip into | 
| Martin v. Löwis | 6de2d4d | 2004-08-30 09:22:04 +0000 | [diff] [blame] | 77 |         dist\tcl8.4.7\ | 
 | 78 |         dist\tk8.4.7\ | 
| Tim Peters | 077736b | 2002-11-14 23:24:40 +0000 | [diff] [blame] | 79 |     respectively. | 
 | 80 |  | 
| Guido van Rossum | d54357d | 2004-03-20 21:00:26 +0000 | [diff] [blame] | 81 |     Build Tcl first (done here w/ MSVC 7.1 on Windows XP) | 
| Tim Peters | 6c62995 | 2002-11-15 18:36:11 +0000 | [diff] [blame] | 82 |     --------------- | 
| Guido van Rossum | d54357d | 2004-03-20 21:00:26 +0000 | [diff] [blame] | 83 |     Use "Start -> All Programs -> Microsoft Visual Studio .NET 2003 | 
 | 84 |          -> Visual Studio .NET Tools -> Visual Studio .NET 2003 Command Prompt" | 
 | 85 |     to get a shell window with the correct environment settings | 
| Martin v. Löwis | 6de2d4d | 2004-08-30 09:22:04 +0000 | [diff] [blame] | 86 |     cd dist\tcl8.4.7\win | 
| Tim Peters | 077736b | 2002-11-14 23:24:40 +0000 | [diff] [blame] | 87 |     nmake -f makefile.vc | 
| Martin v. Löwis | 6de2d4d | 2004-08-30 09:22:04 +0000 | [diff] [blame] | 88 |     nmake -f makefile.vc INSTALLDIR=..\..\tcltk install | 
| Tim Peters | 077736b | 2002-11-14 23:24:40 +0000 | [diff] [blame] | 89 |  | 
 | 90 |     XXX Should we compile with OPTS=threads? | 
 | 91 |  | 
| Tim Peters | 011de6cc | 2004-04-11 17:29:12 +0000 | [diff] [blame] | 92 |     Optional:  run tests, via | 
 | 93 |         nmake -f makefile.vc test | 
 | 94 |  | 
| Martin v. Löwis | 6de2d4d | 2004-08-30 09:22:04 +0000 | [diff] [blame] | 95 |         On WinXP Pro, wholly up to date as of 30-Aug-2004: | 
| Tim Peters | e82b00f | 2004-08-30 21:14:51 +0000 | [diff] [blame] | 96 |         all.tcl:        Total   10678   Passed  9969    Skipped 709     Failed  0 | 
| Tim Peters | 011de6cc | 2004-04-11 17:29:12 +0000 | [diff] [blame] | 97 |         Sourced 129 Test Files. | 
| Tim Peters | 077736b | 2002-11-14 23:24:40 +0000 | [diff] [blame] | 98 |  | 
| Tim Peters | 077736b | 2002-11-14 23:24:40 +0000 | [diff] [blame] | 99 |     Build Tk | 
| Tim Peters | 6c62995 | 2002-11-15 18:36:11 +0000 | [diff] [blame] | 100 |     -------- | 
| Martin v. Löwis | 6de2d4d | 2004-08-30 09:22:04 +0000 | [diff] [blame] | 101 |     cd dist\tk8.4.7\win | 
 | 102 |     nmake -f makefile.vc TCLDIR=..\..\tcl8.4.7 | 
 | 103 |     nmake -f makefile.vc TCLDIR=..\..\tcl8.4.7 INSTALLDIR=..\..\tcltk install | 
| Tim Peters | 077736b | 2002-11-14 23:24:40 +0000 | [diff] [blame] | 104 |  | 
 | 105 |     XXX Should we compile with OPTS=threads? | 
 | 106 |  | 
| Tim Peters | 077736b | 2002-11-14 23:24:40 +0000 | [diff] [blame] | 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 Peters | 011de6cc | 2004-04-11 17:29:12 +0000 | [diff] [blame] | 110 |     Optional:  run tests, via | 
| Martin v. Löwis | 6de2d4d | 2004-08-30 09:22:04 +0000 | [diff] [blame] | 111 |         nmake -f makefile.vc TCLDIR=..\..\tcl8.4.7 test | 
| Tim Peters | 011de6cc | 2004-04-11 17:29:12 +0000 | [diff] [blame] | 112 |  | 
| Martin v. Löwis | 6de2d4d | 2004-08-30 09:22:04 +0000 | [diff] [blame] | 113 |         On WinXP Pro, wholly up to date as of 30-Aug-2004: | 
| Tim Peters | e82b00f | 2004-08-30 21:14:51 +0000 | [diff] [blame] | 114 |         all.tcl:        Total   8420    Passed  6826    Skipped 1581    Failed  13 | 
| Martin v. Löwis | 6de2d4d | 2004-08-30 09:22:04 +0000 | [diff] [blame] | 115 |         Sourced 91 Test Files. | 
| Tim Peters | e82b00f | 2004-08-30 21:14:51 +0000 | [diff] [blame] | 116 |         Files with failing tests: canvImg.test scrollbar.test textWind.test winWm.test | 
| Tim Peters | 63db628 | 2005-08-07 02:47:12 +0000 | [diff] [blame] | 117 |  | 
| Martin v. Löwis | 3cf2163 | 2004-08-31 16:22:09 +0000 | [diff] [blame] | 118 |    Built Tix | 
 | 119 |    --------- | 
 | 120 |    Download from http://prdownloads.sourceforge.net/tix/tix-8.1.4.tar.gz | 
 | 121 |    cd dist\tix-8.1.4 | 
 | 122 |    [cygwin]patch -p1 < ..\..\python\PC\tix.diff | 
 | 123 |    cd win | 
 | 124 |    nmake -f makefile.vc | 
 | 125 |    nmake -f makefile.vc install | 
| Tim Peters | 4b5fb07 | 2000-07-01 00:03:43 +0000 | [diff] [blame] | 126 |  | 
 | 127 | zlib | 
| Tim Peters | ee826f8 | 2001-01-31 19:39:44 +0000 | [diff] [blame] | 128 |     Python wrapper for the zlib compression library.  Get the source code | 
| Trent Mick | 8321b42 | 2005-07-26 02:29:21 +0000 | [diff] [blame] | 129 |     for version 1.2.3 from a convenient mirror at: | 
| Tim Peters | 6077f64 | 2002-03-13 21:51:55 +0000 | [diff] [blame] | 130 |         http://www.gzip.org/zlib/ | 
| Trent Mick | 8321b42 | 2005-07-26 02:29:21 +0000 | [diff] [blame] | 131 |     Unpack into dist\zlib-1.2.3. | 
| Tim Peters | ee826f8 | 2001-01-31 19:39:44 +0000 | [diff] [blame] | 132 |     A custom pre-link step in the zlib project settings should manage to | 
| Trent Mick | 8321b42 | 2005-07-26 02:29:21 +0000 | [diff] [blame] | 133 |     build zlib-1.2.3\zlib.lib by magic before zlib.pyd (or zlib_d.pyd) is | 
| Tim Peters | ee826f8 | 2001-01-31 19:39:44 +0000 | [diff] [blame] | 134 |     linked in PCbuild\. | 
 | 135 |     However, the zlib project is not smart enough to remove anything under | 
| Trent Mick | 8321b42 | 2005-07-26 02:29:21 +0000 | [diff] [blame] | 136 |     zlib-1.2.3\ when you do a clean, so if you want to rebuild zlib.lib | 
 | 137 |     you need to clean up zlib-1.2.3\ by hand. | 
| Martin v. Löwis | 3fa5575 | 2005-08-25 07:11:31 +0000 | [diff] [blame] | 138 |     When building zlib.pyd for Itanium, the pre-link build step won't work, | 
 | 139 |     so you will need to invoke nmake manually, using an IA64 build  | 
 | 140 |     environment. | 
| Tim Peters | 4b5fb07 | 2000-07-01 00:03:43 +0000 | [diff] [blame] | 141 |  | 
| Tim Peters | b0ead4e | 2002-11-09 04:48:58 +0000 | [diff] [blame] | 142 | bz2 | 
 | 143 |     Python wrapper for the libbz2 compression library.  Homepage | 
 | 144 |         http://sources.redhat.com/bzip2/ | 
 | 145 |     Download the source tarball, bzip2-1.0.2.tar.gz. | 
| Tim Peters | 077736b | 2002-11-14 23:24:40 +0000 | [diff] [blame] | 146 |     Unpack into dist\bzip2-1.0.2.  WARNING:  If you're using WinZip, you | 
| Tim Peters | b0ead4e | 2002-11-09 04:48:58 +0000 | [diff] [blame] | 147 |     must disable its "TAR file smart CR/LF conversion" feature (under | 
 | 148 |     Options -> Configuration -> Miscellaneous -> Other) for the duration. | 
| Tim Peters | 077736b | 2002-11-14 23:24:40 +0000 | [diff] [blame] | 149 |  | 
| Thomas Heller | 46a007e | 2003-08-20 18:27:36 +0000 | [diff] [blame] | 150 |     A custom pre-link step in the bz2 project settings should manage to | 
 | 151 |     build bzip2-1.0.2\libbz2.lib by magic before bz2.pyd (or bz2_d.pyd) is | 
 | 152 |     linked in PCbuild\. | 
 | 153 |     However, the bz2 project is not smart enough to remove anything under | 
 | 154 |     bzip2-1.0.2\ when you do a clean, so if you want to rebuild bzip2.lib | 
 | 155 |     you need to clean up bzip2-1.0.2\ by hand. | 
| Tim Peters | 077736b | 2002-11-14 23:24:40 +0000 | [diff] [blame] | 156 |  | 
| Thomas Heller | 46a007e | 2003-08-20 18:27:36 +0000 | [diff] [blame] | 157 |     The build step shouldn't yield any warnings or errors, and should end | 
| Tim Peters | b0ead4e | 2002-11-09 04:48:58 +0000 | [diff] [blame] | 158 |     by displaying 6 blocks each terminated with | 
 | 159 |         FC: no differences encountered | 
 | 160 |     If FC finds differences, see the warning abou WinZip above (when I | 
 | 161 |     first tried it, sample3.ref failed due to CRLF conversion). | 
| Tim Peters | caba60a | 2004-01-04 02:04:35 +0000 | [diff] [blame] | 162 |  | 
| Tim Peters | b0ead4e | 2002-11-09 04:48:58 +0000 | [diff] [blame] | 163 |     All of this managed to build bzip2-1.0.2\libbz2.lib, which the Python | 
 | 164 |     project links in. | 
 | 165 |  | 
 | 166 |  | 
| Tim Peters | 78e35f9 | 2002-11-22 20:00:34 +0000 | [diff] [blame] | 167 | _bsddb | 
| Tim Peters | 0064026 | 2003-01-24 15:31:31 +0000 | [diff] [blame] | 168 |     Go to Sleepycat's download page: | 
 | 169 |         http://www.sleepycat.com/download/ | 
| Tim Peters | b0ead4e | 2002-11-09 04:48:58 +0000 | [diff] [blame] | 170 |  | 
| Mark Hammond | 2362da8 | 2004-01-06 04:04:01 +0000 | [diff] [blame] | 171 |     and download version 4.2.52. | 
| Tim Peters | 011de6cc | 2004-04-11 17:29:12 +0000 | [diff] [blame] | 172 |  | 
 | 173 |     With or without strong cryptography? You can choose either with or | 
 | 174 |     without strong cryptography, as per the instructions below.  By | 
| Thomas Heller | 8139140 | 2004-07-02 08:58:46 +0000 | [diff] [blame] | 175 |     default, Python is built and distributed WITHOUT strong crypto. | 
| Tim Peters | 011de6cc | 2004-04-11 17:29:12 +0000 | [diff] [blame] | 176 |  | 
| Mark Hammond | 2362da8 | 2004-01-06 04:04:01 +0000 | [diff] [blame] | 177 |     Unpack into the dist\. directory, ensuring you expand with folder names. | 
| Tim Peters | 011de6cc | 2004-04-11 17:29:12 +0000 | [diff] [blame] | 178 |  | 
| Mark Hammond | 2362da8 | 2004-01-06 04:04:01 +0000 | [diff] [blame] | 179 |     If you downloaded with strong crypto, this will create a dist\db-4.2.52 | 
 | 180 |     directory, and is ready to use. | 
| Tim Peters | 011de6cc | 2004-04-11 17:29:12 +0000 | [diff] [blame] | 181 |  | 
 | 182 |     If you downloaded WITHOUT strong crypto, this will create a | 
| Mark Hammond | 2362da8 | 2004-01-06 04:04:01 +0000 | [diff] [blame] | 183 |     dist\db-4.2.52.NC directory - this directory should be renamed to | 
 | 184 |     dist\db-4.2.52 before use. | 
| Tim Peters | 011de6cc | 2004-04-11 17:29:12 +0000 | [diff] [blame] | 185 |  | 
| Tim Peters | a0d781a | 2004-04-11 18:23:06 +0000 | [diff] [blame] | 186 |     As of 11-Apr-2004, you also need to download and manually apply two | 
 | 187 |     patches before proceeding (and the sleepycat download page tells you | 
 | 188 |     about this).  Cygwin patch worked for me.  cd to dist\db-4.2.52 and | 
 | 189 |     use "patch -p0 < patchfile" once for each downloaded patchfile. | 
 | 190 |  | 
| Tim Peters | 0064026 | 2003-01-24 15:31:31 +0000 | [diff] [blame] | 191 |     Open | 
| Martin v. Löwis | b38b019 | 2004-01-02 21:13:28 +0000 | [diff] [blame] | 192 |         dist\db-4.2.52\docs\index.html | 
| Tim Peters | 0064026 | 2003-01-24 15:31:31 +0000 | [diff] [blame] | 193 |  | 
| Mark Hammond | 2362da8 | 2004-01-06 04:04:01 +0000 | [diff] [blame] | 194 |     and follow the "Windows->Building Berkeley DB with Visual C++ .NET" | 
 | 195 |     instructions for building the Sleepycat | 
| Tim Peters | 0064026 | 2003-01-24 15:31:31 +0000 | [diff] [blame] | 196 |     software.  Note that Berkeley_DB.dsw is in the build_win32 subdirectory. | 
| Guido van Rossum | d54357d | 2004-03-20 21:00:26 +0000 | [diff] [blame] | 197 |     Build the "Release Static" version. | 
| Tim Peters | 0064026 | 2003-01-24 15:31:31 +0000 | [diff] [blame] | 198 |  | 
| Guido van Rossum | d54357d | 2004-03-20 21:00:26 +0000 | [diff] [blame] | 199 |     XXX We're linking against Release_static\libdb42s.lib. | 
| Tim Peters | 84c7a3f | 2002-11-23 18:48:06 +0000 | [diff] [blame] | 200 |     XXX This yields the following warnings: | 
 | 201 | """ | 
 | 202 | Compiling... | 
 | 203 | _bsddb.c | 
 | 204 | Linking... | 
 | 205 |    Creating library ./_bsddb.lib and object ./_bsddb.exp | 
| Martin v. Löwis | b38b019 | 2004-01-02 21:13:28 +0000 | [diff] [blame] | 206 | _bsddb.obj : warning LNK4217: locally defined symbol _malloc imported in function __db_associateCallback | 
 | 207 | _bsddb.obj : warning LNK4217: locally defined symbol _free imported in function __DB_consume | 
 | 208 | _bsddb.obj : warning LNK4217: locally defined symbol _fclose imported in function _DB_verify | 
 | 209 | _bsddb.obj : warning LNK4217: locally defined symbol _fopen imported in function _DB_verify | 
 | 210 | _bsddb.obj : warning LNK4217: locally defined symbol _strncpy imported in function _init_pybsddb | 
 | 211 | __bsddb - 0 error(s), 5 warning(s) | 
| Tim Peters | 84c7a3f | 2002-11-23 18:48:06 +0000 | [diff] [blame] | 212 | """ | 
 | 213 |     XXX This isn't encouraging, but I don't know what to do about it. | 
| Tim Peters | 78e35f9 | 2002-11-22 20:00:34 +0000 | [diff] [blame] | 214 |  | 
| Tim Peters | 0064026 | 2003-01-24 15:31:31 +0000 | [diff] [blame] | 215 |     To run extensive tests, pass "-u bsddb" to regrtest.py.  test_bsddb3.py | 
 | 216 |     is then enabled.  Running in verbose mode may be helpful. | 
 | 217 |  | 
 | 218 |     XXX The test_bsddb3 tests don't always pass, on Windows (according to | 
| Guido van Rossum | d54357d | 2004-03-20 21:00:26 +0000 | [diff] [blame] | 219 |     XXX me) or on Linux (according to Barry).  (I had much better luck | 
 | 220 |     XXX on Win2K than on Win98SE.)  The common failure mode across platforms | 
| Tim Peters | 0064026 | 2003-01-24 15:31:31 +0000 | [diff] [blame] | 221 |     XXX is | 
 | 222 |     XXX     DBAgainError: (11, 'Resource temporarily unavailable -- unable | 
 | 223 |     XXX                         to join the environment') | 
 | 224 |     XXX | 
 | 225 |     XXX and it appears timing-dependent.  On Win2K I also saw this once: | 
 | 226 |     XXX | 
 | 227 |     XXX test02_SimpleLocks (bsddb.test.test_thread.HashSimpleThreaded) ... | 
 | 228 |     XXX Exception in thread reader 1: | 
 | 229 |     XXX Traceback (most recent call last): | 
 | 230 |     XXX File "C:\Code\python\lib\threading.py", line 411, in __bootstrap | 
 | 231 |     XXX    self.run() | 
 | 232 |     XXX File "C:\Code\python\lib\threading.py", line 399, in run | 
 | 233 |     XXX    apply(self.__target, self.__args, self.__kwargs) | 
 | 234 |     XXX File "C:\Code\python\lib\bsddb\test\test_thread.py", line 268, in | 
 | 235 |     XXX                  readerThread | 
 | 236 |     XXX    rec = c.next() | 
 | 237 |     XXX DBLockDeadlockError: (-30996, 'DB_LOCK_DEADLOCK: Locker killed | 
 | 238 |     XXX                                to resolve a deadlock') | 
| Tim Peters | ad8605d | 2003-01-29 00:38:42 +0000 | [diff] [blame] | 239 |     XXX | 
 | 240 |     XXX I'm told that DBLockDeadlockError is expected at times.  It | 
 | 241 |     XXX doesn't cause a test to fail when it happens (exceptions in | 
 | 242 |     XXX threads are invisible to unittest). | 
| Tim Peters | 0064026 | 2003-01-24 15:31:31 +0000 | [diff] [blame] | 243 |  | 
| Mark Hammond | f229f9f | 2002-12-03 05:47:26 +0000 | [diff] [blame] | 244 | _ssl | 
| Tim Peters | e8bcb25 | 2002-12-04 02:39:52 +0000 | [diff] [blame] | 245 |     Python wrapper for the secure sockets library. | 
| Tim Peters | 4b5fb07 | 2000-07-01 00:03:43 +0000 | [diff] [blame] | 246 |  | 
| Mark Hammond | f229f9f | 2002-12-03 05:47:26 +0000 | [diff] [blame] | 247 |     Get the latest source code for OpenSSL from | 
 | 248 |         http://www.openssl.org | 
 | 249 |  | 
| Tim Peters | e8bcb25 | 2002-12-04 02:39:52 +0000 | [diff] [blame] | 250 |     You (probably) don't want the "engine" code.  For example, get | 
| Tim Peters | a0d781a | 2004-04-11 18:23:06 +0000 | [diff] [blame] | 251 |         openssl-0.9.7d.tar.gz | 
| Tim Peters | e8bcb25 | 2002-12-04 02:39:52 +0000 | [diff] [blame] | 252 |     not | 
| Tim Peters | a0d781a | 2004-04-11 18:23:06 +0000 | [diff] [blame] | 253 |         openssl-engine-0.9.7d.tar.gz | 
| Tim Peters | e8bcb25 | 2002-12-04 02:39:52 +0000 | [diff] [blame] | 254 |  | 
| Martin v. Löwis | 4c3259c | 2005-07-06 19:34:10 +0000 | [diff] [blame] | 255 |     (see #1233049 for using 0.9.8). | 
| Mark Hammond | f229f9f | 2002-12-03 05:47:26 +0000 | [diff] [blame] | 256 |     Unpack into the "dist" directory, retaining the folder name from | 
 | 257 |     the archive - for example, the latest stable OpenSSL will install as | 
| Thomas Heller | 8139140 | 2004-07-02 08:58:46 +0000 | [diff] [blame] | 258 |         dist/openssl-0.9.7d | 
| Mark Hammond | f229f9f | 2002-12-03 05:47:26 +0000 | [diff] [blame] | 259 |  | 
 | 260 |     You can (theoretically) use any version of OpenSSL you like - the | 
 | 261 |     build process will automatically select the latest version. | 
 | 262 |  | 
 | 263 |     You must also install ActivePerl from | 
 | 264 |         http://www.activestate.com/Products/ActivePerl/ | 
| Tim Peters | e8bcb25 | 2002-12-04 02:39:52 +0000 | [diff] [blame] | 265 |     as this is used by the OpenSSL build process.  Complain to them <wink>. | 
| Mark Hammond | f229f9f | 2002-12-03 05:47:26 +0000 | [diff] [blame] | 266 |  | 
 | 267 |     The MSVC project simply invokes PCBuild/build_ssl.py to perform | 
| Tim Peters | e8bcb25 | 2002-12-04 02:39:52 +0000 | [diff] [blame] | 268 |     the build.  This Python script locates and builds your OpenSSL | 
| Mark Hammond | f229f9f | 2002-12-03 05:47:26 +0000 | [diff] [blame] | 269 |     installation, then invokes a simple makefile to build the final .pyd. | 
 | 270 |  | 
 | 271 |     build_ssl.py attempts to catch the most common errors (such as not | 
 | 272 |     being able to find OpenSSL sources, or not being able to find a Perl | 
 | 273 |     that works with OpenSSL) and give a reasonable error message. | 
 | 274 |     If you have a problem that doesn't seem to be handled correctly | 
 | 275 |     (eg, you know you have ActivePerl but we can't find it), please take | 
 | 276 |     a peek at build_ssl.py and suggest patches.  Note that build_ssl.py | 
 | 277 |     should be able to be run directly from the command-line. | 
 | 278 |  | 
| Tim Peters | e8bcb25 | 2002-12-04 02:39:52 +0000 | [diff] [blame] | 279 |     build_ssl.py/MSVC isn't clever enough to clean OpenSSL - you must do | 
 | 280 |     this by hand. | 
| Tim Peters | 4b5fb07 | 2000-07-01 00:03:43 +0000 | [diff] [blame] | 281 |  | 
| Martin v. Löwis | 13e50fe | 2004-07-20 14:37:48 +0000 | [diff] [blame] | 282 | Building for Itanium | 
 | 283 | -------------------- | 
 | 284 |  | 
| Tim Peters | e82b00f | 2004-08-30 21:14:51 +0000 | [diff] [blame] | 285 | The project files support a ReleaseItanium configuration which creates | 
| Martin v. Löwis | 13e50fe | 2004-07-20 14:37:48 +0000 | [diff] [blame] | 286 | Win64/Itanium binaries. For this to work, you need to install the Platform | 
 | 287 | SDK, in particular the 64-bit support. This includes an Itanium compiler | 
 | 288 | (future releases of the SDK likely include an AMD64 compiler as well). | 
 | 289 | In addition, you need the Visual Studio plugin for external C compilers, | 
 | 290 | from http://sf.net/projects/vsextcomp. The plugin will wrap cl.exe, to | 
| Tim Peters | e82b00f | 2004-08-30 21:14:51 +0000 | [diff] [blame] | 291 | locate the proper target compiler, and convert compiler options | 
| Martin v. Löwis | 13e50fe | 2004-07-20 14:37:48 +0000 | [diff] [blame] | 292 | accordingly. | 
 | 293 |  | 
 | 294 | The Itanium build has seen little testing. The SDK compiler reports a lot | 
 | 295 | of warnings about conversion from size_t to int, which will be fixed in | 
 | 296 | future Python releases. | 
| Tim Peters | 6ee68d2 | 2002-12-04 03:16:37 +0000 | [diff] [blame] | 297 |  | 
| Tim Peters | f9a4a6e | 2000-07-01 20:38:27 +0000 | [diff] [blame] | 298 | YOUR OWN EXTENSION DLLs | 
| Tim Peters | 4b5fb07 | 2000-07-01 00:03:43 +0000 | [diff] [blame] | 299 | ----------------------- | 
 | 300 | If you want to create your own extension module DLL, there's an example | 
 | 301 | with easy-to-follow instructions in ../PC/example/; read the file | 
 | 302 | readme.txt there first. |