4786.2.1
by John Arbash Meinel
Start putting together a document about how to set up a win32 build machine. |
1 |
=============================== |
2 |
Setting Up A Windows Build Host |
|
3 |
=============================== |
|
4 |
||
5 |
This document describes the steps taken to set up a Windows build host. It is |
|
6 |
intended to be step-by-step instructions of what packages need to be installed, |
|
7 |
where they can be gotten from, and how they are configured. |
|
8 |
||
9 |
||
10 |
Baseline |
|
11 |
======== |
|
12 |
||
13 |
This was written as a step-by-step as I set up the Amazon EC2 'desolation' |
|
4786.2.6
by John Arbash Meinel
Document the install of VS 2008 |
14 |
instance. This was based on an Amazon Windows 2003 instance. Also note that for |
15 |
Amazon EC2, all programs were installed into the "C:" drive, as the "D:" drive |
|
16 |
is essentially ``/tmp`` and is not preserved between launched instances. |
|
4786.2.1
by John Arbash Meinel
Start putting together a document about how to set up a win32 build machine. |
17 |
|
18 |
||
19 |
Install Packages |
|
20 |
================ |
|
21 |
||
22 |
1) Download cygwin's setup.exe from http://www.cygwin.com |
|
23 |
At present the current version is 1.5.25-15. This is used primarily to |
|
24 |
install the build scripts and gcc-mingw. Note that we explicitly *don't* |
|
25 |
install cygwin's python or bzr package. As we are only interested in |
|
26 |
running the native version of bzr. For information on running the cygwin |
|
27 |
port of bzr, look elsewhere. |
|
28 |
||
29 |
Probably not all of these packages are necessary, but they make life easier. |
|
30 |
||
31 |
a) gcc-mingw32 |
|
32 |
b) make |
|
33 |
c) openssh |
|
34 |
d) rsync |
|
4786.2.2
by John Arbash Meinel
Some more documentation about what I had to install on the EC2 host. |
35 |
e) vim |
36 |
f) wget |
|
37 |
g) zip |
|
38 |
h) unzip |
|
4786.2.5
by John Arbash Meinel
Two more steps necessary to make the process work. |
39 |
i) patch |
4981.2.3
by John Arbash Meinel
Some doc cleanups |
40 |
j) gettext-devel # brings 'msgfmt' |
4786.2.1
by John Arbash Meinel
Start putting together a document about how to set up a win32 build machine. |
41 |
|
42 |
||
43 |
2) Download the supported versions of python from http://www.python.org |
|
44 |
||
45 |
a) python 2.6.4 |
|
46 |
b) python 2.5.4 http://www.python.org/ftp/python/2.5.4/python-2.5.4.msi |
|
47 |
c) python 2.4.4 (there is no Windows installer for 2.4.5 or 2.4.6) |
|
48 |
http://www.python.org/ftp/python/2.4.4/python-2.4.4.msi |
|
49 |
||
50 |
Note that for Amazon EC2, all of these were installed int |
|
51 |
||
52 |
3) Configure 'distutils' for the compiler that you will be using. For python |
|
4786.2.3
by John Arbash Meinel
A few more notes about win32 build setup. |
53 |
2.4 and 2.5 we use gcc-mingw32, for 2.6 we use Visual Studio 2008. |
4853.1.1
by Patrick Regan
Removed trailing whitespace from files in doc directory |
54 |
|
4786.2.1
by John Arbash Meinel
Start putting together a document about how to set up a win32 build machine. |
55 |
Edit ``D:\Python25\Lib\disutils\distutils.cfg`` (you have to create the |
56 |
file). You want to add a section like:: |
|
57 |
||
58 |
[build] |
|
59 |
compiler = mingw32 |
|
60 |
||
4786.2.2
by John Arbash Meinel
Some more documentation about what I had to install on the EC2 host. |
61 |
This also requires 'fixing' the cygwin gcc installation so that distutils |
62 |
can find it. Specifically, it knows to look for ``gcc.exe`` however, the |
|
63 |
latest versions of cygwin start using "alternatives" and making ``gcc`` just |
|
64 |
a symlink. |
|
4853.1.1
by Patrick Regan
Removed trailing whitespace from files in doc directory |
65 |
|
4786.2.2
by John Arbash Meinel
Some more documentation about what I had to install on the EC2 host. |
66 |
You also need to add ``C:\cygwin\bin`` and ``C:\cygwin\lib`` into your |
67 |
environment path. This is generally done with:: |
|
68 |
||
69 |
Right Click My Computer / Properties / Advanced / Environment Variables |
|
70 |
System Variables / Select 'PATH' / Edit |
|
71 |
||
72 |
4) Download important python libraries. At the moment, the official Windows |
|
73 |
all-in-one installer is built using python 2.5. We will likely soon switch |
|
74 |
to python 2.6. |
|
4786.2.1
by John Arbash Meinel
Start putting together a document about how to set up a win32 build machine. |
75 |
|
76 |
a) http://pypi.python.org/pypi/setuptools |
|
4786.2.2
by John Arbash Meinel
Some more documentation about what I had to install on the EC2 host. |
77 |
|
78 |
Installing this first should make it easier to install some of the other |
|
79 |
tools. To install something using easy install, it is generally best to |
|
80 |
open up a ``cmd.exe`` shell (*not* a cygwin shell) and do:: |
|
81 |
||
82 |
cd C:\Python25 |
|
4786.2.3
by John Arbash Meinel
A few more notes about win32 build setup. |
83 |
python.exe Scripts\easy_install-script.py -Z -O1 PACKAGE |
84 |
||
85 |
The '-Z' tells it to install as a regular directory. This generally works |
|
86 |
better with py2exe. |
|
4786.2.2
by John Arbash Meinel
Some more documentation about what I had to install on the EC2 host. |
87 |
|
4786.2.1
by John Arbash Meinel
Start putting together a document about how to set up a win32 build machine. |
88 |
b) pywin32 http://sourceforge.net/projects/pywin32/files/ |
4786.2.2
by John Arbash Meinel
Some more documentation about what I had to install on the EC2 host. |
89 |
c) easy_install paramiko |
90 |
This will also bring in PyCrypto and compile it, so it is important to |
|
91 |
have configured step (3) correctly. |
|
92 |
d) easy_install Pyrex (or Cython) |
|
4786.2.3
by John Arbash Meinel
A few more notes about win32 build setup. |
93 |
Note, you should probably install pyrex for all versions of python. All |
94 |
of them need to run 'setup.py bdist_wininst' and so it is good to have it |
|
95 |
build automatically, rather than setting up an explicit build order based |
|
96 |
on which one has pyrex. |
|
4786.2.2
by John Arbash Meinel
Some more documentation about what I had to install on the EC2 host. |
97 |
e) easy_install cogapp |
98 |
f) install py2exe (easy_install failed) |
|
99 |
http://sourceforge.net/projects/py2exe/files/ |
|
100 |
g) easy_install docutils |
|
101 |
h) Install PyQt |
|
102 |
http://www.riverbankcomputing.co.uk/software/pyqt/download |
|
103 |
||
104 |
Currently they only seem to offer PyQt 4.4.3 for python 2.5 and PyQt |
|
105 |
4.6.1 for python 2.6. They generally don't make it easy to install old |
|
106 |
versions of PyQt. |
|
107 |
i) Install pyreadline |
|
108 |
https://launchpad.net/pyreadline/+download |
|
4786.2.5
by John Arbash Meinel
Two more steps necessary to make the process work. |
109 |
j) easy_install pygments |
4899.2.4
by John Arbash Meinel
Add a note that we need to patch pycrypto as part of the build host. |
110 |
k) Patch pycrypto, so that it supports older Windows installs. (see bugs |
111 |
#248522, #272791, #497733). The direct link to the patch is: |
|
112 |
http://launchpadlibrarian.net/16133025/win32_clock.patch |
|
113 |
This may not end up necessary w/ pycrypto 2.1, especially if paramiko can |
|
114 |
be taught to use the new functionality (avoiding the warning). |
|
4981.2.4
by John Arbash Meinel
we need to install the latest testtools as well |
115 |
l) easy_install testtools |
4786.2.2
by John Arbash Meinel
Some more documentation about what I had to install on the EC2 host. |
116 |
|
117 |
5) Get Pageant, not strictly necessary, but it is a pretty good ssh-agent for |
|
118 |
Windows, and paramiko knows how to use keys from Pageant. |
|
119 |
||
120 |
http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html |
|
121 |
||
122 |
Note that you probably want to set the environment variable |
|
123 |
``BZR_SSH=paramiko`` at this time. Otherwise it will try to use the |
|
124 |
``ssh.exe`` that it finds on your PATH (as configured in step 3), and |
|
125 |
cygwin's openssh does *not* know how to access Pageant. |
|
126 |
||
127 |
I usually get the 'all-in-one' installer, but only because it is easier. You |
|
128 |
only really need ``pageant.exe`` and possibly ``puttygen.exe``. |
|
4853.1.1
by Patrick Regan
Removed trailing whitespace from files in doc directory |
129 |
|
4786.2.2
by John Arbash Meinel
Some more documentation about what I had to install on the EC2 host. |
130 |
If you do this, you'll probably also want to install a shortcut to |
131 |
``pageant.exe`` in Start / Programs / Startup so that it always starts when |
|
5538.2.2
by Zearin
Continued capitalization fixes ([S]FTP, SSH). |
132 |
you log in (though you still have to manually add your SSH keys.) |
4786.2.2
by John Arbash Meinel
Some more documentation about what I had to install on the EC2 host. |
133 |
|
134 |
Note that on the Amazon EC2 machine, I'm having problems with temp files |
|
135 |
being created without the permission for the current user to actually read |
|
136 |
them. They seem to be owned by ``Administrator`` rather than by |
|
137 |
``Administrators``. |
|
4853.1.1
by Patrick Regan
Removed trailing whitespace from files in doc directory |
138 |
|
4786.2.2
by John Arbash Meinel
Some more documentation about what I had to install on the EC2 host. |
139 |
6) Install bzr. Usually it is easiest to just get the latest all-in-one |
140 |
installer from https://launchpad.net/bzr/+download |
|
141 |
||
142 |
7) Install INNOSetup from: |
|
143 |
http://www.jrsoftware.org/isdl.php |
|
144 |
||
4786.2.5
by John Arbash Meinel
Two more steps necessary to make the process work. |
145 |
After installing, you'll want to add ``C:\Program Files\Inno Setup 5`` to |
146 |
your PATH. |
|
147 |
||
4786.2.3
by John Arbash Meinel
A few more notes about win32 build setup. |
148 |
8) Fix distutils for the specific version of gcc. Distutils in python2.4.4 has |
149 |
a bug where it assumes version strings have only 3 digits. The fix is to |
|
150 |
just change one '?' in the regex into a '*':: |
|
151 |
||
152 |
--- version.py 2009-11-05 14:41:47.497212900 -0800 |
|
153 |
+++ version.py 2009-11-05 14:39:57.684712900 -0800 |
|
154 |
@@ -97,7 +97,7 @@ |
|
155 |
in the distutils documentation. |
|
156 |
""" |
|
157 |
||
158 |
- version_re = re.compile(r'^(\d+) \. (\d+) (\. (\d+))? ([ab](\d+))?$', |
|
159 |
+ version_re = re.compile(r'^(\d+) \. (\d+) (\. (\d+))* ([ab](\d+))?$', |
|
160 |
re.VERBOSE) |
|
161 |
||
4786.2.4
by John Arbash Meinel
A few more notes about setting up a windows build host. |
162 |
|
163 |
9) If you want to build in the source tree, you need the zlib dll and |
|
164 |
associated libraries, put somewhere on your path. The buildout routines grab |
|
165 |
this directly and add it to the build path, but that doesn't work for |
|
166 |
``setup.py``. |
|
167 |
http://www.zlib.net/zlib123-dll.zip |
|
168 |
||
169 |
I usually download and extract this to something like ``C:\local\`` so that |
|
170 |
I end up with a ``C:\local\lib`` and ``C:\local\include`` directory. I then |
|
171 |
modify the ``distutils.cfg`` file to tell the compiler where to find these |
|
172 |
headers and libraries:: |
|
173 |
||
174 |
[build_ext] |
|
175 |
include-dirs = C:/local/include |
|
176 |
library-dirs = C:/local/lib |
|
177 |
||
178 |
Note that you'll probably want to put the ``zlib1.dll`` into your path. You |
|
179 |
can: |
|
180 |
||
181 |
1) Add ``C:\local`` to your PATH variable in |
|
182 |
"My Computer/Properties/Advanced/Environment Variables" |
|
183 |
2) More logically, move ``zlib1.dll`` to either 'lib' or 'bin' |
|
184 |
subdirectories and add that. |
|
185 |
3) Copy it to ``C:\Windows\``. |
|
186 |
||
187 |
I recommend 3, mostly because lots of apps will want to use zlib1.dll in the |
|
188 |
long run. (You may already have it.) |
|
189 |
||
4786.2.6
by John Arbash Meinel
Document the install of VS 2008 |
190 |
10) Install Visual Studio 2008 Professional |
191 |
http://www.microsoft.com/downloads/details.aspx?FamilyId=83C3A1EC-ED72-4A79-8961-25635DB0192B&displaylang=en |
|
192 |
||
193 |
This is a 3GB DVD iso image. You can mount it directly with Microsofts |
|
194 |
iso mounting utility: |
|
195 |
http://download.microsoft.com/download/7/b/6/7b6abd84-7841-4978-96f5-bd58df02efa2/winxpvirtualcdcontrolpanel_21.exe |
|
196 |
||
197 |
You need at least Windows XP (which introduced direct iso support, I |
|
198 |
believe.) |
|
199 |
||
200 |
Note that there is a Service Pack 1 for Visual Studio. The ISO can be |
|
201 |
downloaded here: |
|
202 |
http://www.microsoft.com/downloads/thankyou.aspx?familyId=27673c47-b3b5-4c67-bd99-84e525b5ce61&displayLang=en |
|
203 |
||
204 |
However, on EC2, there isn't enough room on C: to actually run the |
|
205 |
installer. You need approx 6GB of free disk space. And EC2 only gives your |
|
206 |
10GB and Windows itself takes up about 5GB. So we are currently running |
|
207 |
stock VS 2008 with no service packs. (Even installing VS 2008 to a |
|
208 |
different drive doesn't leave enough room on C: to run the upgrader.) |
|
209 |
||
210 |
When installing on EC2, it seems their 2003 Server comes with a Visual |
|
211 |
Studio key already supplied. There is also the possibility of using Visual |
|
212 |
Studio Express Edition, but it is currently unable to compile TortoiseBzr. |
|
213 |
||
4853.1.1
by Patrick Regan
Removed trailing whitespace from files in doc directory |
214 |
.. |
4786.2.2
by John Arbash Meinel
Some more documentation about what I had to install on the EC2 host. |
215 |
vim: ft=rst tw=79 et |