From 520bfed735957fe0d8e5b135de3b536bb7843968 Mon Sep 17 00:00:00 2001 From: CyberMind-FR Date: Sat, 17 Jan 2026 12:17:13 +0100 Subject: [PATCH] fix(magicmirror2): Fix LXC container startup with default modules symlink - Add symlink from modules/default to __modules/default (Docker entrypoint logic) - Copy CSS files from __css to css directory on startup - Fix shebang escaping issue by using printf instead of heredoc for #!/bin/sh - Bump release to 0.4.0-r7 Co-Authored-By: Claude Opus 4.5 --- .../secubox/secubox-app-magicmirror2/Makefile | 2 +- .../files/usr/sbin/mm2ctl | 43 ++++++++++++++++--- 2 files changed, 37 insertions(+), 8 deletions(-) diff --git a/package/secubox/secubox-app-magicmirror2/Makefile b/package/secubox/secubox-app-magicmirror2/Makefile index 3ce69f49..934f657d 100644 --- a/package/secubox/secubox-app-magicmirror2/Makefile +++ b/package/secubox/secubox-app-magicmirror2/Makefile @@ -1,7 +1,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=secubox-app-magicmirror2 -PKG_RELEASE:=5 +PKG_RELEASE:=7 PKG_VERSION:=0.4.0 PKG_ARCH:=all PKG_MAINTAINER:=CyberMind Studio diff --git a/package/secubox/secubox-app-magicmirror2/files/usr/sbin/mm2ctl b/package/secubox/secubox-app-magicmirror2/files/usr/sbin/mm2ctl index c260383d..4c707f4d 100644 --- a/package/secubox/secubox-app-magicmirror2/files/usr/sbin/mm2ctl +++ b/package/secubox/secubox-app-magicmirror2/files/usr/sbin/mm2ctl @@ -249,26 +249,55 @@ lxc_create_docker_rootfs() { fi fi - # Create startup script - cat > "$rootfs/opt/start-mm2.sh" << 'START' -#!/bin/sh + # Create startup script (mimics Docker entrypoint.sh) + # Use printf for shebang to avoid shell escaping issues + printf '%s\n' '#!/bin/sh' > "$rootfs/opt/start-mm2.sh" + cat >> "$rootfs/opt/start-mm2.sh" << 'START' export PATH="/usr/local/bin:/usr/bin:/bin:$PATH" export NODE_ENV=production export MM_PORT="${MM2_PORT:-8082}" export MM_ADDRESS="${MM2_ADDRESS:-0.0.0.0}" -cd /opt/magic_mirror +MM_DIR="/opt/magic_mirror" +modules_dir="${MM_DIR}/modules" +default_dir="${modules_dir}/default" +config_dir="${MM_DIR}/config" +css_dir="${MM_DIR}/css" + +cd "$MM_DIR" + +# Setup default modules symlink (like Docker entrypoint) +if [ -d "${MM_DIR}/__modules/default" ]; then + mkdir -p "${modules_dir}" + if [ ! -e "${default_dir}" ]; then + echo "Symlinking default modules..." + ln -sf "${MM_DIR}/__modules/default" "${modules_dir}/default" + fi +fi + +# Setup CSS files +if [ -d "${MM_DIR}/__css" ] && [ ! -f "${css_dir}/main.css" ]; then + mkdir -p "${css_dir}" + echo "Copying CSS files..." + cp ${MM_DIR}/__css/* "${css_dir}/" 2>/dev/null || true +fi + +# Ensure custom.css exists +[ ! -f "${css_dir}/custom.css" ] && touch "${css_dir}/custom.css" # Wait for config to be available for i in 1 2 3 4 5; do - [ -f /opt/magic_mirror/config/config.js ] && break + [ -f "${config_dir}/config.js" ] && break echo "Waiting for config.js..." sleep 2 done -if [ ! -f /opt/magic_mirror/config/config.js ]; then +if [ ! -f "${config_dir}/config.js" ]; then echo "ERROR: config.js not found, using default" - cp /opt/magic_mirror/config/config.js.sample /opt/magic_mirror/config/config.js 2>/dev/null || true + if [ -f "${MM_DIR}/__config/config.js.sample" ]; then + mkdir -p "${config_dir}" + cp "${MM_DIR}/__config/config.js.sample" "${config_dir}/config.js" + fi fi echo "Starting MagicMirror2 on port $MM_PORT..."