summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke Shumaker <lukeshu@sbcglobal.net>2016-04-08 17:00:05 -0400
committerLuke Shumaker <lukeshu@sbcglobal.net>2016-04-08 17:00:05 -0400
commit41bfc4bb5e1042ec9eca48ed645393b12978d703 (patch)
tree094cf68df41f7f5c98a1c844e51bc32fb0e7155d
parent608f4f254ccf95a01b5480e2dbe7a1b6e54c8609 (diff)
Actual install process
-rw-r--r--.gitignore8
-rw-r--r--Makefile41
-rw-r--r--config.mk7
-rw-r--r--src/.gitignore5
-rw-r--r--src/freenect-server.c (renamed from freenect-server.c)0
-rw-r--r--src/multipart-replace-http-server.c (renamed from multipart-replace-http-server.c)0
-rw-r--r--src/multipart-replace.c (renamed from multipart-replace.c)0
-rw-r--r--src/multipart-replace.h (renamed from multipart-replace.h)0
-rw-r--r--src/util.c (renamed from util.c)0
-rw-r--r--src/util.h (renamed from util.h)0
-rw-r--r--src/wg.c (renamed from wg.c)0
-rw-r--r--src/wg.h (renamed from wg.h)0
-rw-r--r--systemd/.gitignore2
-rw-r--r--systemd/freenect-server-http.service.in (renamed from freenect-server-http.service)6
-rw-r--r--systemd/freenect-server-http.socket.in (renamed from freenect-server-http.socket)2
-rw-r--r--systemd/freenect-server.service.in (renamed from freenect-server.service)6
-rw-r--r--systemd/freenect-server@.socket.in (renamed from freenect-server@.socket)4
-rwxr-xr-xwrite-ifchanged11
18 files changed, 71 insertions, 21 deletions
diff --git a/.gitignore b/.gitignore
index 52ef0a6..cc6f0bb 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,6 +1,2 @@
-/freenect-server
-/freenect-server--kinect
-/multipart-replace-http-server
-
-*.o
-.*.mk
+.var.*
+.tmp.*
diff --git a/Makefile b/Makefile
index 9b0bf86..bfa2b30 100644
--- a/Makefile
+++ b/Makefile
@@ -20,18 +20,47 @@ CFLAGS += -fstack-protector
CFLAGS += -O2
CPPFLAGS += -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2
-all: freenect-server multipart-replace-http-server
+all: build
.PHONY: all
-freenect-server: util.o -lfreenect -lusb-1.0 -ljpeg
-multipart-replace-http-server: util.o wg.o multipart-replace.o -lpthread
+include config.mk
+
+progs = freenect-server multipart-replace-http-server
+units = freenect-server-http.service freenect-server-http.socket freenect-server.service freenect-server@.socket
+
+build: $(addprefix src/,$(progs)) $(addprefix systemd/,$(units))
+.PHONY: build
+
+src/freenect-server: src/util.o -lfreenect -lusb-1.0 -ljpeg
+src/multipart-replace-http-server: src/util.o src/wg.o src/multipart-replace.o -lpthread
+systemd/freenect-server-http.service: .var.user .var.group .var.bindir
+systemd/freenect-server-http.socket: .var.httpstream
+systemd/freenect-server.service: .var.user .var.group .var.bindir
+systemd/freenect-server@.socket: .var.user .var.group
+
+systemd/%: systemd/%.in
+ sed $(foreach v,$(patsubst .var.%,%,$(filter .var.%,$^)), -e 's|@$v@|$($v)|' ) < $< > $@
+
+.var.%: FORCE
+ @printf '%s' '$($*)' | ./write-ifchanged $@
+
+install: $(addprefix $(DESTDIR)$(bindir)/,$(progs)) $(addprefix $(DESTDIR)$(systemddir)/,$(units))
+
+$(DESTDIR)$(bindir)/%: src/%
+ install -Dm755 $< $@
+
+$(DESTDIR)$(systemddir)/%: systemd/%
+ install -Dm644 $< $@
clean:
- rm -f -- *.o .*.mk freenect-server freenect-server--kinect multipart-replace-http-server
+ rm -f -- src/*.o src/.*.mk
+ rm -f -- src/freenect-server src/multipart-replace-http-server
+ rm -f -- systemd/*.socket systemd/*.service
.PHONY: clean
+.PHONY: FORCE
.DELETE_ON_ERROR:
.SECONDARY:
-CPPFLAGS += -MD -MF ${@:%.o=.%.mk} -MP
--include .*.mk
+CPPFLAGS += -MD -MF $(@D)/$(@F:%.o=.%.mk) -MP
+-include src/.*.mk
diff --git a/config.mk b/config.mk
new file mode 100644
index 0000000..7f6f673
--- /dev/null
+++ b/config.mk
@@ -0,0 +1,7 @@
+DESTDIR =
+prefix = /usr/local
+bindir = $(prefix)/bin
+systemddir = $(prefix)/lib/systemd/system
+user = alarm
+group = alarm
+httpstream=5800
diff --git a/src/.gitignore b/src/.gitignore
new file mode 100644
index 0000000..bf84729
--- /dev/null
+++ b/src/.gitignore
@@ -0,0 +1,5 @@
+/freenect-server
+/multipart-replace-http-server
+
+*.o
+.*.mk
diff --git a/freenect-server.c b/src/freenect-server.c
index c5ed99a..c5ed99a 100644
--- a/freenect-server.c
+++ b/src/freenect-server.c
diff --git a/multipart-replace-http-server.c b/src/multipart-replace-http-server.c
index 726714f..726714f 100644
--- a/multipart-replace-http-server.c
+++ b/src/multipart-replace-http-server.c
diff --git a/multipart-replace.c b/src/multipart-replace.c
index 9a5e268..9a5e268 100644
--- a/multipart-replace.c
+++ b/src/multipart-replace.c
diff --git a/multipart-replace.h b/src/multipart-replace.h
index 2aa5e61..2aa5e61 100644
--- a/multipart-replace.h
+++ b/src/multipart-replace.h
diff --git a/util.c b/src/util.c
index 772dbf8..772dbf8 100644
--- a/util.c
+++ b/src/util.c
diff --git a/util.h b/src/util.h
index 0432a57..0432a57 100644
--- a/util.h
+++ b/src/util.h
diff --git a/wg.c b/src/wg.c
index 4f60765..4f60765 100644
--- a/wg.c
+++ b/src/wg.c
diff --git a/wg.h b/src/wg.h
index 777e8a3..777e8a3 100644
--- a/wg.h
+++ b/src/wg.h
diff --git a/systemd/.gitignore b/systemd/.gitignore
new file mode 100644
index 0000000..b5d3911
--- /dev/null
+++ b/systemd/.gitignore
@@ -0,0 +1,2 @@
+*.socket
+*.service
diff --git a/freenect-server-http.service b/systemd/freenect-server-http.service.in
index 6b4d91b..219e4f3 100644
--- a/freenect-server-http.service
+++ b/systemd/freenect-server-http.service.in
@@ -7,9 +7,9 @@ After=freenect-server.service
[Service]
Type=simple
-User=alarm
-Group=alarm
-ExecStart=/home/alarm/freenect-server/multipart-replace-http-server fd systemd /run/freenect-server/video.mjpg /run/freenect-server/depth.mjpg /run/freenect-server/accel.mjson
+User=@user@
+Group=@group@
+ExecStart=@bindir@/multipart-replace-http-server fd systemd /run/freenect-server/video.mjpg /run/freenect-server/depth.mjpg /run/freenect-server/accel.mjson
[Install]
WantedBy=multi-user.target
diff --git a/freenect-server-http.socket b/systemd/freenect-server-http.socket.in
index 8c54b10..938a0e8 100644
--- a/freenect-server-http.socket
+++ b/systemd/freenect-server-http.socket.in
@@ -2,7 +2,7 @@
Description=Kinect HTTP media streamer socket
[Socket]
-ListenStream=5800
+ListenStream=@httpstream@
[Install]
WantedBy=sockets.target
diff --git a/freenect-server.service b/systemd/freenect-server.service.in
index 4ccf7f6..5473f7d 100644
--- a/freenect-server.service
+++ b/systemd/freenect-server.service.in
@@ -5,8 +5,8 @@ Requires=freenect-server@accel.mjson.socket freenect-server@depth.mjpg.socket fr
[Service]
Type=simple
-User=alarm
-Group=alarm
-ExecStart=/home/alarm/freenect-server/freenect-server -V systemd:freenect-server@video.mjpg.socket -D systemd:freenect-server@depth.mjpg.socket -A systemd:freenect-server@accel.mjson.socket
+User=@user@
+Group=@group@
+ExecStart=@bindir@/freenect-server -V systemd:freenect-server@video.mjpg.socket -D systemd:freenect-server@depth.mjpg.socket -A systemd:freenect-server@accel.mjson.socket
Restart=always
diff --git a/freenect-server@.socket b/systemd/freenect-server@.socket.in
index 78df40e..bcacd0a 100644
--- a/freenect-server@.socket
+++ b/systemd/freenect-server@.socket.in
@@ -3,8 +3,8 @@ Description=Kinect media streamer backend %I stream
After=network.target
[Socket]
-SocketUser=alarm
-SocketGroup=alarm
+SocketUser=@user@
+SocketGroup=@group@
ListenFIFO=/run/freenect-server/%I
Service=freenect-server.service
RemoveOnStop=true \ No newline at end of file
diff --git a/write-ifchanged b/write-ifchanged
new file mode 100755
index 0000000..c65fa16
--- /dev/null
+++ b/write-ifchanged
@@ -0,0 +1,11 @@
+#!/usr/bin/env bash
+
+outfile=$1
+tmpfile="$(dirname "$outfile")/.tmp${outfile##*/}"
+
+cat > "$tmpfile" || exit $?
+if cmp -s "$tmpfile" "$outfile"; then
+ rm -f "$tmpfile" || :
+else
+ mv -f "$tmpfile" "$outfile"
+fi