ports/69217: devel/portmk - add a convenient mechanism to handle startup scripts that use rc.subr
Florent Thoumie
flz at xbsd.org
Sun Jul 18 00:10:20 UTC 2004
>Number: 69217
>Category: ports
>Synopsis: devel/portmk - add a convenient mechanism to handle startup scripts that use rc.subr
>Confidential: no
>Severity: non-critical
>Priority: low
>Responsible: freebsd-ports-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: change-request
>Submitter-Id: current-users
>Arrival-Date: Sun Jul 18 00:10:19 GMT 2004
>Closed-Date:
>Last-Modified:
>Originator: Florent Thoumie
>Release: FreeBSD 4.9-RC i386
>Organization:
Xbsd.org
>Environment:
System: FreeBSD gw 4.9-RC FreeBSD 4.9-RC #4: Sun Oct 5 14:25:09 CEST 2003 rf at gw:/usr/src/sys/compile/GW i386
>Description:
This patch provides a convenient way to install startup scripts that use rc.subr.
This is based on ports/67151.
Just have to put myport.sh.in in files/, and add USE_RC_SUBR=myport.sh.
>How-To-Repeat:
Apply following patch.
>Fix:
--- portmk-rc-script.diff begins here. ---
--- bsd.port.mk.old Tue Jul 6 14:41:03 2004
+++ bsd.port.mk Sun Jul 18 01:31:07 2004
@@ -344,8 +344,12 @@
# WITH_MYSQL_VER - User defined variable to set MySQL version.
#
# USE_RC_SUBR - Says the ports startup/shutdown script uses the common
-# routines found in etc/rc.subr and may need to
-# depend on the sysutils/rc_subr port.
+# routines found in etc/rc.subr and may need to
+# depend on the sysutils/rc_subr port.
+# If this is set to a list of files, these files will be
+# automatically added to ${SUB_FILES} and some "variable=value"
+# pairs will be added to ${SUB_LIST}. These files will be
+# installed in ${PREFIX}/etc/rc.d and added to the packing list.
#
# RC_SUBR - Set to path of rc.subr, defaults to ${LOCALBASE}/etc/rc.subr.
#
@@ -717,6 +721,18 @@
# (default: ${WRKDIR}/.PLIST.mktmp).
# PLIST_SUB - List of "variable=value" pair for substitution in ${PLIST}
# (default: see below).
+#
+# SUB_FILES - Files that should be passed through sed and redirected to ${WRKDIR}.
+# - For each file specified in SUB_FILES, there must be a corresponding
+# file in ${FILESDIR} whose suffix is ".in". For instance,
+# if the Makefile specifies "SUB_FILES= pkg-message" then there must be
+# a file called pkg-message.in in ${FILESDIR}.
+# - The substitution process is the same as PLIST_FILES, as described
+# below except that any line beginning with @comment is deleted.
+# SUB_LIST - List of "variable=value" pair for substitution in ${SUB_FILES}
+# (some pair are added by default: eg. PREFIX=${PREFIX}).
+#
+#
# INSTALLS_SHLIB - If set, bsd.port.mk will automatically run ldconfig commands
# from post-install and also add appropriate @exec/@unexec
# directives to directories listed in LDCONFIG_DIRS.
--- bsd.port.post.mk.old Wed Jul 7 16:51:17 2004
+++ bsd.port.post.mk Sun Jul 18 01:48:57 2004
@@ -25,6 +25,8 @@
INSTALL_WRKSRC?=${WRKSRC}
PLIST_SUB+= OSREL=${OSREL} PREFIX=%D LOCALBASE=${LOCALBASE} X11BASE=${X11BASE}
+SUB_LIST+= PREFIX=${PREFIX} LOCALBASE=${LOCALBASE} X11BASE=${X11BASE} \
+ DATADIR=${DATADIR} DOCSDIR=${DOCSDIR} EXAMPLESDIR=${EXAMPLESDIR}
.if defined(WITHOUT_CPU_CFLAGS)
.if defined(_CPUCFLAGS)
@@ -178,6 +180,10 @@
.else
RC_SUBR= /etc/rc.subr
.endif
+.if ${USE_RC_SUBR} != "yes"
+SUB_LIST+= RC_SUBR=${RC_SUBR}
+SUB_FILES+= ${USE_RC_SUBR}
+.endif
.endif
.if defined(USE_ICONV)
@@ -1961,11 +1967,12 @@
_INSTALL_DEP= build
_INSTALL_SEQ= install-message check-conflicts \
run-depends lib-depends pre-install pre-install-script \
- generate-plist check-already-installed
+ apply-slist generate-plist check-already-installed
_INSTALL_SUSEQ= check-umask install-mtree pre-su-install \
pre-su-install-script do-install post-install \
post-install-script add-plist-info add-plist-docs \
- compress-man run-ldconfig fake-pkg security-check
+ install-rc-script compress-man run-ldconfig fake-pkg \
+ security-check
_PACKAGE_DEP= install
_PACKAGE_SEQ= package-message pre-package pre-package-script \
do-package post-package-script
@@ -2863,6 +2870,29 @@
.endif
.endif
+_SUB_LIST_TEMP= ${SUB_LIST:S/$/!g/:S/^/ -e s!%%/:S/=/%%!/}
+.if !target(apply-slist)
+apply-slist:
+# Apply substitutions on files specified in SUB_FILES.
+.if defined(SUB_FILES)
+ @for file in ${SUB_FILES}; do \
+ if [ ! -r ${FILESDIR}/$${file}.in ]; then \
+ ${ECHO_CMD} ">> Missing file : ${FILESDIR}/$${file}.in for ${PKGNAME}."; \
+ exit 1; \
+ else \
+ ${SED} ${_SUB_LIST_TEMP} -e '/^@comment /d' ${FILESDIR}/$${file}.in > ${WRKDIR}/$${file}; \
+ fi; \
+ done
+.for i in pkg-message pkg-install pkg-deinstall pkg-req
+.if ${SUB_FILES:M${i}*}!=""
+${i:S/-//:U}= ${WRKDIR}/${SUB_FILES:M${i}*}
+.endif
+.endfor
+.else
+ @${DO_NADA}
+.endif
+.endif
+
# Generate packing list. Also tests to make sure all required package
# files exist.
@@ -2973,6 +3003,24 @@
.else
@${DO_NADA}
.endif
+.endif
+
+.if !target(install-rc-script)
+install-rc-script:
+# Install startup script(s) specified in USE_RC_SUBR.
+.if defined(USE_RC_SUBR) && ${USE_RC_SUBR} != "yes"
+ @${ECHO_CMD} "===> Installing startup script(s) in ${PREFIX}/etc/rc.d"
+ @if ${EGREP} -qe '^@cw?d' ${TMPPLIST} && \
+ [ "`${SED} -En -e '/^@cw?d[ ]*/s,,,p' ${TMPPLIST} | ${TAIL} -n 1`" != "${PREFIX}" ]; then \
+ ${ECHO_CMD} "@cwd ${PREFIX}" >> ${TMPPLIST}; \
+ fi
+ @for i in ${USE_RC_SUBR}; do \
+ ${INSTALL_SCRIPT} ${WRKDIR}/$${i} ${PREFIX}/etc/rc.d; \
+ ${ECHO_CMD} etc/rc.d/$${i} >> ${TMPPLIST}; \
+ done
+.endif
+.else
+ @${DO_NADA}
.endif
# Compress (or uncompress) and symlink manpages.
--- portmk-rc-script.diff ends here. ---
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-ports-bugs
mailing list