summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCoprDistGit <infra@openeuler.org>2024-08-05 02:04:54 +0000
committerCoprDistGit <infra@openeuler.org>2024-08-05 02:04:54 +0000
commit205ff17e88f90de9801318060cd0f443225d11ae (patch)
tree4e647a94a73e53bf46158d5e2c0f1b43138fdd35
parent8d6c7054cf8a6d1febabd0d3e55a3f75e90eeacb (diff)
automatic import of gettextopeneuler24.03_LTS
-rw-r--r--.gitignore1
-rw-r--r--gettext-0.21-covscan.patch68
-rw-r--r--gettext-0.21-disable-libtextstyle.patch128
-rw-r--r--gettext-0.21-gnulib-perror-tests.patch44
-rw-r--r--gettext.spec1150
-rw-r--r--msghack.145
-rwxr-xr-xmsghack.py417
-rw-r--r--sources1
8 files changed, 1854 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
index e69de29..22ede03 100644
--- a/.gitignore
+++ b/.gitignore
@@ -0,0 +1 @@
+/gettext-0.21.tar.xz
diff --git a/gettext-0.21-covscan.patch b/gettext-0.21-covscan.patch
new file mode 100644
index 0000000..64ac78f
--- /dev/null
+++ b/gettext-0.21-covscan.patch
@@ -0,0 +1,68 @@
+diff --git a/gettext-tools/src/msgl-cat.c b/gettext-tools/src/msgl-cat.c
+index 990d39e..9814502 100644
+--- a/gettext-tools/src/msgl-cat.c
++++ b/gettext-tools/src/msgl-cat.c
+@@ -306,6 +306,7 @@ catenate_msgdomain_list (string_list_ty *file_list,
+ mp->msgid);
+ multiline_error (xstrdup (""),
+ xasprintf ("%s\n", errormsg));
++ free (errormsg);
+ }
+ }
+ else
+diff --git a/gettext-tools/src/x-csharp.c b/gettext-tools/src/x-csharp.c
+index 5cf72ad..7a0e5d3 100644
+--- a/gettext-tools/src/x-csharp.c
++++ b/gettext-tools/src/x-csharp.c
+@@ -560,6 +560,7 @@ comment_line_end (size_t chars_to_remove)
+ buffer[buflen] = '\0';
+ savable_comment_add (buffer);
+ lexical_context = lc_outside;
++ free (buffer);
+ }
+
+
+diff --git a/gettext-tools/src/x-java.c b/gettext-tools/src/x-java.c
+index eff1e6f..7e1bb78 100644
+--- a/gettext-tools/src/x-java.c
++++ b/gettext-tools/src/x-java.c
+@@ -460,6 +460,7 @@ comment_line_end (size_t chars_to_remove)
+ --buflen;
+ buffer[buflen] = '\0';
+ savable_comment_add (buffer);
++ free (buffer);
+ }
+
+
+diff --git a/gettext-tools/src/x-rst.c b/gettext-tools/src/x-rst.c
+index cde1ee6..fca441e 100644
+--- a/gettext-tools/src/x-rst.c
++++ b/gettext-tools/src/x-rst.c
+@@ -651,6 +651,7 @@ extract_rsj (FILE *f,
+ else
+ goto invalid_rsj;
+
++ free (s1);
+ /* Parse a comma. */
+ c = phase2_getc ();
+ if (c == '}')
+@@ -667,6 +668,7 @@ extract_rsj (FILE *f,
+
+ fp = NULL;
+ real_file_name = NULL;
++ free (logical_file_name);
+ logical_file_name = NULL;
+ line_number = 0;
+
+diff --git a/gettext-tools/src/xg-arglist-callshape.c b/gettext-tools/src/xg-arglist-callshape.c
+index 06b7076..2189aac 100644
+--- a/gettext-tools/src/xg-arglist-callshape.c
++++ b/gettext-tools/src/xg-arglist-callshape.c
+@@ -118,6 +118,7 @@ split_keywordspec (const char *spec,
+ memcpy (xcomment, xcomment_start, xcomment_len);
+ xcomment[xcomment_len] = '\0';
+ string_list_append (&xcomments, xcomment);
++ free (xcomment);
+ }
+ else
+ break;
diff --git a/gettext-0.21-disable-libtextstyle.patch b/gettext-0.21-disable-libtextstyle.patch
new file mode 100644
index 0000000..66271ad
--- /dev/null
+++ b/gettext-0.21-disable-libtextstyle.patch
@@ -0,0 +1,128 @@
+diff --git a/Makefile.am b/Makefile.am
+index 815e3c7..e897de7 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -19,7 +19,7 @@
+ AUTOMAKE_OPTIONS = 1.5 gnu no-dependencies
+ ACLOCAL_AMFLAGS = -I m4
+
+-SUBDIRS = gnulib-local gettext-runtime libtextstyle gettext-tools
++SUBDIRS = gnulib-local gettext-runtime gettext-tools
+
+ changelog_etc = \
+ gettext-runtime/ChangeLog.0 \
+@@ -123,7 +123,6 @@ distcheck-hook:
+ test "`sed 1,16d $(srcdir)/gettext-runtime/intl/xsize.h | md5sum`" = "`sed 1,16d $(srcdir)/gettext-tools/gnulib-lib/xsize.h | md5sum`"
+ cmp -s $(srcdir)/gettext-runtime/man/help2man $(srcdir)/gettext-tools/man/help2man
+ cmp -s $(srcdir)/gettext-runtime/man/x-to-1.in $(srcdir)/gettext-tools/man/x-to-1.in
+- cmp -s $(srcdir)/libtextstyle/m4/libtextstyle.m4 $(srcdir)/gettext-tools/gnulib-m4/libtextstyle.m4
+ cmp -s $(srcdir)/gettext-tools/examples/hello-java-awt/m4/TestAWT.java $(srcdir)/gettext-tools/examples/hello-java-swing/m4/TestAWT.java
+ cmp -s $(srcdir)/gettext-tools/examples/hello-java-awt/m4/TestAWT.class $(srcdir)/gettext-tools/examples/hello-java-swing/m4/TestAWT.class
+ test "`sed 1,15d $(srcdir)/gnulib-local/lib/alloca.in.h | md5sum`" = "`sed 1,15d $(srcdir)/gettext-runtime/libasprintf/alloca.in.h | md5sum`"
+diff --git a/configure.ac b/configure.ac
+index 49689fb..2d23b44 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -37,7 +37,7 @@ dnl Checks for typedefs, structures, and compiler characteristics.
+
+ dnl Checks for library functions.
+
+-AC_CONFIG_SUBDIRS([gettext-runtime libtextstyle gettext-tools])
++AC_CONFIG_SUBDIRS([gettext-runtime gettext-tools])
+
+ AM_EXTRA_RECURSIVE_TARGETS([maintainer-update-po])
+
+@@ -49,7 +49,7 @@ AC_CANONICAL_HOST
+ dnl Optional Features: AC_ARG_ENABLE calls
+ dnl Optional Packages: AC_ARG_WITH calls
+ dnl Some influential environment variables: AC_ARG_VAR calls
+-esyscmd([{ cd gettext-runtime && autoconf --trace=AC_ARG_ENABLE:'$n([$1],[$2])' --trace=AC_ARG_WITH:'$n([$1],[$2])' --trace=AC_ARG_VAR:'$n($@)' && cd ..; cd libtextstyle && autoconf --trace=AC_ARG_ENABLE:'$n([$1],[$2])' --trace=AC_ARG_WITH:'$n([$1],[$2])' --trace=AC_ARG_VAR:'$n($@)' && cd ..; { cd gettext-tools && autoconf --trace=AC_ARG_ENABLE:'$n([$1],[$2])' --trace=AC_ARG_WITH:'$n([$1],[$2])' --trace=AC_ARG_VAR:'$n($@)' && cd ..; } | grep -v installed.libtextstyle | grep -v installed.csharp | grep -v 'installed C#'; } | sed -f build-aux/ac-help.sed ])
++esyscmd([{ cd gettext-runtime && autoconf --trace=AC_ARG_ENABLE:'$n([$1],[$2])' --trace=AC_ARG_WITH:'$n([$1],[$2])' --trace=AC_ARG_VAR:'$n($@)' && cd ..; { cd gettext-tools && autoconf --trace=AC_ARG_ENABLE:'$n([$1],[$2])' --trace=AC_ARG_WITH:'$n([$1],[$2])' --trace=AC_ARG_VAR:'$n($@)' && cd ..; } | grep -v installed.csharp | grep -v 'installed C#'; } | sed -f build-aux/ac-help.sed ])
+
+ AC_CONFIG_FILES([Makefile])
+
+diff --git a/gettext-tools/Makefile.am b/gettext-tools/Makefile.am
+index 449a797..c5719c2 100644
+--- a/gettext-tools/Makefile.am
++++ b/gettext-tools/Makefile.am
+@@ -19,7 +19,7 @@
+ AUTOMAKE_OPTIONS = 1.5 gnu no-dependencies
+ ACLOCAL_AMFLAGS = -I m4 -I ../gettext-runtime/m4 -I ../m4 -I gnulib-m4 -I libgrep/gnulib-m4 -I libgettextpo/gnulib-m4
+
+-SUBDIRS = intl gnulib-lib libgrep src libgettextpo po its projects styles emacs misc man m4 tests system-tests gnulib-tests examples doc
++SUBDIRS = intl gnulib-lib libgrep libgettextpo src po its projects styles emacs misc man m4 tests system-tests gnulib-tests examples doc
+
+ EXTRA_DIST = misc/DISCLAIM
+ MOSTLYCLEANFILES = core *.stackdump
+diff --git a/gettext-tools/libgettextpo/textstyle.in.h b/gettext-tools/libgettextpo/textstyle.in.h
+index 536b51b..585ce66 100644
+--- a/gettext-tools/libgettextpo/textstyle.in.h
++++ b/gettext-tools/libgettextpo/textstyle.in.h
+@@ -213,7 +213,8 @@ typedef ostream_t file_ostream_t;
+ static inline file_ostream_t
+ file_ostream_create (FILE *fp)
+ {
+- return fp;
++ /* Closing the stream we return should not close 'fp'. */
++ return fdopen (dup (fileno (fp)), "w");
+ }
+
+ /* --------------------------- From fd-ostream.h --------------------------- */
+@@ -413,6 +414,30 @@ html_styled_ostream_create (ostream_t destination _GL_UNUSED,
+ return NULL;
+ }
+
++/* ----------------------- From noop-styled-ostream.h ----------------------- */
++
++/* noop_styled_ostream_t is a subtype of ostream_t. */
++typedef ostream_t noop_styled_ostream_t;
++
++#define noop_styled_ostream_write_mem ostream_write_mem
++#define noop_styled_ostream_flush ostream_flush
++#define noop_styled_ostream_free ostream_free
++#define noop_styled_ostream_begin_use_class styled_ostream_begin_use_class
++#define noop_styled_ostream_end_use_class styled_ostream_end_use_class
++#define noop_styled_ostream_get_hyperlink_ref styled_ostream_get_hyperlink_ref
++#define noop_styled_ostream_get_hyperlink_id styled_ostream_get_hyperlink_id
++#define noop_styled_ostream_set_hyperlink styled_ostream_set_hyperlink
++#define noop_styled_ostream_flush_to_current_style styled_ostream_flush_to_current_style
++
++static inline ostream_t
++noop_styled_ostream_create (ostream_t destination, bool pass_ownership)
++{
++ if (pass_ownership)
++ return destination;
++ else
++ return fdopen (dup (fileno (destination)), "w");
++}
++
+ /* ------------------------------ From color.h ------------------------------ */
+
+ #define color_test_mode false
+diff --git a/gettext-tools/src/Makefile.am b/gettext-tools/src/Makefile.am
+index 764ffad..eccfbbd 100644
+--- a/gettext-tools/src/Makefile.am
++++ b/gettext-tools/src/Makefile.am
+@@ -292,19 +292,9 @@ cldr_plurals_SOURCES = cldr-plural.y cldr-plural-exp.c cldr-plurals.c
+ cldr_plurals_CFLAGS = $(AM_CFLAGS) $(INCXML)
+ cldr_plurals_LDADD = libgettextsrc.la $(LDADD)
+
+-if USE_INSTALLED_LIBTEXTSTYLE
+-LT_LIBTEXTSTYLE = @LTLIBTEXTSTYLE@
+-else
+-# How to get the include files of libtextstyle.
+-textstyle.h textstyle/stdbool.h textstyle/version.h textstyle/woe32dll.h:
+- here=`pwd`; \
+- cd ../../libtextstyle/lib && \
+- $(MAKE) install-nobase_includeHEADERS install-nobase_nodist_includeHEADERS includedir="$$here"
+-BUILT_SOURCES += textstyle.h textstyle/stdbool.h textstyle/version.h textstyle/woe32dll.h
+-MOSTLYCLEANFILES += textstyle.h textstyle/stdbool.h textstyle/version.h textstyle/woe32dll.h
+-# Where to find the built libtextstyle library.
+-LT_LIBTEXTSTYLE = ../../libtextstyle/lib/libtextstyle.la
+-endif
++# Use the dummy libtextstyle from gnulib, as libgettextpo does.
++LT_LIBTEXTSTYLE =
++AM_CPPFLAGS += -I../libgettextpo -I$(top_srcdir)/libgettextpo
+
+ # How to build libgettextsrc.la.
+ # Need ../gnulib-lib/libgettextlib.la.
diff --git a/gettext-0.21-gnulib-perror-tests.patch b/gettext-0.21-gnulib-perror-tests.patch
new file mode 100644
index 0000000..983264d
--- /dev/null
+++ b/gettext-0.21-gnulib-perror-tests.patch
@@ -0,0 +1,44 @@
+From 175e0bc72808d564074c4adcc72aeadb74adfcc6 Mon Sep 17 00:00:00 2001
+From: Paul Eggert <eggert@cs.ucla.edu>
+Date: Thu, 27 Aug 2020 17:52:58 -0700
+Subject: [PATCH] perror, strerror_r: remove unportable tests
+
+Problem reported by Florian Weimer in:
+https://lists.gnu.org/r/bug-gnulib/2020-08/msg00220.html
+* tests/test-perror2.c (main):
+* tests/test-strerror_r.c (main): Omit unportable tests.
+---
+ ChangeLog | 8 ++++++++
+ tests/test-perror2.c | 3 ---
+ tests/test-strerror_r.c | 3 ---
+ 3 files changed, 8 insertions(+), 6 deletions(-)
+
+diff --git a/gettext-tools/gnulib-tests/test-perror2.c b/gettext-tools/gnulib-tests/test-perror2.c
+index 1d14eda7b..c6214dd25 100644
+--- a/gettext-tools/gnulib-tests/test-perror2.c
++++ b/gettext-tools/gnulib-tests/test-perror2.c
+@@ -79,9 +79,6 @@ main (void)
+ errno = -5;
+ perror ("");
+ ASSERT (!ferror (stderr));
+- ASSERT (msg1 == msg2 || msg1 == msg4 || STREQ (msg1, str1));
+- ASSERT (msg2 == msg4 || STREQ (msg2, str2));
+- ASSERT (msg3 == msg4 || STREQ (msg3, str3));
+ ASSERT (STREQ (msg4, str4));
+
+ free (str1);
+diff --git a/gettext-tools/gnulib-tests/test-strerror_r.c b/gettext-tools/gnulib-tests/test-strerror_r.c
+index b11d6fd9f..c1dbcf837 100644
+--- a/gettext-tools/gnulib-tests/test-strerror_r.c
++++ b/gettext-tools/gnulib-tests/test-strerror_r.c
+@@ -165,9 +165,6 @@ main (void)
+
+ strerror_r (EACCES, buf, sizeof buf);
+ strerror_r (-5, buf, sizeof buf);
+- ASSERT (msg1 == msg2 || msg1 == msg4 || STREQ (msg1, str1));
+- ASSERT (msg2 == msg4 || STREQ (msg2, str2));
+- ASSERT (msg3 == msg4 || STREQ (msg3, str3));
+ ASSERT (STREQ (msg4, str4));
+
+ free (str1);
+
diff --git a/gettext.spec b/gettext.spec
new file mode 100644
index 0000000..c3ad481
--- /dev/null
+++ b/gettext.spec
@@ -0,0 +1,1150 @@
+%bcond_with jar
+%bcond_with java
+
+Summary: GNU libraries and utilities for producing multi-lingual messages
+Name: gettext
+Version: 0.21
+Release: 7%{?dist}
+# The following are licensed under LGPLv2+:
+# - libintl and its headers
+# - libasprintf and its headers
+# - libintl.jar
+# - GNU.Gettext.dll
+# - gettext.sh
+# The following are licensed under GFDL:
+# - gettext-tools/doc/FAQ.html
+# - gettext-tools/doc/tutorial.html
+# - gettext info files
+# - libasprintf info files
+# - libtextstyle info files
+# Everything else is GPLv3+
+License: GPLv3+ and LGPLv2+ and GFDL
+URL: https://www.gnu.org/software/gettext/
+Source: https://ftp.gnu.org/pub/gnu/gettext/%{name}-%{version}.tar.xz
+Source2: msghack.py
+Source3: msghack.1
+
+# this patch has merged upstream
+# Patch1: gettext-msgmerge-for-msgfmt.patch
+
+# https://lists.gnu.org/archive/html/bug-gnulib/2020-07/msg00195.html
+Patch1: gettext-0.21-gnulib-perror-tests.patch
+Patch2: gettext-0.21-disable-libtextstyle.patch
+Patch3: gettext-0.21-covscan.patch
+
+# for bootstrapping
+# BuildRequires: autoconf >= 2.62
+BuildRequires: automake
+# BuildRequires: libtool
+# BuildRequires: bison
+
+BuildRequires: gcc-c++
+%if %{with java}
+# libintl.jar requires gcj >= 4.3 to build
+BuildRequires: gcc-java, libgcj
+# For javadoc
+BuildRequires: java-1.6.0-openjdk-devel
+%if %{with jar}
+BuildRequires: %{_bindir}/fastjar
+# require zip and unzip for brp-java-repack-jars
+BuildRequires: zip, unzip
+%endif
+%endif
+# for po-mode.el
+BuildRequires: emacs
+# for autosetup
+BuildRequires: git
+# ensure 'ARCHIVE_FORMAT=dirxz'
+BuildRequires: xz
+# for documentation
+BuildRequires: teckit
+BuildRequires: texlive-dvips
+BuildRequires: texlive-dvipdfmx
+BuildRequires: texinfo-tex
+BuildRequires: texlive-xetex
+# following suggested by DEPENDENCIES:
+BuildRequires: ncurses-devel
+BuildRequires: libxml2-devel
+BuildRequires: glib2-devel
+BuildRequires: libacl-devel
+BuildRequires: libunistring-devel
+# for the tests
+BuildRequires: glibc-langpack-de
+BuildRequires: glibc-langpack-en
+BuildRequires: glibc-langpack-fa
+BuildRequires: glibc-langpack-fr
+BuildRequires: glibc-langpack-ja
+BuildRequires: glibc-langpack-tr
+BuildRequires: glibc-langpack-zh
+BuildRequires: make
+# Depend on the exact version of the library sub package
+Requires: %{name}-libs%{_isa} = %{version}-%{release}
+Provides: bundled(gnulib)
+Provides: bundled(libcroco) = 0.6.12
+
+%description
+The GNU gettext package provides a set of tools and documentation for
+producing multi-lingual messages in programs. Tools include a set of
+conventions about how programs should be written to support message
+catalogs, a directory and file naming organization for the message
+catalogs, a runtime library which supports the retrieval of translated
+messages, and stand-alone programs for handling the translatable and
+the already translated strings. Gettext provides an easy to use
+library and tools for creating, using, and modifying natural language
+catalogs and is a powerful and simple method for internationalizing
+programs.
+
+
+%package common-devel
+Summary: Common development files for %{name}
+# autopoint archive
+License: GPLv3+
+BuildArch: noarch
+
+%description common-devel
+This package contains common architecture independent gettext development files.
+
+
+%package devel
+Summary: Development files for %{name}
+# autopoint is GPLv3+
+# libasprintf is LGPLv2+
+# libgettextpo is GPLv3+
+License: LGPLv2+ and GPLv3+ and GFDL
+Requires: %{name} = %{version}-%{release}
+Requires: %{name}-libs = %{version}-%{release}
+Requires: %{name}-common-devel = %{version}-%{release}
+Requires: xz
+Requires: diffutils
+Obsoletes: gettext-autopoint < 0.18.1.1-3
+Provides: gettext-autopoint = %{version}-%{release}
+Obsoletes: libtextstyle-devel < %{version}-%{release}
+
+%description devel
+This package contains all development related files necessary for
+developing or compiling applications/libraries that needs
+internationalization capability. You also need this package if you
+want to add gettext support for your project.
+
+
+%package libs
+Summary: Libraries for %{name}
+# libasprintf is LGPLv2+
+# libgettextpo is GPLv3+
+License: LGPLv2+ and GPLv3+
+Obsoletes: libtextstyle < %{version}-%{release}
+
+%description libs
+This package contains libraries used internationalization support.
+
+
+%package -n emacs-%{name}
+Summary: Support for editing po files within GNU Emacs
+BuildArch: noarch
+# help users find po-mode.el
+Provides: emacs-po-mode
+Requires: emacs(bin) >= %{_emacs_version}
+Provides: emacs-%{name}-el = %{version}-%{release}
+Obsoletes: emacs-%{name}-el < %{version}-%{release}
+
+%description -n emacs-%{name}
+This package provides a major mode for editing po files within GNU Emacs.
+
+%package -n msghack
+Summary: Alter PO files in ways
+BuildArch: noarch
+
+%description -n msghack
+This program can be used to alter .po files in ways no sane mind would
+think about.
+
+
+%prep
+%autosetup -S git
+
+# Defeat libtextstyle attempt to bundle libxml2. The comments
+# indicate this is done because the libtextstyle authors do not want
+# applications using their code to suffer startup delays due to the
+# relocations. This is not a sufficient reason for Fedora.
+sed -e 's/\(gl_cv_libxml_force_included=\)yes/\1no/' \
+ -i libtextstyle/configure
+
+
+%build
+%if %{with java}
+export JAVAC=gcj
+%if %{with jar}
+export JAR=fastjar
+%endif
+%endif
+%ifarch ppc ppc64 ppc64le
+# prevent test-isinf from failing with gcc-5.3.1 on ppc64le (#1294016)
+export CFLAGS="$RPM_OPT_FLAGS -D__SUPPORT_SNAN__"
+%endif
+# Fedora's libxml2-devel package has an extra "libxml2" path component.
+export CPPFLAGS="-I%{_includedir}/libxml2"
+# Side effect of unbundling libxml2 from libtextstyle.
+export LIBS="-lxml2"
+%configure --without-included-gettext --enable-nls --disable-static \
+ --enable-shared --disable-csharp --disable-rpath \
+%if %{with java}
+ --enable-java \
+%else
+ --disable-java --disable-native-java \
+%endif
+ --with-xz
+
+# Eliminate hardcoded rpaths; workaround libtool reordering -Wl,--as-needed
+# after all the libraries.
+sed -e 's|^hardcode_libdir_flag_spec=.*|hardcode_libdir_flag_spec=""|g' \
+ -e 's|^runpath_var=LD_RUN_PATH|runpath_var=DIE_RPATH_DIE|g' \
+ -e 's|CC=.g..|& -Wl,--as-needed|' \
+ -i $(find . -name libtool)
+
+%make_build %{?with_java:GCJFLAGS="-findirect-dispatch"}
+
+
+%install
+%make_install \
+ lispdir=%{_datadir}/emacs/site-lisp/gettext \
+ aclocaldir=%{_datadir}/aclocal EXAMPLESFILES=""
+
+
+install -pm 755 %SOURCE2 ${RPM_BUILD_ROOT}%{_bindir}/msghack
+install -pm 644 %SOURCE3 ${RPM_BUILD_ROOT}%{_mandir}/man1/msghack.1
+
+
+# make preloadable_libintl.so executable
+chmod 755 ${RPM_BUILD_ROOT}%{_libdir}/preloadable_libintl.so
+
+rm -f ${RPM_BUILD_ROOT}%{_infodir}/dir
+
+# doc relocations
+for i in gettext-runtime/man/*.html; do
+ rm ${RPM_BUILD_ROOT}%{_datadir}/doc/gettext/`basename $i`
+done
+rm -r ${RPM_BUILD_ROOT}%{_datadir}/doc/gettext/javadoc*
+
+rm -rf ${RPM_BUILD_ROOT}%{_datadir}/doc/gettext/examples
+
+rm -rf htmldoc
+mkdir htmldoc
+mv ${RPM_BUILD_ROOT}%{_datadir}/doc/gettext/* ${RPM_BUILD_ROOT}%{_datadir}/doc/libasprintf/* htmldoc
+rm -r ${RPM_BUILD_ROOT}%{_datadir}/doc/libasprintf
+rm -r ${RPM_BUILD_ROOT}%{_datadir}/doc/gettext
+
+## note libintl.jar does not build with gcj < 4.3
+## since it would not be fully portable
+%if %{with jar}
+### this is no longer needed since examples not packaged
+## set timestamp of examples ChangeLog timestamp for brp-java-repack-jars
+#for i in `find ${RPM_BUILD_ROOT} examples -newer ChangeLog -type f -name ChangeLog`; do
+# touch -r ChangeLog $i
+#done
+%else
+# in case another java compiler is installed
+rm -f ${RPM_BUILD_ROOT}%{_datadir}/%{name}/libintl.jar
+%endif
+
+rm -f ${RPM_BUILD_ROOT}%{_datadir}/%{name}/gettext.jar
+
+# own this directory for third-party *.its files
+mkdir -p $RPM_BUILD_ROOT%{_datadir}/%{name}/its
+
+# remove .la files
+rm ${RPM_BUILD_ROOT}%{_libdir}/lib*.la
+
+# remove internal .so lib files
+rm ${RPM_BUILD_ROOT}%{_libdir}/libgettext{src,lib}.so
+
+# move po-mode initialization elisp file to the right place, and remove byte
+# compiled file
+install -d ${RPM_BUILD_ROOT}%{_emacs_sitestartdir}
+mv ${RPM_BUILD_ROOT}%{_emacs_sitelispdir}/%{name}/start-po.el ${RPM_BUILD_ROOT}%{_emacs_sitestartdir}
+rm ${RPM_BUILD_ROOT}%{_emacs_sitelispdir}/%{name}/start-po.elc
+
+%find_lang %{name}-runtime
+%find_lang %{name}-tools
+cat %{name}-*.lang > %{name}.lang
+
+
+%check
+# this takes quite a lot of time to run
+
+# adapt to rpath removal
+export LD_LIBRARY_PATH=$RPM_BUILD_ROOT%{_libdir}:$PWD/gettext-tools/intl/.libs
+
+# override LIBUNISTRING to prevent reordering of lib objects
+make check LIBUNISTRING=-lunistring
+
+%ldconfig_scriptlets libs
+
+%files -f %{name}.lang
+%license COPYING
+%doc AUTHORS gettext-runtime/BUGS
+%doc gettext-tools/misc/DISCLAIM README
+%doc NEWS THANKS
+%doc gettext-runtime/man/*.1.html
+%doc gettext-runtime/intl/COPYING*
+%{_bindir}/envsubst
+%{_bindir}/gettext
+%{_bindir}/gettext.sh
+%{_bindir}/msgattrib
+%{_bindir}/msgcat
+%{_bindir}/msgcmp
+%{_bindir}/msgcomm
+%{_bindir}/msgconv
+%{_bindir}/msgen
+%{_bindir}/msgexec
+%{_bindir}/msgfilter
+%{_bindir}/msgfmt
+%{_bindir}/msggrep
+%{_bindir}/msginit
+%{_bindir}/msgmerge
+%{_bindir}/msgunfmt
+%{_bindir}/msguniq
+%{_bindir}/ngettext
+%{_bindir}/recode-sr-latin
+%{_bindir}/xgettext
+%{_infodir}/gettext*
+%exclude %{_mandir}/man1/autopoint.1*
+%exclude %{_mandir}/man1/gettextize.1*
+%exclude %{_mandir}/man1/msghack.1*
+%{_mandir}/man1/*
+%{_libdir}/%{name}
+%if %{with java}
+%exclude %{_libdir}/%{name}/gnu.gettext.*
+%endif
+%dir %{_datadir}/%{name}
+%dir %{_datadir}/%{name}/its
+%{_datadir}/%{name}/ABOUT-NLS
+%{_datadir}/%{name}/po
+%{_datadir}/%{name}/styles
+%dir %{_datadir}/%{name}-%{version}
+%{_datadir}/%{name}-%{version}/its
+
+%files common-devel
+%{_datadir}/%{name}/archive.*.tar.xz
+
+%files devel
+%doc gettext-runtime/man/*.3.html ChangeLog
+%{_bindir}/autopoint
+%{_bindir}/gettextize
+%{_datadir}/%{name}/projects/
+%{_datadir}/%{name}/config.rpath
+%{_datadir}/%{name}/*.h
+%{_datadir}/%{name}/msgunfmt.tcl
+%{_datadir}/aclocal/*
+%{_includedir}/autosprintf.h
+%{_includedir}/gettext-po.h
+%{_infodir}/autosprintf*
+%{_libdir}/libasprintf.so
+%{_libdir}/libgettextpo.so
+%{_libdir}/preloadable_libintl.so
+%{_mandir}/man1/autopoint.1*
+%{_mandir}/man1/gettextize.1*
+%{_mandir}/man3/*
+%{_datadir}/%{name}/javaversion.class
+%doc gettext-runtime/intl-java/javadoc*
+%if %{with java}
+%{_libdir}/%{name}/gnu.gettext.*
+%endif
+
+%files libs
+%{_libdir}/libasprintf.so.0*
+%{_libdir}/libgettextpo.so.0*
+%{_libdir}/libgettextlib-0.*.so
+%{_libdir}/libgettextsrc-0.*.so
+%if %{with jar}
+%{_datadir}/%{name}/libintl.jar
+%endif
+
+%files -n emacs-%{name}
+%dir %{_emacs_sitelispdir}/%{name}
+%{_emacs_sitelispdir}/%{name}/*.elc
+%{_emacs_sitelispdir}/%{name}/*.el
+%{_emacs_sitestartdir}/*.el
+
+%files -n msghack
+%license COPYING
+%{_bindir}/msghack
+%{_mandir}/man1/msghack.1*
+
+%changelog
+* Mon Aug 09 2021 Mohan Boddu <mboddu@redhat.com> - 0.21-7
+- Rebuilt for IMA sigs, glibc 2.34, aarch64 flags
+ Related: rhbz#1991688
+
+* Mon May 17 2021 Sundeep Anand <suanand@redhat.com> - 0.21-6
+- Add gettext-0.21-covscan.patch to fix issues detected by static analyzers
+ Add gettext-0.21-disable-libtextstyle.patch
+ Do not build libtextstyle, as it depends on libcroco
+ which is now unmaintained and has known security bugs.
+ Obsolete libtextstyle and libtextstyle-devel packages.
+
+* Thu Apr 15 2021 Mohan Boddu <mboddu@redhat.com> - 0.21-5
+- Rebuilt for RHEL 9 BETA on Apr 15th 2021. Related: rhbz#1947937
+
+* Tue Jan 26 2021 Fedora Release Engineering <releng@fedoraproject.org> - 0.21-4
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
+
+* Mon Sep 7 2020 Sundeep Anand <suanand@redhat.com> - 0.21-3
+- include patch to fix gnulib perror tests (rhbz#1867021)
+
+* Thu Aug 6 2020 Jens Petersen <petersen@redhat.com> - 0.21-2
+- reenable testsuite except for armv7hl which is failing
+
+* Mon Aug 03 2020 Sundeep Anand <suanand@redhat.com> - 0.21-1
+- gettext-0.21 is available (rhbz#1860728)
+
+* Sat Aug 01 2020 Fedora Release Engineering <releng@fedoraproject.org> - 0.20.2-4
+- Second attempt - Rebuilt for
+ https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
+
+* Wed Jul 29 2020 Michael Catanzaro <mcatanzaro@redhat.com> - 0.20.2-3
+- Bundle libcroco so we can remove the system package
+
+* Mon Jul 27 2020 Fedora Release Engineering <releng@fedoraproject.org> - 0.20.2-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
+
+* Tue Apr 14 2020 Sundeep Anand <suanand@redhat.com> - 0.20.2-1
+- gettext-0.20.2 is available (rhbz#1823721)
+
+* Tue Jan 28 2020 Fedora Release Engineering <releng@fedoraproject.org> - 0.20.1-4
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
+
+* Mon Jan 06 2020 Sundeep Anand <suanand@redhat.com> - 0.20.1-3
+- Add diffutils dependency on gettext-devel (rhbz#1774899)
+
+* Tue Aug 20 2019 Daiki Ueno <dueno@redhat.com> - 0.20.1-2
+- Fix misbehavior of msgmerge --for-msgfmt
+
+* Fri Aug 9 2019 Jerry James <loganjerry@gmail.com> - 0.20.1-1
+- update to 0.20.1 release, all patches upstreamed
+- add GFDL to License fields due to info files
+- add libtextstyle{,-devel} subpackages
+- reenable testsuite
+- build with libacl support
+- BR various glibc langpacks wanted by the tests
+- drop ancient Conflicts due to UsrMove
+- prevent rpaths rather than removing them
+- explicitly list binaries in the main package to avoid extra build-ids
+
+* Fri Aug 9 2019 Jens Petersen <petersen@redhat.com> - 0.19.8.1-22
+- temporarily disable testsuite (#1735245)
+
+* Thu Jul 25 2019 Fedora Release Engineering <releng@fedoraproject.org> - 0.19.8.1-21
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
+
+* Thu Mar 7 2019 Tim Landscheidt <tim@tim-landscheidt.de> - 0.19.8.1-20
+- Remove obsolete requirements for %%post/%%preun scriptlets
+
+* Thu Jan 31 2019 Fedora Release Engineering <releng@fedoraproject.org> - 0.19.8.1-19
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
+
+* Thu Nov 08 2018 Pavel Raiskup <praiskup@redhat.com> - 0.19.8.1-18
+- fix CVE-2018-18751 (rhbz#1647044)
+- put gettextize man page into gettext-devel (man page scan, rhbz#1611303)
+
+* Tue Jul 31 2018 Florian Weimer <fweimer@redhat.com> - 0.19.8.1-17
+- Rebuild with fixed binutils
+
+* Sat Jul 28 2018 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 0.19.8.1-16
+- Replace obsolete scriptlets
+
+* Fri Jul 13 2018 Fedora Release Engineering <releng@fedoraproject.org> - 0.19.8.1-15
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
+
+* Wed Feb 07 2018 Fedora Release Engineering <releng@fedoraproject.org> - 0.19.8.1-14
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
+
+* Sat Feb 03 2018 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 0.19.8.1-13
+- Switch to %%ldconfig_scriptlets
+
+* Fri Jan 05 2018 Pavel Raiskup <praiskup@redhat.com> - 0.19.8.1-12
+- xgettext --its segfault fix (rhbz#1531476)
+
+* Wed Aug 02 2017 Fedora Release Engineering <releng@fedoraproject.org> - 0.19.8.1-11
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild
+
+* Wed Jul 26 2017 Fedora Release Engineering <releng@fedoraproject.org> - 0.19.8.1-10
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
+
+* Wed Mar 15 2017 Kalev Lember <klember@redhat.com> - 0.19.8.1-9
+- Depend on the exact version of the library sub package
+
+* Fri Feb 10 2017 Fedora Release Engineering <releng@fedoraproject.org> - 0.19.8.1-8
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild
+
+* Thu Jan 26 2017 Pavel Raiskup <praiskup@redhat.com> - 0.19.8.1-7
+- really remove Requires: git from gettext-devel (rhbz#1161284)
+- make the BuildRequires unconditional (rhbz#1416691)
+
+* Wed Dec 21 2016 Pavel Raiskup <praiskup@redhat.com> - 0.19.8.1-6
+- disable test-lock for 'gettext-tool' subdir too (rhbz#1406031)
+
+* Mon Dec 19 2016 Miro Hrončok <mhroncok@redhat.com> - 0.19.8.1-5
+- Rebuild for Python 3.6
+
+* Fri Dec 16 2016 Petr Šabata <contyk@redhat.com> - 0.19.8.1-4
+- Subpackage msghack so that gettext doesn't depend on python
+- name the new sub-package 'msghack'
+
+* Tue Nov 29 2016 Pavel Raiskup <praiskup@redhat.com> - 0.19.8.1-3
+- devel subpackage to Require 'xz' (rhbz#1399270)
+
+* Wed Aug 10 2016 Daiki Ueno <dueno@redhat.com> - 0.19.8.1-2
+- utilize %%autosetup
+- apply patch to fix po-send-mail when used with Emacs 25 (#1356642)
+
+* Sat Jun 11 2016 Daiki Ueno <dueno@redhat.com> - 0.19.8.1-1
+- update to 0.19.8.1 release
+
+* Thu Jun 9 2016 Daiki Ueno <dueno@redhat.com> - 0.19.8-1
+- update to 0.19.8 release
+
+* Wed Feb 03 2016 Fedora Release Engineering <releng@fedoraproject.org> - 0.19.7-4
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild
+
+* Tue Jan 12 2016 Daiki Ueno <dueno@redhat.com> - 0.19.7-3
+- own .../gettext/its for third-party *.its files
+- add a work around for test-isinf failure on ppc64le (#1297387)
+
+* Fri Jan 8 2016 Daiki Ueno <dueno@redhat.com> - 0.19.7-2
+- apply patch to recognize .glade extension for GtkBuilder files (#1296653)
+
+* Thu Dec 10 2015 Daiki Ueno <dueno@redhat.com> - 0.19.7-1
+- update to 0.19.7 release
+
+* Thu Sep 24 2015 Daiki Ueno <dueno@redhat.com> - 0.19.6-1
+- update to 0.19.6 release
+
+* Wed Jul 22 2015 Daiki Ueno <dueno@redhat.com> - 0.19.5.1-2
+- work around version conflict between gettextize and autopoint
+
+* Thu Jul 16 2015 Daiki Ueno <dueno@redhat.com> - 0.19.5.1-1
+- update to 0.19.5.1 release
+
+* Fri Jun 26 2015 Daiki Ueno <dueno@redhat.com> - 0.19.4-7
+- drop -el subpackage (#1234583)
+
+* Wed Jun 17 2015 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.19.4-6
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild
+
+* Sat May 02 2015 Kalev Lember <kalevlember@gmail.com> - 0.19.4-5
+- Rebuilt for GCC 5 C++11 ABI change
+
+* Sat Feb 21 2015 Till Maas <opensource@till.name> - 0.19.4-4
+- Rebuilt for Fedora 23 Change
+ https://fedoraproject.org/wiki/Changes/Harden_all_packages_with_position-independent_code
+
+* Thu Feb 19 2015 Daiki Ueno <dueno@redhat.com> - 0.19.4-3
+- port msghack.py to Python 3 (#1192086)
+
+* Wed Dec 31 2014 Daiki Ueno <dueno@redhat.com> - 0.19.4-2
+- remove git dependency from -devel subpackage (#1161284)
+
+* Fri Dec 26 2014 Daiki Ueno <dueno@redhat.com> - 0.19.4-1
+- update to 0.19.4 release
+
+* Tue Oct 28 2014 Peter Robinson <pbrobinson@fedoraproject.org> 0.19.3-2
+- Disable the test_lock test as it often hangs on a number of arches
+
+* Thu Oct 16 2014 Daiki Ueno <dueno@redhat.com> - 0.19.3-1
+- update to 0.19.3 release
+- remove patches included in 0.19.3
+- remove autoconf/automake/libtool/bison from BR, as we don't do bootstrap
+
+* Wed Oct 15 2014 Daiki Ueno <dueno@redhat.com> - 0.19.2-5
+- apply patch to fix infloop in autopoint (Closes: #1151238)
+- apply patch to support newer ncurses in F-22
+
+* Fri Oct 3 2014 Daiki Ueno <dueno@redhat.com> - 0.19.2-4
+- apply patch to fix C octal character escape handling (Closes: #1147535)
+
+* Tue Sep 02 2014 Dennis Gilmore <dennis@ausil.us> - 0.19.2-3
+- rebuild for libunistring soname bump
+
+* Sat Aug 16 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.19.2-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild
+
+* Mon Jul 14 2014 Daiki Ueno <dueno@redhat.com> - 0.19.2-1
+- update to 0.19.2 release
+
+* Mon Jul 7 2014 Daiki Ueno <dueno@redhat.com> - 0.19.1-2
+- apply patch to msghack.py, for Python 3 compatibility (Closes: #1113425,
+ thanks to Bohuslav "Slavek" Kabrda)
+
+* Tue Jun 10 2014 Daiki Ueno <dueno@redhat.com> - 0.19.1-1
+- update to 0.19.1 release
+- switch to xz-compressed archive
+
+* Sat Jun 07 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.19-3
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild
+
+* Mon Jun 2 2014 Daiki Ueno <dueno@redhat.com> - 0.19-2
+- apply patch to workaround msgfmt bug that counts warnings as errors
+
+* Mon Jun 2 2014 Daiki Ueno <dueno@redhat.com> - 0.19-1
+- update to 0.19 release
+- remove upstreamed -Wformat-security patch
+
+* Tue Jan 7 2014 Daiki Ueno <dueno@redhat.com> - 0.18.3.2-1
+- update to 0.18.3.2 release
+- apply patch to suppress -Wformat-security warnings in gnulib-tests
+
+* Sun Aug 25 2013 Daiki Ueno <dueno@redhat.com> - 0.18.3.1-1
+- update to 0.18.3.1 release
+
+* Sat Aug 03 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.18.3-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild
+
+* Wed Jul 10 2013 Daiki Ueno <dueno@redhat.com> - 0.18.3-1
+- update to 0.18.3 release
+
+* Wed Jun 26 2013 Daiki Ueno <dueno@redhat.com> - 0.18.2.1-2
+- add a man page for msghack
+- fix bogus date in %%changelog
+
+* Tue Mar 12 2013 Daiki Ueno <dueno@redhat.com> - 0.18.2.1-1
+- update to 0.18.2.1 release (not really necessary though)
+
+* Wed Feb 13 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.18.2-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild
+
+* Wed Dec 26 2012 Daiki Ueno <dueno@redhat.com> - 0.18.2-1
+- update to 0.18.2 release (based on the spec patch by Jens Petersen)
+
+* Tue Oct 2 2012 Jens Petersen <petersen@redhat.com> - 0.18.1.1-17
+- move gettextize to the devel subpackage with its source data files
+- update msghack to GPL v3
+
+* Fri Jul 27 2012 Jens Petersen <petersen@redhat.com> - 0.18.1.1-16
+- patch gnulib since glibc and C11 dropped gets
+
+* Thu Jul 19 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.18.1.1-15
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild
+
+* Tue May 29 2012 Remi Collet <remi@fedoraproject.org> - 0.18.1.1-14
+- add upstream patch from debian to fix xgettext segfault in
+ remember_a_message_plural (#826138)
+
+* Thu May 17 2012 Jens Petersen <petersen@redhat.com> - 0.18.1.1-13
+- base package now provides bundled(gnulib) to make it clear that
+ gettext is built with bundled gnulib (#821757)
+
+* Wed Jan 25 2012 Harald Hoyer <harald@redhat.com> 0.18.1.1-12
+- add filesystem guard
+
+* Wed Jan 25 2012 Harald Hoyer <harald@redhat.com> 0.18.1.1-11
+- install everything in /usr
+ https://fedoraproject.org/wiki/Features/UsrMove
+
+* Tue Jan 10 2012 Nils Philippsen <nils@redhat.com> - 0.18.1.1-10
+- rebuild for gcc 4.7
+
+* Tue Oct 4 2011 Jens Petersen <petersen@redhat.com> - 0.18.1.1-9
+- correct the configure --with-pic option syntax (Gilles Espinasse)
+
+* Wed Sep 28 2011 Jens Petersen <petersen@redhat.com> - 0.18.1.1-8
+- add gettext-readlink-einval.patch to fix build on kernel >= 2.6.39 (#739188)
+- add optional buildrequires suggested in the DEPENDENCIES file
+
+* Tue Feb 08 2011 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.18.1.1-7
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild
+
+* Mon Feb 7 2011 Jens Petersen <petersen@redhat.com> - 0.18.1.1-6
+- remove internal libgettextlib.so and libgettextsrc.so (#650471)
+
+* Mon Feb 7 2011 Jens Petersen <petersen@redhat.com> - 0.18.1.1-5
+- fix license field of gettext-libs since libgettextpo is GPLv3+ (#640158)
+
+* Thu Sep 9 2010 Jens Petersen <petersen@redhat.com> - 0.18.1.1-4
+- subpackage archive.git.tar.gz to avoid multilib conflicts (#631733)
+- update msghack.py header
+
+* Mon Aug 23 2010 Jens Petersen <petersen@redhat.com> - 0.18.1.1-3
+- merge autopoint subpackage into devel to simplify deps (#625325)
+- have ABOUT-NLS only in the base package datadir
+
+* Wed Jun 23 2010 Jens Petersen <petersen@redhat.com> - 0.18.1.1-2
+- correct license tag from GPLv3 to GPLv3+
+- subpackage autopoint which requires git (#574031)
+- no longer require cvs (#606746)
+- add bcond for git
+
+* Fri May 21 2010 Jens Petersen <petersen@redhat.com> - 0.18.1.1-1
+- update to 0.18.1.1 release (#591044)
+- gettext-0.17-autopoint-CVS-441481.patch, gettext-0.17-long-long-int-m4.patch
+ gettext-0.17-open-args.patch, and
+ gettext-xgettext-python-unicode-surrogate-473946.patch are upstream
+- move libintl.jar to lib subpackage to avoid multilib problems
+ (reported by Jim Radford in #595922)
+- disable java for now
+- use chrpath to get us out of rpath hell instead of complicated libtool hacks
+- enable git support
+
+* Fri Apr 23 2010 Jens Petersen <petersen@redhat.com> - 0.17-17
+- create emacs subpackages for po-mode.el (thanks for patch from
+ Jonathan Underwood, #579452)
+- provide emacs-po-mode
+- move libgettextlib and libgettextsrc from base to libs subpackage
+ (requested by Peter Robinson for blender, #579388)
+
+* Fri Nov 27 2009 Jens Petersen <petersen@redhat.com> - 0.17-16
+- fix FTBFS by removing openmp.m4 which conflicts with recent autoconf (#539211)
+- cleanup gettext-0.17-rpathFix.patch
+ - separate gl_AC_TYPE_LONG_LONG replacement to another patch
+ - use trailing ':' for tests LD_LIBRARY_PATH
+- run autogen.sh with --quick and --skip-gnulib
+
+* Tue Sep 1 2009 Jens Petersen <petersen@redhat.com> - 0.17-15
+- bring back autopoint requires cvs (#517361)
+- requires info rather than /sbin/install-info
+- drop install_info and remove_install_info macros
+
+* Fri Jul 24 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.17-14
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild
+
+* Wed Jun 24 2009 Jens Petersen <petersen@redhat.com> - 0.17-13
+- buildrequire automake (#507275)
+- run autogen
+
+* Mon Jun 22 2009 Jens Petersen <petersen@redhat.com> - 0.17-12
+- move intl/ and po/ to base package for gettextize
+ (reported by Serge Pavlovsky, #496902)
+
+* Fri May 22 2009 Jens Petersen <petersen@redhat.com> - 0.17-11
+- use bcond's for build switches
+
+* Tue Feb 24 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.17-10
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild
+
+* Thu Feb 12 2009 Jens Petersen <petersen@redhat.com> - 0.17-9
+- add buildjava switch to allow turning off the java bits completely
+- add buildcheck to allow turning off make check
+- drop cvs requires for autopoint (Karl Lattimer, #469555)
+- add upstream gettext-xgettext-python-unicode-surrogate-473946.patch by
+ Bruno Haible to fix xgettext handling of utf16 surrogates in python (#473946)
+
+* Fri Aug 29 2008 Ding-Yi Chen <dchen at redhat dot com> - 0.17-8
+- Fix the build failure with koji.
+
+* Fri Aug 29 2008 Ding-Yi Chen <dchen at redhat dot com> - 0.17-7
+- Remove the gettext-libs docs, as they are talking about autoconf, libtool,
+ which are not directly related to the gettext-libs.
+- Remove unused definition and trailing space.
+- Fix the build failure with mock .
+
+* Tue Aug 19 2008 Ding-Yi Chen <dchen at redhat dot com> - 0.17-6
+- Fixed Bug 456666 msghack doesn't check for mandatory cmd line params
+ by adding checking statements and display usage (msghack.py modified)
+- rpath patch for binary-or-shlib-defines-rpath in x86_64.
+
+* Thu Apr 24 2008 Jens Petersen <petersen@redhat.com> - 0.17-5
+- fix autopoint messing up CVS files with upstream patch (#441481)
+
+* Mon Feb 18 2008 Jens Petersen <petersen@redhat.com> - 0.17-4
+- if %%buildjar is off make sure libintl.jar does not get installed (#433210)
+
+* Mon Feb 18 2008 Jens Petersen <petersen@redhat.com> - 0.17-3
+- turn on building of libintl.jar now that we have gcc43
+
+* Thu Feb 14 2008 Jens Petersen <petersen@redhat.com> - 0.17-2
+- rebuild with gcc43
+
+* Thu Jan 24 2008 Jens Petersen <petersen@redhat.com> - 0.17-1
+- update to 0.17 release
+ - update License field to GPLv3
+ - add gettext-0.17-open-args.patch to fix build from upstream
+ - gettext-tools-tests-lang-gawk-fail.patch, gettext-php-headers.patch,
+ gettext-php-prinf-output-237241.patch, and
+ gettext-xglade-define-xml-major-version-285701.patch are no longer needed
+- drop superfluous po-mode-init.el source
+- no need to run autoconf and autoheader when building
+- pass -findirect-dispatch to gcj to make java binaries ABI independent
+ (jakub,#427796)
+- move autopoint, gettextize, and {_datadir}/{name}/ to main package
+- force removal of emacs/ so install does not fail when no emacs
+
+* Fri Sep 21 2007 Jens Petersen <petersen@redhat.com> - 0.16.1-12
+- add a libs subpackage (suggested by Dwayne Bailey, #294891)
+- move preloadable_libintl.so to the devel subpackage
+
+* Fri Sep 14 2007 Nils Philippsen <nphilipp@redhat.com> - 0.16.1-11
+- remove gettext-xglade-include-expat-285701.patch, add
+ gettext-xglade-define-xml-major-version-285701.patch to determine
+ XML_MAJOR_VERSION from expat.h and define it in config.h (#285701)
+
+* Wed Sep 12 2007 Jens Petersen <petersen@redhat.com> - 0.16.1-10
+- buildrequire expat-devel
+- add gettext-xglade-include-expat-285701.patch to include expat.h
+ to get xgettext to dl the right libexpat (Nils Philippsen, #285701)
+
+* Thu Aug 16 2007 Jens Petersen <petersen@redhat.com>
+- specify license is GPL and LGPL version 2 or later
+
+* Wed Aug 1 2007 Jens Petersen <petersen@redhat.com> - 0.16.1-9
+- fix encoding of msghack script (Dwayne Bailey, #250248)
+
+* Mon Apr 30 2007 Jens Petersen <petersen@redhat.com> - 0.16.1-8
+- add gettext-php-prinf-output-237241.patch to workaround php test failure
+ (#237241)
+- add gettext-php-headers.patch to correct php test headers
+ (Robert Scheck, #232832)
+
+* Thu Mar 15 2007 Jens Petersen <petersen@redhat.com> - 0.16.1-7
+- set preloadable_libintl.so executable in %%install so it gets stripped
+- force removal of infodir/dir since it is not there when /sbin is not in path
+
+* Tue Mar 13 2007 Jens Petersen <petersen@redhat.com> - 0.16.1-6
+- add buildjar switch for building of libintl.jar
+- lots of spec file cleanup (Mamoru Tasaka, #225791):
+- preserve timestamps of installed files
+- disable building of static library
+- use %%find_lang for .mo files
+- remove examples from -devel package
+- do not own en@*quot locale dirs
+- set preloadable_libintl.so executable
+- add ChangeLog to -devel package
+- add %%check to run make check
+- add gettext-tools-tests-lang-gawk-fail.patch to work around gawk test failure
+
+* Fri Feb 23 2007 Karsten Hopp <karsten@redhat.com> 0.16.1-5
+- rebuild to pick up dependency on libgcj.so.8rh instead libgcj.so.7rh
+
+* Thu Feb 1 2007 Jens Petersen <petersen@redhat.com> - 0.16.1-4
+- protect install-info in devel %%post and %%preun too (Ville Skyttä, #223689)
+- forward port fix to reset of timestamp of examples ChangeLog for
+ brp-java-repack-jars libintl.jar multilib conflict (#205207)
+
+* Mon Jan 22 2007 Jens Petersen <petersen@redhat.com> - 0.16.1-3
+- protect install-info in %%post and %%preun (Ville Skyttä, #223689)
+
+* Fri Dec 22 2006 Jens Petersen <petersen@redhat.com> - 0.16.1-1
+- update to 0.16.1
+
+* Mon Nov 27 2006 Jens Petersen <petersen@redhat.com> - 0.16-2
+- re-enable openmp on ia64
+
+* Thu Nov 23 2006 Jens Petersen <petersen@redhat.com> - 0.16-1
+- update to 0.16 release
+- disable openmp on ia64 (#216988)
+
+* Fri Oct 27 2006 Jens Petersen <petersen@redhat.com> - 0.15-1
+- update to 0.15 release
+- mkinstalldirs and libintl.jar are gone
+- javaversion.class added
+
+* Mon Oct 2 2006 Jens Petersen <petersen@redhat.com> - 0.14.6-3
+- buildrequire zip and unzip to fix libintl.jar multilib conflict (#205207)
+
+* Fri Aug 25 2006 Jens Petersen <petersen@redhat.com> - 0.14.6-2
+- move libgettext*.so devel files to devel package (Patrice Dumas, #203622)
+
+* Mon Aug 7 2006 Jens Petersen <petersen@redhat.com> - 0.14.6-1
+- update to 0.14.6
+- include preloadable_libintl.so again (Roozbeh Pournader, #149809)
+- remove .la files (Kjartan Maraas, #172624)
+- cleanup spec file
+
+* Tue Jul 25 2006 Thomas Fitzsimmons <fitzsim@redhat.com> - 0.14.5-4
+- Bump release number.
+
+* Wed Jul 12 2006 Jesse Keating <jkeating@redhat.com> - 0.14.5-3.1
+- rebuild
+
+* Wed Feb 22 2006 Karsten Hopp <karsten@redhat.de> 0.14.5-3
+- --disable-csharp, otherwise it'll build a dll when mono is
+ installed in the buildroot.
+
+* Fri Feb 10 2006 Jesse Keating <jkeating@redhat.com> - 0.14.5-2.2.2
+- bump again for double-long bug on ppc(64)
+
+* Tue Feb 07 2006 Jesse Keating <jkeating@redhat.com> - 0.14.5-2.2.1
+- rebuilt for new gcc4.1 snapshot and glibc changes
+
+* Tue Jan 3 2006 Jesse Keating <jkeating@redhat.com> 0.14.5-2.2
+- rebuilt again
+
+* Fri Dec 09 2005 Jesse Keating <jkeating@redhat.com>
+- rebuilt
+
+* Wed Sep 28 2005 Jindrich Novy <jnovy@redhat.com> 0.14.5-2
+- convert spec to UTF-8
+- remove old tarballs from sources
+
+* Thu Aug 11 2005 Leon Ho <llch@redhat.com>
+- updated to 0.14.5
+- Add cvs as Requires for gettext-devel
+
+* Mon Mar 21 2005 Leon Ho <llch@redhat.com>
+- updated to 0.14.3
+- fixed compiling problem on gcc4 (#150992)
+- fixed Group for -devel (#138303)
+- moved gettextize and autopoint to -devel (#137542, #145768)
+- moved some of the man pages
+
+* Tue Mar 01 2005 Jakub Jelinek <jakub@redhat.com>
+- rebuilt with gcc 4.0
+
+* Wed Dec 01 2004 Leon Ho <llch@redhat.com>
+- Add env var to redirect use fastjar instead of jar
+- BuildRequires fastjar and libgcj
+
+* Mon Nov 01 2004 Leon Ho <llch@redhat.com>
+- fix call on phase0_getc()
+- fix temp file issue (#136323 - CAN-2004-0966 - mjc)
+
+* Sun Oct 03 2004 Leon Ho <llch@redhat.com>
+- fixed typo on %%preun on -devel
+
+* Fri Oct 01 2004 Leon Ho <llch@redhat.com>
+- fix install_info
+- add gcc-java build requirement
+
+* Mon Sep 13 2004 Leon Ho <llch@redhat.com>
+- move java stuff to gettext-devel (#132239)
+- add BuildRequires: gcc-c++ (#132518)
+- add some missing install-info and ldconfig (#131272)
+- fix dir ownership (#133696)
+- run autotools for 1.9
+
+* Tue Jun 15 2004 Elliot Lee <sopwith@redhat.com>
+- rebuilt
+
+* Tue Jun 08 2004 Leon Ho <llch@redhat.com>
+- use --without-included-gettext to avoid the need of libintl.so (#125497)
+- remove preloadable_libintl.so
+
+* Sun Jun 06 2004 Leon Ho <llch@redhat.com>
+- moved some of the shared lib to main pkg
+- added more build requires
+
+* Thu Jun 03 2004 Leon Ho <llch@redhat.com>
+- add conditionals for patch and requires auto* (#125216)
+
+* Wed Jun 02 2004 Leon Ho <llch@redhat.com>
+- packaged lib files for devel
+- moved some of the files to different sub-pkg
+- fix problem on x86_64 build
+
+* Tue Mar 02 2004 Elliot Lee <sopwith@redhat.com>
+- rebuilt
+
+* Fri Feb 13 2004 Elliot Lee <sopwith@redhat.com>
+- rebuilt
+
+* Mon Feb 02 2004 Leon Ho <llch@redhat.com>
+- rebuilt to 0.14.1
+
+* Fri Sep 19 2003 Leon Ho <llch@redhat.com>
+- rebuilt 0.12.1
+- fix including files and excludes some patches
+
+* Wed Jun 04 2003 Elliot Lee <sopwith@redhat.com>
+- rebuilt
+
+* Wed May 14 2003 Leon Ho <llch@redhat.com>
+- 0.11.5
+
+* Wed Jan 22 2003 Tim Powers <timp@redhat.com>
+- rebuilt
+
+* Thu Jan 16 2003 Leon Ho <llch@redhat.com> 0.11.4-6
+- add online help for msghack replacement
+
+* Thu Dec 5 2002 Leon Ho <llch@redhat.com> 0.11.4-5
+- add patch to fix gettextize (#78720)
+
+* Wed Nov 27 2002 Tim Powers <timp@redhat.com> 0.11.4-4
+- remove unpackaged files from the buildroot
+
+* Wed Aug 28 2002 Trond Eivind Glomsrød <teg@redhat.com> 0.11.4-3
+- Use %%{_libdir} instead of /usr/lib (#72524)
+
+* Fri Aug 2 2002 Nalin Dahyabhai <nalin@redhat.com> 0.11.4-2
+- install ulonglong.m4, which is required by uintmax_t.m4, which is already
+ being installed
+
+* Sun Jul 28 2002 Trond Eivind Glomsrød <teg@redhat.com> 0.11.4-1
+- 0.11.4
+
+* Fri Jun 21 2002 Tim Powers <timp@redhat.com>
+- automated rebuild
+
+* Thu May 23 2002 Tim Powers <timp@redhat.com>
+- automated rebuild
+
+* Tue May 14 2002 Trond Eivind Glomsrød <teg@redhat.com> 0.11.2-1
+- 0.11.2
+- include some new files
+
+* Fri Apr 5 2002 Trond Eivind Glomsrød <teg@redhat.com> 0.11.1-2
+- Add patch to make it compile with C99 compilers (#62313)
+
+* Wed Mar 13 2002 Trond Eivind Glomsrød <teg@redhat.com> 0.11.1-1
+- 0.11.1
+
+* Sun Feb 17 2002 Florian La Roche <Florian.LaRoche@redhat.de>
+- update gettext to 0.11
+- disable patch4
+
+* Wed Jan 09 2002 Tim Powers <timp@redhat.com>
+- automated rebuild
+
+* Wed Dec 5 2001 Trond Eivind Glomsrød <teg@redhat.com> 0.10.40-3
+- improve automake handling
+
+* Wed Nov 14 2001 Trond Eivind Glomsrød <teg@redhat.com> 0.10.40-2
+- Add URL
+- Add automake workaround (#56081)
+
+* Sun Sep 16 2001 Trond Eivind Glomsrød <teg@redhat.com> 0.10.40-1
+- 0.10.40 - libintl is now LGPLed (it was GPLed). Note that RHL
+ uses the glibc version, and don't include libintl from gettext.
+- include new man pages
+- don't include the elisp mode - bundle it into the main emacs package,
+ like we do for XEmacs.
+- README-alpha no longer exists, so don't list it as a doc file
+
+* Fri Aug 24 2001 Trond Eivind Glomsrød <teg@redhat.com> 0.10.38-7
+- Rebuild - this should fix #52463
+
+* Wed Aug 22 2001 Trond Eivind Glomsrød <teg@redhat.com> 0.10.38-6
+- Fix handling of multiline entries (rest of #50065)
+- don't use the references of the last entry in a po file
+- remove duplicates when inverting
+- Own the en@quot and en@boldquot locale dirs (#52164)
+- Handle entries with a first line of "" as identical to those
+ without
+
+* Thu Aug 9 2001 Trond Eivind Glomsrød <teg@redhat.com>
+- Added "--append" and "-o" to msghack, which should address
+ initial concerns in #50065
+
+* Thu Jul 19 2001 Trond Eivind Glomsrød <teg@redhat.com>
+- New msghack - from scratch, in python
+
+* Tue Jul 17 2001 Trond Eivind Glomsrød <teg@redhat.com>
+- msghack is back
+
+* Mon Jun 4 2001 Trond Eivind Glomsrød <teg@redhat.com>
+- Include some docfiles
+
+* Sun Jun 03 2001 Florian La Roche <Florian.LaRoche@redhat.de>
+- 0.10.38
+- do not include charset.alias
+
+* Wed May 2 2001 Nalin Dahyabhai <nalin@redhat.com>
+- Build statically.
+
+* Mon Apr 30 2001 Trond Eivind Glomsrød <teg@redhat.com>
+- 0.10.37
+- Disable all but two patches
+
+* Sun Feb 25 2001 Trond Eivind Glomsrød <teg@redhat.com>
+- Initialize proper fonts when entering po-mode (#29152)
+
+* Mon Feb 12 2001 Yukihiro Nakai <ynakai@redhat.com>
+- More fix about msgmerge.
+
+* Mon Feb 12 2001 Yukihiro Nakai <ynakai@redhat.com>
+- Fix for msgmerge not to break multibyte strings
+ at Japanese locale.
+
+* Wed Jan 24 2001 Matt Wilson <msw@redhat.com>
+- fixed the %%lang generator to not have "./" in the lang
+
+* Sun Jan 14 2001 Trond Eivind Glomsrød <teg@redhat.com>
+- add an init file for the emacs po-mode
+- update source URL
+
+* Thu Jan 11 2001 Bill Nottingham <notting@redhat.com>
+- put gettext in /bin for initscripts use
+- %%langify
+
+* Fri Dec 29 2000 Bill Nottingham <notting@redhat.com>
+- prereq /sbin/install-info
+
+* Wed Aug 23 2000 Trond Eivind Glomsrød <teg@redhat.com>
+- Added patch from Ulrich Drepper
+
+* Fri Aug 04 2000 Trond Eivind Glomsrød <teg@redhat.com>
+- update DESTDIR patch (#12072)
+
+* Thu Jul 13 2000 Prospector <bugzilla@redhat.com>
+- automatic rebuild
+
+* Mon Jul 10 2000 Trond Eivind Glomsrød <teg@redhat.com>
+- fix problems wrt to DESTDIR (#12072)
+
+* Thu Jun 22 2000 Preston Brown <pbrown@redhat.com>
+- use FHS paths
+- add buildroot patch for .../intl/Makefile.in, was using abs. install path
+
+* Fri Apr 28 2000 Bill Nottingham <notting@redhat.com>
+- minor configure tweaks for ia64
+
+* Sun Feb 27 2000 Cristian Gafton <gafton@redhat.com>
+- add --comments to msghack
+
+* Thu Feb 10 2000 Cristian Gafton <gafton@redhat.com>
+- fix bug #9240 - gettextize has the right aclocal patch
+
+* Wed Jan 12 2000 Cristian Gafton <gafton@redhat.com>
+- add the --diff and --dummy options
+
+* Wed Oct 06 1999 Cristian Gafton <gafton@redhat.com>
+- add the --missing option to msghack
+
+* Wed Sep 22 1999 Cristian Gafton <gafton@redhat.com>
+- updated msghack not to merge in fuzzies in the master catalogs
+
+* Thu Aug 26 1999 Cristian Gafton <gafton@redhat.com>
+- updated msghack to understand --append
+
+* Wed Aug 11 1999 Cristian Gafton <gafton@redhat.com>
+- updated msghack to correctly deal with sorting files
+
+* Thu May 06 1999 Cristian Gafton <gafton@redhat.com>
+- msghack updates
+
+* Sun Mar 21 1999 Cristian Gafton <gafton@redhat.com>
+- auto rebuild in the new build environment (release 8)
+
+* Mon Mar 08 1999 Cristian Gafton <gafton@redhat.com>
+- added patch for misc hacks to facilitate rpm translations
+
+* Thu Dec 03 1998 Cristian Gafton <gafton@redhat.com>
+- patch to allow to build on ARM
+
+* Wed Sep 30 1998 Jeff Johnson <jbj@redhat.com>
+- add Emacs po-mode.el files.
+
+* Sun Sep 13 1998 Cristian Gafton <gafton@redhat.com>
+- include the aclocal support files
+
+* Thu Sep 3 1998 Bill Nottingham <notting@redhat.com>
+- remove devel package (functionality is in glibc)
+
+* Tue Sep 1 1998 Jeff Johnson <jbj@redhat.com>
+- update to 0.10.35.
+
+* Mon Jun 29 1998 Jeff Johnson <jbj@redhat.com>
+- add gettextize.
+- create devel package for libintl.a and libgettext.h.
+
+* Mon Apr 27 1998 Prospector System <bugs@redhat.com>
+- translations modified for de, fr, tr
+
+* Sun Nov 02 1997 Cristian Gafton <gafton@redhat.com>
+- added info handling
+- added misc-patch (skip emacs-lisp modofications)
+
+* Sat Nov 01 1997 Erik Troan <ewt@redhat.com>
+- removed locale.aliases as we get it from glibc now
+- uses a buildroot
+
+* Mon Jun 02 1997 Erik Troan <ewt@redhat.com>
+- Built against glibc
diff --git a/msghack.1 b/msghack.1
new file mode 100644
index 0000000..42fcc5b
--- /dev/null
+++ b/msghack.1
@@ -0,0 +1,45 @@
+.TH MSGHACK "1" "June 2013" "msghack" "User Commands"
+.SH NAME
+msghack \- alter PO files in ways
+.SH SYNOPSIS
+.B msghack
+[\fIOPTION\fR] \fIfile.po \fR[\fIref.po\fR]
+.SH DESCRIPTION
+.PP
+This program can be used to alter .po files in ways no sane mind would think about.
+.TP
+\fB\-o\fR
+result will be written to FILE
+.TP
+\fB\-\-invert\fR
+invert a po file by switching msgid and msgstr
+.TP
+\fB\-\-master\fR
+join any number of files in a master\-formatted catalog
+.TP
+\fB\-\-empty\fR
+empty the contents of the .po file, creating a .pot
+.TP
+\fB\-\-append\fR
+append entries from ref.po that don't exist in file.po
+.PP
+Note: It is just a replacement of msghack for backward support.
+.PP
+This program can be used to alter .po files in ways no sane mind would think about.
+.TP
+\fB\-o\fR
+result will be written to FILE
+.TP
+\fB\-\-invert\fR
+invert a po file by switching msgid and msgstr
+.TP
+\fB\-\-master\fR
+join any number of files in a master\-formatted catalog
+.TP
+\fB\-\-empty\fR
+empty the contents of the .po file, creating a .pot
+.TP
+\fB\-\-append\fR
+append entries from ref.po that don't exist in file.po
+.PP
+Note: It is just a replacement of msghack for backward support.
diff --git a/msghack.py b/msghack.py
new file mode 100755
index 0000000..358552c
--- /dev/null
+++ b/msghack.py
@@ -0,0 +1,417 @@
+#!/usr/bin/python3
+## -*- coding: utf-8 -*-
+## Copyright (C) 2001, 2004, 2008, 2012 Red Hat, Inc.
+## Copyright (C) 2001 Trond Eivind Glomsrød <teg@redhat.com>
+
+## This program is free software: you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation, either version 3 of the License, or
+## (at your option) any later version.
+
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+## GNU General Public License for more details.
+
+## You should have received a copy of the GNU General Public License
+## along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+"""
+A msghack replacement
+"""
+
+import sys
+
+class GTMessage:
+ """
+ A class containing a message, its msgid and various references pointing at it
+ """
+
+ def __init__(self,id=None,message=None,refs=[]):
+ """
+ The constructor for the GTMessage class
+ @self The object instance
+ @message The message
+ @id The messageid associated with the object
+ """
+ self._message=message.strip()
+ self._id=id.strip()
+ self._refs=[]
+ for ref in refs:
+ self._refs.append(ref)
+
+ def __str__(self):
+ """
+ Return a string representation of the object
+ @self The object instance
+ """
+ res=""
+ for ref in self._refs:
+ res=res+ref+"\n"
+ res=res+"msgid %s\nmsgstr %s\n" % (self._id,self._message)
+ return res
+
+ def invertedStrings(self):
+ """
+ Returns a string representation, but with msgid and msgstr inverted.
+ Note: Don't invert the "" string
+ @self The object instance
+ """
+ res=""
+ for ref in self._refs:
+ res=res+ref+"\n"
+ if not self._id=="\"\"":
+ res=res+"msgid %s\nmsgstr %s\n" % (self._message,self._id)
+ else:
+ res=res+"msgid %s\nmsgstr %s\n" % (self._id,self._message)
+ return res
+
+ def emptyMsgStrings(self):
+ """
+ Return a string representation of the object, but leave the msgstr
+ empty - create a pot file from a po file
+ Note: Won't remove the "" string
+ @self The object instance
+ """
+ res=""
+ for ref in self._refs:
+ res=res+ref+"\n"
+ if not self._id=="\"\"":
+ res=res+"msgid %s\nmsgstr \"\"\n" % (self._id)
+ else:
+ res=res+"msgid %s\nmsgstr %s\n" % (self._id,self._message)
+ return res
+
+ def compareMessage(self,msg):
+ """
+ Return if the messages have identical msgids, 0 otherwise
+ @self The object instance
+ @msg The message to compare to
+ """
+
+ if self._id == msg._id:
+ return 1
+ return 0
+
+
+class GTMasterMessage:
+ """
+ A class containing a message, its msgid and various references pointing at it
+ The difference between GTMessage and GTMasterMessage is that this class
+ can do less operations, but is able to store multiple msgstrs with identifiers
+ (usually language, like 'msgst(no)'
+ """
+
+ def __init__(self,id=None,refs=[]):
+ """
+ The constructor for the GTMessage class
+ @self The object instance
+ @id The messageid associated with the object
+ """
+ self._id=id
+ self._refs=[]
+ self._messages=[]
+ for ref in refs:
+ self._refs.append(ref)
+
+ def addMessage(self,message,identifier):
+ """
+ Add a new message and identifier to the GTMasterMessage object
+ @self The object instance
+ @message The message to append
+ @identifier The identifier of the message
+ """
+ self._messages.append((identifier,message))
+
+ def __str__(self):
+ """
+ Return a string representation of the object
+ @self The object instance
+ """
+ res=""
+ for ref in self._refs:
+ res=res+ref+"\n"
+ res=res+"msgid %s\n" % self._id
+ for message in self._messages:
+ res=res+"msgstr(%s) %s\n" %(message[0],message[1])
+ res=res+"\n"
+ return res
+
+class GTFile:
+ """
+ A class containing the GTMessages contained in a file
+ """
+
+ def __init__(self,filename):
+ """
+ The constructor of the GTMFile class
+ @self The object instance
+ @filename The file to initialize from
+ """
+ self._filename=filename
+ self._messages=[]
+ self.readFile(filename)
+
+ def __str__(self):
+ """
+ Return a string representation of the object
+ @self The object instance
+ """
+ res=""
+ for message in self._messages:
+ res=res+str(message)+"\n"
+ return res
+
+ def invertedStrings(self):
+ """
+ Return a string representation of the object, with msgid and msgstr
+ swapped. Will remove duplicates...
+ @self The object instance
+ """
+
+ msght={}
+ msgar=[]
+
+ for message in self._messages:
+ if message._id=='""' and len(msgar)==0:
+ msgar.append(GTMessage(message._id,message._message,message._refs))
+ continue
+ msg=GTMessage(message._message,message._id,message._refs)
+ if msg._id not in msght:
+ msght[msg._id]=msg
+ msgar.append(msg)
+ else:
+ msg2=msght[msg._id]
+ for ref in msg._refs:
+ msg2._refs.append(ref)
+ res=""
+ for message in msgar:
+ res=res+str(message)+"\n"
+ return res
+
+ def msgidDupes(self):
+ """
+ Search for duplicates in the msgids.
+ @self The object instance
+ """
+ msgids={}
+ res=""
+ for message in self._messages:
+ msgid=message._id
+ if msgid in msgids:
+ res=res+"Duplicate: %s\n" % (msgid)
+ else:
+ msgids[msgid]=1
+ return res
+
+ def getMsgstr(self,msgid):
+ """
+ Return the msgstr matching the given id. 'None' if missing
+ @self The object instance
+ @msgid The msgid key
+ """
+
+ for message in self._messages:
+ if msgid == message._id:
+ return message._message
+ return None
+
+ def emptyMsgStrings(self):
+ """
+ Return a string representation of the object, but leave the msgstr
+ empty - create a pot file from a po file
+ @self The object instance
+ """
+
+ res=""
+ for message in self._messages:
+ res=res+message.emptyMsgStrings()+"\n"
+ return res
+
+
+ def append(self,B):
+ """
+ Append entries from dictionary B which aren't
+ already present in this dictionary
+ @self The object instance
+ @B the dictionary to append messages from
+ """
+
+ for message in B._messages:
+ if not self.getMsgstr(message._id):
+ self._messages.append(message)
+
+
+ def readFile(self,filename):
+ """
+ Read the contents of a file into the GTFile object
+ @self The object instance
+ @filename The name of the file to read
+ """
+
+ file=open(filename,"r")
+ msgid=""
+ msgstr=""
+ refs=[]
+ lines=[]
+ inmsgid=0
+ inmsgstr=0
+ templines=file.readlines()
+ for line in templines:
+ lines.append(line.strip())
+ for line in lines:
+ pos=line.find('"')
+ pos2=line.rfind('"')
+ if line and line[0]=="#":
+ refs.append(line.strip())
+ if inmsgstr==0 and line[:6]=="msgstr":
+ msgstr=""
+ inmsgstr=1
+ inmsgid=0
+ if inmsgstr==1:
+ if pos==-1:
+ inmsgstr=0
+ #Handle entries with and without "" consistently
+ if msgid[:2]=='""' and len(msgid)>4:
+ msgid=msgid[2:]
+ if msgstr[:2]=='""' and len(msgstr)>4:
+ msgstr=msgstr[2:]
+ message=GTMessage(msgid,msgstr,refs)
+ self._messages.append(message)
+ msgstr=""
+ msgid=""
+ refs=[]
+ else:
+ msgstr=msgstr+line[pos:pos2+1]+"\n"
+ if inmsgid==0 and line[:5]=="msgid":
+ msgid=""
+ inmsgid=1
+ if inmsgid==1:
+ if pos==-1:
+ inmsgid=0
+ else:
+ msgid=msgid+line[pos:pos2+1]+"\n"
+ if msgstr and msgid:
+ message=GTMessage(msgid,msgstr,refs)
+ self._messages.append(message)
+
+
+class GTMaster:
+ """
+ A class containing a master catalogue of gettext dictionaries
+ """
+
+ def __init__(self,dicts):
+ """
+ The constructor for the GTMaster class
+ @self The object instance
+ @dicts An array of dictionaries to merge
+ """
+ self._messages=[]
+ self.createMaster(dicts)
+
+ def createMaster(self,dicts):
+ """
+ Create the master catalogue
+ @self The object instance
+ @dicts An array of dictionaries to merge
+ """
+
+ self._master=dicts[0]
+ self._dicts=dicts[1:]
+
+ for message in self._master._messages:
+ gtm=GTMasterMessage(message._id,message._refs)
+ gtm.addMessage(message._message,self._master._filename[:-3])
+ for dict in self._dicts:
+ res=dict.getMsgstr(message._id)
+ if(res):
+ gtm.addMessage(res,dict._filename[:-3])
+ self._messages.append(gtm)
+
+ def __str__(self):
+ """
+ Return a string representation of the object
+ @self The object instance
+ """
+ res=""
+ for message in self._messages:
+ res=res+str(message)+"\n"
+ return res
+
+def printUsage():
+ "Print the usage messages"
+ print("Usage: " + str(sys.argv[0]) + " [OPTION] file.po [ref.po]\n\
+This program can be used to alter .po files in ways no sane mind would think about.\n\
+ -o result will be written to FILE\n\
+ --invert invert a po file by switching msgid and msgstr\n\
+ --master join any number of files in a master-formatted catalog\n\
+ --empty empty the contents of the .po file, creating a .pot\n\
+ --append append entries from ref.po that don't exist in file.po\n\
+\n\
+Note: It is just a replacement of msghack for backward support.\n")
+
+
+if __name__=="__main__":
+ output=None
+ res=None
+ if("-o") in sys.argv:
+ if (len(sys.argv)<=sys.argv.index("-o")+1):
+ print("file.po and ref.po are not specified!\n")
+ printUsage()
+ exit(1)
+ output=sys.argv[sys.argv.index("-o")+1]
+ sys.argv.remove("-o")
+ sys.argv.remove(output)
+ if("--invert") in sys.argv:
+ if (len(sys.argv)<=sys.argv.index("--invert")+1):
+ print("file.po is not specified!\n")
+ printUsage()
+ exit(1)
+ file=sys.argv[sys.argv.index("--invert")+1]
+ gtf=GTFile(file)
+ res1=gtf.msgidDupes()
+ if res1:
+ sys.stderr.write(res1)
+ sys.exit(1)
+ res=str(gtf.invertedStrings())
+ elif("--empty") in sys.argv:
+ if (len(sys.argv)<=sys.argv.index("--empty")+1):
+ print("file.po is not specified!\n")
+ printUsage()
+ exit(1)
+ file=sys.argv[sys.argv.index("--empty")+1]
+ gtf=GTFile(file)
+ res=str(gtf.emptyMsgStrings())
+ elif("--master") in sys.argv:
+ if (len(sys.argv)<=sys.argv.index("--master")+1):
+ print("file.po is not specified!\n")
+ printUsage()
+ exit(1)
+ loc=sys.argv.index("--master")+1
+ gtfs=[]
+ for file in sys.argv[loc:]:
+ gtfs.append(GTFile(file))
+ master=GTMaster(gtfs)
+ res=str(master)
+ elif("--append") in sys.argv:
+ if (len(sys.argv)<=sys.argv.index("--append")+2):
+ print("file.po and/or ref.po are not specified!\n")
+ printUsage()
+ exit(1)
+ file=sys.argv[sys.argv.index("--append")+1]
+ file2=sys.argv[sys.argv.index("--append")+2]
+ gtf=GTFile(file)
+ gtf2=GTFile(file2)
+ gtf.append(gtf2)
+ res=str(gtf)
+ else:
+ #print("Not implemented: "+str(sys.argv))
+ printUsage()
+ sys.exit(1)
+ if not output:
+ print(res)
+ else:
+ file=open(output,"w")
+ file.write(res)
+ sys.exit(0)
diff --git a/sources b/sources
new file mode 100644
index 0000000..a2776d1
--- /dev/null
+++ b/sources
@@ -0,0 +1 @@
+40996bbaf7d1356d3c22e33a8b255b31 gettext-0.21.tar.xz