[Spice-devel] [PATCH spice-gtk 2/2] build-sys: modernize gettext

Marc-André Lureau marcandre.lureau at gmail.com
Wed Jul 12 15:20:26 UTC 2017


Hi

On Tue, May 9, 2017 at 5:24 PM Christophe Fergeau <cfergeau at redhat.com>
wrote:

> On Tue, May 09, 2017 at 05:45:50PM +0300, marcandre.lureau at redhat.com
> wrote:
> > From: Marc-André Lureau <marcandre.lureau at redhat.com>
> >
> > intltool and glib-gettext are somehow related, and upstream gettext
> > should now support everything needed for GNOME projects.
> >
> > intltool support never really worked, and we removed some of its
> > commented usage a while ago when dropping spicy desktop/mime.
> >
> > Signed-off-by: Marc-André Lureau <marcandre.lureau at redhat.com>
> > ---
> >  Makefile.am  | 17 ++------------
> >  README       |  2 +-
> >  autogen.sh   |  1 -
> >  configure.ac |  8 +++----
> >  po/Makevars  | 76
> ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> >  5 files changed, 83 insertions(+), 21 deletions(-)
> >  create mode 100644 po/Makevars
> >
> > diff --git a/Makefile.am b/Makefile.am
> > index f462ae0..30f05f4 100644
> > --- a/Makefile.am
> > +++ b/Makefile.am
> > @@ -26,20 +26,7 @@ if WITH_CONTROLLER
> >  pkgconfig_DATA += spice-controller.pc
> >  endif
> >
> > -INTLTOOL_FILES =                             \
> > -     intltool-extract.in                     \
> > -     intltool-merge.in                       \
> > -     intltool-update.in                      \
> > -     $(NULL)
> > -
> > -DISTCLEANFILES =                             \
> > -     $(pkgconfig_DATA)                       \
> > -     intltool-extract                        \
> > -     intltool-merge                          \
> > -     intltool-update                         \
> > -     gnome-doc-utils.make                    \
> > -     po/.intltool-merge-cache                \
> > -     $(NULL)
> > +DISTCLEANFILES = $(pkgconfig_DATA)
> >
> >  EXTRA_DIST =                                 \
> >       build-aux/git-version-gen               \
> > @@ -52,8 +39,8 @@ MAINTAINERCLEANFILES =
>       \
> >       $(GITIGNORE_MAINTAINERCLEANFILES_TOPLEVEL)      \
> >       $(GITIGNORE_MAINTAINERCLEANFILES_MAKEFILE_IN)   \
> >       $(GITIGNORE_MAINTAINERCLEANFILES_M4_LIBTOOL)    \
> > +     $(GITIGNORE_MAINTAINERCLEANFILES_M4_GETTEXT)    \
> >       m4/gtk-doc.m4                                   \
> > -     m4/intltool.m4                                  \
> >       gtk-doc.make                                    \
> >       $(NULL)
> >
> > diff --git a/README b/README
> > index 2ab5b67..1ea621a 100644
> > --- a/README
> > +++ b/README
> > @@ -42,7 +42,7 @@ dnf builddep spice-gtk
> >
> >  . or install:
> >
> > -gtk3-devel spice-protocol intltool
> > +gtk3-devel spice-protocol
>
> Do we want to mention gettext instead, or are we just assuming this is
> pulled in indirectly, or will be there anyway?
>

we didn't mention it before, but I can add gettext-devel, next to automake
etc

>
> >  openssl-devel pulseaudio-libs-devel pixman-devel
> >  gobject-introspection-devel libjpeg-turbo-devel zlib-devel
> >  cyrus-sasl-devel gtk-doc
> > diff --git a/autogen.sh b/autogen.sh
> > index da28eef..cc7bda3 100755
> > --- a/autogen.sh
> > +++ b/autogen.sh
> > @@ -10,7 +10,6 @@ test -z "$srcdir" && srcdir=.
> >      git submodule update --init --recursive
> >      gtkdocize
> >      autoreconf -v --force --install
> > -    intltoolize -f
> >  )
> >
> >  CONFIGURE_ARGS="--enable-maintainer-mode --enable-gtk-doc
> --with-gtk=3.0 --enable-vala"
> > diff --git a/configure.ac b/configure.ac
> > index 74b5811..9cf8441 100644
> > --- a/configure.ac
> > +++ b/configure.ac
> > @@ -13,11 +13,11 @@ m4_ifdef([AM_PROG_AR], [AM_PROG_AR])
> >  LT_INIT([disable-static win32-dll])
> >  AM_MAINTAINER_MODE
> >
> > -IT_PROG_INTLTOOL([0.40.0])
> > -GETTEXT_PACKAGE=spice-gtk
> > +GETTEXT_PACKAGE=AC_PACKAGE_TARNAME
> >  AC_SUBST(GETTEXT_PACKAGE)
> > -AC_DEFINE_UNQUOTED([GETTEXT_PACKAGE],"$GETTEXT_PACKAGE", [GETTEXT
> package name])
> > -AM_GLIB_GNU_GETTEXT
> > +AC_DEFINE_UNQUOTED([GETTEXT_PACKAGE], "$GETTEXT_PACKAGE", [GETTEXT
> package name])
> > +AM_GNU_GETTEXT_VERSION([0.19.8])
>
> This is the latest gettext release, which is not even 1 year old, is
> this the only one which is going to work? Or is it possible to relax
> this version chekc?
>

