Home | History | Annotate | only in /external/python/cpython2/PC/VS7.1
Up to higher level directory
NameDateSize
_bsddb.vcproj21-Aug-20187.3K
_ctypes.vcproj21-Aug-20188.7K
_ctypes_test.vcproj21-Aug-20186.6K
_elementtree.vcproj21-Aug-20187.5K
_msi.vcproj21-Aug-20186.9K
_socket.vcproj21-Aug-20186.9K
_sqlite3.vcproj21-Aug-20188K
_ssl.mak21-Aug-20181.3K
_ssl.vcproj21-Aug-20182.3K
_testcapi.vcproj21-Aug-20186.7K
_tkinter.vcproj21-Aug-20187.4K
amd64_ml64.bat21-Aug-2018494
build_ssl.bat21-Aug-2018249
build_ssl.py21-Aug-20186.4K
bz2.vcproj21-Aug-20187.5K
db.build21-Aug-2018237
field3.py21-Aug-2018966
installer.bmp21-Aug-201857.4K
make_buildinfo.c21-Aug-20183K
make_buildinfo.vcproj21-Aug-20183.1K
make_versioninfo.vcproj21-Aug-20183.7K
pcbuild.sln21-Aug-201819.3K
pyexpat.vcproj21-Aug-20187.3K
python.build21-Aug-2018633
python.iss21-Aug-201818.4K
python.vcproj21-Aug-20187.1K
python20.wse21-Aug-201878K
pythoncore.vcproj21-Aug-201821.1K
pythonw.vcproj21-Aug-20186.9K
readme.txt21-Aug-201816.9K
rmpyc.py21-Aug-2018597
rt.bat21-Aug-20181.6K
select.vcproj21-Aug-20187K
unicodedata.vcproj21-Aug-20186.8K
Uninstal.wse21-Aug-20189.5K
w9xpopen.vcproj21-Aug-20183K
winsound.vcproj21-Aug-20186.9K

