• Subscribe

    Subscribe to This Week In Panospace by eMail.
    Subscribe in a reader
  • License

    Creative Commons License
    This work is © 2008-2012
    by Yuval Levy
    and licensed under a
    Creative Commons License.
  • Entries

    August 2009
    M T W T F S S
    « Jul   Sep »
     12
    3456789
    10111213141516
    17181920212223
    24252627282930
    31  
  • Archives

Hugin-0.8.0 for FreeBSD


hugin-logoFreeBSD is my favorite server operating system. IMO it is the right choice for a conservative environment, where robustness is more important than the bleeding edge. I’ve never really used it on the desktop, but I know some people do. Software is distributed to FreeBSD users mainly through the ports collection, a system of scripts that will fetch the source code and build it automatically.

A FreeBSD port can be quite complex to set up – witness the size of the FreeBSD Porter’s Handbook. But once it’s working, making incremental changes is not that difficult and a good learning experience to understand the system better.

So I poked Vasil Dimov, the maintainer of the Hugin port on FreeBSD. I did not ask him to do the job. I attempted to modify the port myself as a learning experience. I forwarded him my modifications and asked him for feedback. The major difficulty was that I currently don’t have a running FreeBSD desktop available for testing. Nevertheless, it worked out pretty well.

Anatomy of a Port

A FreeBSD port is basically a Makefile that runs the show; a distinfo file that lists the source code packages and their checksums; a pkg-descr file that describes the port; a pkg-plist file that lists the files that the port will install on the system; and a files folder that contains modification to the source code and other detail changes to make the package conform with FreeBSD standards.

Makefile

Besides some administrivia such as the version and revision of the port, the most important part of the Makefile are the dependencies. Specifically, for Hugin-0.8.0 we added a build dependency on GLEW and an optional dependency on LaPACK. This second one apparently did not work because of some undefined symbols.

What I did not notice in the Makefile, and that Vasil fixed, are the improved man pages. And some post-configure tasks. The complete changes are here.

distinfo

distinfo was the easiest to fix – just download the tarball from Sourceforge, check its size, run the md5 and sha256 tools to get the checksums. I got it 100% right.

pkg-descr

pkg-descr has not changed.

pkg-plist

We’ve added quite some files between 0.7.0 and 0.8.0 and there is no automatic way to generated this file. Vasil shared his trick with me: he does a make PREFIX=/tmp/foobar install and then checks the files under /tmp/foobar (assuming it was non-existent before)

files

There are currently five patches in the files folder that will be applied (and a few more outdated ones in the “Attic”). I see Vasil has updated two of them following my poking. I have not spent enough time to understand them all, but it seems to me that some of them could be adopted upstream. I’ll investigate.

Current Status

I don’t have access to a FreeBSD desktop to verify if it works. I would appreciate feedback from FreeBSD users. Does Hugin-0.8.0 work for you?

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s