2016-03-28 17:39 GMT+03:00 Christian Weisgerber <[email protected]>:
> TL;DR: We can and should kill the gettext and libiconv MODULES and
> replace them with ordinary LIB_DEPENDS.
>
>
> If you look at the libiconv module, it specifies both a lib and a
> run dependency on libconv. That's because the iconv library also
> needs some data file. On static archs, lib depends turned into
> pure build depends, so we needed an extra run depends to make sure
> that the data was installed. Without static archs, the lib depends
> and wantlib is enough.
>
> The same applies to the gettext module, although that one has some
> additional cruft which continues historical dependencies so we
> didn't have to bump the ports that used the module when gettext was
> updated. Again, a lib depends and wantlib would be enough now.
>
> The gettext module also includes a build dependency on gettext-tools
> from last summer when we split the gettext runtime and tools into
> separate ports. Only a small subset of gettext-using ports actually
> need the tools; principally those that run msgfmt. Some people
> (well, czarkoff@) have wanted to remove the general dependency on
> the tools and only have an explicit build dependency in those ports
> that actually need it. I've been hesitant about this, but now it
> fits in with the idea of getting rid of the module.
>
> Killing the modules and replacing them with conventional dependencies
> would put an end to the weird special case handling of the gettext
> and libiconv libraries (MODULES, MOD*_LIB_DEPENDS, MOD*_WANTLIB),
> making things simpler. Having to pay attention which ports actually
> need to depend on gettext-tools is not simpler, but then this isn't
> different from any other dependency.
>
> Opinions so far?
So new rules for gettext dependency would be:
1. If PLIST contains ${PREFIX}/share/locale/*/*/*.mo files, the
package should have, either directly or indirectly, a run-time
dependency (LDEP/RDEP) on devel/gettext,-main.
2. If PLIST doesn't have such files, but package have direct RDEP on
devel/gettext, this deserves a warning.
Also, we drop all rules regarding libiconv: now we just add a
dependency on either it or gettext, when needed, right?
I want to formailize those rules as strict as possible, to adjust portcheck.
> How would we go about killing the modules? As far as I can tell,
> nothing prevents us from replacing MODULES with the normal
> LIB_DEPENDS/WANTLIB entries, starting immediately, as part of normal
> updates and maintenance work. For the libiconv module, this doesn't
> even require a bump. For the gettext module it does if not part
> of another update.
>
> Regarding the build dependency on gettext-tools, my plan would be
> to
> * identify ports that use the tools from bulk build logs,
> * add explicit BUILD_DEPENDS += devel/gettext-tools,
> * then do a test build with a default of MODGETTEXT_TOOLS ?= No,
> * fix any fallout,
> * repeat,
> * and eventually kill MODGETTEXT_TOOLS.
>
> Comments?
I think this is The Only Right Way.
--
WBR,
Vadim Zhukov