summaryrefslogtreecommitdiff
path: root/Makefile
blob: 8451d2696bb37ea6bdbbf9924c869f1a08baa952 (plain)
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
systemctl_start_units = fossil-user.socket
systemctl_user_start_units = fossil-httpd.socket

ifneq (0,$(shell id -u))
fossil_database = db.fossil
fossil_instance_name != systemd-escape "$$(realpath $(fossil_database))"

systemctl_user_start_units += $(addprefix fossil-sync@$(fossil_instance_name).,service timer path)

default: install test
install:
	sudo make install-deps install
	systemctl --user daemon-reload
	make start
start stop restart status show: | $(fossil_database)
	systemctl --user $@ $(systemctl_user_start_units)
follow:
	journalctl --user $(addprefix -u , $(systemctl_user_start_units)) -f




ui: | work/.fslckout
	cd work && fossil ui





fossil_test_instances = \
'$(shell systemd-escape fossil-test-instance-1)' \
'$(shell systemd-escape a/b/c/fossil-test-instance-2)'

test:
	mkdir -p $(HOME)/src/a/b/c
	systemctl --user start --wait $(addprefix fossil-init@,$(fossil_test_instances))
	sudo $(MAKE) -$(MAKEFLAGS) $@

$(fossil_database):
	fossil init $@
work:
	mkdir -p $@
work/.fslckout: | work $(fossil_database)
	cd work && fossil open ../$(fossil_database)
else
user_unit_files = $(wildcard $(addprefix src/user/*.,timer service path socket))
root_unit_files = $(wildcard $(addprefix src/*.,timer service path socket))
systemd_system_dir=/etc/systemd/system
systemd_user_dir=/etc/systemd/user

executables = src/endofossil
bindir = /usr/local/bin
dependencies = socat fossil ssh openssh-server fakeroot

SSH_USERNAME != if [ "$$SUDO_USER" ]; then echo "$$SUDO_USER"; else id -u; fi

default: install start follow
install:
	install -t "$(bindir)" -- $(executables)
	install -t /etc/ssh/ -- src/AuthorizedKeysCommand
	install -T -- src/AnonymousForceCommand /etc/ssh/user-"$(SSH_USERNAME)".AnonymousForceCommand
	install -m644 -t /etc/ssh/sshd_config.d -- src/fossil-user.conf
	install -m644 -t "$(systemd_system_dir)" -- $(root_unit_files)
	install -m644 -t "$(systemd_user_dir)" -- $(user_unit_files)
	systemctl daemon-reload
	systemctl reload ssh
	systemctl start --wait fossil-disable-apache@-
	install -m644 -t /etc/apache2/sites-available -- src/fossil.conf~template
	systemctl start --wait fossil-enable-apache@-
	make start
deps install-deps:
	apt install --mark-auto --no-upgrade $(dependencies)
test: install
	journalctl -f -u fossil-test@$(SSH_USERNAME) & p=$$!; systemctl start --wait fossil-test@$(SSH_USERNAME); sleep 1; kill $$p
start stop restart status show:
	systemctl $@ $(systemctl_start_units)
follow:
	journalctl $(addprefix -u , $(systemctl_start_units)) -f
endif