Repository navigation
Expand file tree
/
Copy pathMakefile
More file actions
85 lines (74 loc) · 3.15 KB
/
Copy pathMakefile
File metadata and controls
85 lines (74 loc) · 3.15 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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
.DEFAULT_GOAL := help
PYTHON ?= python3
DEV_VENV ?= .venv
WHEELHOUSE ?= build/wheels
BUILD_WHEELS ?= 1
MANIFEST ?= $(PREFIX)/share/repowatch/install.json
PREFIX ?= /usr/local
SYSCONFDIR ?= /etc
LOCALSTATEDIR ?= /var
DESTDIR ?=
CACHE_DIR ?= $(LOCALSTATEDIR)/cache/nginx/repowatch
SYSTEMD_UNIT_DIR ?= /etc/systemd/system
NGINX_CONF ?=
NGINX_ENABLED_DIR ?=
WITH_NGINX ?= 1
WITH_SYSTEMD ?= 1
export PREFIX SYSCONFDIR LOCALSTATEDIR DESTDIR CACHE_DIR SYSTEMD_UNIT_DIR
export NGINX_CONF NGINX_ENABLED_DIR WITH_NGINX WITH_SYSTEMD WHEELHOUSE BUILD_WHEELS
.PHONY: help dev test test-ui check wheel install activate
help:
@echo 'make dev Prepare local Python development environment'
@echo 'make test Run full Python test suite (after make dev)'
@echo 'make test-ui Run existing JS tests (requires node + jsdom)'
@echo 'make check Read-only installation diagnostics; OK/WARN/FAIL'
@echo 'make wheel Build application and dependency wheels'
@echo 'make install Check, build and install files; no service activation'
@echo 'make upgrade-plan / upgrade Plan / apply offline system upgrade with rollback'
@echo 'make activate Explicit local systemd/nginx activation (root, no DESTDIR)'
@echo 'Paths: PREFIX SYSCONFDIR LOCALSTATEDIR DESTDIR CACHE_DIR'
@echo 'Integration: WITH_NGINX WITH_SYSTEMD NGINX_CONF NGINX_ENABLED_DIR SYSTEMD_UNIT_DIR'
@echo 'Docker: docker-generate docker-check docker-build docker-clean docker-features docker-compose-build'
@echo 'Docker options: DOCKER_EXPERIMENTAL=nix DOCKER_IMAGE=tag DOCKER_ENGINE=docker'
dev:
$(PYTHON) -m venv "$(DEV_VENV)"
"$(DEV_VENV)/bin/python" -m pip install -e . pytest
test:
"$(DEV_VENV)/bin/python" -m pytest tests/
test-ui:
node --test tests/dashboard.test.cjs
check:
$(PYTHON) -B scripts/install.py check
wheel:
$(PYTHON) -B scripts/install.py wheel
# Check before network/build work, then recheck immediately before writes.
install: check
@if [ "$(BUILD_WHEELS)" = "1" ]; then $(MAKE) wheel; elif [ "$(BUILD_WHEELS)" != "0" ]; then echo "BUILD_WHEELS must be 0 or 1"; exit 1; fi
$(PYTHON) -B scripts/install.py install
activate:
$(PYTHON) -B scripts/install.py activate
# Wheelhouse must already contain target-compatible dependencies. No downloads.
.PHONY: upgrade upgrade-plan
upgrade-plan:
$(PYTHON) -B scripts/upgrade-system.py --manifest "$(MANIFEST)" --wheelhouse "$(WHEELHOUSE)"
upgrade:
$(PYTHON) -B scripts/upgrade-system.py --manifest "$(MANIFEST)" --wheelhouse "$(WHEELHOUSE)" --apply
# Only explicit Docker targets generate context files or invoke the build engine.
DOCKER_EXPERIMENTAL ?=
DOCKER_ENGINE ?= docker
export DOCKER_EXPERIMENTAL DOCKER_ENGINE DOCKER_IMAGE DOCKER_NGINX_IMAGE
.PHONY: docker-generate docker-check docker-build docker-clean docker-features
docker-generate:
$(PYTHON) -B scripts/docker.py generate
docker-check:
$(PYTHON) -B scripts/docker.py check
docker-build:
$(PYTHON) -B scripts/docker.py build
docker-clean:
$(PYTHON) -B scripts/docker.py clean
docker-features:
$(PYTHON) -B scripts/docker.py features
# Builds the trial images only; starting/stopping Compose remains explicit.
.PHONY: docker-compose-build
docker-compose-build:
$(PYTHON) -B scripts/docker.py compose-build