Fink:pangocairo testing

From the Fink Wiki
Revision as of 11:56, 28 September 2008 by Dmacks (talk | contribs) (cleanup)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search


The pangocairo branch merged back into the "unstable" tree on 2008-07-15 and most of it was soon pushed into the "stable" tree. The CVS branch was frozen. The following information is retained for historical interest only.

What's this all about?

The goal of the "pangocairo" project is to upgrade fink's packages to the level of GNOME 2.20.

For the past many months, several fink developers have been working on upgrading gtk+2 and related packages. This task requires making simultaneous version updates, changes in dependencies, and compile-script adjustments to all packages that use gtk+2. For various reasons, it cannot be done in a few packages at a time, nor are packages likely to work correctly if they use a mixture of pangocairo and non-pangocairo libraries. Thus, the whole "unstable" tree will be converted to pangocairo all at once. After this somewhat monolithic upgrade, updates of individual packages will be possible when they become available, allowing fink to stay more current with upstream releases.

The major change, apart from new versions, is a switch from using the freetype2 from X11 to using fink's freetype219 package. That switch has led to a change from using the pango1-xft2 packages to pango1-xft2-ft219. The different variants of the freetype* and pango1-* packages are not compatible with each other, so one cannot reliably use "some of each" and most packages require some adjustment to use the "correct" (i.e., self-consistent) one.

What's the status?

All core GNOME libraries (glib2, gtk+2, atk1, libgnome*, etc.) have been updated and seem to build and work. All mid-level libraries have been updated and also seem to build. We think most other packages have been adjusted so that they should be compileable. Thus, the pangocairo project is ready for testing.

Can I help?

We'd love any help anyone is willing and able to provide! The more help the better! This is for testing of the pangocairo changes, so please be prepared for breakage and be prepared to file good bug reports about problems you have. This is not for users who are new to fink or for users who only want "the latest and greatest gtk+" but don't want to help make it work. This testing will likely require many hours of compiling from source (though as usual fink will handle doing it).

You should not attempt this testing on a production system (the packages may be more prone to compile-time and run-time problems even than the "unstable" branch). Switching to the pangocairo testing branch is irreversible: there is no way, short of wiping your whole fink installation and reinstalling from scratch, to get back to the normal public fink distro. However, once testing is complete, the pangocairo branch will be merged back into the public distro and you will be able to switch back at that point.

How do I get started?

You will need fink on any currently supported system (OS X 10.4 or 10.5, on a PowerPC or Intel Mac) with a recent version of the developer tools (XCode) installed for your system. To activate the pangocairo distro:

1. Make sure you have the "unstable" trees enabled. 2. You must be using the "CVS" selfupdate method:

fink selfupdate-cvs

3. Switch to the pangocairo branch of packages. As non-root user:

cd /sw/fink/dists
cvs update -rpangocairo-branch
fink index

You're all set! Starting at this point, fink will see the packages in the pangocairo branch instead of the public one, and 'fink selfupdate' will automatically continue to use this branch.

Please use the 'fink' command to test building packages, and test running them. All packages that have been changed have higher versions or revisions, so 'fink update' or 'fink install' can be used to get the pangocairo form of a package. As usual, 'fink list -ot' to see what packages have new versions available.

We think that updating a package to the one available in the pangocairo branch will trigger updates of all its dependencies and give a working program or library. However, once something is updated to pangocairo, things that depend on it will possibly not work correctly until they too have been updated to the one in pangocairo. Using just 'fink update-all' to upgrade everything at once is prone to failure due to the number of packages and complexity of the dependency trees being updated. (Using 'fink update-all' repeatedly, until no further updates are necessary, might work.)

Anything else I should know?

  • This is source-only. There are no binaries available at this time for any package that is new or updated in pangocairo. Among other things, we're trying to catch build issues.
  • This is not the fully supported fink distro. The online package database ( does not see the pangocairo branch and the sources are not mirrored by fink's master-mirrors server pool. You might want to run 'fink configure' and change your mirror selection to use "Master" last.

Provide feedback!

Of particular interest is the ease building various packages, especially..."whatever you care about".

Let us know how far you get. What packages did not build (be specific for what fails, not for what package you requested that led to a dependency failing)? If you were able to figure out what was wrong (a missing dependency, etc.) please let us know what you did so we don't have to re-investigate and re-solve what you already know. After this round of testing, the whole pangocairo package set will be merged back into the main public distribution--all users will suddenly have them without doing anything other than a normal "selfupdate". An important goal of this round of testing is to see how well the upgrading/building of packages works on systems that started out with the currently-public unstable distro.

There are a very few packages that are not yet present (or are only present at slightly older versions) than in the public distro, especially if they were changed in public very recently (every change needs to be imported into pangocairo manually). If you find one (try "fink list -Nt"), please let us know.

If you are a maintainer, look at the changes that were made in your packages. The changes needed for pangocairo are will need to be retained in the packages into the future. Also, the tricks used are often general enough that they can be used when writing new packages. The tweaks needed now will be required for all future packages that use gtk+2, often even to get as far as compiling. When these packages become public, we will write a list of common flags, variables, and other tricks that are required to use the new gtk+2. Also, there are lots of specialty programs in fink that very few users use, so they have likely not been well tested. If nobody complains, everyone thinks it works and unmentioned problems will never get fixed.

The mailing list is a good place to discuss this project. you don't need to be subscribed to post (though it would be helpful if you do for a little while so that you can help test proposed solutions to problems you find, etc.). If you are filing a bug report, remember details (useless bug reports will be ignored): feel free to include a short exerpt of the failure or a link to a complete build log). We also welcome solutions to problems and technical discussion of the solutions.


Thanks in advance for any help you are willing and able to provide. After a (very) few weeks, the pangocairo branch will be merged into the public fink distribution. At that point, it will become easy to switch back to that public distro with no rebuilding required beyond the pangocairo you have from the branch.