| 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 | 
| Tim Peters | 7ccbb07 | 2006-03-13 19:43:34 +0000 | [diff] [blame] | 25 |    to the subsystems they implement, or are running a Python core buildbot | 
 | 26 |    test slave; see SUBPROJECTS below) | 
| Guido van Rossum | 15b239f | 1998-05-26 14:16:23 +0000 | [diff] [blame] | 27 |  | 
 | 28 | 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] | 29 | 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] | 30 |  | 
| Tim Peters | 4b5fb07 | 2000-07-01 00:03:43 +0000 | [diff] [blame] | 31 | SUBPROJECTS | 
 | 32 | ----------- | 
| Tim Peters | 610a827 | 2000-07-01 02:51:23 +0000 | [diff] [blame] | 33 | These subprojects should build out of the box.  Subprojects other than the | 
| Tim Peters | befc97c | 2001-01-18 19:01:39 +0000 | [diff] [blame] | 34 | main ones (pythoncore, python, pythonw) generally build a DLL (renamed to | 
| Tim Peters | 610a827 | 2000-07-01 02:51:23 +0000 | [diff] [blame] | 35 | .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] | 36 | supporting that module unless they import the module. | 
| Guido van Rossum | e79cf32 | 1998-07-07 22:35:03 +0000 | [diff] [blame] | 37 |  | 
| Tim Peters | 97c9640 | 2001-01-17 23:23:13 +0000 | [diff] [blame] | 38 | pythoncore | 
| Tim Peters | 4b5fb07 | 2000-07-01 00:03:43 +0000 | [diff] [blame] | 39 |     .dll and .lib | 
 | 40 | python | 
 | 41 |     .exe | 
 | 42 | pythonw | 
 | 43 |     pythonw.exe, a variant of python.exe that doesn't pop up a DOS box | 
 | 44 | _socket | 
 | 45 |     socketmodule.c | 
| Tim Peters | d66595f | 2001-02-04 03:09:53 +0000 | [diff] [blame] | 46 | _testcapi | 
| Tim Peters | b16c56f | 2001-02-02 21:24:51 +0000 | [diff] [blame] | 47 |     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] | 48 |     implemented by module Modules/_testcapimodule.c | 
| Tim Peters | b012a15 | 2002-02-13 23:56:46 +0000 | [diff] [blame] | 49 | pyexpat | 
 | 50 |     Python wrapper for accelerated XML parsing, which incorporates stable | 
 | 51 |     code from the Expat project:  http://sourceforge.net/projects/expat/ | 
| Tim Peters | 4b5fb07 | 2000-07-01 00:03:43 +0000 | [diff] [blame] | 52 | select | 
 | 53 |     selectmodule.c | 
| Tim Peters | 19f52c2 | 2001-01-24 10:07:22 +0000 | [diff] [blame] | 54 | unicodedata | 
| Tim Peters | 4b5fb07 | 2000-07-01 00:03:43 +0000 | [diff] [blame] | 55 |     large tables of Unicode data | 
| Tim Peters | 4b5fb07 | 2000-07-01 00:03:43 +0000 | [diff] [blame] | 56 | winsound | 
 | 57 |     play sounds (typically .wav files) under Windows | 
 | 58 |  | 
 | 59 | The following subprojects will generally NOT build out of the box.  They | 
 | 60 | 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] | 61 | packages first and unpack them into siblings of PCbuilds's parent | 
 | 62 | directory; for example, if your PCbuild is  .......\dist\src\PCbuild\, | 
 | 63 | unpack into new subdirectories of dist\. | 
| Tim Peters | 4b5fb07 | 2000-07-01 00:03:43 +0000 | [diff] [blame] | 64 |  | 
 | 65 | _tkinter | 
| Tim Peters | 077736b | 2002-11-14 23:24:40 +0000 | [diff] [blame] | 66 |     Python wrapper for the Tk windowing system.  Requires building | 
| Martin v. Löwis | 9ca8789 | 2006-03-21 13:20:29 +0000 | [diff] [blame] | 67 |     Tcl/Tk first.  Following are instructions for Tcl/Tk 8.4.12. | 
| Tim Peters | 077736b | 2002-11-14 23:24:40 +0000 | [diff] [blame] | 68 |  | 
 | 69 |     Get source | 
 | 70 |     ---------- | 
