fix(deployment): resolve OpenBSD rc.d service tracking and deployment workflow

- Fix OpenBSD service file pexp pattern to match actual running process
- Set pexp after sourcing rc.subr to prevent automatic override
- Update deployment script process detection from broken furt-lua pattern
- Add TTY-based daemon detection in start.sh for service vs development mode
- Implement comprehensive deployment workflow with backup and health checks
- Enable proper rcctl start/stop/check functionality on OpenBSD

Root cause: OpenBSD rc.subr automatically generates pexp from daemon+flags,
but actual process (/usr/local/bin/lua src/main.lua) differs from wrapper
(start.sh). Solution: Override pexp after rc.subr with correct Lua pattern.

Deployment script also had incorrect process detection pattern looking for
'furt-lua' string that doesn't exist in process name.

Technical details:
- Service file: pexp="/usr/local/bin/lua src/main.lua.*" after rc.subr
- Process detection: pgrep -u _furt -f 'src/main.lua'
- TTY detection: [ ! -t 0 ] for daemon vs interactive mode
- Complete deployment workflow with stop/sync/start/health-check cycle

Fixes #77 - OpenBSD rc.d service file problem resolved
Related: Deployment automation now fully functional karl→walter
This commit is contained in:
michael 2025-06-23 19:44:21 +02:00
parent c22b3aa691
commit 0abc9791d3
4 changed files with 40 additions and 6 deletions

View file

@ -254,7 +254,7 @@ rollback_deployment() {
get_service_status() {
# Check if furt process is actually running (regardless of rcctl status)
if walter_exec "ps aux | grep -v grep | grep -q '_furt.*lua.*main.lua'"; then
if walter_exec "pgrep -u _furt -f 'src/main.lua' >/dev/null 2>&1"; then
echo "running"
else
echo "stopped"
@ -424,17 +424,20 @@ fix_service_file() {
log_info "Creating correct service file..."
walter_exec_as_root "sh -c 'cat > /etc/rc.d/furt << \"EOF\"
#!/bin/ksh
daemon=\"$TARGET_DIR/scripts/start.sh\"
daemon_user=\"$SERVICE_USER\"
daemon_cwd=\"$TARGET_DIR\"
daemon_flags=\"start\"
pexp=\"lua.*main.lua\"
. /etc/rc.d/rc.subr
rc_bg=YES
# pexp NACH rc.subr überschreiben (Fix für OpenBSD Issue #77)
pexp=\"/usr/local/bin/lua src/main.lua.*\"
rc_cmd \$1
EOF'"
# Make service file executable
walter_exec_as_root "chmod +x /etc/rc.d/furt"