summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWilliam Hubbs <williamh@gentoo.org>2011-01-06 12:13:33 -0600
committerWilliam Hubbs <williamh@gentoo.org>2011-01-20 12:50:29 -0600
commit10ce67886d214850feaf60d6945fe2568da6ef84 (patch)
treeb12c56d9ac682cf13e42f5d9ba668473929cbe04
parenteebb2d1b9cf0da22ed654ca7ac97a0ae845802ba (diff)
downloadopenrc-10ce67886d214850feaf60d6945fe2568da6ef84.tar.gz
openrc-10ce67886d214850feaf60d6945fe2568da6ef84.tar.bz2
openrc-10ce67886d214850feaf60d6945fe2568da6ef84.tar.xz
change local to run programs
This changes the local service so that it will run programs located in @sysconfdir@/local.d instead of the local_start and local_stop functions from @sysconfdir@/conf.d/local. The advantage for the user is that these programs are not part of the openrc package, so the user does not have to worry about them being overwritten when openrc is upgraded. X-Gentoo-Bug: 351465 X-Gentoo-Bug-URL: https://bugs.gentoo.org/show_bug.cgi?id=351465
-rw-r--r--Makefile2
-rw-r--r--conf.d/Makefile2
-rw-r--r--conf.d/local18
-rw-r--r--init.d/local.in28
-rw-r--r--local.d/Makefile6
-rw-r--r--local.d/README9
-rw-r--r--mk/sys.mk1
7 files changed, 41 insertions, 25 deletions
diff --git a/Makefile b/Makefile
index 8f9cc95..18a8ddf 100644
--- a/Makefile
+++ b/Makefile
@@ -4,7 +4,7 @@
include Makefile.inc
-SUBDIR= conf.d etc init.d man scripts sh src
+SUBDIR= conf.d etc init.d local.d man scripts sh src
# Build our old net foo or not
_OLDNET_SH= case "${MKOLDNET}" in \
diff --git a/conf.d/Makefile b/conf.d/Makefile
index 034dc74..374bfdb 100644
--- a/conf.d/Makefile
+++ b/conf.d/Makefile
@@ -1,5 +1,5 @@
DIR= ${CONFDIR}
-CONF= bootmisc fsck hostname local localmount network staticroute urandom
+CONF= bootmisc fsck hostname localmount network staticroute urandom
TARGETS+= network staticroute
CLEANFILES+= network staticroute
diff --git a/conf.d/local b/conf.d/local
deleted file mode 100644
index 97dbbcc..0000000
--- a/conf.d/local
+++ /dev/null
@@ -1,18 +0,0 @@
-# Here is where you can put anything you need to start
-# that there is not an init script for.
-
-local_start() {
- # This is a good place to load any misc programs
- # on startup (use &>/dev/null to hide output)
-
- # We should always return 0
- return 0
-}
-
-local_stop() {
- # This is a good place to unload any misc.
- # programs you started above.
-
- # We should always return 0
- return 0
-}
diff --git a/init.d/local.in b/init.d/local.in
index 63d5e92..5583fea 100644
--- a/init.d/local.in
+++ b/init.d/local.in
@@ -2,7 +2,7 @@
# Copyright (c) 2007-2008 Roy Marples <roy@marples.name>
# All rights reserved. Released under the 2-clause BSD license.
-description="Executes user commands in /etc/conf.d/local"
+description="Executes user programs in @SYSCONFDIR@/local.d"
depend()
{
@@ -12,22 +12,40 @@ depend()
start()
{
- ebegin "Starting local"
+ einfo "Starting local"
+
+ local file
+ for file in @SYSCONFDIR@/local.d/*.start ; do
+ [ -x $file ] && $file
+ done
if type local_start >/dev/null 2>&1; then
+ ewarn "@SYSCONFDIR@/conf.d/local should be removed."
+ ewarn "Please move the code from the local_start function"
+ ewarn "to scripts with an .start extension"
+ ewarn "in @SYSCONFDIR@/local.d"
local_start
fi
- eend $? "Failed to start local"
+ return 0
}
stop()
{
- ebegin "Stopping local"
+ einfo "Stopping local"
+
+ local file
+ for file in @SYSCONFDIR@/local.d/*.stop; do
+ [ -x $file ] && $file
+ done
if type local_start >/dev/null 2>&1; then
+ ewarn "@SYSCONFDIR@/conf.d/local should be removed."
+ ewarn "Please move the code from the local_stop function"
+ ewarn "to scripts with an .stop extension"
+ ewarn "in @SYSCONFDIR@/local.d"
local_stop
fi
- eend $? "Failed to stop local"
+ return 0
}
diff --git a/local.d/Makefile b/local.d/Makefile
new file mode 100644
index 0000000..7a7d31d
--- /dev/null
+++ b/local.d/Makefile
@@ -0,0 +1,6 @@
+DIR= ${LOCALDIR}
+CONF= README
+
+MK= ../mk
+include ${MK}/os.mk
+include ${MK}/scripts.mk
diff --git a/local.d/README b/local.d/README
new file mode 100644
index 0000000..d3c1156
--- /dev/null
+++ b/local.d/README
@@ -0,0 +1,9 @@
+This directory should contain programs or scripts which are to be run
+when the local service is started or stopped.
+
+If a file in this directory is executable and it has a .start extension,
+it will be run when the local service is started. If a file is
+executable and it has a .stop extension, it will be run when the local
+service is stopped.
+
+All files are processed in lexical order.
diff --git a/mk/sys.mk b/mk/sys.mk
index e22731b..e9bbf60 100644
--- a/mk/sys.mk
+++ b/mk/sys.mk
@@ -21,6 +21,7 @@ PICFLAG?= -fPIC
SYSCONFDIR?= ${PREFIX}/etc
INITDIR?= ${SYSCONFDIR}/init.d
CONFDIR?= ${SYSCONFDIR}/conf.d
+LOCALDIR?= ${SYSCONFDIR}/local.d
BINDIR?= ${PREFIX}/sbin
BINMODE?= 0755