| Martin v. Löwis | 9ca8789 | 2006-03-21 13:20:29 +0000 | [diff] [blame] | 71 |     In the dist directory, run | 
 | 72 |     svn export http://svn.python.org/projects/external/tcl8.4.12 | 
 | 73 |     svn export http://svn.python.org/projects/external/tk8.4.12 | 
 | 74 |     svn export http://svn.python.org/projects/external/tix-8.4.0 | 
| Tim Peters | 077736b | 2002-11-14 23:24:40 +0000 | [diff] [blame] | 75 |  | 
| Guido van Rossum | d54357d | 2004-03-20 21:00:26 +0000 | [diff] [blame] | 76 |     Build Tcl first (done here w/ MSVC 7.1 on Windows XP) | 
| Tim Peters | 6c62995 | 2002-11-15 18:36:11 +0000 | [diff] [blame] | 77 |     --------------- | 
| Guido van Rossum | d54357d | 2004-03-20 21:00:26 +0000 | [diff] [blame] | 78 |     Use "Start -> All Programs -> Microsoft Visual Studio .NET 2003 | 
 | 79 |          -> Visual Studio .NET Tools -> Visual Studio .NET 2003 Command Prompt" | 
 | 80 |     to get a shell window with the correct environment settings | 
| Martin v. Löwis | 9ca8789 | 2006-03-21 13:20:29 +0000 | [diff] [blame] | 81 |     cd dist\tcl8.4.12\win | 
| Tim Peters | 077736b | 2002-11-14 23:24:40 +0000 | [diff] [blame] | 82 |     nmake -f makefile.vc | 
| Martin v. Löwis | 6de2d4d | 2004-08-30 09:22:04 +0000 | [diff] [blame] | 83 |     nmake -f makefile.vc INSTALLDIR=..\..\tcltk install | 
| Tim Peters | 077736b | 2002-11-14 23:24:40 +0000 | [diff] [blame] | 84 |  | 
 | 85 |     XXX Should we compile with OPTS=threads? | 
 | 86 |  | 
| Tim Peters | 011de6cc | 2004-04-11 17:29:12 +0000 | [diff] [blame] | 87 |     Optional:  run tests, via | 
 | 88 |         nmake -f makefile.vc test | 
 | 89 |  | 
| Martin v. Löwis | 6de2d4d | 2004-08-30 09:22:04 +0000 | [diff] [blame] | 90 |         On WinXP Pro, wholly up to date as of 30-Aug-2004: | 
| Tim Peters | e82b00f | 2004-08-30 21:14:51 +0000 | [diff] [blame] | 91 |         all.tcl:        Total   10678   Passed  9969    Skipped 709     Failed  0 | 
| Tim Peters | 011de6cc | 2004-04-11 17:29:12 +0000 | [diff] [blame] | 92 |         Sourced 129 Test Files. | 
| Tim Peters | 077736b | 2002-11-14 23:24:40 +0000 | [diff] [blame] | 93 |  | 
| Tim Peters | 077736b | 2002-11-14 23:24:40 +0000 | [diff] [blame] | 94 |     Build Tk | 
| Tim Peters | 6c62995 | 2002-11-15 18:36:11 +0000 | [diff] [blame] | 95 |     -------- | 
| Martin v. Löwis | 9ca8789 | 2006-03-21 13:20:29 +0000 | [diff] [blame] | 96 |     cd dist\tk8.4.12\win | 
 | 97 |     nmake -f makefile.vc TCLDIR=..\..\tcl8.4.12 | 
 | 98 |     nmake -f makefile.vc TCLDIR=..\..\tcl8.4.12 INSTALLDIR=..\..\tcltk install | 
| Tim Peters | 077736b | 2002-11-14 23:24:40 +0000 | [diff] [blame] | 99 |  | 
 | 100 |     XXX Should we compile with OPTS=threads? | 
 | 101 |  | 
| Tim Peters | 077736b | 2002-11-14 23:24:40 +0000 | [diff] [blame] | 102 |     XXX Our installer copies a lot of stuff out of the Tcl/Tk install | 
 | 103 |     XXX directory.  Is all of that really needed for Python use of Tcl/Tk? | 
 | 104 |  | 
