For the Wine project we are trying to make it as easy as possible for Wine contributors to modify and rebuild the Wine documentation. The Po4a dependencies have caused some concern in this regard: for each dependency the contributor will have to track down which package to install for his distribution and this makes the initial setup significantly harder.
Po4a being not very widespread we have checked it in the Winedocs CVS (http://cvs.sourceforge.net/viewcvs.py/wine/docs/). But Po4a has quite a few dependencies so this does not help very much. So now we are hoping to make it possible to reduce the number of po4a dependencies. Here is the list I came up with, together with some notes for each of them:
* Locale::gettext (perl module) Needed by po4a for localization. Provided by liblocale-gettext-perl on Debian, perl-Locale-gettext on Mandrake and Fedora Core(DAG), perl-gettext on SUSE.
Would you be open to a patch that acted as a wrapper around Locale::gettext so that po4a would continue to work untranslated if that module was missing? The idea we would add a 'Po4aGettext' module that would export gettext() and dgettext() functions. These would try to load Locale::gettext in an eval function and use it if that succeeds. Otherwise the Po4aGettext would simply return the untranslated strings. The only changes to the other Po4a modules would be replacing 'use Locale::gettext' with 'use Po4aGettext'.
* Text::WrapI18N (perl module) Pure perl (so easy to check in) but depends on Text::CharWidth which is not pure perl. Provided by libtext-wrapi18n-perl on Debian. Found no RPM packages providing it.
Text::WrapI18N was not used in po4a 0.16.2. I initially thought it was used to wrap the text being output to the .po and .sgml files but in fact it seems to only be used to print messages, warnings and errors. Why is it needed? Doesn't a simple print work fine?
* Term::ReadKey (perl module) Provided by libterm-readkey-perl on Debian, perl-Term-ReadKey on Mandrake and Fedora Core(DAG), perl-TermReadKey on SUSE.
This module is used to determine the size of the terminal. This information is then used by the wrap functions.
* SGMLS (perl module) Needed by po4a to interface with the nsgmls parser. Pure perl (so easy to check in). Provided by libsgmls-perl on Debian, perl-SGMLSpm on Mandrake and Fedora Core, perl-SGMLS on SUSE.
This is an essential part of po4a. The easiest way to remove this dependency would be to check it into the Winedocs repository. So no action needed on the Po4a side.
* nsgmls (command line tool) Needed by po4a to parse the Sgml files. Provided by sp on Debian, sgml-tools or openjade on Mandrake and Fedora Core, opensp on SUSE.
This is an essential part of po4a. So it will have to remain as a dependency which is reasonable.