If locales-all package is installed skip locales generation
[grml-live.git] / etc / grml / fai / config / scripts / GRMLBASE / 25-locales
index c774164..277b684 100755 (executable)
@@ -1,18 +1,64 @@
-#!/bin/sh
-# Filename:      /etc/grml/fai/config/scripts/GRMLBASE/25-locales
+#!/bin/bash
+# Filename:      ${GRML_FAI_CONFIG}/config/scripts/GRMLBASE/25-locales
 # Purpose:       locales (language) configuration of the live system
 # Authors:       grml-team (grml.org), (c) Michael Prokop <mika@grml.org>
 # Bug-Reports:   see http://grml.org/bugs/
 # License:       This file is licensed under the GPL v2 or any later version.
-# Latest change: Tue Sep 18 19:46:58 CEST 2007 [mika]
 ################################################################################
 
 set -u
 set -e
 
-# FIXME: replace it with /etc/locale.gen.grml finally!
-cp $target/etc/locale.gen.minimal $target/etc/locale.gen
-$ROOTCMD locale-gen
+# set up /etc/locale.gen, only GRML_FULL and LOCALES have
+# the full setup, GRMLBASE installs a minimal configuration
+fcopy -v /etc/locale.gen
+
+# get rid of locales unless using class LOCALES
+set +u
+if ! ifclass LOCALES ; then
+set -u
+   echo 'Removing /usr/share/locale'
+
+   # get rid of the original
+   rm -rf $target/usr/share/locale
+
+   # restore *empty* directories because otherwise installation/upgrade of packages might fail
+   [ -d "$target"/usr/share/locale ] || mkdir "$target"/usr/share/locale
+   $ROOTCMD ln -s /etc/locale.alias /usr/share/locale/locale.alias
+
+   # make sure the directories of removed locales exist; ugly hack but no other solution present :(
+   echo 'Creating empty /usr/share/locale/*/LC_MESSAGES directories'
+   for f in $($ROOTCMD dpkg -S LC_MESSAGES | awk '{print $2}' | grep '/usr/share/locale/' | sed 's#LC_MESSAGES.*##' | sort -u) ; do
+      if ! [ -d "$target/$f"/LC_MESSAGES ] ; then
+         $ROOTCMD mkdir -p "$f"/LC_MESSAGES
+      fi
+   done
+fi
+
+# make sure:
+# localepurge     localepurge/nopurge     multiselect ....
+# is set so localepurge works as expected
+if $ROOTCMD dpkg --list localepurge 2>&1 | grep -q '^ii' ; then
+   $ROOTCMD dpkg-reconfigure -f noninteractive localepurge
+fi
+
+if ! [ -x $target/usr/sbin/localepurge ] ; then
+  echo "Warning: localepurge not installed"
+else
+  echo "Running localepurge."
+  $ROOTCMD localepurge
+fi
+
+if $ROOTCMD dpkg-query -s locales-all >/dev/null 2>&1 ; then
+  echo "locales-all installed, skipping locales generation"
+else
+  if ! [ -x ${target}/usr/sbin/locale-gen ] ; then
+    echo 'Warning: locale-gen [package locales] not installed'
+  else
+    echo "Running locale-gen"
+    $ROOTCMD locale-gen
+  fi
+fi
 
 ## END OF FILE #################################################################
-# vim:ft=sh expandtab ai tw=80 tabstop=4 shiftwidth=3
+# vim:ft=sh expandtab ai tw=80 tabstop=4 shiftwidth=2