symbian-qemu-0.9.1-12/python-2.6.1/PC/VS7.1/readme.txt
changeset 1 2fb8b9db1c86
equal deleted inserted replaced
0:ffa851df0825 1:2fb8b9db1c86
       
     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                python26.{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:  python26_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.