From c453f846c40e485d9bfd1b7cf1f5b623ce556a92 Mon Sep 17 00:00:00 2001 From: Remi Collet Date: Tue, 29 May 2012 18:48:29 +0200 Subject: gettext: import from rawhide --- Makefile | 4 + gettext-readlink-einval.patch | 24 ++ gettext.spec | 853 ++++++++++++++++++++++++++++++++++++++++++ msghack.py | 421 +++++++++++++++++++++ 4 files changed, 1302 insertions(+) create mode 100644 Makefile create mode 100644 gettext-readlink-einval.patch create mode 100644 gettext.spec create mode 100755 msghack.py diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..1e65467 --- /dev/null +++ b/Makefile @@ -0,0 +1,4 @@ +SRCDIR := $(shell pwd) +NAME := $(shell basename $(SRCDIR)) +include ../common/Makefile + diff --git a/gettext-readlink-einval.patch b/gettext-readlink-einval.patch new file mode 100644 index 0000000..4cc9092 --- /dev/null +++ b/gettext-readlink-einval.patch @@ -0,0 +1,24 @@ +diff -U 3 -p -r gettext-0.18.1.1.orig/gettext-tools/gnulib-tests/test-areadlink.h gettext-0.18.1.1/gettext-tools/gnulib-tests/test-areadlink.h +--- gettext-0.18.1.1.orig/gettext-tools/gnulib-tests/test-areadlink.h 2010-02-16 16:32:26.000000000 -0500 ++++ gettext-0.18.1.1/gettext-tools/gnulib-tests/test-areadlink.h 2011-08-31 16:16:26.325521167 -0400 +@@ -36,7 +36,7 @@ test_areadlink (char * (*func) (char con + ASSERT (errno == ENOENT); + errno = 0; + ASSERT (func ("", 1) == NULL); +- ASSERT (errno == ENOENT); ++ ASSERT (errno == ENOENT || errno == EINVAL); + errno = 0; + ASSERT (func (".", 1) == NULL); + ASSERT (errno == EINVAL); +diff -U 3 -p -r gettext-0.18.1.1.orig/gettext-tools/gnulib-tests/test-readlink.h gettext-0.18.1.1/gettext-tools/gnulib-tests/test-readlink.h +--- gettext-0.18.1.1.orig/gettext-tools/gnulib-tests/test-readlink.h 2011-08-31 15:54:15.000000000 -0400 ++++ gettext-0.18.1.1/gettext-tools/gnulib-tests/test-readlink.h 2011-08-31 16:16:09.325165556 -0400 +@@ -38,7 +38,7 @@ test_readlink (ssize_t (*func) (char con + ASSERT (errno == ENOENT); + errno = 0; + ASSERT (func ("", buf, sizeof buf) == -1); +- ASSERT (errno == ENOENT); ++ ASSERT (errno == ENOENT || errno == EINVAL); + errno = 0; + ASSERT (func (".", buf, sizeof buf) == -1); + ASSERT (errno == EINVAL); diff --git a/gettext.spec b/gettext.spec new file mode 100644 index 0000000..6684145 --- /dev/null +++ b/gettext.spec @@ -0,0 +1,853 @@ +%bcond_with jar +%bcond_with java +%bcond_without check +%bcond_without git + +Summary: GNU libraries and utilities for producing multi-lingual messages +Name: gettext +Version: 0.18.1.1 +Release: 13%{?dist} +License: GPLv3+ and LGPLv2+ +Group: Development/Tools +URL: http://www.gnu.org/software/gettext/ +Source: ftp://ftp.gnu.org/gnu/gettext/%{name}-%{version}.tar.gz +Source2: msghack.py +# removal of openmp.m4 +BuildRequires: autoconf >= 2.62 +BuildRequires: automake +BuildRequires: libtool, bison, 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 +%if %{with git} +# for autopoint: +BuildRequires: git +%endif +BuildRequires: chrpath +# following suggested by DEPENDENCIES: +BuildRequires: ncurses-devel +BuildRequires: expat-devel +BuildRequires: libxml2-devel +BuildRequires: glib2-devel +BuildRequires: libcroco-devel +BuildRequires: libunistring-devel +Requires(post): info +Requires(preun): info +Conflicts: filesystem < 3 +Provides: bundled(gnulib) +Provides: /bin/gettext +Patch1: gettext-readlink-einval.patch + +%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} +Group: Development/Tools +# 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} +Group: Development/Tools +# autopoint is GPLv3+ +# libasprintf is LGPLv2+ +# libgettextpo is GPLv3+ +License: LGPLv2+ and GPLv3+ +Requires: %{name} = %{version}-%{release} +Requires: %{name}-libs = %{version}-%{release} +Requires: %{name}-common-devel = %{version}-%{release} +Requires(post): info +Requires(preun): info +# for autopoint +Requires: git +Obsoletes: gettext-autopoint < 0.18.1.1-3 +Provides: gettext-autopoint = %{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} +Group: System Environment/Libraries +# libasprintf is LGPLv2+ +# libgettextpo is GPLv3+ +License: LGPLv2+ and GPLv3+ + +%description libs +This package contains libraries used internationalization support. + + +%package -n emacs-%{name} +Summary: Support for editing po files within GNU Emacs +Group: Applications/Editors +BuildArch: noarch +# help users find po-mode.el +Provides: emacs-po-mode +Requires: emacs(bin) >= %{_emacs_version} + +%description -n emacs-%{name} +This package provides a major mode for editing po files within GNU Emacs. + + +%package -n emacs-%{name}-el +Summary: Elisp source files for editing po files within GNU Emacs +Group: Applications/Editors +BuildArch: noarch +Requires: emacs-%{name} = %{version}-%{release} + +%description -n emacs-%{name}-el +This package contains the Elisp source files for editing po files within GNU +Emacs. + + +%prep +%setup -q +%patch1 -p1 -b .orig + + +%build +%if %{with java} +export JAVAC=gcj +%if %{with jar} +export JAR=fastjar +%endif +%endif +# --disable-rpath doesn't work properly on lib64 +%configure --without-included-gettext --enable-nls --disable-static \ + --enable-shared --with-pic --disable-csharp --disable-rpath \ +%if %{with java} + --enable-java \ +%else + --disable-java --disable-native-java \ +%endif +%if %{without git} + --disable-git \ +%endif +%{nil} + +make %{?_smp_mflags} %{?with_java:GCJFLAGS="-findirect-dispatch"} + + +%install +make install DESTDIR=${RPM_BUILD_ROOT} INSTALL="%{__install} -p" \ + lispdir=%{_datadir}/emacs/site-lisp/gettext \ + aclocaldir=%{_datadir}/aclocal EXAMPLESFILES="" + + +install -pm 755 %SOURCE2 ${RPM_BUILD_ROOT}/%{_bindir}/msghack + + +# 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 + +# 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 + +# cleanup rpaths +for i in $RPM_BUILD_ROOT%{_bindir}/* `find $RPM_BUILD_ROOT%{_libdir} -type f`; do + if file $i | grep "ELF 64-bit" >/dev/null; then + chrpath -l $i && chrpath --delete $i + fi +done + + +%if %{with check} +%check +# this takes quite a lot of time to run +make check +%endif + + +%post +/sbin/ldconfig +/sbin/install-info %{_infodir}/gettext.info.gz %{_infodir}/dir || : + + +%preun +if [ "$1" = 0 ]; then + /sbin/install-info --delete %{_infodir}/gettext.info.gz %{_infodir}/dir || : +fi + + +%postun -p /sbin/ldconfig + + +%post devel +/sbin/ldconfig +/sbin/install-info %{_infodir}/autosprintf.info %{_infodir}/dir || : + + +%preun devel +if [ "$1" = 0 ]; then + /sbin/install-info --delete %{_infodir}/autosprintf.info %{_infodir}/dir || : +fi + + +%postun devel -p /sbin/ldconfig + +%post libs -p /sbin/ldconfig +%postun libs -p /sbin/ldconfig + +%files -f %{name}.lang +%defattr(-,root,root,-) +%doc AUTHORS gettext-runtime/BUGS +%doc COPYING gettext-tools/misc/DISCLAIM README +%doc NEWS THANKS +%doc gettext-runtime/man/*.1.html +%doc gettext-runtime/intl/COPYING* +%{_bindir}/* +%exclude %{_bindir}/autopoint +%{_bindir}/* +%{_infodir}/gettext* +%exclude %{_mandir}/man1/autopoint.1* +%{_mandir}/man1/* +%{_libdir}/%{name} +%if %{with java} +%exclude %{_libdir}/%{name}/gnu.gettext.* +%endif +%dir %{_datadir}/%{name} +%{_datadir}/%{name}/ABOUT-NLS +%{_datadir}/%{name}/intl +%{_datadir}/%{name}/po +%{_datadir}/%{name}/styles + +%files common-devel +%defattr(-,root,root,-) +%{_datadir}/%{name}/archive.*.tar.gz + +%files devel +%defattr(-,root,root,-) +%doc gettext-runtime/man/*.3.html ChangeLog +%{_bindir}/autopoint +%{_datadir}/%{name}/projects/ +%{_datadir}/%{name}/config.rpath +%{_datadir}/%{name}/*.h +%{_datadir}/%{name}/msgunfmt.tcl +%{_datadir}/aclocal/* +%{_includedir}/* +%{_infodir}/autosprintf* +%{_libdir}/libasprintf.so +%{_libdir}/libgettextpo.so +%{_libdir}/preloadable_libintl.so +%{_mandir}/man1/autopoint.1* +%{_mandir}/man3/* +%{_datadir}/%{name}/javaversion.class +%doc gettext-runtime/intl-java/javadoc* +%if %{with java} +%{_libdir}/%{name}/gnu.gettext.* +%endif + +%files libs +%defattr(-,root,root,-) +%{_libdir}/libasprintf.so.* +%{_libdir}/libgettextpo.so.* +%{_libdir}/libgettextlib-0.*.so +%{_libdir}/libgettextsrc-0.*.so +%if %{with jar} +%{_datadir}/%{name}/libintl.jar +%endif + +%files -n emacs-%{name} +%defattr(-,root,root,-) +%dir %{_emacs_sitelispdir}/%{name} +%{_emacs_sitelispdir}/%{name}/*.elc +%{_emacs_sitestartdir}/*.el + +%files -n emacs-%{name}-el +%defattr(-,root,root,-) +%{_emacs_sitelispdir}/%{name}/*.el + +%changelog +* Thu May 17 2012 Jens Petersen - 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 0.18.1.1-12 +- add filesystem guard + +* Wed Jan 25 2012 Harald Hoyer 0.18.1.1-11 +- install everything in /usr + https://fedoraproject.org/wiki/Features/UsrMove + +* Tue Jan 10 2012 Nils Philippsen - 0.18.1.1-10 +- rebuild for gcc 4.7 + +* Tue Oct 4 2011 Jens Petersen - 0.18.1.1-9 +- correct the configure --with-pic option syntax (Gilles Espinasse) + +* Wed Sep 28 2011 Jens Petersen - 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 - 0.18.1.1-7 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild + +* Mon Feb 7 2011 Jens Petersen - 0.18.1.1-6 +- remove internal libgettextlib.so and libgettextsrc.so (#650471) + +* Mon Feb 7 2011 Jens Petersen - 0.18.1.1-5 +- fix license field of gettext-libs since libgettextpo is GPLv3+ (#640158) + +* Thu Sep 9 2010 Jens Petersen - 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 - 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 - 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 - 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 - 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 - 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 - 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 - 0.17-14 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild + +* Wed Jun 24 2009 Jens Petersen - 0.17-13 +- buildrequire automake (#507275) +- run autogen + +* Mon Jun 22 2009 Jens Petersen - 0.17-12 +- move intl/ and po/ to base package for gettextize + (reported by Serge Pavlovsky, #496902) + +* Fri May 22 2009 Jens Petersen - 0.17-11 +- use bcond's for build switches + +* Tue Feb 24 2009 Fedora Release Engineering - 0.17-10 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild + +* Thu Feb 12 2009 Jens Petersen - 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 - 0.17-8 +- Fix the build failure with koji. + +* Fri Aug 29 2008 Ding-Yi Chen - 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 - 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 - 0.17-5 +- fix autopoint messing up CVS files with upstream patch (#441481) + +* Mon Feb 18 2008 Jens Petersen - 0.17-4 +- if %%buildjar is off make sure libintl.jar does not get installed (#433210) + +* Mon Feb 18 2008 Jens Petersen - 0.17-3 +- turn on building of libintl.jar now that we have gcc43 + +* Thu Feb 14 2008 Jens Petersen - 0.17-2 +- rebuild with gcc43 + +* Thu Jan 24 2008 Jens Petersen - 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 - 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 - 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 - 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 +- specify license is GPL and LGPL version 2 or later + +* Wed Aug 1 2007 Jens Petersen - 0.16.1-9 +- fix encoding of msghack script (Dwayne Bailey, #250248) + +* Mon Apr 30 2007 Jens Petersen - 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 - 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 - 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 0.16.1-5 +- rebuild to pick up dependency on libgcj.so.8rh instead libgcj.so.7rh + +* Thu Feb 1 2007 Jens Petersen - 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 - 0.16.1-3 +- protect install-info in %%post and %%preun (Ville Skyttä, #223689) + +* Fri Dec 22 2006 Jens Petersen - 0.16.1-1 +- update to 0.16.1 + +* Mon Nov 27 2006 Jens Petersen - 0.16-2 +- re-enable openmp on ia64 + +* Thu Nov 23 2006 Jens Petersen - 0.16-1 +- update to 0.16 release +- disable openmp on ia64 (#216988) + +* Fri Oct 27 2006 Jens Petersen - 0.15-1 +- update to 0.15 release +- mkinstalldirs and libintl.jar are gone +- javaversion.class added + +* Mon Oct 2 2006 Jens Petersen - 0.14.6-3 +- buildrequire zip and unzip to fix libintl.jar multilib conflict (#205207) + +* Fri Aug 25 2006 Jens Petersen - 0.14.6-2 +- move libgettext*.so devel files to devel package (Patrice Dumas, #203622) + +* Mon Aug 7 2006 Jens Petersen - 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 - 0.14.5-4 +- Bump release number. + +* Wed Jul 12 2006 Jesse Keating - 0.14.5-3.1 +- rebuild + +* Wed Feb 22 2006 Karsten Hopp 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 - 0.14.5-2.2.2 +- bump again for double-long bug on ppc(64) + +* Tue Feb 07 2006 Jesse Keating - 0.14.5-2.2.1 +- rebuilt for new gcc4.1 snapshot and glibc changes + +* Tue Jan 3 2006 Jesse Keating 0.14.5-2.2 +- rebuilt again + +* Fri Dec 09 2005 Jesse Keating +- rebuilt + +* Wed Sep 28 2005 Jindrich Novy 0.14.5-2 +- convert spec to UTF-8 +- remove old tarballs from sources + +* Thu Aug 11 2005 Leon Ho +- updated to 0.14.5 +- Add cvs as Requires for gettext-devel + +* Mon Mar 21 2005 Leon Ho +- 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 +- rebuilt with gcc 4.0 + +* Wed Dec 01 2004 Leon Ho +- Add env var to redirect use fastjar instead of jar +- BuildRequires fastjar and libgcj + +* Mon Nov 01 2004 Leon Ho +- fix call on phase0_getc() +- fix temp file issue (#136323 - CAN-2004-0966 - mjc) + +* Sun Oct 03 2004 Leon Ho +- fixed typo on %%preun on -devel + +* Fri Oct 01 2004 Leon Ho +- fix install_info +- add gcc-java build requirement + +* Mon Sep 13 2004 Leon Ho +- 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 +- rebuilt + +* Tue Jun 08 2004 Leon Ho +- use --without-included-gettext to avoid the need of libintl.so (#125497) +- remove preloadable_libintl.so + +* Sun Jun 06 2004 Leon Ho +- moved some of the shared lib to main pkg +- added more build requires + +* Thu Jun 03 2004 Leon Ho +- add conditionals for patch and requires auto* (#125216) + +* Wed Jun 02 2004 Leon Ho +- 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 +- rebuilt + +* Fri Feb 13 2004 Elliot Lee +- rebuilt + +* Mon Feb 02 2004 Leon Ho +- rebuilt to 0.14.1 + +* Fri Sep 19 2003 Leon Ho +- rebuilt 0.12.1 +- fix including files and excludes some patches + +* Wed Jun 04 2003 Elliot Lee +- rebuilt + +* Wed May 14 2003 Leon Ho +- 0.11.5 + +* Wed Jan 22 2003 Tim Powers +- rebuilt + +* Thu Jan 16 2003 Leon Ho 0.11.4-6 +- add online help for msghack replacement + +* Thu Dec 5 2002 Leon Ho 0.11.4-5 +- add patch to fix gettextize (#78720) + +* Wed Nov 27 2002 Tim Powers 0.11.4-4 +- remove unpackaged files from the buildroot + +* Wed Aug 28 2002 Trond Eivind Glomsrød 0.11.4-3 +- Use %%{_libdir} instead of /usr/lib (#72524) + +* Fri Aug 2 2002 Nalin Dahyabhai 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 0.11.4-1 +- 0.11.4 + +* Fri Jun 21 2002 Tim Powers +- automated rebuild + +* Thu May 23 2002 Tim Powers +- automated rebuild + +* Tue May 14 2002 Trond Eivind Glomsrød 0.11.2-1 +- 0.11.2 +- include some new files + +* Fri Apr 5 2002 Trond Eivind Glomsrød 0.11.1-2 +- Add patch to make it compile with C99 compilers (#62313) + +* Wed Mar 13 2002 Trond Eivind Glomsrød 0.11.1-1 +- 0.11.1 + +* Sun Feb 17 2002 Florian La Roche +- update gettext to 0.11 +- disable patch4 + +* Wed Jan 09 2002 Tim Powers +- automated rebuild + +* Wed Dec 5 2001 Trond Eivind Glomsrød 0.10.40-3 +- improve automake handling + +* Wed Nov 14 2001 Trond Eivind Glomsrød 0.10.40-2 +- Add URL +- Add automake workaround (#56081) + +* Sun Sep 16 2001 Trond Eivind Glomsrød 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 0.10.38-7 +- Rebuild - this should fix #52463 + +* Wed Aug 22 2001 Trond Eivind Glomsrød 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 +- Added "--append" and "-o" to msghack, which should address + initial concerns in #50065 + +* Thu Jul 19 2001 Trond Eivind Glomsrød +- New msghack - from scratch, in python + +* Tue Jul 17 2001 Trond Eivind Glomsrød +- msghack is back + +* Mon Jun 4 2001 Trond Eivind Glomsrød +- Include some docfiles + +* Sun Jun 03 2001 Florian La Roche +- 0.10.38 +- do not include charset.alias + +* Wed May 2 2001 Nalin Dahyabhai +- Build statically. + +* Mon Apr 30 2001 Trond Eivind Glomsrød +- 0.10.37 +- Disable all but two patches + +* Sun Feb 25 2001 Trond Eivind Glomsrød +- Initialize proper fonts when entering po-mode (#29152) + +* Mon Feb 12 2001 Yukihiro Nakai +- More fix about msgmerge. + +* Mon Feb 12 2001 Yukihiro Nakai +- Fix for msgmerge not to break multibyte strings + at Japanese locale. + +* Wed Jan 24 2001 Matt Wilson +- fixed the %%lang generator to not have "./" in the lang + +* Sun Jan 14 2001 Trond Eivind Glomsrød +- add an init file for the emacs po-mode +- update source URL + +* Thu Jan 11 2001 Bill Nottingham +- put gettext in /bin for initscripts use +- %%langify + +* Fri Dec 29 2000 Bill Nottingham +- prereq /sbin/install-info + +* Wed Aug 23 2000 Trond Eivind Glomsrød +- Added patch from Ulrich Drepper + +* Fri Aug 04 2000 Trond Eivind Glomsrød +- update DESTDIR patch (#12072) + +* Thu Jul 13 2000 Prospector +- automatic rebuild + +* Mon Jul 10 2000 Trond Eivind Glomsrød +- fix problems wrt to DESTDIR (#12072) + +* Thu Jun 22 2000 Preston Brown +- use FHS paths +- add buildroot patch for .../intl/Makefile.in, was using abs. install path + +* Fri Apr 28 2000 Bill Nottingham +- minor configure tweaks for ia64 + +* Sun Feb 27 2000 Cristian Gafton +- add --comments to msghack + +* Thu Feb 10 2000 Cristian Gafton +- fix bug #9240 - gettextize has the right aclocal patch + +* Wed Jan 12 2000 Cristian Gafton +- add the --diff and --dummy options + +* Wed Oct 06 1999 Cristian Gafton +- add the --missing option to msghack + +* Wed Sep 22 1999 Cristian Gafton +- updated msghack not to merge in fuzzies in the master catalogs + +* Thu Aug 26 1999 Cristian Gafton +- updated msghack to understand --append + +* Wed Aug 11 1999 Cristian Gafton +- updated msghack to correctly deal with sorting files + +* Thu May 06 1999 Cristian Gafton +- msghack updates + +* Sun Mar 21 1999 Cristian Gafton +- auto rebuild in the new build environment (release 8) + +* Mon Mar 08 1999 Cristian Gafton +- added patch for misc hacks to facilitate rpm translations + +* Thu Dec 03 1998 Cristian Gafton +- patch to allow to build on ARM + +* Wed Sep 30 1998 Jeff Johnson +- add Emacs po-mode.el files. + +* Sun Sep 13 1998 Cristian Gafton +- include the aclocal support files + +* Fri Sep 3 1998 Bill Nottingham +- remove devel package (functionality is in glibc) + +* Tue Sep 1 1998 Jeff Johnson +- update to 0.10.35. + +* Mon Jun 29 1998 Jeff Johnson +- add gettextize. +- create devel package for libintl.a and libgettext.h. + +* Mon Apr 27 1998 Prospector System +- translations modified for de, fr, tr + +* Sun Nov 02 1997 Cristian Gafton +- added info handling +- added misc-patch (skip emacs-lisp modofications) + +* Sat Nov 01 1997 Erik Troan +- removed locale.aliases as we get it from glibc now +- uses a buildroot + +* Mon Jun 02 1997 Erik Troan +- Built against glibc diff --git a/msghack.py b/msghack.py new file mode 100755 index 0000000..8d700e9 --- /dev/null +++ b/msghack.py @@ -0,0 +1,421 @@ +#!/usr/bin/python +## -*- coding: utf-8 -*- +## Copyright (C) 2001, 2008 Red Hat, Inc. +## Copyright (C) 2001 Trond Eivind Glomsrød + +## v0.2 - 2001-08-21 + +## 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 2 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, write to the Free Software +## Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +""" +A msghack replacement +""" + +import string +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=string.strip(message) + self._id=string.strip(id) + 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 not msght.has_key(msg._id): + 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 msgids.has_key(msgid): + 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(string.strip(line)) + for line in lines: + pos=string.find(line,'"') + pos2=string.rfind(line,'"') + if line and line[0]=="#": + refs.append(string.strip(line)) + 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) -- cgit