| Tim Peters | 011de6cc | 2004-04-11 17:29:12 +0000 | [diff] [blame] | 105 |     Optional:  run tests, via | 
| Martin v. Löwis | 9ca8789 | 2006-03-21 13:20:29 +0000 | [diff] [blame] | 106 |         nmake -f makefile.vc TCLDIR=..\..\tcl8.4.12 test | 
| Tim Peters | 011de6cc | 2004-04-11 17:29:12 +0000 | [diff] [blame] | 107 |  | 
| Martin v. Löwis | 6de2d4d | 2004-08-30 09:22:04 +0000 | [diff] [blame] | 108 |         On WinXP Pro, wholly up to date as of 30-Aug-2004: | 
| Tim Peters | e82b00f | 2004-08-30 21:14:51 +0000 | [diff] [blame] | 109 |         all.tcl:        Total   8420    Passed  6826    Skipped 1581    Failed  13 | 
| Martin v. Löwis | 6de2d4d | 2004-08-30 09:22:04 +0000 | [diff] [blame] | 110 |         Sourced 91 Test Files. | 
| Tim Peters | e82b00f | 2004-08-30 21:14:51 +0000 | [diff] [blame] | 111 |         Files with failing tests: canvImg.test scrollbar.test textWind.test winWm.test | 
| Tim Peters | 63db628 | 2005-08-07 02:47:12 +0000 | [diff] [blame] | 112 |  | 
| Martin v. Löwis | 3cf2163 | 2004-08-31 16:22:09 +0000 | [diff] [blame] | 113 |    Built Tix | 
 | 114 |    --------- | 
| Martin v. Löwis | 9ca8789 | 2006-03-21 13:20:29 +0000 | [diff] [blame] | 115 |    cd dist\tix-8.4.0\win | 
 | 116 |    nmake -f python.mak | 
 | 117 |    nmake -f python.mak install | 
| Tim Peters | 4b5fb07 | 2000-07-01 00:03:43 +0000 | [diff] [blame] | 118 |  | 
| Tim Peters | b0ead4e | 2002-11-09 04:48:58 +0000 | [diff] [blame] | 119 | bz2 | 
 | 120 |     Python wrapper for the libbz2 compression library.  Homepage | 
 | 121 |         http://sources.redhat.com/bzip2/ | 
| Martin v. Löwis | f6f7925 | 2006-03-13 13:48:05 +0000 | [diff] [blame] | 122 |     Download the source from the python.org copy into the dist | 
 | 123 |     directory: | 
 | 124 |  | 
| Martin v. Löwis | 14c1cf8 | 2006-03-13 10:52:04 +0000 | [diff] [blame] | 125 |     svn export http://svn.python.org/projects/external/bzip2-1.0.3 | 
| Tim Peters | 077736b | 2002-11-14 23:24:40 +0000 | [diff] [blame] | 126 |  | 
| Thomas Heller | 46a007e | 2003-08-20 18:27:36 +0000 | [diff] [blame] | 127 |     A custom pre-link step in the bz2 project settings should manage to | 
| Tim Peters | 7ccbb07 | 2006-03-13 19:43:34 +0000 | [diff] [blame] | 128 |     build bzip2-1.0.3\libbz2.lib by magic before bz2.pyd (or bz2_d.pyd) is | 
| Thomas Heller | 46a007e | 2003-08-20 18:27:36 +0000 | [diff] [blame] | 129 |     linked in PCbuild\. | 
 | 130 |     However, the bz2 project is not smart enough to remove anything under | 
| Martin v. Löwis | 14c1cf8 | 2006-03-13 10:52:04 +0000 | [diff] [blame] | 131 |     bzip2-1.0.3\ when you do a clean, so if you want to rebuild bzip2.lib | 
 | 132 |     you need to clean up bzip2-1.0.3\ by hand. | 
| Tim Peters | 077736b | 2002-11-14 23:24:40 +0000 | [diff] [blame] | 133 |  | 
| Thomas Heller | 46a007e | 2003-08-20 18:27:36 +0000 | [diff] [blame] | 134 |     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] | 135 |     by displaying 6 blocks each terminated with | 
 | 136 |         FC: no differences encountered | 
| Tim Peters | caba60a | 2004-01-04 02:04:35 +0000 | [diff] [blame] | 137 |  | 
| Martin v. Löwis | 14c1cf8 | 2006-03-13 10:52:04 +0000 | [diff] [blame] | 138 |     All of this managed to build bzip2-1.0.3\libbz2.lib, which the Python | 
| Tim Peters | b0ead4e | 2002-11-09 04:48:58 +0000 | [diff] [blame] | 139 |     project links in. | 
 | 140 |  | 
 | 141 |  | 
