Rev 4818: (jam) Add a developer doc describing dependencies for win32 builds in file:///home/pqm/archives/thelove/bzr/%2Btrunk/

Canonical.com Patch Queue Manager pqm at pqm.ubuntu.com
Fri Nov 20 13:58:51 GMT 2009


At file:///home/pqm/archives/thelove/bzr/%2Btrunk/

------------------------------------------------------------
revno: 4818 [merge]
revision-id: pqm at pqm.ubuntu.com-20091120135849-rxmryotfq30r6q79
parent: pqm at pqm.ubuntu.com-20091120064432-kq66yp5jkffi1ijo
parent: john at arbash-meinel.com-20091119203119-gxnclo7xy44911ic
committer: Canonical.com Patch Queue Manager <pqm at pqm.ubuntu.com>
branch nick: +trunk
timestamp: Fri 2009-11-20 13:58:49 +0000
message:
  (jam) Add a developer doc describing dependencies for win32 builds
added:
  doc/developers/win32_build_setup.txt win32_build_setup.tx-20091104201959-pvlau2f8dndoxjj8-1
=== added file 'doc/developers/win32_build_setup.txt'
--- a/doc/developers/win32_build_setup.txt	1970-01-01 00:00:00 +0000
+++ b/doc/developers/win32_build_setup.txt	2009-11-19 20:31:19 +0000
@@ -0,0 +1,208 @@
+===============================
+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
+
+
+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
+
+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




More information about the bazaar-commits mailing list