# HG changeset patch # User Aleksej Bobylev # Date 1515505225 -7200 # Node ID 5dcba97b45a17a819af06b6812a5621c542ba392 # Parent 4f7bb0dba96f0241f894bdf59ed6f81e7d8b1a50 slitaz-i18n: provide locale-*-base packages without reference to SliTaz LXDE-based flavors (for using in LXQt-based flavor) diff -r 4f7bb0dba96f -r 5dcba97b45a1 slitaz-i18n/receipt --- a/slitaz-i18n/receipt Sun Jan 07 17:52:41 2018 +0100 +++ b/slitaz-i18n/receipt Tue Jan 09 15:40:25 2018 +0200 @@ -10,19 +10,27 @@ HOST_ARCH="i486 arm" BUILD_DEPENDS_arm=" " -SPLIT="locale-ar locale-ca locale-cs locale-da locale-de locale-el locale-en \ -locale-es locale-fi locale-fr locale-hr locale-hu locale-id locale-is \ -locale-it locale-ja locale-nb locale-nl locale-nn locale-pl locale-pt \ -locale-pt_BR locale-ro locale-ru locale-sl locale-sv locale-tr locale-uk \ -locale-zh_CN locale-zh_TW slitaz-i18n" +SPLIT="\ +locale-ar-base locale-ar locale-ca-base locale-ca locale-cs-base locale-cs \ +locale-da-base locale-da locale-de-base locale-de locale-el-base locale-el \ +locale-en-base locale-en locale-es-base locale-es locale-fi-base locale-fi \ +locale-fr-base locale-fr locale-hr-base locale-hr locale-hu-base locale-hu \ +locale-id-base locale-id locale-is-base locale-is locale-it-base locale-it \ +locale-ja-base locale-ja locale-nb-base locale-nb locale-nl-base locale-nl \ +locale-nn-base locale-nn locale-pl-base locale-pl locale-pt-base locale-pt \ +locale-pt_BR-base locale-pt_BR \ +locale-ro-base locale-ro locale-ru-base locale-ru locale-sl-base locale-sl \ +locale-sv-base locale-sv locale-tr-base locale-tr locale-uk-base locale-uk \ +locale-zh_CN-base locale-zh_CN \ +locale-zh_TW-base locale-zh_TW \ +slitaz-i18n" -# Rules to gen a SliTaz package suitable for Tazpkg. -genpkg_rules() -{ +genpkg_rules() { . $stuff/locale-pack.functions . $stuff/locale-pack.conf + case $PACKAGE in - *-i18n) + slitaz-i18n) # Allow to build the packages who want me... sed -i "/^$PACKAGE\$/d" $CACHE/broken 2>/dev/null || true @@ -52,129 +60,137 @@ ================================================================================ EOT ;; - *-ar) C="Arabic" + esac + + locale="$(echo $PACKAGE | cut -d- -f2)" # ar, ca, cs, da, de..., i18n + option="$(echo $PACKAGE | cut -d- -f3)" # '', base + + case $locale in + i18n) # nothing to do here + ;; + ar) C="Arabic" get_locale "ar" "" "" \ "" "SA:ara US:us" \ "ISO8859-6 IBM864 CP1256";; - *-ca) C="Catalan" + ca) C="Catalan" # it_IT for ca_IT get_locale "ca" "it_IT" "" \ "" "AD:ad" \ "CP1252 ISO8859-1 ISO8859-3 ISO8859-9 ISO8859-9E ISO8859-15";; - *-cs) C="Czech" + cs) C="Czech" get_locale "cs" "" "" \ "cz-lat2" "CZ:cz" \ "ISO8859-2 IBM852 CP1250";; - *-da) C="Danish" + da) C="Danish" get_locale "da" "" "" \ "dk-latin1" "DK:dk" \ "IBM865 ISO8859-1 ISO8859-15";; - *-de) C="German" + de) C="German" # fr_BE for de_BE get_locale "de" "fr_BE" "" \ "de-latin1 de_CH-latin1 sg-latin1" "DE:de AT:at CH:ch" \ "ISO8859-1 ISO8859-15";; - *-el) C="Greek" + el) C="Greek" get_locale "el" "" "" \ "gr" "GR:gr US:us" \ "ISO8859-7 IBM869 CP1253 ISO8859-15";; - *-en) C="English" + en) C="English" get_locale "en" "" "" \ "uk us us-acentos dvorak dvorak-l dvorak-r" "CM:cm GH:gh NG:ng ZA:za GB:gb US:us" \ "ISO8859-1 ISO8859-15";; - *-es) C="Spanish" + es) C="Spanish" get_locale "es" "" "" \ "es" "ES:es ES:latam" \ "ISO8859-1 ISO8859-15";; - *-fi) C="Finnish" + fi) C="Finnish" get_locale "fi" "" "" \ "fi" "FI:fi" \ "ISO8859-1 ISO8859-15";; - *-fr) C="French" + fr) C="French" # en_CA for fr_CA; de_CH for fr_CH get_locale "fr" "en_CA de_CH" "" \ "fr-latin1 be-latin1 cf fr_CH-latin1" "FR:fr CA:ca CD:cd GN:gn" \ "ISO8859-1 ISO8859-15";; - *-hr) C="Croatian" + hr) C="Croatian" get_locale "hr" "" "" \ "croat" "HR:hr" \ "ISO8859-2";; - *-hu) C="Hungarian" + hu) C="Hungarian" get_locale "hu" "" "" \ "hu" "HU:hu" \ "ISO8859-2 IBM852 CP1250";; - *-id) C="Indonesian" + id) C="Indonesian" get_locale "id" "" "" \ "" "" \ "ISO8859-1 ISO8859-15";; - *-is) C="Icelandic" + is) C="Icelandic" get_locale "is" "" "" \ "is-latin1" "IS:is" \ "ISO8859-1 ISO8859-15";; - *-it) C="Italian" + it) C="Italian" # de_CH for it_CH get_locale "it" "de_CH" "" \ "it" "IT:it" \ "ISO8859-1 ISO8859-15";; - *-ja) C="Japanese" + ja) C="Japanese" get_locale "ja" "translit_cjk_variants" "" \ "jp106" "JP:jp US:us" \ "EUC-JP EUC-JP-MS SJIS libJIS";; - *-nb) C="Norwegian (Bokmål)" + nb) C="Norwegian (Bokmål)" get_locale "nb" "" "" \ "no-latin1" "NO:no" \ "ISO8859-1 ISO8859-15";; - *-nl) C="Dutch" + nl) C="Dutch" get_locale "nl" "" "" \ "nl2" "NL:nl" \ "ISO8859-1 ISO8859-15";; - *-nn) C="Norwegian (Nynorsk)" + nn) C="Norwegian (Nynorsk)" get_locale "nn" "" "" \ "no-latin1" "NO:no" \ "ISO8859-1 ISO8859-15";; - *-pl) C="Polish" + pl) C="Polish" get_locale "pl" "" "" \ "pl2" "PL:pl" \ "ISO8859-2 IBM852 CP1250";; - *-pt) C="Portuguese" + pt) C="Portuguese" get_locale "pt" "" "pt_PT pt_PT@euro" \ "pt-latin1" "PT:pt" \ "ISO8859-1 ISO8859-15";; - *-pt_BR) C="Portuguese/Brazilian" + pt_BR) C="Portuguese/Brazilian" # pt_PT for pt_BR get_locale "pt_BR" "pt_PT" "" \ "br-abnt2 us-acentos" "BR:br" \ "ISO8859-1 ISO8859-15";; - *-ro) C="Romanian" + ro) C="Romanian" get_locale "ro" "" "" \ "ro ro_std ro_win" "RO:ro" \ "IBM852 CP1250 ISO8859-2 ISO8859-16";; - *-ru) C="Russian" + ru) C="Russian" get_locale "ru" "" "" \ "ru" "US:us RU:ru UA:ua" \ "ISO8859-5 KOI8-R KOI8-U IBM866 CP1251";; - *-sl) C="Slovenian" + sl) C="Slovenian" get_locale "sl" "" "" \ "slovene" "SI:si" \ "ISO8859-2 IBM852 CP1250";; - *-sv) C="Swedish" + sv) C="Swedish" # fi_FI for sv_FI; fi_FI@euro for sv_FI@euro get_locale "sv" "fi_FI fi_FI@euro" "" \ "se-lat6" "SE:se" \ "ISO8859-1 ISO8859-15";; - *-tr) C="Turkish" + tr) C="Turkish" get_locale "tr" "" "" \ "trq tr_q-latin5" "TR:tr" \ "ISO8859-9";; - *-uk) C="Ukrainian" + uk) C="Ukrainian" get_locale "uk" "" "" \ "ua" "US:us RU:ru UA:ua" \ "ISO8859-5 KOI8-R KOI8-U IBM866 CP1251";; - *-zh_CN) C="Chinese Simplified" + zh_CN) C="Chinese Simplified" get_locale "zh_CN" "iso14651_t1_pinyin" "" \ "" "CN:cn" \ "EUC-CN GBK GB18030 libGB";; - *-zh_TW) C="Chinese Traditional" + zh_TW) C="Chinese Traditional" get_locale "zh_TW" "zh_CN" "" \ "" "TW:tw" \ "BIG5 EUC-TW libCNS";; @@ -182,20 +198,23 @@ case $PACKAGE in *-i18n) DEPENDS="";; - *-zh_CN) DEPENDS="glibc-base wqy-microhei";; - *-zh_TW) DEPENDS="glibc-base pcf-uming";; - *) DEPENDS="glibc-base";; + *-base) DEPENDS="glibc-base";; + *-zh_CN) DEPENDS="locale-zh_CN-base wqy-microhei";; + *-zh_TW) DEPENDS="locale-zh_TW-base pcf-uming";; + *) DEPENDS="$PACKAGE-base";; esac case $PACKAGE in - locale-*) CAT="localization|$C locale pack";; + locale-*-base) CAT="localization|$C base locale pack";; + locale-*) CAT="localization|$C locale pack";; esac } # Back to C if it's the last used locale. post_remove() { - [ "$PACKAGE" == 'slitaz-i18n' ] || - echo -e "LANG=C\nLC_ALL=C" > "$1/etc/locale.conf" + case $PACKAGE in + *-base) echo -e "LANG=C\nLC_ALL=C" > "$1/etc/locale.conf";; + esac } post_install_locale_zh_CN() { diff -r 4f7bb0dba96f -r 5dcba97b45a1 slitaz-i18n/stuff/locale-pack.functions --- a/slitaz-i18n/stuff/locale-pack.functions Sun Jan 07 17:52:41 2018 +0100 +++ b/slitaz-i18n/stuff/locale-pack.functions Tue Jan 09 15:40:25 2018 +0200 @@ -1,169 +1,192 @@ -get_locale() -{ - LOCALE="$1"; LOCALE_DEPENDS="$2"; LOCALEDEF="$3" - KBD="$4"; KB_FLAGS="$5"; GCONV="$6" +get_locale() { + LOCALE="$1" + LOCALE_DEPENDS="$2" + LOCALEDEF="$3" + KBD="$4" + KB_FLAGS="$5" + GCONV="$6" [ -z "$CHARMAP" ] && CHARMAP='UTF-8' - case "$SLITAZ_ARCH" in - arm*) ;; - i?86) - # Get translated Openbox menu from SliTaz sub project slitaz-configs - obmenu="$WOK/slitaz-configs/install/etc/xdg/openbox/menu.$LOCALE.xml" - if [ -f "$obmenu" ]; then - mkdir -p $fs/etc/xdg/openbox - echo "* Found $LOCALE translations for: openbox menu" - cp $obmenu $fs/etc/xdg/openbox + + case "$option" in + base) + # for locale-*-base packages ======================================= + # (locale-related files shared across all the flavors, for example LXQt flavor) + + case "$SLITAZ_ARCH" in + arm*) ;; + i?86) + # Get translated Openbox menu from SliTaz sub project slitaz-configs + obmenu="$WOK/slitaz-configs/install/etc/xdg/openbox/menu.$LOCALE.xml" + if [ -f "$obmenu" ]; then + mkdir -p $fs/etc/xdg/openbox + echo "* Found $LOCALE translations for: openbox menu" + cp $obmenu $fs/etc/xdg/openbox + fi + ;; + esac + + # List of available locales + if [ -d "$WOK/glibc/install/usr/share/i18n/locales" ]; then + cd $WOK/glibc/install/usr/share/i18n/locales + locales=$(ls -1 | sed -n '/^'$LOCALE'$/p; /^'$LOCALE'_.*/p' | sed '/translit/d') + else + locales='' fi + [ -n "$LOCALEDEF" ] && locales="$LOCALEDEF" + + # Get X11 locale + for def in $locales; do + x11_locale="$WOK/xorg-libX11/install/usr/share/X11/locale/$def.$CHARMAP" + case "$def.$CHARMAP" in + en_US.UTF-8) + # belongs to "xorg-libX11" package, skip it + ;; + *) + if [ -d "$x11_locale" ]; then + echo "* Found $def.$CHARMAP locale for: X11" + mkdir -p $fs/usr/share/X11/locale + cp -a $x11_locale $fs/usr/share/X11/locale + fi + ;; + esac + done + + # Get locale definition files + if [ -d "$WOK/glibc/install" ]; then + for def in $locales; do + case $def in + en_US|en_GB) + # already in glibc-base + ;; + *) + echo "* Copying $def locale files" + mkdir -p $fs/usr/share/i18n/locales + cp -a $WOK/glibc/install/usr/share/i18n/locales/$def \ + $fs/usr/share/i18n/locales + ;; + esac + done + + if [ -n "$LOCALE_DEPENDS" ]; then + for dep in $LOCALE_DEPENDS; do + echo "* Copying additional $dep locale files" + cp -a $WOK/glibc/install/usr/share/i18n/locales/$dep \ + $fs/usr/share/i18n/locales + done + fi + fi + + #grep -r 'include' $fs/usr/share/i18n/locales # test includes in locales + + # Get timezones from tzdata + if [ -d "$WOK/tzdata/install" ]; then + countries=$(echo $locales | \ + sed 's|@[^ ]*||g; s|[^ _]*_||g' | tr ' ' '\n' | sort -u) + echo "* Copy timezone info for countries: "$countries + locations='' + for country in $countries; do + location=$(grep '^'$country \ + $WOK/tzdata/install/usr/share/zoneinfo/zone.tab | awk '{ print $3}') + locations="$locations $location" + done + for location in $locations; do + for tz in $location; do + install -Dm644 $WOK/tzdata/install/usr/share/zoneinfo/$tz \ + $fs/usr/share/zoneinfo/$tz + done + done + fi + + # Gconv modules for encodings other than default + if [ -n "$GCONV" -a -d "$WOK/glibc/install" ]; then + mkdir -p $fs/usr/lib/gconv + for enc in $GCONV; do + case $enc in + ISO8859-1|ISO8859-15) + # already in glibc-base + ;; + *) + if [ -e "$WOK/glibc/install/usr/lib/gconv/$enc.so" ]; then + echo "* Copying $enc gconv module" + cp -a $WOK/glibc/install/usr/lib/gconv/$enc.so $fs/usr/lib/gconv + fi + ;; + esac + done + #ldd $fs/usr/lib/gconv/* # test depends in gconv modules + fi + + # Console keyboard layouts + if [ -n "$KBD" -a -d "$WOK/kbd/install" ]; then + cd $WOK/kbd/install + for map in $KBD; do + mapfiles=$(find . -type f -name $map.map.gz) + if [ -n "$mapfiles" ]; then + echo "* Copying $map kbd map" + for mapfile in $mapfiles; do + mkdir -p "$fs/$(dirname "${mapfile#./}")" + cp "$WOK/kbd/install/${mapfile#./}" "$fs/${mapfile#./}" + done + fi + done + fi + + # Get country flags + if [ -d "$WOK/flag-icons/install" ]; then + echo "* Copy flag icons for countries: "$countries + for country in $countries; do + for size in 16x16 48x48; do + install -Dm644 \ + $WOK/flag-icons/install/usr/share/icons/hicolor/$size/intl/$country.png \ + $fs/usr/share/icons/hicolor/$size/intl/$country.png + done + done + # above icons credits + mkdir -p $fs/usr/share/licenses + cp $WOK/flag-icons/install/usr/share/licenses/gosquared.txt \ + $fs/usr/share/licenses + fi + + ;; + + '') + # for locale-* packages ============================================ + # (locale-related files for only main LXDE-based SliTaz flavor) + + # Get the core packages translations. + case "$SLITAZ_ARCH" in + arm*) CORE_PKGS="$CORE_PKGS_ARM" ;; + esac + mkdir -p $fs/usr/share/locale/$LOCALE + for app in $CORE_PKGS; do + app_locale="$WOK/$app/install/usr/share/locale/$LOCALE" + if [ -d "$app_locale" ]; then + echo "* Found $LOCALE translations for: $app" + cp -a $app_locale $fs/usr/share/locale + fi + done + + case "$SLITAZ_ARCH" in + arm*) return 0 ;; + esac + + # Keyboard flags for default LXPanel keyboard applet + if [ -n "$KB_FLAGS" -a -d "$WOK/flag-icons/install" ]; then + uslix='usr/share/lxpanel/images/xkb-flags' + mkdir -p $fs/usr/share/lxpanel/images/xkb-flags + for i in $KB_FLAGS; do + install -Dm644 \ + $WOK/flag-icons/install/usr/share/icons/hicolor/16x16/intl/${i%%:*}.png \ + $fs/usr/share/icons/hicolor/16x16/intl/${i%%:*}.png + ln -s ../../../icons/hicolor/16x16/intl/${i%%:*}.png \ + $fs/usr/share/lxpanel/images/xkb-flags/${i##*:}.png + done + fi + ;; esac - # Get the core packages messages. - case "$SLITAZ_ARCH" in - arm*) CORE_PKGS="$CORE_PKGS_ARM" ;; - esac - mkdir -p $fs/usr/share/locale/$LOCALE - for app in $CORE_PKGS; do - app_locale="$WOK/$app/install/usr/share/locale/$LOCALE" - if [ -d "$app_locale" ]; then - echo "* Found $LOCALE translations for: $app" - cp -a $app_locale $fs/usr/share/locale - fi - done - - # List of available locales - if [ -d "$WOK/glibc/install" ]; then - cd $WOK/glibc/install/usr/share/i18n/locales - locales=$(ls -1 | sed -n '/^'$LOCALE'$/p; /^'$LOCALE'_.*/p' | sed '/translit/d') - else - locales='' - fi - [ -n "$LOCALEDEF" ] && locales="$LOCALEDEF" - - # Get X11 locale - for def in $locales; do - x11_locale="$WOK/xorg-libX11/install/usr/share/X11/locale/$def.$CHARMAP" - case "$def.$CHARMAP" in - en_US.UTF-8) - # belongs to "xorg-libX11" package, skip it - ;; - *) - if [ -d "$x11_locale" ]; then - echo "* Found $def.$CHARMAP locale for: X11" - mkdir -p $fs/usr/share/X11/locale - cp -a $x11_locale $fs/usr/share/X11/locale - fi - ;; - esac - done - - # Get locale definition files - if [ -d "$WOK/glibc/install" ]; then - for def in $locales; do - case $def in - en_US|en_GB) - # already in glibc-base - ;; - *) - echo "* Copying $def locale files" - mkdir -p $fs/usr/share/i18n/locales - cp -a $WOK/glibc/install/usr/share/i18n/locales/$def \ - $fs/usr/share/i18n/locales - ;; - esac - done - - if [ -n "$LOCALE_DEPENDS" ]; then - for dep in $LOCALE_DEPENDS; do - echo "* Copying additional $dep locale files" - cp -a $WOK/glibc/install/usr/share/i18n/locales/$dep \ - $fs/usr/share/i18n/locales - done - fi - fi - - #grep -r 'include' $fs/usr/share/i18n/locales # test includes in locales - - # Get timezones from tzdata - if [ -d "$WOK/tzdata/install" ]; then - countries=$(echo $locales | \ - sed 's|@[^ ]*||g; s|[^ _]*_||g' | tr ' ' '\n' | sort -u) - echo "* Copy timezone info for countries: "$countries - locations='' - for country in $countries; do - location=$(grep '^'$country \ - $WOK/tzdata/install/usr/share/zoneinfo/zone.tab | awk '{ print $3}') - locations="$locations $location" - done - for location in $locations; do - for tz in $location; do - install -Dm644 $WOK/tzdata/install/usr/share/zoneinfo/$tz \ - $fs/usr/share/zoneinfo/$tz - done - done - fi - - case "$SLITAZ_ARCH" in - arm*) return 0 ;; - esac - - # Get country flags - if [ -d "$WOK/flag-icons/install" ]; then - echo "* Copy flag icons for countries: "$countries - for country in $countries; do - for size in 16x16 48x48; do - install -Dm644 \ - $WOK/flag-icons/install/usr/share/icons/hicolor/$size/intl/$country.png \ - $fs/usr/share/icons/hicolor/$size/intl/$country.png - done - done - # above icons credits - mkdir -p $fs/usr/share/licenses - cp $WOK/flag-icons/install/usr/share/licenses/gosquared.txt \ - $fs/usr/share/licenses - fi - - # Gconv modules for encodings other than default - if [ -n "$GCONV" -a -d "$WOK/glibc/install" ]; then - mkdir -p $fs/usr/lib/gconv - for enc in $GCONV; do - case $enc in - ISO8859-1|ISO8859-15) - # already in glibc-base - ;; - *) - echo "* Copying $enc gconv module" - cp -a $WOK/glibc/install/usr/lib/gconv/$enc.so $fs/usr/lib/gconv - ;; - esac - done - #ldd $fs/usr/lib/gconv/* # test depends in gconv modules - fi - - # Console keyboard layouts - if [ -n "$KBD" -a -d "$WOK/kbd/install" ]; then - cd $WOK/kbd/install - for map in $KBD; do - echo "* Copying $map kbd map" - mapfiles=$(find . -type f -name $map.map.gz) - for mapfile in $mapfiles; do - mkdir -p "$fs/$(dirname "${mapfile#./}")" - cp "$WOK/kbd/install/${mapfile#./}" "$fs/${mapfile#./}" - done - done - fi - - # Keyboard flags for default lxpanel keyboard applet - if [ -n "$KB_FLAGS" -a -d "$WOK/flag-icons/install" ]; then - uslix='usr/share/lxpanel/images/xkb-flags' - mkdir -p $fs/usr/share/lxpanel/images/xkb-flags - for i in $KB_FLAGS; do - install -Dm644 \ - $WOK/flag-icons/install/usr/share/icons/hicolor/16x16/intl/${i%%:*}.png \ - $fs/usr/share/icons/hicolor/16x16/intl/${i%%:*}.png - ln -s ../../../icons/hicolor/16x16/intl/${i%%:*}.png \ - $fs/usr/share/lxpanel/images/xkb-flags/${i##*:}.png - done - fi # exit code OK echo