| Tim Peters | 78e35f9 | 2002-11-22 20:00:34 +0000 | [diff] [blame] | 142 | _bsddb | 
| Tim Peters | 7ccbb07 | 2006-03-13 19:43:34 +0000 | [diff] [blame] | 143 |     To use the version of bsddb that Python is built with by default, invoke | 
| Martin v. Löwis | f6f7925 | 2006-03-13 13:48:05 +0000 | [diff] [blame] | 144 |     (in the dist directory) | 
| Tim Peters | b0ead4e | 2002-11-09 04:48:58 +0000 | [diff] [blame] | 145 |  | 
| Martin v. Löwis | f6f7925 | 2006-03-13 13:48:05 +0000 | [diff] [blame] | 146 |      svn export http://svn.python.org/projects/external/db-4.4.20 | 
 | 147 |  | 
 | 148 |  | 
| Tim Peters | 6da8ceb | 2006-03-13 20:09:32 +0000 | [diff] [blame] | 149 |     Then open a VS.NET 2003 shell, and invoke: | 
| Martin v. Löwis | f6f7925 | 2006-03-13 13:48:05 +0000 | [diff] [blame] | 150 |  | 
| Tim Peters | 6da8ceb | 2006-03-13 20:09:32 +0000 | [diff] [blame] | 151 |        devenv db-4.4.20\build_win32\Berkeley_DB.sln /build Release /project db_static | 
 | 152 |  | 
 | 153 |     and do that a second time for a Debug build too: | 
 | 154 |  | 
 | 155 |        devenv db-4.4.20\build_win32\Berkeley_DB.sln /build Debug /project db_static | 
| Martin v. Löwis | f6f7925 | 2006-03-13 13:48:05 +0000 | [diff] [blame] | 156 |  | 
| Tim Peters | 32d996f | 2006-03-13 19:35:53 +0000 | [diff] [blame] | 157 |     Alternatively, if you want to start with the original sources, | 
| Martin v. Löwis | f6f7925 | 2006-03-13 13:48:05 +0000 | [diff] [blame] | 158 |     go to Sleepycat's download page: | 
 | 159 |         http://www.sleepycat.com/downloads/releasehistorybdb.html | 
 | 160 |  | 
 | 161 |     and download version 4.4.20. | 
| Tim Peters | 011de6cc | 2004-04-11 17:29:12 +0000 | [diff] [blame] | 162 |  | 
 | 163 |     With or without strong cryptography? You can choose either with or | 
 | 164 |     without strong cryptography, as per the instructions below.  By | 
| Thomas Heller | 8139140 | 2004-07-02 08:58:46 +0000 | [diff] [blame] | 165 |     default, Python is built and distributed WITHOUT strong crypto. | 
| Tim Peters | 011de6cc | 2004-04-11 17:29:12 +0000 | [diff] [blame] | 166 |  | 
| Martin v. Löwis | f6f7925 | 2006-03-13 13:48:05 +0000 | [diff] [blame] | 167 |     Unpack the sources; if you downloaded the non-crypto version, rename | 
 | 168 |     the directory from db-4.4.20.NC to db-4.4.20. | 
| Tim Peters | 011de6cc | 2004-04-11 17:29:12 +0000 | [diff] [blame] | 169 |  | 
| Martin v. Löwis | f6f7925 | 2006-03-13 13:48:05 +0000 | [diff] [blame] | 170 |     Now apply any patches that apply to your version. | 
| Tim Peters | a0d781a | 2004-04-11 18:23:06 +0000 | [diff] [blame] | 171 |  | 
| Tim Peters | 0064026 | 2003-01-24 15:31:31 +0000 | [diff] [blame] | 172 |     Open | 
| Martin v. Löwis | f6f7925 | 2006-03-13 13:48:05 +0000 | [diff] [blame] | 173 |         dist\db-4.4.20\docs\index.html | 
| Tim Peters | 0064026 | 2003-01-24 15:31:31 +0000 | [diff] [blame] | 174 |  | 
| Mark Hammond | 2362da8 | 2004-01-06 04:04:01 +0000 | [diff] [blame] | 175 |     and follow the "Windows->Building Berkeley DB with Visual C++ .NET" | 
 | 176 |     instructions for building the Sleepycat | 
| Tim Peters | 0064026 | 2003-01-24 15:31:31 +0000 | [diff] [blame] | 177 |     software.  Note that Berkeley_DB.dsw is in the build_win32 subdirectory. | 
| Martin v. Löwis | f6f7925 | 2006-03-13 13:48:05 +0000 | [diff] [blame] | 178 |     Build the "db_static" project, for "Release" mode. | 
| Tim Peters | 78e35f9 | 2002-11-22 20:00:34 +0000 | [diff] [blame] | 179 |  | 
| Tim Peters | 0064026 | 2003-01-24 15:31:31 +0000 | [diff] [blame] | 180 |     To run extensive tests, pass "-u bsddb" to regrtest.py.  test_bsddb3.py | 
 | 181 |     is then enabled.  Running in verbose mode may be helpful. | 
 | 182 |  | 
 | 183 |     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] | 184 |     XXX me) or on Linux (according to Barry).  (I had much better luck | 
 | 185 |     XXX on Win2K than on Win98SE.)  The common failure mode across platforms | 
