From 2e2a4875c9789add16eb946fa1ce4a78bc145820 Mon Sep 17 00:00:00 2001 From: Benoit Pierre Date: Sat, 13 Dec 2025 00:35:52 +0100 Subject: [PATCH] remarkable: detect if launcher script has changed And a complete restart from the parent launcher is needed. --- frontend/device/remarkable/device.lua | 6 ++++++ platform/remarkable/koreader.sh | 13 ++++++++++++- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/frontend/device/remarkable/device.lua b/frontend/device/remarkable/device.lua index 421768cc9..336e0e7ec 100644 --- a/frontend/device/remarkable/device.lua +++ b/frontend/device/remarkable/device.lua @@ -426,6 +426,12 @@ function Remarkable:getDefaultCoverPath() return "/usr/share/remarkable/poweroff.png" end +function Remarkable:isStartupScriptUpToDate() + local md5 = require("ffi/MD5") + -- Compare the hash of the *active* script to the *potential* one. + return md5.sumFile("/tmp/koreader.sh") == md5.sumFile(os.getenv("KOREADER_DIR") .. "/koreader.sh") +end + function Remarkable:setEventHandlers(UIManager) UIManager.event_handlers.Suspend = function() self:onPowerEvent("Suspend") diff --git a/platform/remarkable/koreader.sh b/platform/remarkable/koreader.sh index 37d763424..93a15df18 100755 --- a/platform/remarkable/koreader.sh +++ b/platform/remarkable/koreader.sh @@ -1,7 +1,18 @@ #!/bin/sh + +# Relocalize ourselves to /tmp: this is used by KOReader to detect if the +# original script has changed after an update (requiring a complete restart +# from the parent launcher). +if [ "$(dirname "${0}")" != '/tmp' ]; then + cp -pf "${0}" '/tmp/koreader.sh' + chmod 777 '/tmp/koreader.sh' + exec '/tmp/koreader.sh' "$@" +fi + export LC_ALL="en_US.UTF-8" + # working directory of koreader -KOREADER_DIR="${0%/*}" +export KOREADER_DIR="${0%/*}" UNPACK_DIR="${KOREADER_DIR%/*}" # we're always starting from our working directory