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

@ -0,0 +1,14 @@
#!/bin/ksh
daemon="/usr/local/furt/furt-lua/scripts/start.sh"
daemon_user="_furt"
daemon_cwd="/usr/local/furt/furt-lua"
daemon_flags="start"
. /etc/rc.d/rc.subr
# pexp NACH rc.subr überschreiben (Fix für OpenBSD Issue #77)
pexp="/usr/local/bin/lua src/main.lua.*"
rc_cmd $1

View file

@ -97,6 +97,20 @@ echo -e "${YELLOW}Project directory:${NC} $PROJECT_DIR"
echo -e "${YELLOW}Lua paths configured for $LUA_CMD (version $LUA_VER)${NC}"
echo ""
# Start server
$LUA_CMD src/main.lua
# Auto-detect service context
if [ ! -t 0 ] || [ ! -t 1 ]; then
# No TTY = Service mode (rcctl)
echo "Starting Furt in daemon mode..."
$LUA_CMD src/main.lua &
echo "Furt started (PID: $!)"
else
# Interactive mode (manual/development)
# echo "Furt HTTP-Server started on 127.0.0.1:8080"
# echo "Press Ctrl+C to stop"
$LUA_CMD src/main.lua
fi
# Start server
# $LUA_CMD src/main.lua