%define major 8 %define intllibname %mklibname intl %{major} %define misclibname %mklibname gettextmisc %define bootstrap 0 %{?_without_bootstrap: %global bootstrap 0} %{?_with_bootstrap: %global bootstrap 1} %define do_check 1 %{?_without_check: %global do_check 0} %define enable_java 0 %{?_without_java: %global enable_java 0} %define enable_csharp 0 %{?_with_csharp: %global enable_csharp 1} Name: gettext Summary: GNU libraries and utilities for producing multi-lingual messages Version: 0.19 Release: %mkrel 1 License: GPLv3+ and LGPLv2+ Group: System/Internationalization URL: http://www.gnu.org/software/gettext/ Source: ftp://ftp.gnu.org/pub/gnu/%{name}/%{name}-%{version}.tar.gz Source1: ftp://ftp.gnu.org/pub/gnu/%{name}/%{name}-%{version}.tar.gz.sig Source2: po-mode-init.el Patch8: gettext-0.18.3.2-fix-str-fmt.patch Patch9: gettext-0.18.2.1-linkage.patch Patch10: libcroco-0.6.2-format-strings.patch # (Abel) we pick mono here, though pnet can be used as well. %if %enable_csharp BuildRequires: mono %endif %if %enable_java BuildRequires: eclipse-ecj BuildRequires: gcc-java BuildRequires: gcj-tools BuildRequires: fastjar %endif BuildRequires: automake BuildRequires: bison BuildRequires: flex BuildRequires: texinfo BuildRequires: libgomp-devel # not necessary best way to do it but without gettext-devel # the bootstrap game is lost %if !%bootstrap BuildRequires: emacs-bin BuildRequires: libcroco0.6-devel %endif BuildRequires: libunistring-devel BuildRequires: ncurses-devel BuildRequires: libxml2-devel BuildRequires: acl-devel # test suite BuildRequires: locales-fa BuildRequires: locales-fr BuildRequires: locales-ja BuildRequires: locales-zh Requires: %{name}-base = %{version} Requires: %{misclibname} = %{version} # xgettext will dlopen() it when extracting strings from glade files Requires: %mklibname expat 1 Requires(post): info-install Requires(preun): info-install %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. If you would like to internationalize or incorporate multi-lingual messages into programs that you're developing, you should install gettext. Build Option: --with csharp Enables C# support in gettext --without java Disables Java support in gettext %package -n %{intllibname} Summary: Basic libintl library for internationalization Group: System/Libraries License: LGPL Requires(pre): filesystem >= 2.1.9-18 Provides: libintl = %{version}-%{release} %description -n %{intllibname} This package contains the libintl library, which is important for system internationalization. %package -n %{misclibname} Summary: Other %{name} libraries needed by %{name} utilities Group: System/Libraries License: LGPL Provides: libgettextmisc %description -n %{misclibname} This package contains all other libraries used by %{name} utilities, and are not very widely used outside %{name}. %package devel Summary: Development files for %{name} Group: Development/C # autopoint is GPLv3+ # libasprintf is LGPLv2+ # libgettextpo is GPLv3+ License: LGPLv2+ and GPLv3+ Requires: %{name} = %{version} # fwang: autopoint requires cvs to work %if !%bootstrap Requires: cvs %endif Requires(post): info-install Requires(preun): info-install %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 base Summary: Basic binary for showing translation of textual messages Group: System/Internationalization Requires(pre): filesystem >= 2.1.9-18 Requires: %{intllibname} = %{version} %description base This package contains the basic binary from %{name}. It is splitted from %{name} because initscript need it to show translated boot messages. %if %enable_java %package java Summary: Java binding for GNU gettext Group: System/Internationalization Requires: %{name} = %{version} %description java This package contains class file that implements the main GNU libintl functions in Java. This allows compiling GNU gettext message catalogs into Java ResourceBundle classes. %endif %if %enable_csharp %package csharp Summary: C# binding for GNU gettext Group: System/Internationalization Requires: mono %description csharp This package contains class file that implements the main GNU libintl functions in C#. This allows compiling GNU gettext message catalogs into C# dll or resource files. %endif %prep %setup -q %apply_patches %build %if %enable_java export GCJ="%{_bindir}/gcj" export JAVAC="%{_bindir}/gcj -C" export JAR="%{_bindir}/fastjar" %endif autoreconf -fi for i in `find -name configure|sort` do pushd `dirname $i` %configure2_5x \ --enable-shared \ --disable-static \ --disable-rpath \ --with-included-gettext \ %if %enable_csharp --enable-csharp=mono \ %else --disable-csharp \ %endif %if ! %enable_java --disable-java \ %endif popd done %make %if %do_check %check export JAVAC=ecj LC_ALL=C make check %endif %install rm -rf $RPM_BUILD_ROOT %makeinstall_std # remove unwanted files rm -f $RPM_BUILD_ROOT%{_includedir}/libintl.h \ $RPM_BUILD_ROOT%{_datadir}/locale/locale.alias rm -f gettext-runtime/intl-java/javadoc2/package-list install -D -m 644 %{SOURCE2} $RPM_BUILD_ROOT%{_sysconfdir}/emacs/site-start.d/%{name}.el # remove non-standard lc directories for i in en@boldquot en@quot ; do rm -rf $RPM_BUILD_ROOT/%{_datadir}/locale/$i; done # move installed doc back to %%doc rm -rf htmldoc examples mkdir htmldoc for i in gettext-runtime/man/*.html; do rm -f $RPM_BUILD_ROOT%{_datadir}/doc/gettext/`basename $i` done rm -rf $RPM_BUILD_ROOT%{_datadir}/doc/gettext/javadoc* mv $RPM_BUILD_ROOT%{_datadir}/doc/gettext/* $RPM_BUILD_ROOT/%{_datadir}/doc/libasprintf/* htmldoc mv htmldoc/examples examples # remove java stuff, otherwise rpm complains %if !%enable_java rm -f $RPM_BUILD_ROOT%{_libdir}/%{name}/gnu.gettext.* \ $RPM_BUILD_ROOT%{_datadir}/%{name}/*.jar %endif # don't ship .la find %{buildroot} -name '*.la' -exec rm -f {} \; %find_lang %{name} --all-name %clean rm -rf $RPM_BUILD_ROOT %post %_install_info %{name}.info %preun %_remove_install_info %{name}.info %post devel %_install_info autosprintf.info %preun devel %_remove_install_info autosprintf.info %files %defattr(-,root,root) %doc AUTHORS README COPYING gettext-runtime/ABOUT-NLS gettext-runtime/BUGS NEWS THANKS %config(noreplace) %{_sysconfdir}/emacs/site-start.d/*.el %{_bindir}/envsubst %{_bindir}/gettext.sh %{_bindir}/msg* %{_bindir}/recode-sr-latin %{_bindir}/xgettext %dir %{_datadir}/gettext %{_datadir}/%{name}/msgunfmt.tcl %{_datadir}/%{name}/projects %{_datadir}/%{name}/javaversion.class %{_datadir}/%{name}/styles %dir %{_libdir}/%{name} %{_libdir}/%{name}/hostname %{_libdir}/%{name}/project-id %{_libdir}/%{name}/urlget %{_libdir}/%{name}/user-email %if %enable_java %exclude %{_libdir}/%{name}/gnu.gettext.* %endif %{_infodir}/gettext.* %if !%bootstrap %{_datadir}/emacs/site-lisp/*.el* %endif %{_mandir}/man1/envsubst.* %{_mandir}/man1/msg* %{_mandir}/man1/xgettext.* %{_mandir}/man1/recode-sr-latin.* %files base -f %{name}.lang %defattr(-,root,root) %doc gettext-runtime/man/*.1.html %{_bindir}/gettext %{_bindir}/ngettext %{_mandir}/man1/gettext* %{_mandir}/man1/ngettext* %files -n %{intllibname} %defattr(-,root,root) %doc gettext-runtime/intl/COPYING* %{_libdir}/libintl.so.* %files -n %{misclibname} %defattr(-,root,root) %doc gettext-runtime/intl/COPYING* %{_libdir}/libgettext*-*.*.so %{_libdir}/libgettext*.so.* %{_libdir}/libasprintf*.so.* %files devel %defattr(-,root,root) %doc gettext-runtime/man/*.3.html examples htmldoc %{_bindir}/autopoint %{_bindir}/gettextize %{_datadir}/%{name}/ABOUT-NLS %{_datadir}/%{name}/archive* %{_datadir}/%{name}/config.rpath %{_datadir}/%{name}/*.h %{_datadir}/%{name}/intl %{_datadir}/%{name}/po %{_datadir}/aclocal/* %{_includedir}/* %{_infodir}/autosprintf* # "lib*.so" cannot be used (it should be 'lib[^\.]*\.so' regexp in fact # but using regexp is not possible here; so we list all files manually %{_libdir}/libasprintf.so %{_libdir}/libgettextlib.so %{_libdir}/libgettextpo.so %{_libdir}/libgettextsrc.so %{_libdir}/libintl.so %{_mandir}/man1/autopoint.* %{_mandir}/man3/* %if %enable_java %files java %defattr(-,root,root) %doc gettext-runtime/intl-java/javadoc* %{_libdir}/%{name}/gnu.gettext.* %{_datadir}/%{name}/*.jar %endif %if %enable_csharp %files csharp %defattr(-,root,root) %doc gettext-runtime/intl-csharp/csharpdoc/* %{_libdir}/*.dll %{_libdir}/gettext/*.exe %endif