X-Git-Url: http://git.pld-linux.org/?p=packages%2Frpm-build-macros.git;a=blobdiff_plain;f=rpm-find-lang;h=8b440fa563170173873261ed412a928d90c84d3d;hp=dd034d59914d349205dc1a80fffca4a9131a7df7;hb=0a9bb9747529d8f89a74f6db5f317abe1454d8ac;hpb=312a51e249a7806844c178c670a47e65be7c5b53 diff --git a/rpm-find-lang b/rpm-find-lang index dd034d5..8b440fa 100644 --- a/rpm-find-lang +++ b/rpm-find-lang @@ -1,7 +1,6 @@ #!/bin/sh -# $Id$ -# findlang - automagically generate list of language specific files +# find-lang - automagically generate list of language specific files # for inclusion in an rpm spec file. # This does assume that the *.mo files are under .../share/locale/... # Run with no arguments gets a usage message. @@ -35,7 +34,7 @@ # * start support for KDE help files PROG=${0##*/} -VERSION=$(set -- $Revision$; echo $2) +VERSION=1.35 usage () { cat < $OUTPUT" +MO_NAME=.$OUTPUT.tmp~ echo '%defattr(644,root,root,755)' > $MO_NAME +# .mo if [ ! -f __find.files ] || [ "$TOP_DIR" -nt __find.files ]; then find $TOP_DIR -xtype f -name '*.mo' | xargs -r file -L | \ sed -e ' @@ -134,6 +156,7 @@ else echo "$PROG: Using cached __find.files" fi +# .omf if [ ! -f __omf.files ] || [ "$TOP_DIR" -nt __omf.files ]; then find $TOP_DIR -type f -name '*.omf' | \ sed -e ' @@ -142,6 +165,16 @@ else echo "$PROG: Using cached __omf.files" fi +# .qm +if [ ! -f __qm.files ] || [ "$TOP_DIR" -nt __qm.files ]; then + find $TOP_DIR -type f -name '*.qm' | \ + sed -e ' + s:'"$TOP_DIR"'::' > __qm.files +else + echo "$PROG: Using cached __qm.files" +fi + +# .mo ( if [ "$ALL_NAME" ]; then fgrep $NAME __find.files @@ -154,6 +187,7 @@ fi /^[^%]/d s:%lang(C) ::' >> $MO_NAME +# .omf ( if [ "$ALL_NAME" ]; then fgrep $NAME __omf.files @@ -166,12 +200,26 @@ s:%lang(C) ::' >> $MO_NAME /^[^%]/d s:%lang(C) ::' >> $MO_NAME +# .qm +( + if [ "$ALL_NAME" ]; then + fgrep $NAME __qm.files + else + cat __qm.files + fi +) | sed ' +'"$ALL_NAME$QM"'s:\(.*/share/locale/\)\([^/@]\+\)\(@quot\|@boldquot\)\?\(@[^/]*\)\?\(/.*\.qm$\):%lang(\2\4) \1\2\3\4\5: +'"$NO_ALL_NAME$QM"'s:\(.*/share/locale/\)\([^/@]\+\)\(@quot\|@boldquot\)\?\(@[^/]*\)\?\(/.*/'"$NAME"'\.qm$\):%lang(\2\4) \1\2\3\4\5: +/^[^%]/d +s:%lang(C) ::' >> $MO_NAME + if [ ! -f __find.dirs ] || [ "$TOP_DIR" -nt __find.dirs ]; then find $TOP_DIR -mindepth 1 -type d | sed 's:'"$TOP_DIR"'::' > __find.dirs else echo "$PROG: Using cached __find.dirs" fi +# gnome ( if [ "$ALL_NAME" ]; then fgrep $NAME __find.dirs @@ -179,13 +227,16 @@ fi cat __find.dirs fi ) | sed ' +'"$NO_ALL_NAME$GNOME"'s:\(.*/share/help/\)\([^/]\+\)\(/'"$NAME"'\)$:%lang(\2) \1\2\3: '"$NO_ALL_NAME$GNOME"'s:\(.*/gnome/help/'"$NAME"'$\):%dir \1: '"$NO_ALL_NAME$GNOME"'s:\(.*/gnome/help/'"$NAME"'/\)\([^/]\+\)$:%lang(\2) \1\2: +'"$ALL_NAME$GNOME"'s:\(.*/share/help/\)\([^/]\+\)\(/[^/]\+\)$:%lang(\2) \1\2\3: '"$ALL_NAME$GNOME"'s:\(.*/gnome/help/[^/]\+$\):%dir \1: '"$ALL_NAME$GNOME"'s:\(.*/gnome/help/[^/]\+/\)\([^/]\+\)$:%lang(\2) \1\2: /^[^%]/d s:%lang(C) ::' >> $MO_NAME +# kde ( if [ "$ALL_NAME" ]; then fgrep $NAME __find.dirs @@ -211,6 +262,13 @@ s:%lang(C) ::' >> $MO_NAME s:%lang(C) ::' >> $MO_NAME if [ "$(egrep -v '(^%defattr|^$)' $MO_NAME | wc -l)" -le 0 ]; then - echo >&2 "Error: international files not found for $NAME!" + echo >&2 "$PROG: Error: international files not found for '$NAME'!" exit 1 fi + +if [ "$APPEND" ]; then + cat $MO_NAME >> $OUTPUT + rm -f $MO_NAME +else + mv -f $MO_NAME $OUTPUT +fi