| Tim Peters | 0064026 | 2003-01-24 15:31:31 +0000 | [diff] [blame] | 186 |     XXX is | 
 | 187 |     XXX     DBAgainError: (11, 'Resource temporarily unavailable -- unable | 
 | 188 |     XXX                         to join the environment') | 
 | 189 |     XXX | 
 | 190 |     XXX and it appears timing-dependent.  On Win2K I also saw this once: | 
 | 191 |     XXX | 
 | 192 |     XXX test02_SimpleLocks (bsddb.test.test_thread.HashSimpleThreaded) ... | 
 | 193 |     XXX Exception in thread reader 1: | 
 | 194 |     XXX Traceback (most recent call last): | 
 | 195 |     XXX File "C:\Code\python\lib\threading.py", line 411, in __bootstrap | 
 | 196 |     XXX    self.run() | 
 | 197 |     XXX File "C:\Code\python\lib\threading.py", line 399, in run | 
 | 198 |     XXX    apply(self.__target, self.__args, self.__kwargs) | 
 | 199 |     XXX File "C:\Code\python\lib\bsddb\test\test_thread.py", line 268, in | 
 | 200 |     XXX                  readerThread | 
 | 201 |     XXX    rec = c.next() | 
 | 202 |     XXX DBLockDeadlockError: (-30996, 'DB_LOCK_DEADLOCK: Locker killed | 
 | 203 |     XXX                                to resolve a deadlock') | 
| Tim Peters | ad8605d | 2003-01-29 00:38:42 +0000 | [diff] [blame] | 204 |     XXX | 
 | 205 |     XXX I'm told that DBLockDeadlockError is expected at times.  It | 
 | 206 |     XXX doesn't cause a test to fail when it happens (exceptions in | 
 | 207 |     XXX threads are invisible to unittest). | 
| Tim Peters | 0064026 | 2003-01-24 15:31:31 +0000 | [diff] [blame] | 208 |  | 
| Martin v. Löwis | b091241 | 2006-03-13 15:37:40 +0000 | [diff] [blame] | 209 |     Building for Win64: | 
 | 210 |     - open a VS.NET 2003 command prompt | 
 | 211 |     - run the SDK setenv.cmd script, passing /RETAIL and the target | 
 | 212 |       architecture (/SRV64 for Itanium, /X64 for AMD64) | 
 | 213 |     - build BerkeleyDB with the solution configuration matching the | 
 | 214 |       target ("Release IA64" for Itanium, "Release AMD64" for AMD64), e.g. | 
 | 215 |     devenv db-4.4.20\build_win32\Berkeley_DB.sln /build "Release AMD64" /project db_static /useenv | 
| Tim Peters | 32d996f | 2006-03-13 19:35:53 +0000 | [diff] [blame] | 216 |  | 
| Martin v. Löwis | 1a494bd | 2006-04-04 07:10:59 +0000 | [diff] [blame] | 217 | _sqlite3 | 
 | 218 |     Python wrapper for SQLite library. | 
 | 219 |      | 
 | 220 |     Get the source code through | 
 | 221 |      | 
 | 222 |     svn export http://svn.python.org/projects/external/sqlite-source-3.3.4 | 
 | 223 |      | 
 | 224 |     To use the extension module in a Python build tree, copy sqlite3.dll into | 
 | 225 |     the PCbuild folder. | 
| Martin v. Löwis | b091241 | 2006-03-13 15:37:40 +0000 | [diff] [blame] | 226 |  | 
| Mark Hammond | f229f9f | 2002-12-03 05:47:26 +0000 | [diff] [blame] | 227 | _ssl | 
| Tim Peters | e8bcb25 | 2002-12-04 02:39:52 +0000 | [diff] [blame] | 228 |     Python wrapper for the secure sockets library. | 
| Tim Peters | 4b5fb07 | 2000-07-01 00:03:43 +0000 | [diff] [blame] | 229 |  | 
| Martin v. Löwis | a0f4549 | 2006-03-21 12:08:39 +0000 | [diff] [blame] | 230 |     Get the source code through | 
| Mark Hammond | f229f9f | 2002-12-03 05:47:26 +0000 | [diff] [blame] | 231 |  | 
| Martin v. Löwis | a0f4549 | 2006-03-21 12:08:39 +0000 | [diff] [blame] | 232 |     svn export http://svn.python.org/projects/external/openssl-0.9.8a | 
| Tim Peters | e8bcb25 | 2002-12-04 02:39:52 +0000 | [diff] [blame] | 233 |  | 
| Martin v. Löwis | a0f4549 | 2006-03-21 12:08:39 +0000 | [diff] [blame] | 234 |     Alternatively, get the latest version from http://www.openssl.org. | 
| Mark Hammond | f229f9f | 2002-12-03 05:47:26 +0000 | [diff] [blame] | 235 |     You can (theoretically) use any version of OpenSSL you like - the | 
 | 236 |     build process will automatically select the latest version. | 
 | 237 |  | 
 | 238 |     You must also install ActivePerl from | 
 | 239 |         http://www.activestate.com/Products/ActivePerl/ | 
| Tim Peters | e8bcb25 | 2002-12-04 02:39:52 +0000 | [diff] [blame] | 240 |     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] | 241 |  | 
 | 242 |     The MSVC project simply invokes PCBuild/build_ssl.py to perform | 
