summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjperkin <jperkin>2014-03-11 13:45:07 +0000
committerjperkin <jperkin>2014-03-11 13:45:07 +0000
commit31308dbfa90433f6c644fe9ccef0462a26421157 (patch)
treec6486a0debd799859e125a135164078c745000b9
parent02dde8434f653ba61d964c57e4119c5b3300d12e (diff)
downloadpkgsrc-31308dbfa90433f6c644fe9ccef0462a26421157.tar.gz
Add initial support for alternative init systems.
This commit introduces an INIT_SYSTEM variable which will determine the type of init system to be used on the target system, supporting "rc.d" at this time. The pkginstall infrastructure is changed to only install RCD_SCRIPTS if INIT_SYSTEM is set to "rc.d", and PLIST entries for rc.d scripts are now handled automatically based on RCD_SCRIPTS.
-rw-r--r--mk/bsd.pkg.mk7
-rw-r--r--mk/defaults/mk.conf7
-rw-r--r--mk/pkginstall/bsd.pkginstall.mk19
3 files changed, 26 insertions, 7 deletions
diff --git a/mk/bsd.pkg.mk b/mk/bsd.pkg.mk
index 8a217dc1893..8cf0e2e42d9 100644
--- a/mk/bsd.pkg.mk
+++ b/mk/bsd.pkg.mk
@@ -1,4 +1,4 @@
-# $NetBSD: bsd.pkg.mk,v 1.1995 2014/03/03 03:21:16 obache Exp $
+# $NetBSD: bsd.pkg.mk,v 1.1996 2014/03/11 13:45:07 jperkin Exp $
#
# This file is in the public domain.
#
@@ -315,6 +315,11 @@ OVERRIDE_DIRDEPTH?= 2
#
.include "alternatives.mk"
+# Support alternative init systems.
+#
+INIT_SYSTEM?= rc.d
+_BUILD_DEFS+= INIT_SYSTEM
+
# Define SMART_MESSAGES in /etc/mk.conf for messages giving the tree
# of dependencies for building, and the current target.
_PKGSRC_IN?= ===${SMART_MESSAGES:D> ${.TARGET} [${PKGNAME}${_PKGSRC_DEPS}] ===}
diff --git a/mk/defaults/mk.conf b/mk/defaults/mk.conf
index b6f1fabaab1..6b66d3acb13 100644
--- a/mk/defaults/mk.conf
+++ b/mk/defaults/mk.conf
@@ -1,4 +1,4 @@
-# $NetBSD: mk.conf,v 1.236 2014/03/07 15:10:33 jperkin Exp $
+# $NetBSD: mk.conf,v 1.237 2014/03/11 13:45:07 jperkin Exp $
#
# This file provides default values for variables that may be overridden
@@ -395,6 +395,11 @@ PKG_SYSCONFBASE?= ${PREFIX}/etc
# Possible: any path you like
# Default: ${PREFIX}/etc
+#INIT_SYSTEM=
+# This determines the type of init system to be used.
+# Possible: any of: rc.d
+# Default: Platform-dependent, otherwise rc.d
+
RCD_SCRIPTS_DIR?= /etc/rc.d
# This is the system rc.d script directory in which all rc.d scripts
# expected to be executed at boot-time should be found. Package views
diff --git a/mk/pkginstall/bsd.pkginstall.mk b/mk/pkginstall/bsd.pkginstall.mk
index f4c6cd89f2b..6ff801f8e56 100644
--- a/mk/pkginstall/bsd.pkginstall.mk
+++ b/mk/pkginstall/bsd.pkginstall.mk
@@ -1,4 +1,4 @@
-# $NetBSD: bsd.pkginstall.mk,v 1.57 2012/07/09 21:56:38 wiz Exp $
+# $NetBSD: bsd.pkginstall.mk,v 1.58 2014/03/11 13:45:07 jperkin Exp $
#
# This Makefile fragment is included by bsd.pkg.mk and implements the
# common INSTALL/DEINSTALL scripts framework. To use the pkginstall
@@ -503,13 +503,20 @@ _INSTALL_FILES_DATAFILE= ${_PKGINSTALL_DIR}/files-data
_INSTALL_UNPACK_TMPL+= ${_INSTALL_FILES_FILE}
_INSTALL_DATA_TMPL+= ${_INSTALL_FILES_DATAFILE}
+# Only generate init scripts if we are using rc.d
+_INSTALL_RCD_SCRIPTS= # empty
+
+.if ${INIT_SYSTEM} == "rc.d"
+_INSTALL_RCD_SCRIPTS= ${RCD_SCRIPTS}
+.endif
+
privileged-install-hook: _pkginstall-postinstall-check
_pkginstall-postinstall-check: .PHONY
${RUN} p="${DESTDIR}${PREFIX}"; \
${_FUNC_STRIP_PREFIX}; \
canon() { f=`strip_prefix "$$1"`; case $$f in [!/]*) f="$$p/$$f"; esac; echo "$$f"; }; \
needargs() { [ $$3 -ge $$2 ] || ${FAIL_MSG} "[bsd.pkginstall.mk] $$1 must have a multiple of $$2 words. Rest: $$4"; }; \
- set args ${RCD_SCRIPTS}; shift; \
+ set args ${_INSTALL_RCD_SCRIPTS}; shift; \
while [ $$# -gt 0 ]; do \
egfile=`canon "${RCD_SCRIPTS_EXAMPLEDIR}/$$1"`; shift; \
[ -f "$$egfile" ] || [ -c "$$egfile" ] || ${FAIL_MSG} "RCD_SCRIPT $$egfile does not exist."; \
@@ -542,7 +549,7 @@ _pkginstall-postinstall-check: .PHONY
${_INSTALL_FILES_DATAFILE}:
${RUN}${MKDIR} ${.TARGET:H}
${RUN}${_FUNC_STRIP_PREFIX}; \
- set -- dummy ${RCD_SCRIPTS}; shift; \
+ set -- dummy ${_INSTALL_RCD_SCRIPTS}; shift; \
exec 1>>${.TARGET}; \
while ${TEST} $$# -gt 0; do \
script="$$1"; shift; \
@@ -664,7 +671,7 @@ ${_INSTALL_DIRS_DATAFILE}:
esac
${RUN} \
exec 1>>${.TARGET}; \
- case ${RCD_SCRIPTS:M*:Q}"" in \
+ case ${_INSTALL_RCD_SCRIPTS:M*:Q}"" in \
"") ;; \
*) ${ECHO} "# DIR: ${RCD_SCRIPTS_DIR:S/${PREFIX}\///} m" ;; \
esac
@@ -1172,7 +1179,7 @@ generate-rcd-scripts: # do nothing
post-install: install-rcd-scripts
install-rcd-scripts: # do nothing
-.for _script_ in ${RCD_SCRIPTS}
+.for _script_ in ${_INSTALL_RCD_SCRIPTS}
RCD_SCRIPT_SRC.${_script_}?= ${FILESDIR}/${_script_}.sh
RCD_SCRIPT_WRK.${_script_}?= ${WRKDIR}/${_script_}
@@ -1192,6 +1199,8 @@ install-rcd-${_script_}: ${RCD_SCRIPT_WRK.${_script_}}
${DESTDIR}${PREFIX}/${RCD_SCRIPTS_EXAMPLEDIR}/${_script_}; \
fi
. endif
+GENERATE_PLIST+= ${ECHO} ${RCD_SCRIPTS_EXAMPLEDIR}/${_script_};
+PRINT_PLIST_AWK+= /^${RCD_SCRIPTS_EXAMPLEDIR:S|/|\\/|g}\/${_script_}/ { next; }
.endfor
_PKGINSTALL_TARGETS+= acquire-pkginstall-lock