The rationale behind maemo-release

The maemo-release package seeks to address the situation wherein a source package is forked into gregale/bora/chinook/diablo/fremantle versions of itself because one set of Build-Depends does not work for all distributions.

Example: Fremantle provides libgstfarsight0.10-dev, whereas previous distributions do not. pidgin needs to Build-Depend on it for voice/video support to be compiled in during the build process. However, the libgstfarsight0.10-dev package does not exist in any previous distribution.

This results in having to provide a different debian/control file for the various distributions, which in turn forces one to make a different debian/changelog file for the various distributions. At this point, different distributions have different source packages.

To prevent this one reason for forking the source package, we need the maemo-release package. Then, knowing which distribution(s) contain a needed package foo, we can create an appropriate debian/control entry.

Example: Suppose Bora and Diablo contain package foo, but the other distributions do not. The corresponding debian/control Build-Depends entry will be:

Build-Depends: package1-dev, 
 foo | maemo-release (= 1.0.0) | maemo-release (= 3.0.0) | maemo-release (= 5.0.0),

This way you can describe intervals of distributions wherein a certain package has become available. Examples:

  (1.0.0) Gregale     (2.0.0) Bora     (3.0.0) Chinook     (4.0.0) Diablo     (5.0.0) Fremantle  
Example: foo | maemo-release (< 3.0.0)
foo is absent foo is present
Example: foo | maemo-release (< 2.0.0) | maemo-release (> 4.0.0)
foo is absent foo is present foo is absent
Example: foo | maemo-release (= 1.0.0) | maemo-release (= 3.0.0) | maemo-release (= 5.0.0)
foo is absent foo is present foo is absent foo is present foo is absent

Of course, the rest of the build process has also to be made tolerant of the presence/absence of a given package.