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

Christophe Fergeau cfergeau at redhat.com
Tue May 9 15:23:29 UTC 2017


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?

>  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?

> +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?

> +
> +# 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

> +
> +# 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?

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.

Christophe
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 801 bytes
Desc: not available
URL: <https://lists.freedesktop.org/archives/spice-devel/attachments/20170509/f130ded4/attachment.sig>


More information about the Spice-devel mailing list