summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVratislav Podzimek <vpodzime@redhat.com>2012-10-05 19:55:53 +0200
committerVratislav Podzimek <vpodzime@redhat.com>2012-10-12 15:46:48 +0200
commitd07d85cac64a2a86c01e351c4c6fdf99b204e2da (patch)
treefb33386b99f7e216be8e61fae05164d24913a575
parentce80cc79661ca7afa6ea1d354a99a29d41229a0b (diff)
downloadanaconda-d07d85cac64a2a86c01e351c4c6fdf99b204e2da.tar.gz
anaconda-d07d85cac64a2a86c01e351c4c6fdf99b204e2da.tar.xz
anaconda-d07d85cac64a2a86c01e351c4c6fdf99b204e2da.zip
Minimum we have to do with HW clock
-rw-r--r--pyanaconda/install.py11
-rw-r--r--pyanaconda/kickstart.py7
-rw-r--r--pyanaconda/timezone.py19
3 files changed, 34 insertions, 3 deletions
diff --git a/pyanaconda/install.py b/pyanaconda/install.py
index b716364b7..1b255b72e 100644
--- a/pyanaconda/install.py
+++ b/pyanaconda/install.py
@@ -26,7 +26,8 @@ from pyanaconda.bootloader import writeBootLoader
from pyanaconda.progress import progress_report
from pyanaconda.users import createLuserConf, getPassAlgo, Users
from pyanaconda.network import writeNetworkConf
-from pyanaconda.flags import flags
+from pyanaconda import flags
+from pyanaconda import timezone
import gettext
_ = lambda x: gettext.ldgettext("anaconda", x)
@@ -88,6 +89,10 @@ def doInstall(storage, payload, ksdata, instClass):
from pyanaconda import progress
from pyanaconda.kickstart import runPostScripts
+ # First save system time to HW clock.
+ if flags.can_touch_runtime_system("save system time to HW clock"):
+ timezone.save_hw_clock(ksdata.timezone)
+
# We really only care about actions that affect filesystems, since
# those are the ones that take the most time.
steps = len(storage.devicetree.findActions(type="create", object="format")) + \
@@ -99,7 +104,7 @@ def doInstall(storage, payload, ksdata, instClass):
# Do partitioning.
payload.preStorage()
turnOnFilesystems(storage)
- if not flags.livecdInstall:
+ if not flags.flags.livecdInstall:
storage.write()
# Do packaging.
@@ -111,7 +116,7 @@ def doInstall(storage, payload, ksdata, instClass):
payload.preInstall(packages=packages, groups=payload.languageGroups(ksdata.lang.lang))
payload.install()
- if flags.livecdInstall:
+ if flags.flags.livecdInstall:
storage.write()
with progress_report(_("Performing post-install setup tasks")):
diff --git a/pyanaconda/kickstart.py b/pyanaconda/kickstart.py
index 1dd0aebeb..d4aa991ab 100644
--- a/pyanaconda/kickstart.py
+++ b/pyanaconda/kickstart.py
@@ -1262,6 +1262,13 @@ class Services(commands.services.FC6_Services):
root=ROOT_PATH)
class Timezone(commands.timezone.F18_Timezone):
+ def __init__(self, *args):
+ commands.timezone.F18_Timezone.__init__(self, *args)
+
+ #TODO: Do we need to set it to False in case of dual-boot?
+ #default to UTC HW clock in Anaconda
+ self.isUtc = True
+
def execute(self, *args):
# write out timezone configuration
if not timezone.is_valid_timezone(self.timezone):
diff --git a/pyanaconda/timezone.py b/pyanaconda/timezone.py
index 0b7173d15..6d07317b4 100644
--- a/pyanaconda/timezone.py
+++ b/pyanaconda/timezone.py
@@ -29,6 +29,7 @@ import pytz
from collections import OrderedDict
from pyanaconda import localization
+from pyanaconda import iutil
import logging
log = logging.getLogger("anaconda")
@@ -87,6 +88,24 @@ def write_timezone_config(timezone, root):
msg = "Error while writing /etc/adjtime file: %s" % ioerr.strerror
raise TimezoneConfigError(msg)
+def save_hw_clock(timezone):
+ """
+ Save system time to HW clock.
+
+ @param timezone: ksdata.timezone object
+
+ """
+
+ cmd = "hwclock"
+ args = ["--systohc"]
+ if timezone.isUtc:
+ args.append("--utc")
+ else:
+ args.append("--local")
+
+ iutil.execWithRedirect(cmd, args, stdout="/dev/tty5", stderr="/dev/tty5")
+
+
def get_all_territory_timezones(territory):
"""
Return the list of timezones for a given territory.