summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdriaan de Groot <groot@kde.org>2017-12-13 06:27:04 -0500
committerbill-auger <mr.j.spam.me@gmail.com>2018-07-05 10:06:02 -0400
commitf16e94771334e601512dba9fc6969ddfda6e588a (patch)
treec0a1524c7c56e2f4a6bf18df3592a97cf3a807d1
parent26872385b9b5de69e4f26d062da14ecfbc96fa7b (diff)
revertme - cherry-picked 762ad5434 - [hwclock] Be more lenient.v3.1.9-parabola10parabola-3.1.10
Patch by Gabriel C. (@abucodonosor). - use libcalamares functions - no need to copy /etc/adjtime over we can run hwclock in chroot since we have /proc , /sys , /dev , /run/* already bind mounted. - added RTC and ISA probing methode ( see issue #873) - we probe default from /dev/rtc* , - fall back to ISA - still doesn't work we just print a BIOS/Kernel BUG message and continue - NOTE: issue #873 is about broken ArchLinux kernel config but there are HP boxes with real RTC problems no matter what kernel config is used so let us be nice and don't error out.. FIXES #873
-rw-r--r--src/modules/hwclock/main.py38
1 files changed, 23 insertions, 15 deletions
diff --git a/src/modules/hwclock/main.py b/src/modules/hwclock/main.py
index 8b31080dd..dd408a372 100644
--- a/src/modules/hwclock/main.py
+++ b/src/modules/hwclock/main.py
@@ -5,7 +5,8 @@
#
# Copyright 2014 - 2015, Philip Müller <philm@manjaro.org>
# Copyright 2014, Teo Mrnjavac <teo@kde.org>
-# Copyright 2017. Alf Gaida <agaida@siduction.org>
+# Copyright 2017, Alf Gaida <agaida@siduction.org>
+# Copyright 2017, Gabriel Craciunescu <crazy@frugalware.org>
#
# Calamares is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -20,26 +21,33 @@
# You should have received a copy of the GNU General Public License
# along with Calamares. If not, see <http://www.gnu.org/licenses/>.
-import subprocess
-import shutil
-
import libcalamares
-
def run():
"""
Set hardware clock.
"""
+ hwclock_rtc = ["hwclock", "--systohc", "--utc"]
+ hwclock_isa = ["hwclock", "--systohc", "--utc", "--directisa"]
+ is_broken_rtc = False
+ is_broken_isa = False
- root_mount_point = libcalamares.globalstorage.value("rootMountPoint")
- try:
- subprocess.check_call(["hwclock", "--systohc", "--utc"])
- except subprocess.CalledProcessError as e:
- return (
- "Cannot set hardware clock.",
- "hwclock terminated with exit code {}.".format(e.returncode)
- )
-
- shutil.copy2("/etc/adjtime", "{!s}/etc/".format(root_mount_point))
+ ret = libcalamares.utils.target_env_call(hwclock_rtc)
+ if ret != 0:
+ is_broken_rtc = True
+ libcalamares.utils.debug("Hwclock returned error code {}".format(ret))
+ libcalamares.utils.debug(" .. RTC method failed, trying ISA bus method.")
+ else:
+ libcalamares.utils.debug("Hwclock set using RTC method.")
+ if is_broken_rtc:
+ ret = libcalamares.utils.target_env_call(hwclock_isa)
+ if ret != 0:
+ is_broken_isa = True
+ libcalamares.utils.debug("Hwclock returned error code {}".format(ret))
+ libcalamares.utils.debug(" .. ISA bus method failed.")
+ else:
+ libcalamares.utils.debug("Hwclock set using ISA bus methode.")
+ if is_broken_rtc and is_broken_isa:
+ libcalamares.utils.debug("BIOS or Kernel BUG: Setting hwclock failed.")
return None