It's quite a mess to downgrade gettext or find the minimum required
version. RHEL7 has 0.19.8.1 already. I suppose it should work with earlier
0.19 releases, perhaps even older..

Normally, it's only needed for making release tarballs, so if a distro
change the build-sys and needs to redo autotools, they can do it on a more
recent system, or try to modify the minimum version, or even revert this
patch.


> > +AM_GNU_GETTEXT([external])
> >
> >
> >  SPICE_GTK_LOCALEDIR=[${datadir}/locale]
> > diff --git a/po/Makevars b/po/Makevars
> > new file mode 100644
> > index 0000000..df15f4a
> > --- /dev/null
> > +++ b/po/Makevars
> > @@ -0,0 +1,76 @@
> > +# Makefile variables for PO directory in any package using GNU gettext.
> > +
> > +# Usually the message domain is the same as the package name.
> > +DOMAIN = $(PACKAGE)
> > +
> > +# These two variables depend on the location of this directory.
> > +subdir = po
> > +top_builddir = ..
> > +
> > +# These options get passed to xgettext.
> > +XGETTEXT_OPTIONS = --keyword=_ --keyword=N_ \
> > +        --keyword=C_:1c,2 --keyword=NC_:1c,2 \
> > +        --keyword=g_dngettext:2,3 \
> > +        --flag=g_dngettext:2:pass-c-format \
> > +        --flag=g_strdup_printf:1:c-format \
> > +        --flag=g_string_printf:2:c-format \
> > +        --flag=g_string_append_printf:2:c-format \
> > +        --flag=g_error_new:3:c-format \
> > +        --flag=g_set_error:4:c-format \
> > +        --flag=g_markup_printf_escaped:1:c-format \
> > +        --flag=g_log:3:c-format \
> > +        --flag=g_print:1:c-format \
> > +        --flag=g_printerr:1:c-format \
> > +        --flag=g_printf:1:c-format \
> > +        --flag=g_fprintf:2:c-format \
> > +        --flag=g_sprintf:2:c-format \
> > +        --flag=g_snprintf:3:c-format
> > +
> > +
> > +# This is the copyright holder that gets inserted into the header of the
> > +# $(DOMAIN).pot file.  Set this to the copyright holder of the
> surrounding
> > +# package.  (Note that the msgstr strings, extracted from the package's
> > +# sources, belong to the copyright holder of the package.)  Translators
> are
> > +# expected to transfer the copyright for their translations to this
> person
> > +# or entity, or to disclaim their copyright.  The empty string stands
> for
> > +# the public domain; in this case the translators are expected to
> disclaim
> > +# their copyright.
> > +COPYRIGHT_HOLDER = Free Software Foundation, Inc.
>
> Not fully sure who the copyright holder should be here?
>
>
Yeah, perhaps Red Hat?


> > +
> > +# This tells whether or not to prepend "GNU " prefix to the package
> > +# name that gets inserted into the header of the $(DOMAIN).pot file.
> > +# Possible values are "yes", "no", or empty.  If it is empty, try to
> > +# detect it automatically by scanning the files in $(top_srcdir) for
> > +# "GNU packagename" string.
> > +PACKAGE_GNU = no
> > +
> > +# This is the email address or URL to which the translators shall report
> > +# bugs in the untranslated strings:
> > +# - Strings which are not entire sentences, see the maintainer
> guidelines
> > +#   in the GNU gettext documentation, section 'Preparing Strings'.
> > +# - Strings which use unclear terms or require additional context to be
> > +#   understood.
> > +# - Strings which make invalid assumptions about notation of date, time
> or
> > +#   money.
> > +# - Pluralisation problems.
> > +# - Incorrect English spelling.
> > +# - Incorrect formatting.
> > +# It can be your email address, or a mailing list address where
> translators
> > +# can write to without being subscribed, or the URL of a web page
> through
> > +# which the translators can contact you.
> > +MSGID_BUGS_ADDRESS =
>
> We should fill this too
>

yep  spice-devel at lists.freedesktop.org ?


>
> > +
> > +# This is the list of locale categories, beyond LC_MESSAGES, for which
> the
> > +# message catalogs shall be used.  It is usually empty.
> > +EXTRA_LOCALE_CATEGORIES =
> > +
> > +# Ignore the timestamp of the .pot file, as git clones do not have
> > +# deterministic timestamps, and .po files are updated by translators
> > +# (only) in GNOME projects.
> > +PO_DEPENDS_ON_POT = no
>
> Should we keep that GNOME reference?
>

Perhaps not, since we don't have automated translation tools like gnome
infra.


>
> When I look at Makevars.template on my machine, it has
>
> +# This tells whether the $(DOMAIN).pot file contains messages with an
> 'msgctxt'
> +# context.  Possible values are "yes" and "no".  Set this to yes if the
> +# package uses functions taking also a message context, like pgettext(),
> or
> +# if in $(XGETTEXT_OPTIONS) you define keywords with a context argument.
> +USE_MSGCTXT = no
> +
>
> dunno if it matters that we set it to yes, or if this is the default
> anyway.
>

Default is probably no, I can add that section.

Waiting for other remark, or I will resend with those minor modifications.


-- 
Marc-André Lureau
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/spice-devel/attachments/20170712/a14b7973/attachment.html>


More information about the Spice-devel mailing list