| Tim Peters | e8bcb25 | 2002-12-04 02:39:52 +0000 | [diff] [blame] | 243 |     the build.  This Python script locates and builds your OpenSSL | 
| Mark Hammond | f229f9f | 2002-12-03 05:47:26 +0000 | [diff] [blame] | 244 |     installation, then invokes a simple makefile to build the final .pyd. | 
 | 245 |  | 
 | 246 |     build_ssl.py attempts to catch the most common errors (such as not | 
 | 247 |     being able to find OpenSSL sources, or not being able to find a Perl | 
 | 248 |     that works with OpenSSL) and give a reasonable error message. | 
 | 249 |     If you have a problem that doesn't seem to be handled correctly | 
 | 250 |     (eg, you know you have ActivePerl but we can't find it), please take | 
 | 251 |     a peek at build_ssl.py and suggest patches.  Note that build_ssl.py | 
 | 252 |     should be able to be run directly from the command-line. | 
 | 253 |  | 
| Tim Peters | e8bcb25 | 2002-12-04 02:39:52 +0000 | [diff] [blame] | 254 |     build_ssl.py/MSVC isn't clever enough to clean OpenSSL - you must do | 
 | 255 |     this by hand. | 
| Tim Peters | 4b5fb07 | 2000-07-01 00:03:43 +0000 | [diff] [blame] | 256 |  | 
| Martin v. Löwis | 13e50fe | 2004-07-20 14:37:48 +0000 | [diff] [blame] | 257 | Building for Itanium | 
 | 258 | -------------------- | 
 | 259 |  | 
| Tim Peters | e82b00f | 2004-08-30 21:14:51 +0000 | [diff] [blame] | 260 | The project files support a ReleaseItanium configuration which creates | 
| Martin v. Löwis | 13e50fe | 2004-07-20 14:37:48 +0000 | [diff] [blame] | 261 | Win64/Itanium binaries. For this to work, you need to install the Platform | 
 | 262 | SDK, in particular the 64-bit support. This includes an Itanium compiler | 
 | 263 | (future releases of the SDK likely include an AMD64 compiler as well). | 
 | 264 | In addition, you need the Visual Studio plugin for external C compilers, | 
 | 265 | 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] | 266 | locate the proper target compiler, and convert compiler options | 
| Martin v. Löwis | 07b3508 | 2006-04-21 13:48:26 +0000 | [diff] [blame] | 267 | accordingly. The project files require atleast version 0.8. | 
| Martin v. Löwis | 13e50fe | 2004-07-20 14:37:48 +0000 | [diff] [blame] | 268 |  | 
| Martin v. Löwis | 856bf9a | 2006-02-14 20:42:55 +0000 | [diff] [blame] | 269 | Building for AMD64 | 
 | 270 | ------------------ | 
 | 271 |  | 
 | 272 | The build process for the ReleaseAMD64 configuration is very similar | 
 | 273 | to the Itanium configuration; make sure you use the latest version of | 
 | 274 | vsextcomp. | 
 | 275 |  | 
