[PyQt] PyQt4 for Embedded Linux

David Boddie david at boddie.org.uk
Thu Oct 8 02:22:50 BST 2009


Back in May, I gave a talk at PyCon Tre in Italy about using PyQt on
embedded devices.

  http://chaos.troll.no/~dboddie/Python/PyConTre_Italia_2009/

Although the talk was mostly about PyQt's features and didn't really cover
the underlying technologies, a lot of the preparation involved getting a
set of bindings to work with Qt for Embedded Linux instead of with Qt for
X11.

This variant of PyQt is created using a set of patches for Python, SIP, PyQt
(for X11) and Qt that I have been maintaining for over two years, starting
with Qt 4.1 on the Greenphone.

  http://www.diotavelli.net/PyQtWiki/PyQt4_on_the_Qtopia_Greenphone

During this time, I have gradually updated them to take account of changes
in new versions of these tools and libraries, taking them up to the latest
stable releases (Python 2.6.3, Qt 4.5.3, SIP 4.9, PyQt 4.6).

I've recently spent some time trying to write a build script that can take
the source packages for these components and create a set of libraries,
using a cross-compiler, that can be deployed either on a device or on a
desktop machine. It's not perfect, and I've come to the conclusion that I
should really look at existing frameworks for cross-building software, but
it's a fairly minimal way of building PyQt and its dependencies if you
already have a cross-compiler set up.

The result of this is that, not only is it possible to build versions of
PyQt that use the Linux framebuffer instead of X11, you can also create PyQt
bindings for custom builds of Qt with reduced features (leading to smaller
library sizes) and take advantage of features like Qt's VNC display driver
to simulate small screen devices on a desktop machine.

I've created an archive, containing a snapshot of the build script and the
patches for the latest versions of each of the components used, and put it
in the following location:

http://www.boddie.org.uk/david/Projects/Python/Qt/Software/Python-2.6-Qt-4.5-PyQt-4.6-patches-1.0.tar.gz

Earlier this year, I started to manage the patches in a Mercurial repository,
and this has now been made published at Bitbucket:

  http://bitbucket.org/dboddie/pyqt4-for-embedded-linux/

Note that, for various reasons, I have placed all my modifications to SIP,
Qt and PyQt under the GNU General Public License (version 3 or later) and
the modifications to Python under the Python Software Foundation License
(version 2).

My aim is just to make all this available for people to use and to save
people the effort of having to do all this work again. Also, I know that
there are others who have much more experience with this sort of thing,
and it would be useful to get their feedback on what I've done in order
to develop it further.

David

Disclaimer: Although I work as a technical writer at Nokia, Qt Development
Frameworks (formerly Trolltech ASA), the development of this software is not
part of my work duties - it's something I've been doing in my free time.
(I have to say this, just in case anyone mistakes what I do at work for what
I do "for fun" outside work.)


More information about the PyQt mailing list