Skip to content

Commit f285998

Browse files
authored
fix: Resolve PID file path resolution in local-dev-all target (#366)
Problem: After PR #360 merge, running 'make local-dev-all' failed with: /bin/sh: ../.dev-pids/backend.pid: No such file or directory Root Cause: The 'local-dev-all' target used relative paths (../.dev-pids/) after changing directories with 'cd backend &&' and 'cd frontend &&'. In the subshell context after the background operator '&', these relative paths failed to resolve correctly, causing PID file writes to fail. Solution: 1. Capture absolute project root path at start: PROJECT_ROOT=$(pwd) 2. Use absolute paths for all PID and log files throughout the target 3. Consolidate all commands into single shell execution with semicolons to ensure PROJECT_ROOT variable persists across all operations Changes: - Line 123: Capture PROJECT_ROOT=$(pwd) at target start - Lines 124-156: Use $$PROJECT_ROOT/ prefix for all .dev-pids and logs - Changed from multiple @ prefixed lines to single continuous shell script - Backend PID: ../.dev-pids/backend.pid → $$PROJECT_ROOT/.dev-pids/backend.pid - Frontend PID: ../.dev-pids/frontend.pid → $$PROJECT_ROOT/.dev-pids/frontend.pid - Backend log: ../logs/backend.log → $$PROJECT_ROOT/logs/backend.log - Frontend log: ../logs/frontend.log → $$PROJECT_ROOT/logs/frontend.log Testing: - Verified absolute paths work regardless of working directory - Ensured PID file checks reference same absolute paths - Confirmed 'make local-dev-stop' still works (uses relative paths from project root) Fixes post-PR #360 regression where local development restart failed Signed-off-by: manavgup <manavg@gmail.com>
1 parent 848b1bc commit f285998

File tree

1 file changed

+26
-25
lines changed

1 file changed

+26
-25
lines changed

Makefile

Lines changed: 26 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -120,39 +120,40 @@ local-dev-frontend:
120120

121121
local-dev-all:
122122
@echo "$(CYAN)🚀 Starting full local development stack...$(NC)"
123-
@mkdir -p .dev-pids logs
124-
@$(MAKE) local-dev-infra
125-
@echo "$(CYAN)🐍 Starting backend in background...$(NC)"
126-
@cd backend && $(POETRY) run uvicorn main:app --reload --host 0.0.0.0 --port 8000 > ../logs/backend.log 2>&1 & echo $$! > ../.dev-pids/backend.pid
127-
@sleep 2
128-
@if [ -f .dev-pids/backend.pid ]; then \
129-
if kill -0 $$(cat .dev-pids/backend.pid) 2>/dev/null; then \
130-
echo "$(GREEN)✅ Backend started (PID: $$(cat .dev-pids/backend.pid))$(NC)"; \
123+
@PROJECT_ROOT=$$(pwd); \
124+
mkdir -p $$PROJECT_ROOT/.dev-pids $$PROJECT_ROOT/logs; \
125+
$(MAKE) local-dev-infra; \
126+
echo "$(CYAN)🐍 Starting backend in background...$(NC)"; \
127+
cd backend && $(POETRY) run uvicorn main:app --reload --host 0.0.0.0 --port 8000 > $$PROJECT_ROOT/logs/backend.log 2>&1 & echo $$! > $$PROJECT_ROOT/.dev-pids/backend.pid; \
128+
sleep 2; \
129+
if [ -f $$PROJECT_ROOT/.dev-pids/backend.pid ]; then \
130+
if kill -0 $$(cat $$PROJECT_ROOT/.dev-pids/backend.pid) 2>/dev/null; then \
131+
echo "$(GREEN)✅ Backend started (PID: $$(cat $$PROJECT_ROOT/.dev-pids/backend.pid))$(NC)"; \
131132
else \
132133
echo "$(RED)❌ Backend failed to start - check logs/backend.log$(NC)"; \
133134
exit 1; \
134135
fi; \
135-
fi
136-
@echo "$(CYAN)⚛️ Starting frontend in background...$(NC)"
137-
@cd frontend && npm run dev > ../logs/frontend.log 2>&1 & echo $$! > ../.dev-pids/frontend.pid
138-
@sleep 2
139-
@if [ -f .dev-pids/frontend.pid ]; then \
140-
if kill -0 $$(cat .dev-pids/frontend.pid) 2>/dev/null; then \
141-
echo "$(GREEN)✅ Frontend started (PID: $$(cat .dev-pids/frontend.pid))$(NC)"; \
136+
fi; \
137+
echo "$(CYAN)⚛️ Starting frontend in background...$(NC)"; \
138+
cd frontend && npm run dev > $$PROJECT_ROOT/logs/frontend.log 2>&1 & echo $$! > $$PROJECT_ROOT/.dev-pids/frontend.pid; \
139+
sleep 2; \
140+
if [ -f $$PROJECT_ROOT/.dev-pids/frontend.pid ]; then \
141+
if kill -0 $$(cat $$PROJECT_ROOT/.dev-pids/frontend.pid) 2>/dev/null; then \
142+
echo "$(GREEN)✅ Frontend started (PID: $$(cat $$PROJECT_ROOT/.dev-pids/frontend.pid))$(NC)"; \
142143
else \
143144
echo "$(RED)❌ Frontend failed to start - check logs/frontend.log$(NC)"; \
144145
exit 1; \
145146
fi; \
146-
fi
147-
@echo "$(GREEN)✅ Local development environment running!$(NC)"
148-
@echo "$(CYAN)💡 Services:$(NC)"
149-
@echo " Frontend: http://localhost:3000"
150-
@echo " Backend: http://localhost:8000"
151-
@echo " MLFlow: http://localhost:5001"
152-
@echo "$(CYAN)📋 Logs:$(NC)"
153-
@echo " Backend: tail -f logs/backend.log"
154-
@echo " Frontend: tail -f logs/frontend.log"
155-
@echo "$(CYAN)🛑 Stop:$(NC) make local-dev-stop"
147+
fi; \
148+
echo "$(GREEN)✅ Local development environment running!$(NC)"; \
149+
echo "$(CYAN)💡 Services:$(NC)"; \
150+
echo " Frontend: http://localhost:3000"; \
151+
echo " Backend: http://localhost:8000"; \
152+
echo " MLFlow: http://localhost:5001"; \
153+
echo "$(CYAN)📋 Logs:$(NC)"; \
154+
echo " Backend: tail -f logs/backend.log"; \
155+
echo " Frontend: tail -f logs/frontend.log"; \
156+
echo "$(CYAN)🛑 Stop:$(NC) make local-dev-stop"
156157

157158
local-dev-stop:
158159
@echo "$(CYAN)🛑 Stopping local development services...$(NC)"

0 commit comments

Comments
 (0)