--- a/src/rc/Makefile +++ a/src/rc/Makefile @@ -45,6 +45,20 @@ include ${MK}/${MKTERMCAP}.mk LDADD+= ${LIBDL} ${LIBKVM} include ${MK}/${MKPAM}.mk +# create symlinks to rc if not an SELINUX system, otherwise create a wrapper +# script to call rc with the proper name of the applet to execute. +# $1 is the name of the link +# $2 is the path+name of the target to link to (usually 'rc' or '/sbin/rc') +# $3 is the path where the link is created +define make-link + if test -n "${MKSELINUX}"; then \ + printf '#!/bin/sh\nexec ${2} --applet %s "$$@"\n' ${1} >${3}/${1}; \ + chmod ${BINMODE} ${3}/${1}; \ + else \ + ln -sf ${2} ${3}/${1}; \ + fi; +endef + ${SRCS}: version.h .PHONY: version.h.tmp @@ -61,13 +75,17 @@ install: all ${INSTALL} -d ${DESTDIR}${SBINDIR} ${INSTALL} -m ${BINMODE} ${PROG} ${DESTDIR}${SBINDIR} ${INSTALL} -d ${DESTDIR}${BINDIR} - for x in ${BINLINKS}; do ln -fs ${SBINDIR}/${PROG} ${DESTDIR}${BINDIR}/$$x; done + $(foreach x,${BINLINKS}, \ + $(call make-link,${x},${SBINDIR}/${PROG},${DESTDIR}${BINDIR})) ${INSTALL} -d ${DESTDIR}${SBINDIR} - for x in ${SBINLINKS}; do ln -fs ${PROG} ${DESTDIR}${SBINDIR}/$$x; done + $(foreach x,${SBINLINKS}, \ + $(call make-link,${x},${PROG},${DESTDIR}${SBINDIR})) ${INSTALL} -d ${DESTDIR}${LINKDIR}/bin - for x in $(RC_BINLINKS); do ln -fs ${SBINDIR}/${PROG} ${DESTDIR}${LINKDIR}/bin/$$x; done + $(foreach x,${RC_BINLINKS}, \ + $(call make-link,${x},${SBINDIR}/${PROG},${DESTDIR}${LINKDIR}/bin)) ${INSTALL} -d ${DESTDIR}${LINKDIR}/sbin - for x in ${RC_SBINLINKS}; do ln -fs ${SBINDIR}/${PROG} ${DESTDIR}${LINKDIR}/sbin/$$x; done + $(foreach x,${RC_SBINLINKS}, \ + $(call make-link,${x},${SBINDIR}/${PROG},${DESTDIR}${LINKDIR}/sbin)) if test "${MKPAM}" = pam; then \ ${INSTALL} -d ${DESTDIR}${PAMDIR}; \ ${INSTALL} -m ${PAMMODE} start-stop-daemon.pam ${DESTDIR}${PAMDIR}/start-stop-daemon; \ @@ -76,4 +94,4 @@ install: all check test:: links: rc - for l in ${ALL_LINKS}; do ln -sf rc $$l || exit $$? ; done + $(foreach x,${ALL_LINKS},$(call make-link, ${x},rc,.))