diff --git a/INSTALL.md b/INSTALL.md index a9c2f02..8f2ce27 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -39,9 +39,15 @@ make install-service # or if you don't like autodetection make install-service-systemd # systemd make install-service-dinit # dinit -make install-service-runit # runit +make install-service-runit # runit (/etc/sv) +make install-service-runit-etc # runit (/etc/runit/sv) make install-service-openrc # openrc -make install-service-s6 # s6 +make install-service-s6 # s6 (/etc/sv) +make install-service-s6-etc # s6 (/etc/s6/sv) + +# For runit and s6, some distros (e.g. Artix) like to put it in /etc//sv +# to better isolate their packages while other distros (e.g. Void) just put it +# in /etc/sv ``` # AUR diff --git a/Makefile b/Makefile index b3ad922..002c4b8 100644 --- a/Makefile +++ b/Makefile @@ -54,7 +54,7 @@ install: lidm uninstall: rm -rf ${DESTDIR}${PREFIX}/bin/lidm ${DESTDIR}/etc/lidm.ini rm -rf ${DESTDIR}/usr/share/man/man{1/lidm.1,5/lidm-config.5}.gz - rm -rf /etc/systemd/system/lidm.service /etc/dinit.d/lidm /etc/runit/sv/lidm + rm -rf ${DESTDIR}/etc/systemd/system/lidm.service ${DESTDIR}/etc/dinit.d/lidm ${DESTDIR}/etc/runit/sv/lidm install-service: @if command -v systemctl &> /dev/null; then \ @@ -62,30 +62,72 @@ install-service: elif command -v dinitctl &> /dev/null; then \ make install-service-dinit; \ elif command -v sv &> /dev/null; then \ - make install-service-runit; \ + if [ -d /etc/sv ]; then \ + make install-service-runit; \ + elif [ -d /etc/runit/sv ]; then \ + make install-service-runit-etc; \ + else \ + printf '\033[31m%s\033[0m\n' "Unknown init system structure, skipping service install..." >&2; \ + fi \ elif command -v rc-update &> /dev/null; then \ make install-service-openrc; \ elif command -v s6-service &> /dev/null; then \ - make install-service-s6; \ + if [ -d /etc/sv ]; then\ + make install-service-s6; \ + elif [ -d /etc/r6nit/sv ]; then \ + make install-service-s6-etc; \ + else \ + printf '\033[31m%s\033[0m\n' "Unknown init system structure, skipping service install..." >&2; \ + fi \ else \ - printf '\x1b[1;31m%s\x1b[0m\n' "Unknown init system, skipping service install..."; \ + printf '\033[1;31m%s\033[0m\n' "Unknown init system, skipping service install..." >&"; \ fi install-service-systemd: - install -m644 ./assets/services/systemd.service /etc/systemd/system/lidm.service - @printf '\x1b[1m%s\x1b[0m\n\n' " don't forget to run 'systemctl enable lidm'" + install -m644 ./assets/services/systemd.service ${DESTDIR}/etc/systemd/system/lidm.service + @printf '\033[1m%s\033[0m\n\n' " don't forget to run 'systemctl enable lidm'" install-service-dinit: - install -m644 ./assets/services/dinit /etc/dinit.d/lidm - @printf '\x1b[1m%s\x1b[0m\n\n' " don't forget to run 'dinitctl enable lidm'" + install -m644 ./assets/services/dinit ${DESTDIR}/etc/dinit.d/lidm + @printf '\033[1m%s\033[0m\n\n' " don't forget to run 'dinitctl enable lidm'" install-service-runit: - rsync -a --no-owner --no-group ./assets/services/runit/. /etc/runit/sv/lidm - @printf '\x1b[1m%s\x1b[0m\n\n' " don't forget to run 'ln -s /etc/runit/sv/lidm /run/runit/service' and 'sv enable lidm'" + @if [ ! -e /etc/sv ] && [ -d /etc/runit/sv ] && [ -z "$FORCE" ]; then \ + printf '\033[31m%s\033[0m\n' "/etc/sv doesn't exist but /etc/runit/sv does" >&2 \ + printf '\033[31m%s\033[0m\n' "you probably meant to 'make install-service-runit-etc'" >&2 \ + exit 1 \ + fi + mkdir -p ${DESTDIR}/etc/sv/lidm + cp -r --update=all ./assets/services/runit/* ${DESTDIR}/etc/sv/lidm/ + @printf '\033[1m%s\033[0m\n\n' " don't forget to run 'ln -s ${DESTDIR}/etc/sv/lidm /var/service' or your distro equivalent" +install-service-runit-etc: + @if [ ! -e /etc/runit/sv ] && [ -d /etc/sv ] && [ -z "$FORCE" ]; then \ + printf '\033[31m%s\033[0m\n' "/etc/runit/sv doesn't exist but /etc/sv does" >&2 \ + printf '\033[31m%s\033[0m\n' "you probably meant to 'make install-service-runit'" >&2 \ + exit 1 \ + fi + mkdir -p ${DESTDIR}/etc/runit/sv/lidm + cp -r --update=all ./assets/services/runit/* ${DESTDIR}/etc/runit/sv/lidm/ + @printf '\033[1m%s\033[0m\n\n' " don't forget to run 'ln -s ${DESTDIR}/etc/runit/sv/lidm /run/runit/service' or your distro equivalent" install-service-openrc: - install -m755 ./assets/services/openrc /etc/init.d/lidm - @printf '\x1b[1m%s\x1b[0m\n\n' " don't forget to run 'rc-update add lidm'" + install -m755 ./assets/services/openrc ${DESTDIR}/etc/init.d/lidm + @printf '\033[1m%s\033[0m\n\n' " don't forget to run 'rc-update add lidm'" install-service-s6: - rsync -a --no-owner --no-group ./assets/services/s6/. /etc/s6/sv/lidm - @printf '\x1b[1m%s\x1b[0m\n\n' " don't forget to run 's6-service add default lidm' and 's6-db-reload'" + @if [ ! -e /etc/sv ] && [ -d /etc/s6/sv ] && [ -z "$FORCE" ]; then \ + printf '\033[31m%s\033[0m\n' "/etc/sv doesn't exist but /etc/s6/sv does" >&2 \ + printf '\033[31m%s\033[0m\n' "you probably meant to 'make install-service-s6-etc'" >&2 \ + exit 1 \ + fi + mkdir -p ${DESTDIR}/etc/sv/lidm + cp -r --update=all ./assets/services/s6/* ${DESTDIR}/etc/sv/lidm/ + @printf '\033[1m%s\033[0m\n\n' " don't forget to run 's6-service add default lidm' and 's6-db-reload'" +install-service-s6-etc: + @if [ ! -e /etc/s6/sv ] && [ -d /etc/sv ] && [ -z "$FORCE" ]; then \ + printf '\033[31m%s\033[0m\n' "/etc/s6/sv doesn't exist but /etc/sv does" >&2 \ + printf '\033[31m%s\033[0m\n' "you probably meant to 'make install-service-s6'" >&2 \ + exit 1 \ + fi + mkdir -p ${DESTDIR}/etc/s6/sv/lidm + cp -r --update=all ./assets/services/s6/* ${DESTDIR}/etc/s6/sv/lidm/ + @printf '\033[1m%s\033[0m\n\n' " don't forget to run 's6-service add default lidm' and 's6-db-reload'" pre-commit: codespell @@ -100,8 +142,10 @@ print-version: install uninstall \ install-service \ install-service-s6 \ + install-service-s6-etc \ install-service-dinit \ install-service-runit \ + install-service-runit-etc \ install-service-openrc \ install-service-systemd \ pre-commit \ diff --git a/assets/services/README.md b/assets/services/README.md index f978157..75dc409 100644 --- a/assets/services/README.md +++ b/assets/services/README.md @@ -4,7 +4,7 @@ This folder contains the files necessary to set up lidm on start up for the supp If you don't know what a init system is, you're certainly using `systemd`. -There's make scripts to automatically copy the service files to the proper locations, you just have to run `make install-service-$INIT`. `make install-service` will attempt to detect the init system in use and install for it. +There's make scripts to automatically copy the service files to the proper locations, you just have to run `make install-service-$INIT` (or `make install-service-$INIT-etc`). `make install-service` will attempt to detect the init system in use and install for it. The manual steps for installation are: