-
Notifications
You must be signed in to change notification settings - Fork 6
Expand file tree
/
Copy pathMakefile
More file actions
69 lines (63 loc) · 2.62 KB
/
Copy pathMakefile
File metadata and controls
69 lines (63 loc) · 2.62 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
SHELL := /bin/bash
PYTHON ?= python3
VENV ?= .venv
VENV_PY := $(VENV)/bin/python
PIP := $(VENV)/bin/pip
PID_FILE := .system-monitor.pid
LOG_FILE := .system-monitor.log
APP_ARGS ?=
.PHONY: help install run close status
help:
@echo "Targets:"
@echo " make install - create virtualenv and install dependencies"
@echo " make run - start the app in background and save PID"
@echo " make close - stop the running app instance"
@echo " make status - show whether app is running"
install:
@test -d $(VENV) || $(PYTHON) -m venv $(VENV)
@$(PIP) install --upgrade pip
@$(PIP) install -r requirements.txt
run:
@test -x $(VENV_PY) || (echo "Virtual environment missing. Run 'make install' first." && exit 1)
@if [ -f $(PID_FILE) ] && kill -0 $$(cat $(PID_FILE)) 2>/dev/null; then \
echo "App is already running with PID $$(cat $(PID_FILE))."; \
exit 0; \
fi
@QT_PLUGIN_SRC="$$( $(VENV_PY) -c 'import PyQt5; from pathlib import Path; print((Path(PyQt5.__file__).resolve().parent / "Qt5" / "plugins").as_posix())' )"; \
QT_PLATFORM_SRC="$$QT_PLUGIN_SRC/platforms"; \
QT_PLUGIN_PATH_RUN="$$QT_PLUGIN_SRC"; \
QT_QPA_PLATFORM_PLUGIN_PATH_RUN="$$QT_PLATFORM_SRC"; \
if [ "$$(uname -s)" = "Darwin" ]; then \
QT_LIB_SRC="$$( $(VENV_PY) -c 'import PyQt5; from pathlib import Path; print((Path(PyQt5.__file__).resolve().parent / "Qt5" / "lib").as_posix())' )"; \
QT_RUNTIME_DIR="$(PWD)/qt_runtime"; \
mkdir -p "$$QT_RUNTIME_DIR/plugins/platforms"; \
cp "$$QT_PLATFORM_SRC"/*.dylib "$$QT_RUNTIME_DIR/plugins/platforms/" 2>/dev/null || true; \
ln -sfn "$$QT_LIB_SRC" "$$QT_RUNTIME_DIR/lib"; \
QT_PLUGIN_PATH_RUN="$$QT_RUNTIME_DIR/plugins"; \
QT_QPA_PLATFORM_PLUGIN_PATH_RUN="$$QT_RUNTIME_DIR/plugins/platforms"; \
fi; \
env -u PYTHONPATH -u PYTHONHOME QT_PLUGIN_PATH="$$QT_PLUGIN_PATH_RUN" QT_QPA_PLATFORM_PLUGIN_PATH="$$QT_QPA_PLATFORM_PLUGIN_PATH_RUN" $(VENV_PY) systemMonitor.py $(APP_ARGS) > $(LOG_FILE) 2>&1 & echo $$! > $(PID_FILE); \
sleep 1; \
if kill -0 $$(cat $(PID_FILE)) 2>/dev/null; then \
echo "Started System Monitor with PID $$(cat $(PID_FILE)). Logs: $(LOG_FILE)"; \
else \
echo "System Monitor failed to start. Last log lines:"; \
tail -n 20 $(LOG_FILE) || true; \
rm -f $(PID_FILE); \
exit 1; \
fi
close:
@if [ -f $(PID_FILE) ] && kill -0 $$(cat $(PID_FILE)) 2>/dev/null; then \
kill $$(cat $(PID_FILE)); \
rm -f $(PID_FILE); \
echo "Stopped System Monitor."; \
else \
echo "No managed app process is running."; \
rm -f $(PID_FILE); \
fi
status:
@if [ -f $(PID_FILE) ] && kill -0 $$(cat $(PID_FILE)) 2>/dev/null; then \
echo "Running (PID $$(cat $(PID_FILE)))."; \
else \
echo "Not running."; \
fi