#!/bin/sh NAME="$1" shift cat <<EOF %package locale-$NAME Summary: Localization data for $NAME Group: Internationalization/$NAME Requires: %name-common = %version-%release Provides: glibc-locale-$NAME = %version-%release Obsoletes: glibc-locale-$NAME < %version-%release Requires(post): %_bindir/localedef Requires(postun): %_sbindir/rebuild-locale-archive EOF while echo $1 |grep -q '^REQ:'; do echo Requires: %name-locale-`echo $1 |cut -d: -f2-` = %version-%release shift done cat <<EOF %description locale-$NAME Localization data for $NAME %postun locale-$NAME if [ "$1" = "0" ]; then # There is no way to remove locale data from the locale-archive cache # without rebuilding the entire thing... %_sbindir/rebuild-locale-archive fi %post locale-$NAME EOF FILES="" while [ "$#" -gt 0 ]; do # $1: Full locale name with charset, e.g. de_CH.UTF-8/UTF-8 # L: country without extra charset, e.g. de_CH.UTF-8 L="`echo $1 |sed -e 's,/.*,,'`" # N: language without charset, e.g. de_CH N="`echo $L |sed -e 's,\..*,,'`" # C: Charset, e.g. UTF-8 C="`echo $1 |sed -e 's,.*/,,'`" # S: simplified locale, e.g. de S="`echo $N |sed -e 's,_.*,,'`" echo "%_bindir/localedef -i $N -f $C $L -A %_datadir/locale/locale.alias 2>/dev/null" echo $FILES |grep -q "%_datadir/i18n/locales/$N" || FILES="$FILES %_datadir/i18n/locales/$N" # The following 2 are owned by the filesystem package to prevent dependencies # echo $FILES |grep -q "%_datadir/locale/$S" || FILES="$FILES %optional %_datadir/locale/$S" # echo $FILES |grep -q "%_datadir/locale/$N" || FILES="$FILES %optional %_datadir/locale/$N" shift done echo echo "%files locale-$NAME" for i in $FILES; do if [ "$i" = "%optional" ]; then echo -n "$i " else echo $i fi done echo