From 54639e800e06726a431bd3b9beaaf57505c670c0 Mon Sep 17 00:00:00 2001 From: Halim Naim Date: Sat, 16 Dec 2023 20:47:16 +0000 Subject: [PATCH 1/2] correctly install systemd unit when PREFIX is changed --- Makefile | 14 ++++++-------- keyd.service => keyd.service.in | 2 +- 2 files changed, 7 insertions(+), 9 deletions(-) rename keyd.service => keyd.service.in (83%) diff --git a/Makefile b/Makefile index 7999f9a..c4b2a0d 100644 --- a/Makefile +++ b/Makefile @@ -34,6 +34,7 @@ endif all: -mkdir bin cp scripts/keyd-application-mapper bin/ + sed -e 's#@PREFIX@#$(PREFIX)#' keyd.service.in > keyd.service $(CC) $(CFLAGS) -O3 $(COMPAT_FILES) src/*.c src/vkbd/$(VKBD).c -lpthread -o bin/keyd $(LDFLAGS) debug: CFLAGS="-g -Wunused" $(MAKE) @@ -47,12 +48,6 @@ man: scdoc < "$$f" | gzip > "$$target"; \ done install: - @if [ -e $(DESTDIR)$(PREFIX)/lib/systemd/ ]; then \ - install -Dm644 keyd.service $(DESTDIR)$(PREFIX)/lib/systemd/system/keyd.service; \ - else \ - echo "NOTE: systemd not found, you will need to manually add keyd to your system's init process."; \ - fi - @if [ "$(VKBD)" = "usb-gadget" ]; then \ install -Dm644 src/vkbd/usb-gadget.service $(DESTDIR)$(PREFIX)/lib/systemd/system/keyd-usb-gadget.service; \ install -Dm755 src/vkbd/usb-gadget.sh $(DESTDIR)$(PREFIX)/bin/keyd-usb-gadget.sh; \ @@ -65,6 +60,7 @@ install: mkdir -p $(DESTDIR)$(PREFIX)/share/man/man1/ mkdir -p $(DESTDIR)$(PREFIX)/share/doc/keyd/ mkdir -p $(DESTDIR)$(PREFIX)/share/doc/keyd/examples/ + mkdir -p $(DESTDIR)$(PREFIX)/lib/systemd/system/ -groupadd keyd install -m755 bin/* $(DESTDIR)$(PREFIX)/bin/ @@ -73,6 +69,7 @@ install: install -m644 layouts/* $(DESTDIR)$(PREFIX)/share/keyd/layouts install -m644 data/*.1.gz $(DESTDIR)$(PREFIX)/share/man/man1/ install -m644 data/keyd.compose $(DESTDIR)$(PREFIX)/share/keyd/ + install -Dm644 keyd.service $(DESTDIR)$(PREFIX)/lib/systemd/system/ uninstall: rm -rf $(DESTDIR)$(PREFIX)/lib/systemd/system/keyd.service \ @@ -81,9 +78,10 @@ uninstall: $(DESTDIR)$(PREFIX)/share/doc/keyd/ \ $(DESTDIR)$(PREFIX)/share/man/man1/keyd*.gz \ $(DESTDIR)$(PREFIX)/lib/systemd/system/keyd-usb-gadget.service \ - $(DESTDIR)$(PREFIX)/bin/keyd-usb-gadget.sh + $(DESTDIR)$(PREFIX)/bin/keyd-usb-gadget.sh \ + $(DESTDIR)$(PREFIX)/lib/systemd/system/keyd.service clean: - -rm -rf bin + -rm -rf bin keyd.service test: @cd t; \ for f in *.sh; do \ diff --git a/keyd.service b/keyd.service.in similarity index 83% rename from keyd.service rename to keyd.service.in index 14aa26d..f66a300 100644 --- a/keyd.service +++ b/keyd.service.in @@ -5,7 +5,7 @@ After=local-fs.target [Service] Type=simple -ExecStart=/usr/bin/keyd +ExecStart=@PREFIX@/bin/keyd [Install] WantedBy=sysinit.target From e66e789d28e73a77c4e3ecd036a6947cf83a5d6e Mon Sep 17 00:00:00 2001 From: Halim Naim Date: Sun, 17 Dec 2023 20:45:19 +0000 Subject: [PATCH 2/2] check for systemd independent of the selected prefix --- Makefile | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index c4b2a0d..86a1491 100644 --- a/Makefile +++ b/Makefile @@ -48,6 +48,13 @@ man: scdoc < "$$f" | gzip > "$$target"; \ done install: + @if [ -e /run/systemd/system ]; then \ + mkdir -p $(DESTDIR)$(PREFIX)/lib/systemd/system/; \ + install -Dm644 keyd.service $(DESTDIR)$(PREFIX)/lib/systemd/system/keyd.service; \ + else \ + echo "NOTE: systemd not found, you will need to manually add keyd to your system's init process."; \ + fi + @if [ "$(VKBD)" = "usb-gadget" ]; then \ install -Dm644 src/vkbd/usb-gadget.service $(DESTDIR)$(PREFIX)/lib/systemd/system/keyd-usb-gadget.service; \ install -Dm755 src/vkbd/usb-gadget.sh $(DESTDIR)$(PREFIX)/bin/keyd-usb-gadget.sh; \ @@ -60,7 +67,6 @@ install: mkdir -p $(DESTDIR)$(PREFIX)/share/man/man1/ mkdir -p $(DESTDIR)$(PREFIX)/share/doc/keyd/ mkdir -p $(DESTDIR)$(PREFIX)/share/doc/keyd/examples/ - mkdir -p $(DESTDIR)$(PREFIX)/lib/systemd/system/ -groupadd keyd install -m755 bin/* $(DESTDIR)$(PREFIX)/bin/ @@ -69,7 +75,6 @@ install: install -m644 layouts/* $(DESTDIR)$(PREFIX)/share/keyd/layouts install -m644 data/*.1.gz $(DESTDIR)$(PREFIX)/share/man/man1/ install -m644 data/keyd.compose $(DESTDIR)$(PREFIX)/share/keyd/ - install -Dm644 keyd.service $(DESTDIR)$(PREFIX)/lib/systemd/system/ uninstall: rm -rf $(DESTDIR)$(PREFIX)/lib/systemd/system/keyd.service \