1 Building wxPython on Unix or Unix-like Systems
2 ----------------------------------------------
4 The basic steps for building wxPython for Unix or Unix-like systems
7 1. Compile and/or install glib and gtk+
8 2. Compile and/or install wxGTK
9 3. Compile and install wxPython
11 We'll go into more detail of each of these steps below, but first a
12 few bits of background information on tools.
14 I use a tool called SWIG (http://www.swig.org) to help generate the
15 C++ sources used in the wxPython extension module. However you don't
16 need to have SWIG unless you want to modify the *.i files. If you do
17 you'll want to have version 1.1-883 of SWIG and you'll need to change
18 a flag in the setup.py script as described below.
20 I use the new Python Distutils tool to build wxPython. It is included
21 with Python 2.0, but if you want to use Python 1.5.2 or 1.6 then
22 you'll need to download and install Distutils 1.0 from
23 http://www.python.org/sigs/distutils-sig/
25 I usually use RedHat Linux when working on the wxGTK version of
26 wxPython, but I occasionally build and test on Solaris and I hope to
27 be able to add some other platforms soon. The compiler I use is
28 whatever comes with the current version of RedHat I am using. I find
29 that there are less portability problems with the RPMs if I don't try
30 using the latest and greatest compilers all the time. On the other
31 platforms I usually stick with as recent a version of GCC that I can
32 find pre-built for that platform.
34 Okay, now on the the fun stuff...
37 1. Compile and/or install glib and gtk+
38 ---------------------------------------
40 A. First of all, check and see if you've already got glib/gtk+ on your
41 system, all the Linux distributions I know of come with it, at
42 least as an option. Look for libglib.* and libgtk.* in your system's
43 standard library directories. You'll also need the headers and
44 config scripts in order to build things that use glib/gtk. Try
49 If you have version 1.2.5 or better then you're all set. You can
52 B. If your system has a binary package mechanism, (RPMs, debs,
53 whatever...) check and see if binaries for glib abd gtk+ are
54 available. Be sure to get the runtime library package as well as
55 the development package, if they are separate. Install them with
56 your package tool, and skip to step #2.
58 C. If all else fails, you can get the source code for glib and gtk+ at
59 http://www.gtk.org/. Fetch the latest of each in the 1.2.x
60 series. Compile and install each of them like this:
62 gzip -d [package].tar.gz | tar xvf -
68 The last step will probably have to be done as root. Also, if your
69 system needs anything done to update the dynamic loader for shared
70 libraries, (such as running ldconfig on Linux) then do it after
71 each library is installed.
75 2. Compile and/or install wxGTK
76 -------------------------------
78 A. You can find the sources and RPMs for wxGTK at
79 ftp://wesley.informatik.uni-freiburg.de/pub/linux/wxxt/source/, or
80 just follow the download links from http://wxwindows.org/. You can
81 also check out a current snapshot of the sources from the CVS
82 server. (Some information about annonymous CVS access is at
83 http://wxwindows.org/cvs.htm.) The advantage of using CVS is that
84 you can easily update as soon as the developers check in new
85 sources or fixes. The advantage of using a released version is
86 that it usually has had more testing done. You can decide which
87 method is best for you.
89 B. You'll usually want to use a version of wxGTK that has the same
90 version number as the wxPython sources you are using. (Another
91 advantage of using CVS is that you'll get both at the same time.)
93 C. If using the RPMs be sure to get both the wxGTK and wxGTK-devel
94 RPMs (at a minimum) and then install them as root.
96 rpm -Uhv wxGTK-2.2.2-0.i386.rpm wxGTK-devel-2.2.2-0.i386.rpm
98 D. If using the sources (either from the tarball or from CVS) then
99 configure it like this:
101 cd wxWindows # or whatever your top-level directory is called
104 ../configure --with-gtk
106 There are gobs and gobs of options for the configure script, run
107 ../configure --help to see them all. I'll describe some that I find
110 If you have OpenGL or compatible libraries installed, then add the
113 If you are on Solaris and are using a recent version of GCC, then
114 you'll probably want to add the --enable-permissive flag so the
115 compiler won't barf on your broken X11 header files.
117 To make a debugging version of wxGTK, add the --enable-debug flag.
118 This sets the -g flag for the compiler and also activates some
119 special debugging code in wxWindows by defining the __WXDEBUG__
120 macro. You'll get some extra asserts, failure logging, etc.
122 E. Now just compile and install. You need to use GNU make, so if your
123 system has something else get GNU make and build and install it and
124 use it instead of your system's default make command.
129 The last step will probably have to be done as root. Also, if your
130 system needs anything done to update the dynamic loader for shared
131 libraries, (such as running ldconfig on Linux) then do it now.
133 F. You can test your build by changing to one of the directories under
134 build/samples or build/demos, running make and then running the
135 executable that is built.
139 3. Compile and install wxPython
140 -------------------------------
142 A. You have the same options (and same advantages/disadvantages) for
143 getting the wxPython source, either a released snapshot or from
144 CVS. The released version file is named wxPython-[version].tar.gz
145 and is available at http://wxpython.org/download.php. If you want
146 to use CVS you'll find wxPython in the wxWindows CVS tree (see
147 above) in the wxWindows/wxPython directory.
149 B. As mentioned previouslly, wxPython is built with the standard
150 Python Distutils tool. If you are using Python 2.0 or later you
151 are all set, otherwise you need to download and install Distutils
152 1.0 from http://www.python.org/sigs/distutils-sig/.
154 On Unix systems Distutils figures out what commands and flags to
155 use for the compiler and linker by looking in the Makefile that was
156 used to build Python itself. Most of the time this works okay. If
157 it doesn't, there doesn't seem to be a way to override the values
158 that Distutils uses without hacking either Distutils itself, or
159 Python's Makefile. (Complain to the distutils-sig about this
160 please.) For example, on my Solaris system I had to edit
161 /usr/local/lib/python1.5/config/Makefile and replace
169 This particular problem has been fixed in Python 1.6 and beyond,
170 but there may be similar issues on other platforms.
172 While we're on the subject of how Python was built... Since
173 wxPython is a C++ extension some platforms and/or compilers will
174 require that the Python executable was linked with the C++ linker
175 in order for everything to work correctly. If you build and
176 install Python yourself then this is easy to take care of,
177 otherwise you may have to mess with binary packages or bribe your
178 system administrator...
180 In my case on Solaris wxPython applications would core dump on
181 exit. The core file indicated that the fault happened after
182 _exit() was called and the run-time was trying to execute cleanup
183 code. After relinking the Python executable the problem went away.
184 To build Python to link with the C++ linker do this:
186 cd Python-2.0 # wherever the root of the source tree is
187 rm python # in case it's still there from an old build
188 make LINKCC=g++ # or whatever your C++ command is
192 C. Change to the root wxPython directory and look at the setup.py
193 file. This is the script that configures and defines all the
194 information that Distutils needs to build wxPython. There are some
195 options near the begining of the script that you may want or need
196 to change based on your system and what options you have selected
197 up to this point, (sources from tar.gz or from CVS, etc.) You can
198 either change these flags directly in setup.py or supply them on
201 BUILD_GLCANVAS Set to zero if you don't want to build the
202 Open GL canvas extension module. If you don't
203 have OpenGL or compatible libraries then you'll
204 need to set this to zero.
206 BUILD_OGL Set to zero if you don't want to build the
207 Object Graphics Library extension module.
209 BUILD_STC Set to zero if you don't want to build the
210 wxStyledTextCtrl (the Scintilla wrapper)
213 USE_SWIG If you have edited any of the *.i files you
214 will need to set this flag to non-zero so SWIG
215 will be executed to regenerate the wrapper C++
216 and shadow python files.
218 IN_CVS_TREE If you are using the CVS version of the
219 wxWindows and wxPython sources then you will
220 need to set this flag to non-zero. This is
221 needed because some source files from the
222 wxWindows tree are copied to be under the
223 wxPython tree in order to keep Distutils happy.
224 With this flag set then setup.py will
225 automatically keep these copied sources up to
226 date if the original version is ever updated.
227 If you are using the tar.gz version of the
228 Python sources then these copied sources are
229 already present in your source tree.
232 D. To build and install wxPython you simply need to execute the
233 setup.py script. If you have more than one version of Python
234 installed, be sure to execute setup.py with the version you want to
235 build wxPython for. Depending on the permissions on your
236 site-packages directory you may need to be root to run the install
239 python setup.py build
240 python setup.py install
242 E. At this point you should be able to change into the wxPython/demo
243 directory and run the demo:
247 F. If you would like to make a test build that doesn't overwrite the
248 installed version of wxPython you can do so with this command
249 instead of the install command above:
251 python setup.py build_ext --inplace
253 This will build the wxPython package in the local wxPython
254 directory instead of installing it under your Python installation.
255 To run using this test version just add the base wxPython source
256 directory to the PYTHONPATH:
258 export PYTHONPATH=~/projects/wxWindows/wxPython
259 # or whatever is required for your shell
260 cd ~/projects/wxWindows/wxPython/demo