[Buildroot] [PATCH v3 0/2] Add gettext-tiny package
Vadim Kochan
vadim4j at gmail.com
Sun Mar 10 00:20:05 UTC 2019
Hi Thomas!
On Sat, Mar 09, 2019 at 11:37:42PM +0100, Thomas Petazzoni wrote:
> Hello,
>
> On Tue, 12 Feb 2019 23:55:18 +0200
> Vadim Kochan <vadim4j at gmail.com> wrote:
>
> > Add lightweight alternative for the GNU gettext package - gettext-tiny.
> > The sources are used from sabotage-linux project. Some files are used
> > from the original gettext gnu like po/*, gettextize and some m4 files.
> >
> > The original gettext package is renamed to gettext-gnu because now gettext is
> > a virtual package and gettext-gnu and gettext-tiny became as gettext providers.
> >
> > The main purpose of gettext-tiny is to be used only for the host if NLS
> > is not enabled.
>
> I finally took some time to play around with this. The first thing is
> that I didn't like a lot the download of lots of gettext-gnu files from
> gettext-tiny. I've played a bit with this, and ended up trying to use
> the gettext-gnu tarball instead. See:
>
> https://github.com/tpetazzoni/buildroot/tree/gettext-tiny
> https://github.com/tpetazzoni/buildroot/commit/22936b22944f49646c8732fb2742a526d0a556e2#diff-e5eacf305a325109262748204673e7b5R19
>
> for the details. It also avoids the need to patch to get config.rpath,
> because config.rpath is available in the gettext-gnu tarball.
>
> I also reworked how the virtual package was handled, but I then
> understood that I had mistaken that only the host package was really a
> virtual package with two implementation: the target gettext package has
> only one implementation: gettext-gnu.
>
> However, the ecryptfs-utils case has shown that it is possible for a
> package to need a gettext implementation even if BR2_SYSTEM_ENABLE_NLS
> is disabled. So from there, we have two solutions:
>
> - Patch ecryptfs-utils itself so that it doesn't use gettext when
> --disable-nls is used. Perhaps this is the right thing to do. In
> this case, we could indeed mandate that the target gettext package
> is only available when BR2_SYSTEM_ENABLE_NLS=y, and therefore indeed
> have the gettext virtual package always point to gettext-gnu.
>
> - Alternatively, support gettext-tiny as a target package, which would
> provide both libintl and the gettext program (the latter to please
> ecryptfs-utils).
>
> I was initially worried that some packages that don't understand
> --disable-nls might try to link with libintl, and that we would
> therefore need a target gettext package even if BR2_SYSTEM_ENABLE_NLS.
> However, libintl is only a replacement library for the gettext
> functions that don't exist in uclibc/musl, but do exist in glibc.
> Because in glibc they are part of the C library itself, I don't think
> any package is ever going to link explicitly with libintl. It's only
> Buildroot that ensures -lintl is passed to the LIBS/LDFLAGS when
> needed. So I believe we're good.
>
> So, perhaps the good solution is option (1) above ?
Many thanks for your feedback! Using the gnu gettext's tar is really better
idea! Regarding ecryptfs-utils - yes, I think the patch might be really easy,
something like this:
...
function trans {
if command -v gettext &> /dev/null; then
gettext @
else
echo @
fi
}
...
and replace gettext -> trans in scripts.
Regards,
Vadim Kochan
More information about the buildroot
mailing list