diff options
Diffstat (limited to 'Makefile')
-rw-r--r-- | Makefile | 58 |
1 files changed, 31 insertions, 27 deletions
@@ -1,29 +1,20 @@ | |||
1 | systemctl_start_units = fossil-user.socket | ||
2 | systemctl_user_start_units = fossil-httpd.socket | ||
3 | |||
1 | ifneq (0,$(shell id -u)) | 4 | ifneq (0,$(shell id -u)) |
2 | fossil_database = db.fossil | 5 | fossil_database = db.fossil |
3 | unitdir = "$${XDG_CONFIG_HOME:-$$HOME/.config}/systemd/user" | 6 | fossil_instance_name != systemd-escape "$$(realpath $(fossil_database))" |
4 | unit_instance_name != systemd-escape "$$(realpath "$(fossil_database)")" | 7 | |
5 | our_name = fossil-sync | 8 | systemctl_user_start_units += $(addprefix fossil-sync@$(fossil_instance_name).,service timer path) |
6 | unit_files_basenames = $(addprefix $(our_name)@.,service path timer) | ||
7 | unit_files = $(addprefix src/,$(unit_files_basenames) fossil-init@.service $(addprefix fossil-httpd,.socket @.service)) | ||
8 | unit_instances = $(subst @,@"$(unit_instance_name)",$(unit_files_basenames)) | ||
9 | unit_instance = $(our_name)@$(unit_instance_name).service | ||
10 | fossil_test_instances = '$(shell systemd-escape fossil-test-instance-1)' '$(shell systemd-escape a/b/c/fossil-test-instance-2)' | ||
11 | 9 | ||
12 | default: install start test | 10 | default: install start test |
13 | install: | 11 | install: |
14 | sudo make install-deps | 12 | sudo make install-deps install |
15 | install -m644 -t $(unitdir) -- $(unit_files) | ||
16 | systemctl --user daemon-reload | 13 | systemctl --user daemon-reload |
17 | systemctl --user start fossil-httpd.socket | ||
18 | sudo make $@ | ||
19 | start stop restart status show: | $(fossil_database) | 14 | start stop restart status show: | $(fossil_database) |
20 | systemctl --user $@ $(unit_instances) | 15 | systemctl --user $@ $(systemctl_user_start_units) |
21 | follow: | 16 | follow: |
22 | journalctl --user $(addprefix -u , $(unit_instances)) -f | 17 | journalctl --user $(addprefix -u , $(systemctl_user_start_units)) -f |
23 | test: | ||
24 | mkdir -p $(HOME)/src/a/b/c | ||
25 | systemctl --user start --wait $(addprefix fossil-init@,$(fossil_test_instances)) | ||
26 | sudo $(MAKE) -$(MAKEFLAGS) $@ | ||
27 | 18 | ||
28 | 19 | ||
29 | 20 | ||
@@ -34,6 +25,16 @@ ui: | work/.fslckout | |||
34 | 25 | ||
35 | 26 | ||
36 | 27 | ||
28 | |||
29 | fossil_test_instances = \ | ||
30 | '$(shell systemd-escape fossil-test-instance-1)' \ | ||
31 | '$(shell systemd-escape a/b/c/fossil-test-instance-2)' | ||
32 | |||
33 | test: | ||
34 | mkdir -p $(HOME)/src/a/b/c | ||
35 | systemctl --user start --wait $(addprefix fossil-init@,$(fossil_test_instances)) | ||
36 | sudo $(MAKE) -$(MAKEFLAGS) $@ | ||
37 | |||
37 | $(fossil_database): | 38 | $(fossil_database): |
38 | fossil init $@ | 39 | fossil init $@ |
39 | work: | 40 | work: |
@@ -41,9 +42,11 @@ work: | |||
41 | work/.fslckout: | work $(fossil_database) | 42 | work/.fslckout: | work $(fossil_database) |
42 | cd work && fossil open ../$(fossil_database) | 43 | cd work && fossil open ../$(fossil_database) |
43 | else | 44 | else |
44 | unitdir = /etc/systemd/system | 45 | user_unit_files = $(wildcard $(addprefix src/user/*.,timer service path socket)) |
45 | unit_files = $(addprefix src/fossil-user,@.service .socket) src/fossil-test@.service src/fossil-init@.service | 46 | root_unit_files = $(wildcard $(addprefix src/*.,timer service path socket)) |
46 | units = $(filter-out %@.service,$(notdir $(unit_files))) | 47 | systemd_system_dir=/etc/systemd/system |
48 | systemd_user_dir=/etc/systemd/user | ||
49 | |||
47 | executables = src/endofossil | 50 | executables = src/endofossil |
48 | bindir = /usr/local/bin | 51 | bindir = /usr/local/bin |
49 | dependencies = socat fossil ssh openssh-server fakeroot | 52 | dependencies = socat fossil ssh openssh-server fakeroot |
@@ -52,20 +55,21 @@ SSH_USERNAME != if [ "$$SUDO_USER" ]; then echo "$$SUDO_USER"; else id -u; fi | |||
52 | 55 | ||
53 | default: install start follow | 56 | default: install start follow |
54 | install: | 57 | install: |
58 | install -t "$(bindir)" -- $(executables) | ||
55 | install -t /etc/ssh/ -- src/AuthorizedKeysCommand | 59 | install -t /etc/ssh/ -- src/AuthorizedKeysCommand |
56 | install -T -- src/AnonymousForceCommand /etc/ssh/user-$(SSH_USERNAME).AnonymousForceCommand | 60 | install -T -- src/AnonymousForceCommand /etc/ssh/user-"$(SSH_USERNAME)".AnonymousForceCommand |
57 | install -m644 -t /etc/ssh/sshd_config.d -- src/fossil-user.conf | 61 | install -m644 -t /etc/ssh/sshd_config.d -- src/fossil-user.conf |
58 | install -m644 -t $(unitdir) -- $(unit_files) | 62 | install -m644 -t "$(systemd_system_dir)" -- $(root_unit_files) |
59 | install -t $(bindir) -- $(executables) | 63 | install -m644 -t "$(systemd_user_dir)" -- $(user_unit_files) |
60 | systemctl daemon-reload | 64 | systemctl daemon-reload |
61 | systemctl reload ssh | 65 | systemctl reload ssh |
62 | systemctl start fossil-user.socket | 66 | make start |
63 | deps install-deps: | 67 | deps install-deps: |
64 | apt install --mark-auto --no-upgrade $(dependencies) | 68 | apt install --mark-auto --no-upgrade $(dependencies) |
65 | test: install | 69 | test: install |
66 | journalctl -f -u fossil-test@$(SSH_USERNAME) & p=$$!; systemctl start --wait fossil-test@$(SSH_USERNAME); sleep 1; kill $$p | 70 | journalctl -f -u fossil-test@$(SSH_USERNAME) & p=$$!; systemctl start --wait fossil-test@$(SSH_USERNAME); sleep 1; kill $$p |
67 | start stop restart status show: | 71 | start stop restart status show: |
68 | systemctl $@ $(units) | 72 | systemctl $@ $(systemctl_start_units) |
69 | follow: | 73 | follow: |
70 | journalctl $(addprefix -u , $(units)) -f | 74 | journalctl $(addprefix -u , $(systemctl_start_units)) -f |
71 | endif | 75 | endif |