Mail Archives: cygwin-apps/2002/06/18/14:25:37
Background:
the gettext package is currently build without libtool. The dll's
are created by hand. Current dll version is "1" -- e.g. libintl1.dll.
I've been messing around with gettext-0.11.2 lately, and attempting to
use the libtool support (after re-libtoolizing with our "devel" version
of libtool) to build the DLLs. I have discovered that the new DLL
version number, as specified by -version-info, is actually "2".
So, I'll need to release a new "libintl2" package to coexist with the
libintl1 package. Not a problem.
Discussion:
However, this would be a good time to change dependencies and things
(otherwise, if we -- for instance -- LATER add libiconv as a dependency
of gettext, then we'd need to bump the DLL number again -- and it would
then be out of sync with the "official" versioning.
So, I propose to
a) add a libiconv dependency (*)
b) add a libexpat dependency -- yes, 0.11.2 can use expat if it is there.
(*) Yes, I'll provide/maintain libiconv-1.8.0 -- but I would appreciate
if someone who has been whining about the lack of libiconv would take
over maintainership of my zip and unzip packages (Gerrit??). They are
low maintainance, but I would like to reduce the total number of
packages I'm responsible for. I still feel that, as a non-multilingual,
latin-alphabet user, I'm not the best person to answer questions about
using libiconv -- but as long as the package passes its own built-in
selftests...and heck, I've been "maintaining" the gettext package for
years. So, consider this an "ITP: libiconv"
Packaging:
Bruno included some "packaging hints" in the latest distro. However,
they don't really seem to address the issue of two-part libintl shared
libs, and having multiple versions coexist, or 3rd party packages
depending on specific versions of the shared lib... He suggests:
gettext:
bin/gettext.exe
bin/ngettext.exe
man pages for above
small amount of other docu
lib/libintl*
lib/charset.alias
share/locale/locale.alias
include/libintl.h
gettext-tools: requires gettext
bin/other tools
other man pages & info & docu
API docu
lib/libgettextlib* (**)
lib/libgettextsrc* (**)
lib/gettext/*
share/gettext/*
share/locale/*/LC_MESSAGES/gettext.mo
share/aclocal/*.m4
share/emacs/site-list/*
(*) of course, being unix centric, nothing is said about two-part shared
libs (e.g. we know where libintl.dll.a should go and in which package,
but nothing is said about cygintl-2.dll).
(**) The "other" tools -- msg*.exe, xgettext, gettextize -- now depend
on additional libraries, which are built as shared (and static) libs --
although the tools are linked dynamically. These new libs are:
cyggettextsrc-0.11.2.dll and cyggettextlib-0.11.2.dll
Note that they are NOT versioned according to the -version-info rules;
they are versioned under the -release 0.11.2 rule. this is because
these libraries are NOT for public use. They are for the use of the
gettext tools themselves (but are not used by gettext.exe or ngettext.exe).
This point is further emphasized by the following quote from Bruno in
PACKAGING:
Note: Although installed by "make install", the static libraries
$prefix/lib/libgettextlib.a
$prefix/lib/libgettextsrc.a
don't need to be included in binary distributions; they are redundant.
e.g. nobody but the extra gettext tools themselves links to these libs.
Also, their source is not included in packages when you run "gettextize".
What does this mean? It means that EVERY new release of gettext will
include new versions of cyggettextsrc*.dll and cyggettextlib*.dll -- but
there is no need for various versions to coexist. Just ship these two
dlls with the exe's that use them -- since it is guaranteed that only
those specific gettext programs will ever use them; no third parties ever.
So, my packaging proposal for the next release of gettext:
libintl2:
bin/cygintl-2.dll
gettext: requires libintl2
bin/gettext.exe
bin/ngettext.exe
man pages for above
small amount of other docu
lib/libintl*
lib/charset.alias
share/locale/locale.alias
include/libintl.h
gettext-devel: requires gettext and libintl2
bin/other tools
bin/cyggettextsrc-0.11.2.dll
bin/cyggettextlib-0.11.2.dll
other man pages & info & docu
API docu
lib/gettext/*
share/gettext/*
share/locale/*/LC_MESSAGES/gettext.mo
share/aclocal/*.m4
share/emacs/site-list/*
BUT:
lib/libgettextlib*
lib/libgettextsrc*
are NOT included. Third parties never need to link against them, so all
we need provide are the dlls.
Changes in my proposal, relative to Bruno's recommendations:
libintl shared lib gets it own package
don't ship any import or static libs for libgettextsrc / libgettextlib
use the name "gettext-devel" instead of "gettext-tools"
Comments/Discussion?
--Chuck
- Raw text -