From bc40af0dfd3fec1b7c2bb7ea2053d19e815385bd Mon Sep 17 00:00:00 2001 From: Daniel Banar Date: Tue, 16 Sep 2025 19:05:07 +0200 Subject: [PATCH 1/5] added simple fake-hwclock --- general/package/Config.in | 1 + .../package/fake-hwclock-openipc/Config.in | 5 +++ .../fake-hwclock-openipc.mk | 15 ++++++++ .../fake-hwclock-openipc/files/S39fakehwclock | 36 +++++++++++++++++++ .../fake-hwclock-openipc/files/fake-hwclock | 27 ++++++++++++++ 5 files changed, 84 insertions(+) create mode 100644 general/package/fake-hwclock-openipc/Config.in create mode 100644 general/package/fake-hwclock-openipc/fake-hwclock-openipc.mk create mode 100755 general/package/fake-hwclock-openipc/files/S39fakehwclock create mode 100644 general/package/fake-hwclock-openipc/files/fake-hwclock diff --git a/general/package/Config.in b/general/package/Config.in index 5b94002e1..459dc8704 100644 --- a/general/package/Config.in +++ b/general/package/Config.in @@ -13,6 +13,7 @@ source "$BR2_EXTERNAL_GENERAL_PATH/package/divinus/Config.in" source "$BR2_EXTERNAL_GENERAL_PATH/package/dropbear-openipc/Config.in" source "$BR2_EXTERNAL_GENERAL_PATH/package/exfat-openipc/Config.in" source "$BR2_EXTERNAL_GENERAL_PATH/package/f2fs-tools-openipc/Config.in" +source "$BR2_EXTERNAL_GENERAL_PATH/package/fake-hwclock-openipc/Config.in" source "$BR2_EXTERNAL_GENERAL_PATH/package/fdk-aac-openipc/Config.in" source "$BR2_EXTERNAL_GENERAL_PATH/package/ffmpeg-openipc/Config.in" source "$BR2_EXTERNAL_GENERAL_PATH/package/fullhan-osdrv-fh8852v100/Config.in" diff --git a/general/package/fake-hwclock-openipc/Config.in b/general/package/fake-hwclock-openipc/Config.in new file mode 100644 index 000000000..361d3029a --- /dev/null +++ b/general/package/fake-hwclock-openipc/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_FAKE_HWCLOCK_OPENIPC + bool "fake-hwclock-openipc" + help + Restores system time from a file on boot, saves the current time, or periodically updates a timestamp file to maintain time on systems without a hardware RTC. + diff --git a/general/package/fake-hwclock-openipc/fake-hwclock-openipc.mk b/general/package/fake-hwclock-openipc/fake-hwclock-openipc.mk new file mode 100644 index 000000000..247487976 --- /dev/null +++ b/general/package/fake-hwclock-openipc/fake-hwclock-openipc.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# fake-hwclock-openipc +# +################################################################################ + +define FAKE_HWCLOCK_OPENIPC_INSTALL_TARGET_CMDS + $(INSTALL) -m 755 -d $(TARGET_DIR)/etc/init.d + $(INSTALL) -m 755 -t $(TARGET_DIR)/etc/init.d $(FAKE_HWCLOCK_OPENIPC_PKGDIR)/files/S39fakehwclock + + $(INSTALL) -m 755 -d $(TARGET_DIR)/usr/bin + $(INSTALL) -m 755 -t $(TARGET_DIR)/usr/bin $(FAKE_HWCLOCK_OPENIPC_PKGDIR)/files/fake-hwclock +endef + +$(eval $(generic-package)) diff --git a/general/package/fake-hwclock-openipc/files/S39fakehwclock b/general/package/fake-hwclock-openipc/files/S39fakehwclock new file mode 100755 index 000000000..3fe9459f4 --- /dev/null +++ b/general/package/fake-hwclock-openipc/files/S39fakehwclock @@ -0,0 +1,36 @@ +#!/bin/sh + +DAEMON="fake-hwclock" +PIDFILE="/var/run/$DAEMON.pid" +DAEMON_ARGS="5 /etc/fake-hwclock.data" + +case "$1" in + start) + echo -n "Starting $DAEMON: " + fake-hwclock load /etc/fake-hwclock.data + # Save timestamp every 5 seconds + start-stop-daemon -b -m -S -q -p "$PIDFILE" -x "$DAEMON" -- $DAEMON_ARGS + if [ $? -eq 0 ]; then + echo "OK" + else + echo "FAIL" + fi + ;; + + stop) + echo -n "Stopping $DAEMON: " + start-stop-daemon -K -q -p "$PIDFILE" + if [ $? -eq 0 ]; then + rm -f "$PIDFILE" + fake-hwclock save /etc/fake-hwclock.data + echo "OK" + else + echo "FAIL" + fi + ;; + + *) + echo "Usage: $0 {start|stop}" + exit 1 + ;; +esac diff --git a/general/package/fake-hwclock-openipc/files/fake-hwclock b/general/package/fake-hwclock-openipc/files/fake-hwclock new file mode 100644 index 000000000..361c7adac --- /dev/null +++ b/general/package/fake-hwclock-openipc/files/fake-hwclock @@ -0,0 +1,27 @@ +#!/bin/sh + +if [[ $# -lt 2 ]]; then + exit 1 +fi + +MODE="$1" +TIMESTAMP_FILE="$2" + +mkdir -p "$(dirname "$TIMESTAMP_FILE")" + +if [[ "$MODE" == "load" ]]; then + if [[ -f "$TIMESTAMP_FILE" ]]; then + LAST_TS=$(cat "$TIMESTAMP_FILE") + if [[ -n "$LAST_TS" ]]; then + echo "fake-hwclock: Setting time to $(date -d @"$LAST_TS")" + fi + fi +elif [[ "$MODE" == "save" ]]; then + date +%s > "$TIMESTAMP_FILE" +elif [[ "$MODE" =~ ^[0-9]+$ ]]; then + INTERVAL="$MODE" + while true; do + date +%s > "$TIMESTAMP_FILE" + sleep "$INTERVAL" + done +fi From a172925ec110e349b9a206c08bad8daea362bae1 Mon Sep 17 00:00:00 2001 From: Daniel Banar Date: Tue, 16 Sep 2025 19:23:18 +0200 Subject: [PATCH 2/5] removed starting service echo --- general/package/fake-hwclock-openipc/files/S39fakehwclock | 1 - 1 file changed, 1 deletion(-) diff --git a/general/package/fake-hwclock-openipc/files/S39fakehwclock b/general/package/fake-hwclock-openipc/files/S39fakehwclock index 3fe9459f4..8bf941365 100755 --- a/general/package/fake-hwclock-openipc/files/S39fakehwclock +++ b/general/package/fake-hwclock-openipc/files/S39fakehwclock @@ -6,7 +6,6 @@ DAEMON_ARGS="5 /etc/fake-hwclock.data" case "$1" in start) - echo -n "Starting $DAEMON: " fake-hwclock load /etc/fake-hwclock.data # Save timestamp every 5 seconds start-stop-daemon -b -m -S -q -p "$PIDFILE" -x "$DAEMON" -- $DAEMON_ARGS From 25a050e84bea52fcd4419847353c614f38e3e2fb Mon Sep 17 00:00:00 2001 From: Daniel Banar Date: Tue, 16 Sep 2025 19:34:22 +0200 Subject: [PATCH 3/5] loading time now works correctly --- general/package/fake-hwclock-openipc/files/fake-hwclock | 1 + 1 file changed, 1 insertion(+) diff --git a/general/package/fake-hwclock-openipc/files/fake-hwclock b/general/package/fake-hwclock-openipc/files/fake-hwclock index 361c7adac..15cb8af76 100644 --- a/general/package/fake-hwclock-openipc/files/fake-hwclock +++ b/general/package/fake-hwclock-openipc/files/fake-hwclock @@ -14,6 +14,7 @@ if [[ "$MODE" == "load" ]]; then LAST_TS=$(cat "$TIMESTAMP_FILE") if [[ -n "$LAST_TS" ]]; then echo "fake-hwclock: Setting time to $(date -d @"$LAST_TS")" + date -s @"$LAST_TS" >/dev/null 2>&1 fi fi elif [[ "$MODE" == "save" ]]; then From 48fe1d4699fe0856aee58847f56364ddb3cbfd7c Mon Sep 17 00:00:00 2001 From: Daniel Banar Date: Tue, 16 Sep 2025 19:52:33 +0200 Subject: [PATCH 4/5] whitespace changes --- .../fake-hwclock-openipc/files/fake-hwclock | 26 +++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/general/package/fake-hwclock-openipc/files/fake-hwclock b/general/package/fake-hwclock-openipc/files/fake-hwclock index 15cb8af76..1d999bd44 100644 --- a/general/package/fake-hwclock-openipc/files/fake-hwclock +++ b/general/package/fake-hwclock-openipc/files/fake-hwclock @@ -1,7 +1,7 @@ #!/bin/sh if [[ $# -lt 2 ]]; then - exit 1 + exit 1 fi MODE="$1" @@ -10,19 +10,19 @@ TIMESTAMP_FILE="$2" mkdir -p "$(dirname "$TIMESTAMP_FILE")" if [[ "$MODE" == "load" ]]; then - if [[ -f "$TIMESTAMP_FILE" ]]; then - LAST_TS=$(cat "$TIMESTAMP_FILE") - if [[ -n "$LAST_TS" ]]; then - echo "fake-hwclock: Setting time to $(date -d @"$LAST_TS")" + if [[ -f "$TIMESTAMP_FILE" ]]; then + LAST_TS=$(cat "$TIMESTAMP_FILE") + if [[ -n "$LAST_TS" ]]; then + echo "fake-hwclock: Setting time to $(date -d @"$LAST_TS")" date -s @"$LAST_TS" >/dev/null 2>&1 - fi - fi + fi + fi elif [[ "$MODE" == "save" ]]; then - date +%s > "$TIMESTAMP_FILE" + date +%s > "$TIMESTAMP_FILE" elif [[ "$MODE" =~ ^[0-9]+$ ]]; then - INTERVAL="$MODE" - while true; do - date +%s > "$TIMESTAMP_FILE" - sleep "$INTERVAL" - done + INTERVAL="$MODE" + while true; do + date +%s > "$TIMESTAMP_FILE" + sleep "$INTERVAL" + done fi From 619a13c51b071c36cc1582f0a78bbc0655da5f7a Mon Sep 17 00:00:00 2001 From: Daniel Banar Date: Mon, 22 Sep 2025 15:18:47 +0200 Subject: [PATCH 5/5] removed openipc suffix from package name --- general/package/Config.in | 2 +- .../{fake-hwclock-openipc => fake-hwclock}/Config.in | 4 ++-- .../fake-hwclock.mk} | 8 ++++---- .../files/S39fakehwclock | 0 .../files/fake-hwclock | 0 5 files changed, 7 insertions(+), 7 deletions(-) rename general/package/{fake-hwclock-openipc => fake-hwclock}/Config.in (71%) rename general/package/{fake-hwclock-openipc/fake-hwclock-openipc.mk => fake-hwclock/fake-hwclock.mk} (52%) rename general/package/{fake-hwclock-openipc => fake-hwclock}/files/S39fakehwclock (100%) rename general/package/{fake-hwclock-openipc => fake-hwclock}/files/fake-hwclock (100%) diff --git a/general/package/Config.in b/general/package/Config.in index 459dc8704..6a57c5016 100644 --- a/general/package/Config.in +++ b/general/package/Config.in @@ -13,7 +13,7 @@ source "$BR2_EXTERNAL_GENERAL_PATH/package/divinus/Config.in" source "$BR2_EXTERNAL_GENERAL_PATH/package/dropbear-openipc/Config.in" source "$BR2_EXTERNAL_GENERAL_PATH/package/exfat-openipc/Config.in" source "$BR2_EXTERNAL_GENERAL_PATH/package/f2fs-tools-openipc/Config.in" -source "$BR2_EXTERNAL_GENERAL_PATH/package/fake-hwclock-openipc/Config.in" +source "$BR2_EXTERNAL_GENERAL_PATH/package/fake-hwclock/Config.in" source "$BR2_EXTERNAL_GENERAL_PATH/package/fdk-aac-openipc/Config.in" source "$BR2_EXTERNAL_GENERAL_PATH/package/ffmpeg-openipc/Config.in" source "$BR2_EXTERNAL_GENERAL_PATH/package/fullhan-osdrv-fh8852v100/Config.in" diff --git a/general/package/fake-hwclock-openipc/Config.in b/general/package/fake-hwclock/Config.in similarity index 71% rename from general/package/fake-hwclock-openipc/Config.in rename to general/package/fake-hwclock/Config.in index 361d3029a..7a8ae493e 100644 --- a/general/package/fake-hwclock-openipc/Config.in +++ b/general/package/fake-hwclock/Config.in @@ -1,5 +1,5 @@ -config BR2_PACKAGE_FAKE_HWCLOCK_OPENIPC - bool "fake-hwclock-openipc" +config BR2_PACKAGE_FAKE_HWCLOCK + bool "fake-hwclock" help Restores system time from a file on boot, saves the current time, or periodically updates a timestamp file to maintain time on systems without a hardware RTC. diff --git a/general/package/fake-hwclock-openipc/fake-hwclock-openipc.mk b/general/package/fake-hwclock/fake-hwclock.mk similarity index 52% rename from general/package/fake-hwclock-openipc/fake-hwclock-openipc.mk rename to general/package/fake-hwclock/fake-hwclock.mk index 247487976..63dd90d6f 100644 --- a/general/package/fake-hwclock-openipc/fake-hwclock-openipc.mk +++ b/general/package/fake-hwclock/fake-hwclock.mk @@ -1,15 +1,15 @@ ################################################################################ # -# fake-hwclock-openipc +# fake-hwclock # ################################################################################ -define FAKE_HWCLOCK_OPENIPC_INSTALL_TARGET_CMDS +define FAKE_HWCLOCK_INSTALL_TARGET_CMDS $(INSTALL) -m 755 -d $(TARGET_DIR)/etc/init.d - $(INSTALL) -m 755 -t $(TARGET_DIR)/etc/init.d $(FAKE_HWCLOCK_OPENIPC_PKGDIR)/files/S39fakehwclock + $(INSTALL) -m 755 -t $(TARGET_DIR)/etc/init.d $(FAKE_HWCLOCK_PKGDIR)/files/S39fakehwclock $(INSTALL) -m 755 -d $(TARGET_DIR)/usr/bin - $(INSTALL) -m 755 -t $(TARGET_DIR)/usr/bin $(FAKE_HWCLOCK_OPENIPC_PKGDIR)/files/fake-hwclock + $(INSTALL) -m 755 -t $(TARGET_DIR)/usr/bin $(FAKE_HWCLOCK_PKGDIR)/files/fake-hwclock endef $(eval $(generic-package)) diff --git a/general/package/fake-hwclock-openipc/files/S39fakehwclock b/general/package/fake-hwclock/files/S39fakehwclock similarity index 100% rename from general/package/fake-hwclock-openipc/files/S39fakehwclock rename to general/package/fake-hwclock/files/S39fakehwclock diff --git a/general/package/fake-hwclock-openipc/files/fake-hwclock b/general/package/fake-hwclock/files/fake-hwclock similarity index 100% rename from general/package/fake-hwclock-openipc/files/fake-hwclock rename to general/package/fake-hwclock/files/fake-hwclock