| Martin v. Löwis | 48bbaf2 | 2006-04-15 18:06:54 +0000 | [diff] [blame] | 276 | Building Python Using the free MS Toolkit Compiler | 
 | 277 | -------------------------------------------------- | 
 | 278 |  | 
 | 279 | The build process for Visual C++ can be used almost unchanged with the free MS | 
 | 280 | Toolkit Compiler. This provides a way of building Python using freely | 
 | 281 | available software. | 
 | 282 |  | 
 | 283 | Requirements | 
 | 284 |  | 
 | 285 |     To build Python, the following tools are required: | 
 | 286 |  | 
 | 287 |     * The Visual C++ Toolkit Compiler | 
 | 288 |         from http://msdn.microsoft.com/visualc/vctoolkit2003/ | 
 | 289 |     * A recent Platform SDK | 
 | 290 |         from http://www.microsoft.com/downloads/details.aspx?FamilyID=484269e2-3b89-47e3-8eb7-1f2be6d7123a | 
 | 291 |     * The .NET 1.1 SDK | 
 | 292 |         from http://www.microsoft.com/downloads/details.aspx?FamilyID=9b3a2ca6-3647-4070-9f41-a333c6b9181d | 
 | 293 |  | 
 | 294 |     [Does anyone have better URLs for the last 2 of these?] | 
 | 295 |  | 
 | 296 |     The toolkit compiler is needed as it is an optimising compiler (the | 
 | 297 |     compiler supplied with the .NET SDK is a non-optimising version). The | 
 | 298 |     platform SDK is needed to provide the Windows header files and libraries | 
 | 299 |     (the Windows 2003 Server SP1 edition, typical install, is known to work - | 
 | 300 |     other configurations or versions are probably fine as well). The .NET 1.1 | 
 | 301 |     SDK is needed because it contains a version of msvcrt.dll which links to | 
 | 302 |     the msvcr71.dll CRT. Note that the .NET 2.0 SDK is NOT acceptable, as it | 
 | 303 |     references msvcr80.dll. | 
 | 304 |  | 
 | 305 |     All of the above items should be installed as normal. | 
 | 306 |  | 
 | 307 |     If you intend to build the openssl (needed for the _ssl extension) you | 
 | 308 |     will need the C runtime sources installed as part of the platform SDK. | 
 | 309 |  | 
 | 310 |     In addition, you will need Nant, available from | 
 | 311 |     http://nant.sourceforge.net. The 0.85 release candidate 3 version is known | 
 | 312 |     to work. This is the latest released version at the time of writing. Later | 
 | 313 |     "nightly build" versions are known NOT to work - it is not clear at | 
 | 314 |     present whether future released versions will work. | 
 | 315 |  | 
 | 316 | Setting up the environment | 
 | 317 |  | 
 | 318 |     Start a platform SDK "build environment window" from the start menu. The | 
 | 319 |     "Windows XP 32-bit retail" version is known to work. | 
 | 320 |  | 
 | 321 |     Add the following directories to your PATH: | 
 | 322 |         * The toolkit compiler directory | 
 | 323 |         * The SDK "Win64" binaries directory | 
 | 324 | 	* The Nant directory | 
 | 325 |     Add to your INCLUDE environment variable: | 
 | 326 |         * The toolkit compiler INCLUDE directory | 
 | 327 |     Add to your LIB environment variable: | 
 | 328 |         * The toolkit compiler LIB directory | 
 | 329 | 	* The .NET SDK Visual Studio 2003 VC7\lib directory | 
 | 330 |  | 
 | 331 |     The following commands should set things up as you need them: | 
 | 332 |  | 
 | 333 |         rem Set these values according to where you installed the software | 
 | 334 |         set TOOLKIT=C:\Program Files\Microsoft Visual C++ Toolkit 2003 | 
 | 335 |         set SDK=C:\Program Files\Microsoft Platform SDK | 
 | 336 |         set NET=C:\Program Files\Microsoft Visual Studio .NET 2003 | 
 | 337 |         set NANT=C:\Utils\Nant | 
 | 338 |  | 
 | 339 |         set PATH=%TOOLKIT%\bin;%PATH%;%SDK%\Bin\win64;%NANT%\bin | 
 | 340 |         set INCLUDE=%TOOLKIT%\include;%INCLUDE% | 
 | 341 |         set LIB=%TOOLKIT%\lib;%NET%\VC7\lib;%LIB% | 
 | 342 |  | 
 | 343 |     The "win64" directory from the SDK is added to supply executables such as | 
 | 344 |     "cvtres" and "lib", which are not available elsewhere. The versions in the | 
 | 345 |     "win64" directory are 32-bit programs, so they are fine to use here. | 
 | 346 |  | 
 | 347 |     That's it. To build Python (the core only, no binary extensions which | 
 | 348 |     depend on external libraries) you just need to issue the command | 
 | 349 |  | 
 | 350 |         nant -buildfile:python.build all | 
 | 351 |  | 
 | 352 |     from within the PCBuild directory. | 
 | 353 |  | 
 | 354 | Extension modules | 
 | 355 |  | 
 | 356 |     To build those extension modules which require external libraries | 
 | 357 |     (_tkinter, bz2, _bsddb, _sqlite3, _ssl) you can follow the instructions | 
 | 358 |     for the Visual Studio build above, with a few minor modifications. These | 
 | 359 |     instructions have only been tested using the sources in the Python | 
 | 360 |     subversion repository - building from original sources should work, but | 
 | 361 |     has not been tested. | 
 | 362 |  | 
 | 363 |     For each extension module you wish to build, you should remove the | 
 | 364 |     associated include line from the excludeprojects section of pc.build. | 
 | 365 |  | 
 | 366 |     The changes required are: | 
 | 367 |  | 
 | 368 |     _tkinter | 
 | 369 |         The tix makefile (tix-8.4.0\win\makefile.vc) must be modified to | 
 | 370 | 	remove references to TOOLS32. The relevant lines should be changed to | 
 | 371 | 	read: | 
 | 372 |             cc32 = cl.exe | 
 | 373 |             link32 = link.exe | 
 | 374 |             include32 =  | 
 | 375 | 	The remainder of the build instructions will work as given. | 
 | 376 |  | 
 | 377 |     bz2 | 
 | 378 |         No changes are needed | 
 | 379 |  | 
 | 380 |     _bsddb | 
 | 381 |         The file db.build should be copied from the Python PCBuild directory | 
 | 382 | 	to the directory db-4.4.20\build_win32. | 
 | 383 |  | 
