For the past month I've been honing my PyQt skills and greatly enjoyed it. I've been saying to people at conferences -- for years already -- that Python (or some other scripting language) is the Right Approach (tm) to a great many end-user applications for its speed on development and ease of prototyping. Now I finally spent a month testing the truth of that statement.

However, all the work I did was on Linux systems, both Ubuntu and Fedora. Today I sat down to package PyQt for OpenSolaris. Riverbank Computing supports Solaris, to the extent that sip lets you do --platform solaris-cc, but there were a few gotcha's along the way.

  • The mkspecs parser in sip expands Windows-style percent-sign variables. This bumps into the Sun Studio flags which includes things like -library=no%CStd. It took me a long time to track that down, and then patch it out.
  • Python lives in /usr while our Qt packages live in /opt/kde4 -- this just causes packaging headaches and RPATH juggling, nothing spectacular.

But those little gotchas aside, packaging went smoothly. You can get the specfiles from the KDE 4.6.0 preparation repository. Packages are not yet available from our usual KDE4-on-OpenSolaris repositories, though. We might backport into the -450 specfile and package repository if there's any enthusiasm for it.

One thing I've had some trouble with is finding code to test the bindings with. Somehow the examples that are bundled with the PyQt source distribution aren't mentioned a lot on the web, so it took a while for me to find the obvious testing ground. But from there the whole QtDemo application runs except for the OpenGL parts: it seems I'm missing the bindings for that. So there's still some polishing left to do with the dependencies, too.

So what's the future hold now we have Python bindings for Qt in OpenSolaris? Well, the obvious thing to do would be to produce some small applications that help with OpenSolaris-specific features such as ZFS, dtrace or containers. That would give the KDE4-OpenSolaris desktop a boost as well.