Monday 23 April 2007

The 'Publish' checkbox

Why so long between the event (30th March) and the blog entry (18th April, see
below)? Well, I had tried to use Mail-to-Blogger feature, but I hadn't checked
the checkbox labelled 'Publish' (which reads as though it's about publishing the
'secret' Mail-to-Blogger email address, not the posts themselves) and my post
got lost. As Blogging is not the be-all and end-all of my life I was content to
leave it lost for couple of weeks, but now I've found the problem. The
undocumented 'Publish' checkbox.

Wednesday 18 April 2007

Art

Something completely different. On 30th March, I went with my (ex-)art historian girlfriend (that is, she used to be an art historian, she's still my girlfriend) to the event described (in german) here.
It's good to know that even in a gathering of artists, art historians and the like, some are sometimes prompted to ask, very vociferously and incredulously "Is that art?". In this case the controversial material in question was the drawings of Pierre Klossowski.

Wednesday 28 March 2007

Releases

Released version 2.33 of my pciaer driver today (release notes here), plus the RPM for the GPIB package I was discussing in the previous post.

Tuesday 27 March 2007

GPIB packaging

I've been re-packaging the latest Linux GPIB Package into an RPM for our SUSE 10.0 machines. This was prompted by the desire to upgrade from kernel 2.6.13-15.11 to 2.6.13-15.15 for security reasons. And because the GPIB drivers and hence the RPM depend on a specific kernel release, upgrading the kernel means a new RPM is required. So far so good, I've done this before, I just need to rebuild the RPM. But maybe there's a new release of the GPIB package too, I thought, so I looked at that this morning, and sure enough, the latest version of linux-gpib is 3.2.09 whereas what we had previously was 3.2.07. So I downloaded 3.2.09 and tried to re-build the RPM with the new linux-gpib version.
Turns out, two important things have changed.
  1. A directory previously called driver is now called drivers
  2. The Makefile newly (and correctly) delegates the installation of the modules to the kernel build system, KBUILD
Having to change the .spec file for the first change is mildly irritating but approximately no work (more or less just s/driver/drivers/, being a little bit careful where that's done), but the second change was a bit more tricky to deal with. The RPM spec file's %install section runs make install to install the drivers which then invokes KBUILD as follows:

$(MAKE) -C $(LINUX_SRCDIR) V=1 modules_install CC="$(LINUX_CC) \
-I/usr/src/packages/BUILD/linux-gpib-3.2.09/drivers/.. \
-I/usr/src/packages/BUILD/linux-gpib-3.2.09/drivers/../driver/include \
-I/usr/src/packages/BUILD/linux-gpib-3.2.09/drivers/../include" \
SUBDIRS="$(GPIB_ABS_MODULE_SUBDIR)" INSTALL_MOD_DIR="gpib"

but this means that the RPM fails to build because KBUILD tries (as a non-root user) to install the kernel modules under the absolute path /lib/modules/2.6.13-15.15-default/gpib. What we need is to get the modules installed under the RPM build root, but there seems to be no way to tell KBUILD to install modules somewhere else other than under /lib/modules/. KBUILD's output path variable O has no effect on this, it seems. Finally, in the %prep section of the spec file I introduce a module_prefix variable in front of the INSTALL_MOD_DIR path thus:

sed -i '/INSTALL_MOD_DIR="gpib"/s/gpib/$(module_prefix)gpib/'
drivers/Makefile.in

and then override this during %install thus:

make module_prefix=../../../$RPM_BUILD_ROOT/lib/modules/%{kernel}/ install

so that the final directory to which the module is copied is, in full

/lib/modules/2.6.13-15.15-default/../../../var/tmp/linux-gpib-3.2.09/lib/modules/2.6.13-15.15-default/gpib

And that works. Phew!

First post

So, I've been in posession of a nice clean, empty blog for a few weeks now, but have been putting off actually posting something here for some while. The orginal idea was mostly to blog at a low volume, but rather high frequency (~once a day) so that my colleagues can read about what I'm curently working on. And of course, I hope to be able to show off some moderately interesting/cool/useful stuff occasionally. The first real post follows...