| Thomas Heller | 112d4ec | 2006-04-15 20:43:22 +0000 | [diff] [blame] | 384 | 	The file db_static.vcproj in db-4.4.20\build_win32 should be edited to | 
| Martin v. Löwis | 48bbaf2 | 2006-04-15 18:06:54 +0000 | [diff] [blame] | 385 | 	remove the string "$(SolutionDir)" - this occurs in 2 places, only | 
 | 386 | 	relevant for 64-bit builds. (The edit is required as otherwise, nant | 
 | 387 | 	wants to read the solution file, which is not in a suitable form). | 
 | 388 |  | 
 | 389 | 	The bsddb library can then be build with the command | 
 | 390 | 	    nant -buildfile:db.build all | 
 | 391 | 	run from the db-4.4.20\build_win32 directory. | 
 | 392 |  | 
 | 393 |     _sqlite3 | 
 | 394 |         No changes are needed. However, in order for the tests to succeed, a | 
 | 395 | 	copy of sqlite3.dll must be downloaded, and placed alongside | 
 | 396 | 	python.exe. | 
 | 397 |  | 
 | 398 |     _ssl | 
 | 399 |         The documented build process works as written. However, it needs a | 
 | 400 | 	copy of the file setargv.obj, which is not supplied in the platform | 
 | 401 | 	SDK. However, the sources are available (in the crt source code). To | 
 | 402 | 	build setargv.obj, proceed as follows: | 
 | 403 |  | 
 | 404 |         Copy setargv.c, cruntime.h and internal.h from %SDK%\src\crt to a | 
 | 405 | 	temporary directory. | 
 | 406 | 	Compile using "cl /c /I. /MD /D_CRTBLD setargv.c" | 
 | 407 | 	Copy the resulting setargv.obj to somewhere on your LIB environment | 
 | 408 | 	(%SDK%\lib is a reasonable place). | 
 | 409 |  | 
 | 410 | 	With setargv.obj in place, the standard build process should work | 
 | 411 | 	fine. | 
 | 412 |  | 
| Tim Peters | f9a4a6e | 2000-07-01 20:38:27 +0000 | [diff] [blame] | 413 | YOUR OWN EXTENSION DLLs | 
| Tim Peters | 4b5fb07 | 2000-07-01 00:03:43 +0000 | [diff] [blame] | 414 | ----------------------- | 
 | 415 | If you want to create your own extension module DLL, there's an example | 
 | 416 | with easy-to-follow instructions in ../PC/example/; read the file | 
 | 417 | readme.txt there first. |