aboutsummaryrefslogtreecommitdiff
path: root/src/rc
diff options
context:
space:
mode:
authorChris Richards <gizmo@giz-works.com>2011-01-30 16:20:07 -0600
committerWilliam Hubbs <williamh@gentoo.org>2011-01-31 14:54:02 -0600
commit21c5a022af22f9baddc14953ca5ac39715a9a649 (patch)
tree0ded47644f40301dcb4ba82474719acc1097061f /src/rc
parentcca7e9f7e1143f3405bc90ff8e2176d82ab491ef (diff)
selinux: replace symlinks with wrapper scripts
This needs to be done on selinux systems so the proper context can be set for each rc applet. X-Gentoo-Bug: 351712 X-Gentoo-Bug-URL: http://bugs.gentoo.org/show_bug.cgi?id=351712
Diffstat (limited to 'src/rc')
-rw-r--r--src/rc/Makefile26
1 files changed, 21 insertions, 5 deletions
diff --git a/src/rc/Makefile b/src/rc/Makefile
index 9d33192a..ca71b4a4 100644
--- a/src/rc/Makefile
+++ b/src/rc/Makefile
@@ -45,6 +45,22 @@ 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 a list of the links
+# $2 is the path+name of the target to link to (usually 'rc' or '/sbin/rc')
+# $3 is the path where the links are created
+define make-links
+ for x in $(1); do \
+ if test -n "${MKSELINUX}"; then \
+ printf '#!/bin/sh\nexec ${2} --applet %s "$$@"\n' $$x >${3}/$$x; \
+ chmod ${BINMODE} ${3}/$$x; \
+ else \
+ ln -sf ${2} ${3}/$$x; \
+ fi; \
+ done;
+endef
+
${SRCS}: version.h
.PHONY: version.h.tmp
@@ -61,13 +77,13 @@ 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
+ $(call make-links,${BINLINKS},${SBINDIR}/${PROG},${DESTDIR}${BINDIR})
${INSTALL} -d ${DESTDIR}${SBINDIR}
- for x in ${SBINLINKS}; do ln -fs ${PROG} ${DESTDIR}${SBINDIR}/$$x; done
+ $(call make-links,${SBINLINKS},${PROG},${DESTDIR}${SBINDIR})
${INSTALL} -d ${DESTDIR}${LINKDIR}/bin
- for x in $(RC_BINLINKS); do ln -fs ${SBINDIR}/${PROG} ${DESTDIR}${LINKDIR}/bin/$$x; done
+ $(call make-links,${RC_BINLINKS},${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
+ $(call make-links, ${RC_SBINLINKS},${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 +92,4 @@ install: all
check test::
links: rc
- for l in ${ALL_LINKS}; do ln -sf rc $$l || exit $$? ; done
+ $(call make-links,${ALL_LINKS},rc,.)