Category Archives: Open Source

make frustrated

November saw the release of Fedora 14 which includes the new and improved GNU make 3.82, this includes some fixes for long standing bugs in the parser – and therefore breaks dozens of projects’ Makefiles.

Common signs of the new, strict, make are the following output at make time:

Makefile:246: *** mixed implicit and normal rules. Stop.

This means you have both explicit and pattern targets in your make rule, this caused issues if explicit targets where used in the rule *after* pattern targets make could misparse the entire rule – of course, make had been doing this for long enough that everyone knew to avoid doing that…

Makefile:923: *** missing separator (did you mean TAB instead of 8 spaces?).  Stop.

Make has always required tabs, rather than spaces, for indentation. But in previous versions of Make it was permissible to use 8 spaces instead of a tab. This is no longer allowed in make 3.82!

Whilst the Makefiles of most projects have been updated we where bitten by this pretty hard where our stable release of Poky Laverne 4.0, released October 26th, can’t be built on Fedora 14. Ouch!

So this week, I donned my distribution engineer hat and set about resolving these issues, I had to hack the Makefiles of some dozen or so projects (and even did some guerilla pushes to Gnome git).

The need to do this has left me extremely frustrated, these bugs have existed in the parser for long enough that they had been widely relied upon in many projects – to ‘fix’ the parser and therefore break the Makefiles of so many projects feels like a pretty severe move to me. Could this not have been a warning in make 3.82 and turned into an error later?

This is the second case of upstream introducing regressions that have hit us in Poky recently, the first being an regression in Python 2.7’s xmlrpclib which changed the way some private methods worked (parse_response() would no longer accept a file-like object) breaking our XML-RPC server…

Unfortunately this bug was not fixed for Python 2.7.1, but has since been fixed upstream.

Whilst I’ve ranted here I do really appreciate both of these open source projects and my knowledge with both Makefiles and Python programming has increased whilst debugging and working around these issues for Poky. There’s still a part of me that wishes I hadn’t had to do it, though!

Find nearest tube station

When I first released Blunderground I put together a ToDo in the README of cool features I could implement if I get some time, one of which read: “Zoom to nearest station (get location from OSM)”.

Well, Neil recently got a Pre and decided that a good way to learn the WebOS API’s etc would be to contribute to Blunderground, and contribute he did – with an awesome patch to implement a “Jump to Nearest” button!

This adds a huge data file to Blunderground (> 1000 lines) that includes all the required data to find which tube station is nearest to the devices current GPS location and then zoom the map to that station.

I then decided to steal some glory from Neil by converting the main map to be a HTML canvas (rather than an img tag) and adding some slight bling for his feature:

The overlay will dissapear after 10 seconds, which could probably be handled in a nicer way…

Blunderground

Recently I wrote about doing some hacking for the Palm WebOS to create a tube app for K. It’s now in a reasonably usable form so I’ve put up a noddy website and a clone of my repository is available on GitHub.

As it’s at a stage where it works for the person I wrote it for (and a bonus user) it’s unlikely to be developed with any sort of pace, too many other fun things to hack on!

I’ve decided against trying to get it in to Palms app store as I’m fairly certain TFL won’t be too happy with me redistributing their map. There are ways around this but I don’t feel it’s worth it at this time, at the very least I’d need to support rotation and likely a couple of other features before submitting it to the app store otherwise Blunderground will just be a target for flames.

Writing apps for the Web OS is really easy, it’s just HTML and Javascript. I kept falling over the lack of static typing and my ability to create a large typo to LOC ratio but not everyone uses the compiler as a crutch like I do.

The develop/deploy/test cycle, even with the emulator, is a touch clunky. Seems to me a lot of the testing could have been done in a browser with a suitable harness but I didn’t have the inclination to develop that, I shall check out Ares if I write another WebOS application.

Finally interacting with web services wasn’t as rosy as the cloud pushers would have me believe, a significant bulk of the development time so far was spent on trying to figure out how to parse the JSON data TubeUpdates was returning. In the end I gave up and switched to using XML which I manipulated with JavaScript DOM methods and had the functionality running in minutes.