cvs commit: src/etc rc rc.shutdown rc.subr src/etc/rc.d localpkg src/sys/sys param.h

Doug Barton dougb at FreeBSD.org
Fri Dec 2 17:49:28 PST 2005


Andrey Chernov wrote:
> On Fri, Dec 02, 2005 at 05:07:02PM -0800, Doug Barton wrote:
>> Yes, I agree that's a problem. However, it's a problem we have to solve, or
>> else we can't include local scripts in the base rcorder. As I wrote in my
> 
> What prevents to include them in the base rcorder AND run in the separate 
> subshell (sort of sandbox) in the same time? Perhaps just few variables 
> need to be added.

Well, unfortunately it's a little more complicated than that. The rc.d
system has some default assumptions about the specialness of scripts that
end in .sh, and while I don't necessarily agree with that, I didn't want to
redo it all.

> Typical problem for porter (like me) is not knowing deeps of rc.d 
> subsystem. To be more specific, personally me can't make 'apache13' port 
> do its limits without damaging main rc shell in the same time. If you can, 
> please look 'apache13' port and feel free to fix rc script there.

I'm sorry if I wasn't clear before, the only thing port authors need to do
for properly functioning rc.d-style scripts is to install them as foo
instead of foo.sh. I have attached an untested patch for apache13 that
should do the trick, or at least show you what I have in mind.

At some point down the road, when we've dropped support for releases prior
to 6.1, this will simply be the way that all such scripts are installed, but
between now and then, there will be some transition pain involved.

> I suspect I am not only one with such problem. Lots of environment things 
> can be damaged not running in the subshell: su, environment variables, 
> limits, etc. etc. What you provide as example is simplest case which cause 
> no problems, but I talk about problem cases, not simplest ones.

*nod* I fully acknowledge that there will be problems, and I am willing to
revisit this approach down the road if it looks like it's causing more pain
than it's worth. At this point though, I think we just have to let it play out.

Doug
-------------- next part --------------
Index: Makefile
===================================================================
RCS file: /usr/local/ncvs/ports/www/apache13/Makefile,v
retrieving revision 1.163
diff -u -r1.163 Makefile
--- Makefile	25 Nov 2005 03:17:11 -0000	1.163
+++ Makefile	3 Dec 2005 01:43:07 -0000
@@ -144,6 +144,14 @@
 MAN8=		ab.8 apachectl.8 apxs.8 httpd.8 logresolve.8 rotatelogs.8 \
 		${SUEXEC_MAN}
 
+.if ${OSVERSION} > 700006
+RC_SCRIPT=	apache
+.else
+RC_SCRIPT=	apache.sh
+.endif
+
+PLIST_SUB=	RC_SCRIPT="${RC_SCRIPT}"
+
 post-extract:
 	@${SED}	${RC_SCRIPTS_SUB:S/$/!g/:S/^/ -e s!%%/:S/=/%%!/} \
 		${FILESDIR}/apache.sh > ${WRKSRC}/apache.sh
@@ -153,10 +161,10 @@
 	PKG_PREFIX=${PREFIX} ${SH} ${PKGINSTALL} ${PKGNAME} PRE-INSTALL
 
 post-install:
-	${INSTALL_SCRIPT} ${WRKSRC}/apache.sh ${PREFIX}/etc/rc.d/apache.sh
+	${INSTALL_SCRIPT} ${WRKSRC}/apache.sh ${PREFIX}/etc/rc.d/${RC_SCRIPT}
 	@${TOUCH} ${DOCUMENT_ROOT}-dist/EXAMPLE_DIRECTORY-DONT_ADD_OR_TOUCH_ANYTHING
 	@${TOUCH} ${CGIBIN_ROOT}-dist/EXAMPLE_DIRECTORY-DONT_ADD_OR_TOUCH_ANYTHING
 	@${CHMOD} a-w ${DOCUMENT_ROOT}-dist ${CGIBIN_ROOT}-dist
 	@${CAT} ${PKGMESSAGE}
 
-.include <bsd.port.mk>
+.include <bsd.port.post.mk>
Index: pkg-plist
===================================================================
RCS file: /usr/local/ncvs/ports/www/apache13/pkg-plist,v
retrieving revision 1.59
diff -u -r1.59 pkg-plist
--- pkg-plist	18 Oct 2005 19:20:27 -0000	1.59
+++ pkg-plist	3 Dec 2005 01:41:13 -0000
@@ -18,7 +18,7 @@
 @unexec if cmp -s %D/etc/apache/srm.conf %D/etc/apache/srm.conf-dist; then rm -f %D/etc/apache/srm.conf; fi
 etc/apache/srm.conf-dist
 @exec [ -f %B/srm.conf ] || cp %B/%f %B/srm.conf
-etc/rc.d/apache.sh
+etc/rc.d/%%RC_SCRIPT%%
 include/apache/ap.h
 include/apache/ap_alloc.h
 include/apache/ap_compat.h


More information about the freebsd-current mailing list