Submitted by Mile23 on Sun, 08/07/2005 - 00:02

Serious nerdy talk ahead. You are warned.

When I shoot a panoramic image, I use a piece of software called hugin to take the pieces and stitch them together. hugin is free, and is designed to be a front-end for a bunch of other software.

Some of that other software includes the venerable panotools, nona, enblend, and autopano-SIFT.

Autopano-SIFT is a piece of software written to automate the generation of control points in stitched images. That is, it looks at a bunch of pictures and guesses how they overlap. It then tells other software what it learned, by generating control points.

So it would make sense to use this software, right? If I take a bunch of pictures, and then run autopano-SIFT on them, that would give me a head-start on stitching them, correct? Of course it would.

Well, autopano-SIFT is written for a software framework called mono. mono is an open-source version of Microsoft's .NET framework. So if you want to run autopano-SIFT, you have to install mono.

There's also another thing going on... There's a graphical user interface framework called GTK+. GTK+ is a bunch of software that knows how to draw controls, like buttons and scrollbars and toolbars and palettes and so forth. And guess what? There's another piece of software called GTK# which sits between GTK+ and mono. The neeto thing here is that GTK# lets graphical .NET applications be compiled for linux without really all that much effort. But none of that matters because...

I want to compile mono on my Mac so I can use autopano-SIFT with hugin.

Now, here's another piece of software: fink. Fink is software to help you install other software on your Mac. It's based on another linux technology: apt-get, like you'd find under Debian.

But the point here is that there is a mono package available under fink. And since I want mono, I can just type 'fink install mono,' and everything will (theoretically) work.

And, as far as mono goes, it did. But there's no package for autopano-SIFT, which means I have to compile it 'by hand' (as they say). However, in addition to mono, autopano-SIFT requires GTK#.

Now, fink has a GTK# package, which is handy. What's not handy is that this package wants to install the whole GNOME desktop system. And I can live with that, because it's no big deal one way or the other.

However, there is one catch: Fink is BOTTOM-DWELLINGLY LOUSY at certain things, and one of those things involves a little piece of software called gettext.

Gettext is a really good idea. What it does is allow software to be localized. Using gettext lets software developers add different translations to their software.

But fink has a gettext package, and also a libgettext package, and they conflict. They are essentially the same thing, but if one package requires gettext before it can be installed, then libgettext must be removed. The converse is also true; if libgettext is a requirement, then gettext must be removed. This removal happens automatically when you start building a package, but not during the installation of dependent packages.

Now, it turns out that if you install GTK# under fink, you're going to be installing a whole bunch of packages, half of which require gettext, and half of which require libgettext. And when you type 'fink -b install gtk-sharp2,' fink will think for a while and eventually figure out that it should uninstall libgettext and replace it with gettext (or vice versa), meaning the installation will fail when the other package is required.

Type the same thing again, and the other gettext package will be re-installed, and some packages will get installed, and then one will require the wrong gettext, and it'll fail.

And this goes on and on and on.

I have no way of telling if this thing will even work when it's done.

Submitted by Henk den Bok (not verified) on Tue, 10/25/2005 - 00:27


It just required a special build of Mono:
and nothing of the gtk stuff. Of course, only the shell script now works (CLI). If you want to run the graphical autopano, you might need to install the gtk stuff (read on this).
Cheers, Henk