readme.txt

      1 Building Python using VC++ 7.1
      2 -------------------------------------
      3 This directory is used to build Python for Win32 platforms, e.g. Windows
      4 95, 98 and NT.  It requires Microsoft Visual C++ 7.1
      5 (a.k.a. Visual Studio .NET 2003).
      6 (For other Windows platforms and compilers, see ../PC/readme.txt.)
      7 
      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.
     11 
     12 The proper order to build subprojects:
     13 
     14 1) pythoncore (this builds the main Python DLL and library files,
     15                python27.{dll, lib} in Release mode)
     16               NOTE:  in previous releases, this subproject was
     17               named after the release number, e.g. python20.
     18 
     19 2) python (this builds the main Python executable,
     20            python.exe in Release mode)
     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, or are running a Python core buildbot
     26    test slave; see SUBPROJECTS below)
     27 
     28 When using the Debug setting, the output files have a _d added to
     29 their name:  python27_d.dll, python_d.exe, parser_d.pyd, and so on.
     30 
     31 SUBPROJECTS
     32 -----------
     33 These subprojects should build out of the box.  Subprojects other than the
     34 main ones (pythoncore, python, pythonw) generally build a DLL (renamed to
     35 .pyd) from a specific module so that users don't have to load the code
     36 supporting that module unless they import the module.
     37 
     38 pythoncore
     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
     46 _testcapi
     47     tests of the Python C API, run via Lib/test/test_capi.py, and
     48     implemented by module Modules/_testcapimodule.c
     49 pyexpat
     50     Python wrapper for accelerated XML parsing, which incorporates stable
     51     code from the Expat project:  http://sourceforge.net/projects/expat/
     52 select
     53     selectmodule.c
     54 unicodedata
     55     large tables of Unicode data
     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
     61 packages first and unpack them into siblings of PC's parent
     62 directory; for example, if this directory is ....\dist\trunk\PC\VS7.1,
     63 unpack into new subdirectories of dist\.
     64 
     65 _tkinter
     66     Python wrapper for the Tk windowing system.  Requires building
     67     Tcl/Tk first.  Following are instructions for Tcl/Tk 8.4.12.
     68 
     69     Get source
     70     ----------
     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
     75 
     76     Build Tcl first (done here w/ MSVC 7.1 on Windows XP)
     77     ---------------
     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
     81     cd dist\tcl8.4.12\win
     82     nmake -f makefile.vc
     83     nmake -f makefile.vc INSTALLDIR=..\..\tcltk install
     84 
     85     XXX Should we compile with OPTS=threads?
     86 
     87     Optional:  run tests, via
     88         nmake -f makefile.vc test
     89 
     90         On WinXP Pro, wholly up to date as of 30-Aug-2004:
     91         all.tcl:        Total   10678   Passed  9969    Skipped 709     Failed  0
     92         Sourced 129 Test Files.
     93 
     94     Build Tk
     95     --------
     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
     99 
    100     XXX Should we compile with OPTS=threads?
    101 
    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 
    105     Optional:  run tests, via
    106         nmake -f makefile.vc TCLDIR=..\..\tcl8.4.12 test
    107 
    108         On WinXP Pro, wholly up to date as of 30-Aug-2004:
    109         all.tcl:        Total   8420    Passed  6826    Skipped 1581    Failed  13
    110         Sourced 91 Test Files.
    111         Files with failing tests: canvImg.test scrollbar.test textWind.test winWm.test
    112 
    113    Built Tix
    114    ---------
    115    cd dist\tix-8.4.0\win
    116    nmake -f python.mak
    117    nmake -f python.mak install
    118 
    119 bz2
    120     Python wrapper for the libbz2 compression library.  Homepage
    121         http://sources.redhat.com/bzip2/
    122     Download the source from the python.org copy into the dist
    123     directory:
    124 
    125     svn export http://svn.python.org/projects/external/bzip2-1.0.3
    126 
    127     A custom pre-link step in the bz2 project settings should manage to
    128     build bzip2-1.0.3\libbz2.lib by magic before bz2.pyd (or bz2_d.pyd) is
    129     linked in VS7.1\.
    130     However, the bz2 project is not smart enough to remove anything under
    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.
    133 
    134     The build step shouldn't yield any warnings or errors, and should end
    135     by displaying 6 blocks each terminated with
    136         FC: no differences encountered
    137 
    138     All of this managed to build bzip2-1.0.3\libbz2.lib, which the Python
    139     project links in.
    140 
    141 
    142 _bsddb
    143     To use the version of bsddb that Python is built with by default, invoke
    144     (in the dist directory)
    145 
    146      svn export http://svn.python.org/projects/external/db-4.4.20
    147 
    148 
    149     Then open a VS.NET 2003 shell, and invoke:
    150 
    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
    156 
    157     Alternatively, if you want to start with the original sources,
    158     go to Sleepycat's download page:
    159         http://www.sleepycat.com/downloads/releasehistorybdb.html
    160 
    161     and download version 4.4.20.
    162 
    163     With or without strong cryptography? You can choose either with or
    164     without strong cryptography, as per the instructions below.  By
    165     default, Python is built and distributed WITHOUT strong crypto.
    166 
    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.
    169 
    170     Now apply any patches that apply to your version.
    171 
    172     Open
    173         dist\db-4.4.20\docs\index.html
    174 
    175     and follow the "Windows->Building Berkeley DB with Visual C++ .NET"
    176     instructions for building the Sleepycat
    177     software.  Note that Berkeley_DB.dsw is in the build_win32 subdirectory.
    178     Build the "db_static" project, for "Release" mode.
    179 
    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
    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
    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')
    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).
    208 
    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
    216 
    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 VS7.1 folder.
    226 
    227 _ssl
    228     Python wrapper for the secure sockets library.
    229 
    230     Get the source code through
    231 
    232     svn export http://svn.python.org/projects/external/openssl-0.9.8a
    233 
    234     Alternatively, get the latest version from http://www.openssl.org.
    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/
    240     as this is used by the OpenSSL build process.  Complain to them <wink>.
    241 
    242     The MSVC project simply invokes build_ssl.py to perform
    243     the build.  This Python script locates and builds your OpenSSL
    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 
    254     build_ssl.py/MSVC isn't clever enough to clean OpenSSL - you must do
    255     this by hand.
    256 
    257 Building for Itanium
    258 --------------------
    259 
    260 The project files support a ReleaseItanium configuration which creates
    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
    266 locate the proper target compiler, and convert compiler options
    267 accordingly. The project files require atleast version 0.9.
    268 
    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 
    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 Note that Microsoft have withdrawn the free MS Toolkit Compiler, so this can
    284 no longer be considered a supported option. The instructions are still
    285 correct, but you need to already have a copy of the compiler in order to use
    286 them. Microsoft now supply Visual C++ 2008 Express Edition for free, but this
    287 is NOT compatible with Visual C++ 7.1 (it uses a different C runtime), and so
    288 cannot be used to build a version of Python compatible with the standard
    289 python.org build. If you are interested in using Visual C++ 2008 Express
    290 Edition, however, you should look at the PCBuild directory.
    291 
    292 Requirements
    293 
    294     To build Python, the following tools are required:
    295 
    296     * The Visual C++ Toolkit Compiler
    297         no longer available for download - see above
    298     * A recent Platform SDK
    299         from http://www.microsoft.com/downloads/details.aspx?FamilyID=484269e2-3b89-47e3-8eb7-1f2be6d7123a
    300     * The .NET 1.1 SDK
    301         from http://www.microsoft.com/downloads/details.aspx?FamilyID=9b3a2ca6-3647-4070-9f41-a333c6b9181d
    302 
    303     [Does anyone have better URLs for the last 2 of these?]
    304 
    305     The toolkit compiler is needed as it is an optimising compiler (the
    306     compiler supplied with the .NET SDK is a non-optimising version). The
    307     platform SDK is needed to provide the Windows header files and libraries
    308     (the Windows 2003 Server SP1 edition, typical install, is known to work -
    309     other configurations or versions are probably fine as well). The .NET 1.1
    310     SDK is needed because it contains a version of msvcrt.dll which links to
    311     the msvcr71.dll CRT. Note that the .NET 2.0 SDK is NOT acceptable, as it
    312     references msvcr80.dll.
    313 
    314     All of the above items should be installed as normal.
    315 
    316     If you intend to build the openssl (needed for the _ssl extension) you
    317     will need the C runtime sources installed as part of the platform SDK.
    318 
    319     In addition, you will need Nant, available from
    320     http://nant.sourceforge.net. The 0.85 release candidate 3 version is known
    321     to work. This is the latest released version at the time of writing. Later
    322     "nightly build" versions are known NOT to work - it is not clear at
    323     present whether future released versions will work.
    324 
    325 Setting up the environment
    326 
    327     Start a platform SDK "build environment window" from the start menu. The
    328     "Windows XP 32-bit retail" version is known to work.
    329 
    330     Add the following directories to your PATH:
    331         * The toolkit compiler directory
    332         * The SDK "Win64" binaries directory
    333 	* The Nant directory
    334     Add to your INCLUDE environment variable:
    335         * The toolkit compiler INCLUDE directory
    336     Add to your LIB environment variable:
    337         * The toolkit compiler LIB directory
    338 	* The .NET SDK Visual Studio 2003 VC7\lib directory
    339 
    340     The following commands should set things up as you need them:
    341 
    342         rem Set these values according to where you installed the software
    343         set TOOLKIT=C:\Program Files\Microsoft Visual C++ Toolkit 2003
    344         set SDK=C:\Program Files\Microsoft Platform SDK
    345         set NET=C:\Program Files\Microsoft Visual Studio .NET 2003
    346         set NANT=C:\Utils\Nant
    347 
    348         set PATH=%TOOLKIT%\bin;%PATH%;%SDK%\Bin\win64;%NANT%\bin
    349         set INCLUDE=%TOOLKIT%\include;%INCLUDE%
    350         set LIB=%TOOLKIT%\lib;%NET%\VC7\lib;%LIB%
    351 
    352     The "win64" directory from the SDK is added to supply executables such as
    353     "cvtres" and "lib", which are not available elsewhere. The versions in the
    354     "win64" directory are 32-bit programs, so they are fine to use here.
    355 
    356     That's it. To build Python (the core only, no binary extensions which
    357     depend on external libraries) you just need to issue the command
    358 
    359         nant -buildfile:python.build all
    360 
    361     from within the VS7.1 directory.
    362 
    363 Extension modules
    364 
    365     To build those extension modules which require external libraries
    366     (_tkinter, bz2, _bsddb, _sqlite3, _ssl) you can follow the instructions
    367     for the Visual Studio build above, with a few minor modifications. These
    368     instructions have only been tested using the sources in the Python
    369     subversion repository - building from original sources should work, but
    370     has not been tested.
    371 
    372     For each extension module you wish to build, you should remove the
    373     associated include line from the excludeprojects section of pc.build.
    374 
    375     The changes required are:
    376 
    377     _tkinter
    378         The tix makefile (tix-8.4.0\win\makefile.vc) must be modified to
    379 	remove references to TOOLS32. The relevant lines should be changed to
    380 	read:
    381             cc32 = cl.exe
    382             link32 = link.exe
    383             include32 = 
    384 	The remainder of the build instructions will work as given.
    385 
    386     bz2
    387         No changes are needed
    388 
    389     _bsddb
    390         The file db.build should be copied from the Python PCBuild directory
    391 	to the directory db-4.4.20\build_win32.
    392 
    393 	The file db_static.vcproj in db-4.4.20\build_win32 should be edited to
    394 	remove the string "$(SolutionDir)" - this occurs in 2 places, only
    395 	relevant for 64-bit builds. (The edit is required as otherwise, nant
    396 	wants to read the solution file, which is not in a suitable form).
    397 
    398 	The bsddb library can then be build with the command
    399 	    nant -buildfile:db.build all
    400 	run from the db-4.4.20\build_win32 directory.
    401 
    402     _sqlite3
    403         No changes are needed. However, in order for the tests to succeed, a
    404 	copy of sqlite3.dll must be downloaded, and placed alongside
    405 	python.exe.
    406 
    407     _ssl
    408         The documented build process works as written. However, it needs a
    409 	copy of the file setargv.obj, which is not supplied in the platform
    410 	SDK. However, the sources are available (in the crt source code). To
    411 	build setargv.obj, proceed as follows:
    412 
    413         Copy setargv.c, cruntime.h and internal.h from %SDK%\src\crt to a
    414 	temporary directory.
    415 	Compile using "cl /c /I. /MD /D_CRTBLD setargv.c"
    416 	Copy the resulting setargv.obj to somewhere on your LIB environment
    417 	(%SDK%\lib is a reasonable place).
    418 
    419 	With setargv.obj in place, the standard build process should work
    420 	fine.
    421 
    422 YOUR OWN EXTENSION DLLs
    423 -----------------------
    424 If you want to create your own extension module DLL, there's an example
    425 with easy-to-follow instructions in ../PC/example/; read the file
    426 readme.txt there first.
    427