From bc79a82054ab9e35a91038c4c3f3d836627107b044778d97c0616ce83cc8cf70 Mon Sep 17 00:00:00 2001 From: Fridrich Strba Date: Wed, 15 Jul 2015 06:03:41 +0000 Subject: [PATCH] Accepting request 316385 from home:rhabacker:branches:windows:mingw:win64 add language support OBS-URL: https://build.opensuse.org/request/show/316385 OBS-URL: https://build.opensuse.org/package/show/windows:mingw:win64/mingw64-filesystem?expand=0&rev=91 --- languages | 128 +++++++++++++++++++ languages.man | 21 ++++ macros.mingw64 | 1 + mingw64-filesystem.spec | 25 +++- mingw64-find-lang.sh | 266 ++++++++++++++++++++++++++++++++++++++++ 5 files changed, 437 insertions(+), 4 deletions(-) create mode 100644 languages create mode 100644 languages.man create mode 100644 mingw64-find-lang.sh diff --git a/languages b/languages new file mode 100644 index 0000000..243eab6 --- /dev/null +++ b/languages @@ -0,0 +1,128 @@ +ar +as +ast +be +be@latin +bg +bn +bn_IN +ca +ca@valencia +cs +cs_CZ +da +de +de_AT +de_CH +de_DE +dz +el +el_GR +en +en@IPA +en@boldquot +en@quot +en@shaw +en_AU +en_CA +en_GB +en_NZ +en_US +eo +es +es_AR +es_CL +es_CO +es_CR +es_DO +es_EC +es_ES +es_GT +es_HN +es_MX +es_NI +es_PA +es_PE +es_PR +es_SV +es_UY +es_VE +et +et_EE +eu +fa +fi +fi_FI +fr +fr_CA +fr_CH +fr_FR +ga +gl +gu +he +hi +hr +hu +ia +id +is +it +it_CH +it_IT +ja +ja_JP.EUC +ja_JP.SJIS +ja_JP.eucJP +kk +km +kn +ko +lt +lv +mai +mk +ml +mr +nb +nb_NO +nds +nds_DE +ne +nl +nl_BE +nn +nn_NO +or +pa +pl +pl_PL +pt +pt_BR +pt_PT +ro +ru +ru_RU +ru_UA.koi8u +sk +sl +sl_SI +sq +sr +sr@ije +sr@latin +sv +ta +te +th +tr +tr_TR +ug +uk +uk_UA +vi +wa +zh +zh_CN +zh_HK +zh_TW diff --git a/languages.man b/languages.man new file mode 100644 index 0000000..3faf0ca --- /dev/null +++ b/languages.man @@ -0,0 +1,21 @@ +ca +cs +da +de +el +eo +es +fr +hu +it +ja +nl +pl +pt +pt_BR +ru +sk +sv +zh +zh_CN +zh_TW diff --git a/macros.mingw64 b/macros.mingw64 index 0d12140..fef0f47 100644 --- a/macros.mingw64 +++ b/macros.mingw64 @@ -54,6 +54,7 @@ %_mingw64_findprovides /usr/lib/rpm/mingw64-find-provides.sh %_mingw64_findrequires /usr/lib/rpm/mingw64-find-requires.sh %_mingw64_install_post /usr/lib/rpm/mingw64-install-post.sh +%_mingw64_find_lang /usr/lib/rpm/mingw64-find-lang.sh %{buildroot} %_mingw64_debug_install_post \ /usr/lib/rpm/mingw64-find-debuginfo.sh %{_builddir}\ diff --git a/mingw64-filesystem.spec b/mingw64-filesystem.spec index b12db47..9c26fd7 100644 --- a/mingw64-filesystem.spec +++ b/mingw64-filesystem.spec @@ -33,6 +33,9 @@ Source5: mingw64-find-provides.sh Source6: mingw64-scripts.sh Source7: mingw64-rpmlint.config Source8: mingw64-install-post.sh +Source9: mingw64-find-lang.sh +Source10: languages +Source11: languages.man Requires: mingw64-cross-breakpad-tools Requires: rpm BuildRoot: %{_tmppath}/%{name}-%{version}-build @@ -118,16 +121,30 @@ mkdir -p %{buildroot}%{_prefix}/x86_64-w64-mingw32/sys-root/mingw/share/man/man{ # NB. NOT _libdir mkdir -p %{buildroot}%{_libexecdir}/rpm install -m 0755 %{SOURCE3} %{buildroot}%{_libexecdir}/rpm -install -m 0755 mingw64-find-requires.sh %{buildroot}%{_libexecdir}/rpm +install -m 0755 %{SOURCE4} %{buildroot}%{_libexecdir}/rpm install -m 0755 %{SOURCE5} %{buildroot}%{_libexecdir}/rpm install -m 0755 %{SOURCE8} %{buildroot}%{_libexecdir}/rpm +install -m 0755 %{SOURCE9} %{buildroot}%{_libexecdir}/rpm + +# Create the locale directories: +while read LANG ; do + mkdir -p %{buildroot}%{_prefix}/x86_64-w64-mingw32/sys-root/mingw/share/locale/$LANG/LC_MESSAGES + mkdir -p %{buildroot}%{_prefix}/x86_64-w64-mingw32/sys-root/mingw/share/help/$LANG +done < %{SOURCE10} +# Create the locale directories for man: +while read LANG ; do + mkdir -p %{buildroot}%{_prefix}/x86_64-w64-mingw32/sys-root/mingw/share/man/$LANG + for sec in 1 2 3 4 5 6 7 8 9 n; do + mkdir -p %{buildroot}%{_prefix}/x86_64-w64-mingw32/sys-root/mingw/share/man/$LANG/man$sec + done +done < %{SOURCE11} %files %defattr(-,root,root,-) %doc COPYING -%{_sysconfdir}/rpm/macros.mingw64 -%{_sysconfdir}/profile.d/mingw64.sh -%{_sysconfdir}/rpmlint/mingw64-rpmlint.config +%config %{_sysconfdir}/rpm/macros.mingw64 +%config %{_sysconfdir}/profile.d/mingw64.sh +%config %{_sysconfdir}/rpmlint/mingw64-rpmlint.config %{_bindir}/mingw64-* %{_libexecdir}/mingw64-scripts %{_prefix}/x86_64-w64-mingw32/ diff --git a/mingw64-find-lang.sh b/mingw64-find-lang.sh new file mode 100644 index 0000000..418257d --- /dev/null +++ b/mingw64-find-lang.sh @@ -0,0 +1,266 @@ +#!/bin/sh +#mingw64-findlang - automagically generate list of language specific files +#for inclusion in an rpm spec file. +#This does assume that the *.mo files are under .../locale/... +#Run with no arguments gets a usage message. + +#mingw64-findlang is copyright (c) 1998 by W. L. Estes + +#Redistribution and use of this software are hereby permitted for any +#purpose as long as this notice and the above copyright notice remain +#in tact and are included with any redistribution of this file or any +#work based on this file. + +# 2015-07-03 Ralf Habacker +# * adapted to mingw32 +# 2004-06-20 Arkadiusz Miƛkiewicz +# * merge PLD changes, kde, all-name (mkochano,pascalek@PLD) +# 1999-10-19 Artur Frysiak +# * added support for GNOME help files +# * start support for KDE help files + +usage () { +cat <&2 +elif [ ! -d $1 ] ; then + echo $0: $1: no such directory + exit 1 +else TOP_DIR="`echo $1|sed -e 's:/$::'`" +fi +shift + +if [ -z "$1" ] ; then usage +else NAME=$1 +fi +shift + +GNOME= +KDE= +QT=# +MAN=# +MO= +MO_NAME=$NAME.lang +ALL_NAME=# +NO_ALL_NAME= +ONLY_C=# +NO_C=# + +while test $# -gt 0 ; do + case "${1}" in + --with-gnome ) + GNOME= + shift + ;; + --with-kde ) + KDE= + shift + ;; + --without-gnome ) + GNOME=# + shift + ;; + --without-kde ) + KDE=# + shift + ;; + --with-qt ) + QT= + shift + ;; + --with-man ) + MAN= + shift + ;; + --without-mo ) + MO=# + shift + ;; + --all-name ) + ALL_NAME= + NO_ALL_NAME=# + shift + ;; + --with-only-C ) + ONLY_C= + shift + ;; + --without-C ) + NO_C= + shift + ;; + * ) + MO_NAME=${1} + shift + ;; + esac +done + +if ! test -s $MO_NAME ; then + echo "%defattr (644, root, root, 755)" > $MO_NAME +fi +MO_NAME_NEW=$MO_NAME.tmp.$$ +rm -f $MO_NAME_NEW + +# remove languages we do not yet support - but give out statistics +find "$TOP_DIR/usr/x86_64-w64-mingw32/sys-root/mingw/share/locale/" -maxdepth 1 -type d | sed 's:'"$TOP_DIR"/usr/x86_64-w64-mingw32/sys-root/mingw/share/locale/'::; /^$/d' | while read dir; do + if ! rpm -ql mingw32-filesystem | egrep -q "/usr/x86_64-w64-mingw32/sys-root/mingw/share/locale/$dir"$; then + find $TOP_DIR/usr/x86_64-w64-mingw32/sys-root/mingw/share/locale/$dir -name *.mo | sed 's:'"$TOP_DIR"'::' | while read file; do + echo -n "removing translation $file: " + msgunfmt "$TOP_DIR/$file" | msgfmt --statistics -o /dev/null - + done + rm -rf $TOP_DIR/usr/x86_64-w64-mingw32/sys-root/mingw/share/locale/$dir + fi +done +find $TOP_DIR/usr/x86_64-w64-mingw32/sys-root/mingw/share/help/ -maxdepth 1 -type d | sed 's:'"$TOP_DIR"/usr/x86_64-w64-mingw32/sys-root/mingw/share/help/'::; /^$/d' | while read dir; do + if ! rpm -ql mingw32-filesystem | egrep -q "/share/help/$dir"$; then + echo "removing help translation /share/help/$dir" + rm -rf $TOP_DIR/usr/x86_64-w64-mingw32/sys-root/mingw/share/help/$dir + fi +done + +find "$TOP_DIR" -type f -o -type l|sed ' +s:'"$TOP_DIR"':: +'"$ALL_NAME$MO"'s:\(.*/locale/\)\([^/_]\+\)\(.*\.mo$\):%lang(\2) \1\2\3: +'"$NO_ALL_NAME$MO"'s:\(.*/locale/\)\([^/_]\+\)\(.*/'"$NAME"'\.mo$\):%lang(\2) \1\2\3: +s:^\([^%].*\):: +'"$ONLY_C"'/%lang(C)/!d +'"$NO_C"'/%lang(C)/d +s:%lang(C) :: +/^$/d' > $MO_NAME_NEW + +find "$TOP_DIR" -type d|sed ' +s:'"$TOP_DIR"':: +'"$NO_ALL_NAME$GNOME"'s:\(.*/share/help/\)\([^/_]\+\)\([^/]*\)\(/'"$NAME"'\)$:%lang(\2) %doc \1\2\3\4/: +'"$ALL_NAME$GNOME"'s:\(.*/share/help/\)\([^/_]\+\)\([^/]*\)\(/[a-zA-Z0-9.\_\-]\+\)$:%lang(\2) %doc \1\2\3\4/: +s:^\([^%].*\):: +'"$ONLY_C"'/%lang(C)/!d +'"$NO_C"'/%lang(C)/d +s:%lang(C) :: +/^$/d' >> $MO_NAME_NEW + +find "$TOP_DIR" -type d|sed ' +s:'"$TOP_DIR"':: +'"$NO_ALL_NAME$GNOME"'s:\(.*/gnome/help/'"$NAME"'$\):%lang(C) %dir %doc \1: +'"$NO_ALL_NAME$GNOME"'s:\(.*/gnome/help/'"$NAME"'/[a-zA-Z0-9.\_\-]/.\+\):: +'"$NO_ALL_NAME$GNOME"'s:\(.*/gnome/help/'"$NAME"'\/\)\([^/_]\+\):%lang(\2) %doc \1\2: +'"$ALL_NAME$GNOME"'s:\(.*/gnome/help/[a-zA-Z0-9.\_\-]\+$\):%lang(C) %dir %doc \1: +'"$ALL_NAME$GNOME"'s:\(.*/gnome/help/[a-zA-Z0-9.\_\-]\+/[a-zA-Z0-9.\_\-]/.\+\):: +'"$ALL_NAME$GNOME"'s:\(.*/gnome/help/[a-zA-Z0-9.\_\-]\+\/\)\([^/_]\+\):%lang(\2) %doc \1\2: +s:%lang(.*) .*/gnome/help/[a-zA-Z0-9.\_\-]\+/[a-zA-Z0-9.\_\-]\+/.*:: +s:^\([^%].*\):: +'"$ONLY_C"'/%lang(C)/!d +'"$NO_C"'/%lang(C)/d +s:%lang(C) :: +/^$/d' >> $MO_NAME_NEW + +find "$TOP_DIR" -type d|sed ' +s:'"$TOP_DIR"':: +'"$NO_ALL_NAME$GNOME"'s:\(.*/omf/'"$NAME"'$\):%dir \1: +'"$ALL_NAME$GNOME"'s:\(.*/omf/[a-zA-Z0-9.\_\-]\+$\):%dir \1: +s:^\([^%].*\):: +/^$/d' >> $MO_NAME_NEW + +find "$TOP_DIR" -type f|sed ' +s:'"$TOP_DIR"':: +'"$NO_ALL_NAME$GNOME"'s:\(.*/omf/'"$NAME"'/'"$NAME"'-\([^/.]\+\)\.omf\):%lang(\2) \1: +'"$ALL_NAME$GNOME"'s:\(.*/omf/[a-zA-Z0-9.\_\-]\+/[a-zA-Z0-9.\_\-]\+-\([^/.]\+\)\.omf\):%lang(\2) \1: +s:^[^%].*:: +'"$ONLY_C"'/%lang(C)/!d +'"$NO_C"'/%lang(C)/d +s:%lang(C) :: +/^$/d' >> $MO_NAME_NEW + +KDE3_HTML=`kde-config --expandvars --install html 2>/dev/null` +if [ x"$KDE3_HTML" != x -a -d "$TOP_DIR$KDE3_HTML" ]; then +find "$TOP_DIR$KDE3_HTML" -type d|sed ' +s:'"$TOP_DIR"':: +'"$NO_ALL_NAME$KDE"'s:\(.*/HTML/\)\([^/_]\+\)\(.*/'"$NAME"'/\):: +'"$NO_ALL_NAME$KDE"'s:\(.*/HTML/\)\([^/_]\+\)\(.*/'"$NAME"'\)$:%lang(\2) \1\2\3: +'"$ALL_NAME$KDE"'s:\(.*/HTML/\)\([^/_]\+\)\(.*/[a-zA-Z0-9.\_\-]\+/\):: +'"$ALL_NAME$KDE"'s:\(.*/HTML/\)\([^/_]\+\)\(.*/[a-zA-Z0-9.\_\-]\+$\):%lang(\2) \1\2\3: +s:^\([^%].*\):: +'"$ONLY_C"'/%lang(C)/!d +'"$NO_C"'/%lang(C)/d +s:%lang(C) :: +/^$/d' >> $MO_NAME_NEW +fi + +KDE4_HTML=`kde4-config --expandvars --install html 2>/dev/null` +if [ x"$KDE4_HTML" != x -a -d "$TOP_DIR$KDE4_HTML" ]; then +find "$TOP_DIR$KDE4_HTML" -type d|sed ' +s:'"$TOP_DIR"':: +'"$NO_ALL_NAME$KDE"'s:\(.*/HTML/\)\([^/_]\+\)\(.*/'"$NAME"'/\):: +'"$NO_ALL_NAME$KDE"'s:\(.*/HTML/\)\([^/_]\+\)\(.*/'"$NAME"'\)$:%lang(\2) \1\2\3: +'"$ALL_NAME$KDE"'s:\(.*/HTML/\)\([^/_]\+\)\(.*/[a-zA-Z0-9.\_\-]\+/\):: +'"$ALL_NAME$KDE"'s:\(.*/HTML/\)\([^/_]\+\)\(.*/[a-zA-Z0-9.\_\-]\+$\):%lang(\2) \1\2\3: +s:^\([^%].*\):: +'"$ONLY_C"'/%lang(C)/!d +'"$NO_C"'/%lang(C)/d +s:%lang(C) :: +/^$/d' >> $MO_NAME_NEW +fi + +find "$TOP_DIR" -type f -o -type l|sed ' +s:'"$TOP_DIR"':: +'"$NO_ALL_NAME$QT"'s:\(.*/'"$NAME"'_\([a-zA-Z]\{2\}\([_@].*\)\?\)\.qm$\):%lang(\2) \1: +'"$ALL_NAME$QT"'s:\(.*/[^/_]\+_\([a-zA-Z]\{2\}[_@].*\)\.qm$\):%lang(\2) \1: +'"$ALL_NAME$QT"'s:\(.*/[^/_]\+_\([a-zA-Z]\{2\}\)\.qm$\):%lang(\2) \1: +'"$ALL_NAME$QT"'s:^\([^%].*/[^/]\+_\([a-zA-Z]\{2\}[_@].*\)\.qm$\):%lang(\2) \1: +'"$ALL_NAME$QT"'s:^\([^%].*/[^/]\+_\([a-zA-Z]\{2\}\)\.qm$\):%lang(\2) \1: +s:^[^%].*:: +'"$ONLY_C"'/%lang(C)/!d +'"$NO_C"'/%lang(C)/d +s:%lang(C) :: +/^$/d' >> $MO_NAME_NEW + +find "$TOP_DIR" -type d|sed ' +s:'"$TOP_DIR"':: +'"$ALL_NAME$MAN"'s:\(.*/man/\([^/_]\+\).*/man[a-z0-9]\+/\):: +'"$ALL_NAME$MAN"'s:\(.*/man/\([^/_]\+\).*/man[a-z0-9]\+$\):%lang(\2) \1*: +s:^\([^%].*\):: +'"$ONLY_C"'/%lang(C)/!d +'"$NO_C"'/%lang(C)/d +s:%lang(C) :: +/^$/d' >> $MO_NAME_NEW + +find "$TOP_DIR" -type f -o -type l|sed ' +s:'"$TOP_DIR"':: +'"$NO_ALL_NAME$MAN"'s:\(.*/man/\([^/_]\+\).*/man[a-z0-9]\+/'"$NAME"'\.[a-z0-9].*\):%lang(\2) \1*: +s:^\([^%].*\):: +'"$ONLY_C"'/%lang(C)/!d +'"$NO_C"'/%lang(C)/d +s:%lang(C) :: +/^$/d' >> $MO_NAME_NEW + +if ! grep -q / $MO_NAME_NEW; then + echo "No translations found for ${NAME} in ${TOP_DIR}" + rm -f $MO_NAME_NEW + exit 1 +fi + +sort -u $MO_NAME_NEW >> $MO_NAME +rm -f $MO_NAME_NEW + +exit 0