[Buildroot] [PATCH v1] RFC newpackage: fake-hwclock

Christopher McCrory chrismcc at gmail.com
Wed Jul 18 16:18:42 UTC 2018


Save/restore system clock on machines without working RTC hardware

https://git.einval.com/cgi-bin/gitweb.cgi?p=fake-hwclock.git

This is a RFC, am I missing anything?

The version is 0.11, but I am not sure where this should be noted.

Signed-off-by: Christopher McCrory <chrismcc at gmail.com>
---
 package/Config.in                         |  1 +
 package/fake-hwclock/001-start-stop.patch | 20 ++++++++++++++++++++
 package/fake-hwclock/Config.in            |  9 +++++++++
 package/fake-hwclock/fake-hwclock.cronjob |  1 +
 package/fake-hwclock/fake-hwclock.mk      | 31 +++++++++++++++++++++++++++++++
 5 files changed, 62 insertions(+)
 create mode 100644 package/fake-hwclock/001-start-stop.patch
 create mode 100644 package/fake-hwclock/Config.in
 create mode 100644 package/fake-hwclock/fake-hwclock.cronjob
 create mode 100644 package/fake-hwclock/fake-hwclock.mk

diff --git a/package/Config.in b/package/Config.in
index 08a3eac48a..826e4c8717 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -1981,6 +1981,7 @@ comment "Utilities"
 	source "package/dialog/Config.in"
 	source "package/dtach/Config.in"
 	source "package/easy-rsa/Config.in"
+	source "package/fake-hwclock/Config.in"
 	source "package/file/Config.in"
 	source "package/gnupg/Config.in"
 	source "package/gnupg2/Config.in"
diff --git a/package/fake-hwclock/001-start-stop.patch b/package/fake-hwclock/001-start-stop.patch
new file mode 100644
index 0000000000..3ceb0ace4a
--- /dev/null
+++ b/package/fake-hwclock/001-start-stop.patch
@@ -0,0 +1,20 @@
+--- a/fake-hwclock.orig	2018-07-18 07:14:29.943169961 -0700
++++ a/fake-hwclock	2018-07-18 07:14:50.894364970 -0700
+@@ -30,7 +30,7 @@
+ fi
+ 
+ case $COMMAND in
+-    save)
++    save|stop)
+         if [ -e $FILE ] ; then
+             NOW_SEC=$(date -u '+%s')
+             if $FORCE || [ $NOW_SEC -ge $HWCLOCK_EPOCH_SEC ] ; then
+@@ -45,7 +45,7 @@
+             date -u '+%Y-%m-%d %H:%M:%S' > $FILE
+         fi
+         ;;
+-    load)
++    start|load)
+         if [ -e $FILE ] ; then
+             SAVED="$(cat $FILE)"
+             SAVED_SEC=$(date -u -d "$SAVED" '+%s')
diff --git a/package/fake-hwclock/Config.in b/package/fake-hwclock/Config.in
new file mode 100644
index 0000000000..4c59f07844
--- /dev/null
+++ b/package/fake-hwclock/Config.in
@@ -0,0 +1,9 @@
+config BR2_PACKAGE_FAKE_HWCLOCK
+	bool "fake-hwclock"
+	depends on BR2_INIT_SYSV
+	help
+	 a script to load and save creenet time for systems without a 
+	 hardware RTC
+
+comment "fake-hwclock needs SysV init"
+	depends on !BR2_INIT_SYSV
diff --git a/package/fake-hwclock/fake-hwclock.cronjob b/package/fake-hwclock/fake-hwclock.cronjob
new file mode 100644
index 0000000000..cefb488719
--- /dev/null
+++ b/package/fake-hwclock/fake-hwclock.cronjob
@@ -0,0 +1 @@
+date -u '+%Y-%m-%d %H:%M:%S' > /etc/fake-hwclock.data
diff --git a/package/fake-hwclock/fake-hwclock.mk b/package/fake-hwclock/fake-hwclock.mk
new file mode 100644
index 0000000000..b47d6b14f5
--- /dev/null
+++ b/package/fake-hwclock/fake-hwclock.mk
@@ -0,0 +1,31 @@
+################################################################################
+#
+# fake-hwclock
+#
+################################################################################
+
+FAKE_HWCLOCK_VERSION = f889fd09f2d8d55819dd53785e8bd895866e6628
+FAKE_HWCLOCK_SITE = https://git.einval.com/git/fake-hwclock.git
+FAKE_HWCLOCK_SITE_METHOD=git
+FAKE_HWCLOCK_LICENSE_FILES = COPYING
+
+# add a daily cron job to save current time
+ifeq ($(BR2_PACKAGE_DCRON),y)
+FAKE_HWCLOCK_DEPENDENCIES += dcron
+define FAKE_HWCLOCK_CROBJOB
+	$(INSTALL) -D -m 755 $(FAKE_HWCLOCK_PKGDIR)/fake-hwclock.cronjob $(TARGET_DIR)/etc/cron.daily/fake-hwclock
+endef
+FAKE_HWCLOCK_POST_INSTALL_TARGET_HOOKS += FAKE_HWCLOCK_CROBJOB
+endif
+
+# This should run before everything else
+define FAKE_HWCLOCK_INSTALL_INIT_SYSV
+	$(INSTALL) -D -m 755 $(@D)/fake-hwclock $(TARGET_DIR)/etc/init.d/S00fake-hwclock
+endef
+
+# Use buildroot buildtime as a seed.  Not ideal, but better than 1970-01-01 UTC
+define FAKE_HWCLOCK_INSTALL_TARGET_CMDS
+	date -u '+%Y-%m-%d %H:%M:%S' > $(TARGET_DIR)/etc/fake-hwclock.data
+endef
+
+$(eval $(generic-package))
-- 
2.14.4



More information about the buildroot mailing list