diff options
Diffstat (limited to 'doc/developers/win32_build_setup.txt')
-rw-r--r-- | doc/developers/win32_build_setup.txt | 215 |
1 files changed, 215 insertions, 0 deletions
diff --git a/doc/developers/win32_build_setup.txt b/doc/developers/win32_build_setup.txt new file mode 100644 index 0000000..2a06fc7 --- /dev/null +++ b/doc/developers/win32_build_setup.txt @@ -0,0 +1,215 @@ +=============================== +Setting Up A Windows Build Host +=============================== + +This document describes the steps taken to set up a Windows build host. It is +intended to be step-by-step instructions of what packages need to be installed, +where they can be gotten from, and how they are configured. + + +Baseline +======== + +This was written as a step-by-step as I set up the Amazon EC2 'desolation' +instance. This was based on an Amazon Windows 2003 instance. Also note that for +Amazon EC2, all programs were installed into the "C:" drive, as the "D:" drive +is essentially ``/tmp`` and is not preserved between launched instances. + + +Install Packages +================ + +1) Download cygwin's setup.exe from http://www.cygwin.com + At present the current version is 1.5.25-15. This is used primarily to + install the build scripts and gcc-mingw. Note that we explicitly *don't* + install cygwin's python or bzr package. As we are only interested in + running the native version of bzr. For information on running the cygwin + port of bzr, look elsewhere. + + Probably not all of these packages are necessary, but they make life easier. + + a) gcc-mingw32 + b) make + c) openssh + d) rsync + e) vim + f) wget + g) zip + h) unzip + i) patch + j) gettext-devel # brings 'msgfmt' + + +2) Download the supported versions of python from http://www.python.org + + a) python 2.6.4 + b) python 2.5.4 http://www.python.org/ftp/python/2.5.4/python-2.5.4.msi + c) python 2.4.4 (there is no Windows installer for 2.4.5 or 2.4.6) + http://www.python.org/ftp/python/2.4.4/python-2.4.4.msi + + Note that for Amazon EC2, all of these were installed int + +3) Configure 'distutils' for the compiler that you will be using. For python + 2.4 and 2.5 we use gcc-mingw32, for 2.6 we use Visual Studio 2008. + + Edit ``D:\Python25\Lib\disutils\distutils.cfg`` (you have to create the + file). You want to add a section like:: + + [build] + compiler = mingw32 + + This also requires 'fixing' the cygwin gcc installation so that distutils + can find it. Specifically, it knows to look for ``gcc.exe`` however, the + latest versions of cygwin start using "alternatives" and making ``gcc`` just + a symlink. + + You also need to add ``C:\cygwin\bin`` and ``C:\cygwin\lib`` into your + environment path. This is generally done with:: + + Right Click My Computer / Properties / Advanced / Environment Variables + System Variables / Select 'PATH' / Edit + +4) Download important python libraries. At the moment, the official Windows + all-in-one installer is built using python 2.5. We will likely soon switch + to python 2.6. + + a) http://pypi.python.org/pypi/setuptools + + Installing this first should make it easier to install some of the other + tools. To install something using easy install, it is generally best to + open up a ``cmd.exe`` shell (*not* a cygwin shell) and do:: + + cd C:\Python25 + python.exe Scripts\easy_install-script.py -Z -O1 PACKAGE + + The '-Z' tells it to install as a regular directory. This generally works + better with py2exe. + + b) pywin32 http://sourceforge.net/projects/pywin32/files/ + c) easy_install paramiko + This will also bring in PyCrypto and compile it, so it is important to + have configured step (3) correctly. + d) easy_install Pyrex (or Cython) + Note, you should probably install pyrex for all versions of python. All + of them need to run 'setup.py bdist_wininst' and so it is good to have it + build automatically, rather than setting up an explicit build order based + on which one has pyrex. + e) easy_install cogapp + f) install py2exe (easy_install failed) + http://sourceforge.net/projects/py2exe/files/ + g) easy_install docutils + h) Install PyQt + http://www.riverbankcomputing.co.uk/software/pyqt/download + + Currently they only seem to offer PyQt 4.4.3 for python 2.5 and PyQt + 4.6.1 for python 2.6. They generally don't make it easy to install old + versions of PyQt. + i) Install pyreadline + https://launchpad.net/pyreadline/+download + j) easy_install pygments + k) Patch pycrypto, so that it supports older Windows installs. (see bugs + #248522, #272791, #497733). The direct link to the patch is: + http://launchpadlibrarian.net/16133025/win32_clock.patch + This may not end up necessary w/ pycrypto 2.1, especially if paramiko can + be taught to use the new functionality (avoiding the warning). + l) easy_install testtools + +5) Get Pageant, not strictly necessary, but it is a pretty good ssh-agent for + Windows, and paramiko knows how to use keys from Pageant. + + http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html + + Note that you probably want to set the environment variable + ``BZR_SSH=paramiko`` at this time. Otherwise it will try to use the + ``ssh.exe`` that it finds on your PATH (as configured in step 3), and + cygwin's openssh does *not* know how to access Pageant. + + I usually get the 'all-in-one' installer, but only because it is easier. You + only really need ``pageant.exe`` and possibly ``puttygen.exe``. + + If you do this, you'll probably also want to install a shortcut to + ``pageant.exe`` in Start / Programs / Startup so that it always starts when + you log in (though you still have to manually add your SSH keys.) + + Note that on the Amazon EC2 machine, I'm having problems with temp files + being created without the permission for the current user to actually read + them. They seem to be owned by ``Administrator`` rather than by + ``Administrators``. + +6) Install bzr. Usually it is easiest to just get the latest all-in-one + installer from https://launchpad.net/bzr/+download + +7) Install INNOSetup from: + http://www.jrsoftware.org/isdl.php + + After installing, you'll want to add ``C:\Program Files\Inno Setup 5`` to + your PATH. + +8) Fix distutils for the specific version of gcc. Distutils in python2.4.4 has + a bug where it assumes version strings have only 3 digits. The fix is to + just change one '?' in the regex into a '*':: + + --- version.py 2009-11-05 14:41:47.497212900 -0800 + +++ version.py 2009-11-05 14:39:57.684712900 -0800 + @@ -97,7 +97,7 @@ + in the distutils documentation. + """ + + - version_re = re.compile(r'^(\d+) \. (\d+) (\. (\d+))? ([ab](\d+))?$', + + version_re = re.compile(r'^(\d+) \. (\d+) (\. (\d+))* ([ab](\d+))?$', + re.VERBOSE) + + +9) If you want to build in the source tree, you need the zlib dll and + associated libraries, put somewhere on your path. The buildout routines grab + this directly and add it to the build path, but that doesn't work for + ``setup.py``. + http://www.zlib.net/zlib123-dll.zip + + I usually download and extract this to something like ``C:\local\`` so that + I end up with a ``C:\local\lib`` and ``C:\local\include`` directory. I then + modify the ``distutils.cfg`` file to tell the compiler where to find these + headers and libraries:: + + [build_ext] + include-dirs = C:/local/include + library-dirs = C:/local/lib + + Note that you'll probably want to put the ``zlib1.dll`` into your path. You + can: + + 1) Add ``C:\local`` to your PATH variable in + "My Computer/Properties/Advanced/Environment Variables" + 2) More logically, move ``zlib1.dll`` to either 'lib' or 'bin' + subdirectories and add that. + 3) Copy it to ``C:\Windows\``. + + I recommend 3, mostly because lots of apps will want to use zlib1.dll in the + long run. (You may already have it.) + +10) Install Visual Studio 2008 Professional + http://www.microsoft.com/downloads/details.aspx?FamilyId=83C3A1EC-ED72-4A79-8961-25635DB0192B&displaylang=en + + This is a 3GB DVD iso image. You can mount it directly with Microsofts + iso mounting utility: + http://download.microsoft.com/download/7/b/6/7b6abd84-7841-4978-96f5-bd58df02efa2/winxpvirtualcdcontrolpanel_21.exe + + You need at least Windows XP (which introduced direct iso support, I + believe.) + + Note that there is a Service Pack 1 for Visual Studio. The ISO can be + downloaded here: + http://www.microsoft.com/downloads/thankyou.aspx?familyId=27673c47-b3b5-4c67-bd99-84e525b5ce61&displayLang=en + + However, on EC2, there isn't enough room on C: to actually run the + installer. You need approx 6GB of free disk space. And EC2 only gives your + 10GB and Windows itself takes up about 5GB. So we are currently running + stock VS 2008 with no service packs. (Even installing VS 2008 to a + different drive doesn't leave enough room on C: to run the upgrader.) + + When installing on EC2, it seems their 2003 Server comes with a Visual + Studio key already supplied. There is also the possibility of using Visual + Studio Express Edition, but it is currently unable to compile TortoiseBzr. + +.. + vim: ft=rst tw=79 et |