Leopard Update #1

Phwew! Here you go. First round of Leopard updates. Unless noted below, everything in this update is quad-architecture for Tiger & Leopard – that is, 32bit & 64bit, PPC & Intel. Most use a single binary for all, but PHP had to be separate binaries between Tiger and Leopard because the Apache web server is completely different. They should work with the old applications, GRASS, Qgis, MapServer, so updating the frameworks shouldn’t break those on Tiger. With such a big change, there are bound to be problems, so be sure to let me know.

Installers – Since I dropped support for Panther, I can now take advantage of “distribution packages”. This makes it easier to combine multiple units into a single installer, and make them detect dependencies per unit, such as the GDAL framework and the optional GDAL Python tools.

Frameworks – The UnixImageIO, GDAL, PROJ, GEOS, SQLite3, FFTW3 and FreeType frameworks have been updated. I am dropping the GD framework, and instead building it into PHP and MapServer directly, since it’s so small and of limited use otherwise. The PDFlib framework is a bit of a beast, and I’d really like to have something more open (libharu looks promising, though development is stalled), so I’ve been ignoring it. I’ll get to it later. The GraphicMagic framework may come later too.

Xerces is a problem. With Leopard, Apple deprecated Carbon. Fine, it’s an old transistion API anyways. BUT, for some reason they decided to NOT update it for 64bit processors. While the rest of the system is 32 & 64 bits, Carbon is not (which is probably the system still runs in 32bit mode, even on 64bit processors). Xerces uses Carbon for file handling. Therefore, no 64bit Xerces until it’s updated. That means no GML format in GDAL for now. When Xerces is updated, I’ll probably drop it as a framework and build it into GDAL.

Python – The Python libraries and most extensions are 64bits in Leopard. The Python executable is not, probably because of Carbon. The GDAL python tools are built 64bits, but only run in 32bit mode because of python. You must get or build a 64bit python executable yourself to use the GDAL Python tools in 64bit mode. I can’t help with that.

Postgres & PostGIS – Fully 64bit-enabled. Except that I left out the PL/Python and PL/Perl languages (Perl is also a 32bit-only executable in Leopard). I’m having trouble with the pgrouting extension in 64bits, so it’s not ready yet.

PHP5 – Leopard includes PHP5 as Apache DSO, so only PHP5 CGI is included. PHP5 CGI is also included for Tiger, but I will add PHP5 DSO for Tiger later. Or wait to see if there is interest, since MapServer stability is still an unknown on PHP DSO. There is always Liyanage’s PHP5 DSO.

PHP4 will not be updated. It will officially be EOL’d at the end of the year.


Next up: MapServer – completely new for Leopard’s Apache 2.2. Sometime later: Qgis – no 64bit possible yet; GRASS – 64bit goodness, mostly; filling in missing pieces.

Another GDAL fix

Working across 2 computers and 2 system versions can be trouble. Another GDAL 1.4.3 fix for a minor crossover with Leopard builds. For real this time.

Pre-Leopard Update

Before I get to Leopard updates, here is GDAL 1.4.3. In addition to the new version, it fixes a crashing problem with Qgis 0.9 when opening GRASS data.

Some Leopard compatibility notes for the current builds:

  • the frameworks seem to work
  • Postgres has some install problems – it succeeds, but the postgres user can’t be created, so it won’t run.
  • GRASS works, if you make sure that DISPLAY is not set in your .bash_profile.
  • Qgis 0.9 runs (with the updated GDAL framework).
  • I haven’t tested or heard any news about MapServer or PHP. I suspect the PHP enabler may have problems, if httpd.conf has changed drastically.

Leopard & Python

A note about Python on Leopard. Leopard includes Python 2.5, so there is no need to install it. The current python extension installers (GDAL, MapServer) don’t know this, and so will not install. It’s probably best to not install the current MacPython and wait for the extension packages to get updated for Leopard’s Python.

Big Batch of Updates

PostgreSQL updated to 8.2.5. I also added the “fuzzymatch” extra (I started playing around with the TIGER geocoder extra in PostGIS).

New pgRouting extension for Postgres (I had this ready and uploaded, but for some reason forgot to add the link). It replaces the old pgDijkstra extension.

UnixImageIO framework updated: new libtiff 4.0 alpha with BigTIFF support. This is a framework version change (A -> B), so old software won’t automatically support BigTIFF until it is rebuilt with the new framework. The previous version binary is included so old software isn’t broken. PNG lib also updated to 1.2.20.

Other framework updates: PDFlib now 7.0.2, Xerces now 2.8.0. Xerces is also a framework version change, and the previous version binary is included.

64bits & Leopard Prep

I’m starting think about Leopard. Not much I can do with the builds yet – I only have the free developer membership, so I can’t get any Leopard prerelease developer software. Working on ideas and and 64bit stuff I can do in Tiger.

This is my rough plan.

  • Drop Panther compatibility (very probable) – between patches, library incompatibilities, and extra features in Tiger, building for Panther compatibility is a hassle. Sure, Leopard/Tiger compatibility may have similar issues, but the fewer the better.
  • Revert to system libraries where possible – part of the Panther compatibility required building some libraries that were available in the system myself. These include curl, bzip2, readline and sqlite3. Since I do Sqlite as a framework, I will probably keep doing that.
  • 64 bit builds.

I did some initial work on 64bit builds in Tiger. Tiger supports 64bit compilation (a separate thing from 64bit file sizes, which is supported back to at least Panther). BUT, only in the system library. This means mainly number-crunching stuff that runs from the command line – no networking, no GUI, no devices…

I was able to build 64bit Tiger for UnixImageIO (except the Xpm library which needs a 64bit X11 library), GEOS, PROJ and FreeType.

Xerces needs Carbon frameworks for some Mac services (file IO and char encoding features), instead of using similar unix-level services. That eliminates a 64bit Tiger GDAL right there. Python will definitely need Leopard, with all the stuff it covers (especially wxPyhon), so not even GDAL python tools will be possible, if the minor Xerces issue is ignored.

Of course, all the applications (GRASS, Qgis, …) and server apps (Postgres, MapServer) will not be possible 64bit on Tiger.

This leaves a split build for the future. Looks like I will do Tiger-only 32bit universal builds and Leopard-only 64bit builds. It’s likely that the 32bit Tiger builds will also work on Leopard, to allow compatibility for old software on Leopard that doesn’t get rebuilt for 64bit Leopard (at all, or in a timely fasion), so I could make the installers quad-arch universal, and just strip out the 64bit parts when installed on Tiger.

MapServer 5.0.0

MapServer 5.0.0 released! Cheers to the developers!

I didn’t hear of any problems with the framework build, so I’m leaving out the traditional static build for now.

After FOSS4G I will be doing a long-overdue upgrade to our server (at my job) – Panther to Tiger – and will update other old stuff like PHP and MapServer. I hope to work on some old & new MapServer applications later in the year, and do some real-world testing. I’m looking forward to the new AGG rendering.