Apply code by Thomas Lehmann to improve timezone handling v0.8.17
authorMichael Prokop <mika@grml.org>
Thu, 12 Feb 2009 18:40:58 +0000 (19:40 +0100)
committerMichael Prokop <mika@grml.org>
Thu, 12 Feb 2009 18:40:58 +0000 (19:40 +0100)
autoconfig.functions
debian/changelog

index d375308..fd699fc 100755 (executable)
@@ -362,21 +362,28 @@ config_time(){
  if [ -z "$INSTALLED" ]; then
     # The default hardware clock timezone is stated as representing local time.
     UTC="--localtime"
-    checkbootparam utc >>$DEBUG 2>&1 && UTC="-u"
-    checkbootparam gmt >>$DEBUG 2>&1 && UTC="-u"
+    grep -q "^UTC=" /etc/default/rcS || echo "UTC=no" >> /etc/default/rcS
+    checkbootparam utc       >>$DEBUG 2>&1 && sed -i "s|^UTC=.*$|UTC=yes|" /etc/default/rcS
+    checkbootparam gmt       >>$DEBUG 2>&1 && sed -i "s|^UTC=.*$|UTC=yes|" /etc/default/rcS
+    checkbootparam localtime >>$DEBUG 2>&1 && sed -i "s|^UTC=.*$|UTC=no|"  /etc/default/rcS
+    grep -q -i "^UTC=yes" /etc/default/rcS && UTC="-u"
     # hwclock uses the TZ variable
     KTZ="$(getbootparam tz 2>>$DEBUG)"
     [ -z "$KTZ" ] && [ -r /etc/timezone ] && KTZ=$(cat /etc/timezone)
-    [ -z "$KTZ" ] && KTZ=Europe/Vienna
+    if [ ! -f "/usr/share/zoneinfo/$KTZ" ] ; then
+       ewarn "Warning: unknown timezone $KTZ" ; eend 1
+       KTZ="Europe/Vienna"
+       ewarn "Falling back to timezone $KTZ" ; eend 0
+    fi
 
     if ! [ -r /dev/rtc ] ; then
       ewarn "Warning: realtime clock not available, trying to execute hwclock anyway." ; eend 0
     fi
 
-    ERROR=$(TZ="$TZ" hwclock $UTC -s 2>&1 | head -1) ; RC=$?
+    ERROR=$(TZ="$KTZ" hwclock $UTC -s 2>&1 | head -1) ; RC=$?
     if [ -n "$ERROR" ] ; then
        eindent
-       ERROR=$(TZ="$TZ" hwclock $UTC -s --directisa 2>&1 | head -1)
+       ERROR=$(TZ="$KTZ" hwclock $UTC -s --directisa 2>&1 | head -1)
        if [ -n "$ERROR" ] ; then
           eerror "Problem running hwclock: $ERROR" ; eend 1
        fi
@@ -465,10 +472,21 @@ config_timezone(){
  if [ -z "$INSTALLED" ]; then
     KTZ="$(getbootparam tz 2>>$DEBUG)"
     if [ -n "$KTZ" ] ; then
-       einfo "Setting timezone."
-       [ -f "/usr/share/zoneinfo/$KTZ" ] && TZ="$KTZ"
-       rm -f /etc/localtime
-       cp "/usr/share/zoneinfo/$TZ" /etc/localtime ; eend $?
+       if [ ! -f "/usr/share/zoneinfo/$KTZ" ]
+       then
+          ewarn "Warning: unknown timezone $KTZ"; eend 0
+       else
+          einfo "Setting timezone."
+          # update debconf
+          area=$(echo $KTZ | cut -d '/' -f1)
+          zone=$(echo $KTZ | cut -d '/' -f2)
+          echo "tzdata tzdata/Areas       select $area" | debconf-set-selections
+          echo "tzdata tzdata/Zones/$area select $zone" | debconf-set-selections
+          # update files
+          echo $KTZ > /etc/timezone
+          rm -f /etc/localtime
+          cp "/usr/share/zoneinfo/$KTZ" /etc/localtime ; eend $?
+       fi
     fi
  fi
 }
index 08d6bb2..59f32e0 100644 (file)
@@ -1,12 +1,19 @@
 grml-autoconfig (0.8.17) unstable; urgency=low
 
-  * Some updates in config_time(), thanks to Thomas Lehmann:
+  [ Michael Prokop ]
+  * Some updates in config_time(), *many* thanks to Thomas Lehmann:
+    - improve localtime / utc / gmt handling
     - use UTC="--localtime" by default
     - evaluate tz bootoption in this function as well
     - execute hwclock even if /dev/rtc isn't available, just display
       warning regarding the lack of /dev/rtc
+  [ Ulrich Dangel ]
+  * Refactored config unpacking config parameter will now be honored,
+    e.g. config=foo.tbz myconfig=/dev/sda1 is now possible.
+  * Get always the right boot parameter via /proc/cmdline.
+    [Testing: issue520]
 
- -- Michael Prokop <mika@grml.org>  Wed, 19 Nov 2008 00:23:55 +0100
+ -- Michael Prokop <mika@grml.org>  Thu, 12 Feb 2009 19:37:15 +0100
 
 grml-autoconfig (0.8.16) unstable; urgency=low