diff mbox

[2/5] package/ser2net: add startup script and template config file

Message ID c6a85755fde5fe01c692d627c05eaa83544dbccf.1383693880.git.yann.morin.1998@free.fr
State Changes Requested
Headers show

Commit Message

Yann E. MORIN Nov. 5, 2013, 11:28 p.m. UTC
From: "Yann E. MORIN" <yann.morin.1998@free.fr>

The default config file we install is intentionally limited, but given
the number of possible configurations (port number, method, serial
port...) it is not posible to provide a simple one-fits-all config file.

Instead, just provide a minimalistic one, that the user may customise
with a post-build script, or a rootfs overlay.

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
---
 package/ser2net/S50ser2net   | 48 ++++++++++++++++++++++++++++++++++++++++++++
 package/ser2net/ser2net.conf |  3 +++
 package/ser2net/ser2net.mk   |  9 +++++++++
 3 files changed, 60 insertions(+)
 create mode 100644 package/ser2net/S50ser2net
 create mode 100644 package/ser2net/ser2net.conf

Comments

Peter Korsgaard Nov. 6, 2013, 10:20 p.m. UTC | #1
>>>>> "Yann" == Yann E MORIN <yann.morin.1998@free.fr> writes:

 > From: "Yann E. MORIN" <yann.morin.1998@free.fr>
 > The default config file we install is intentionally limited, but given
 > the number of possible configurations (port number, method, serial
 > port...) it is not posible to provide a simple one-fits-all config file.

 > Instead, just provide a minimalistic one, that the user may customise
 > with a post-build script, or a rootfs overlay.

 > Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
 > ---
 >  package/ser2net/S50ser2net   | 48 ++++++++++++++++++++++++++++++++++++++++++++
 >  package/ser2net/ser2net.conf |  3 +++
 >  package/ser2net/ser2net.mk   |  9 +++++++++
 >  3 files changed, 60 insertions(+)
 >  create mode 100644 package/ser2net/S50ser2net
 >  create mode 100644 package/ser2net/ser2net.conf

 > diff --git a/package/ser2net/S50ser2net b/package/ser2net/S50ser2net
 > new file mode 100644
 > index 0000000..58a98fc
 > --- /dev/null
 > +++ b/package/ser2net/S50ser2net
 > @@ -0,0 +1,48 @@
 > +#! /bin/sh
 > +# ser2net startup script
 > +
 > +# Author: Yann E. MORIN <yann.morin.1998@free.fr>
 > +
 > +PATH=/usr/sbin:/usr/bin:/sbin:/bin
 > +NAME=ser2net
 > +DAEMON=/usr/bin/$NAME
 > +PIDFILE=/var/run/$NAME.pid
 > +
 > +[ -f "${DAEMON}" -a -x "${DAEMON}" ] || exit 0
 > +
 > +# Read configuration variable file if it is present
 > +[ -r "/etc/default/${NAME}" ] && . "/etc/default/${NAME}"
 > +
 > +ARGS="-c /etc/ser2net.conf -P ${PIDFILE}"

What are people supposed to put in /etc/default/ser2net? CONTROLPORT=..?
How about just letting people specify ARGS=..?

Looking at the man page, /etc/ser2net.conf seems to be default, so that
can be dropped. You're using start-stop-daemon below, so I'm not quite
sure what you are doing here with PIDFILE?

 > +[ -z "${CONTROLPORT}" ] || ARGS="${ARGS} -p ${CONTROLPORT}"
 > +
 > +case "$1" in
 > +    start)
 > +        printf "Starting ser2net daemon: "
 > +        if start-stop-daemon -S -q -p ${PIDFILE} -m --exec "${DAEMON}" -- ${ARGS}; then

I believe you need to pass '-n' to ser2net to not get it to background
itself (and get the correct pid in PIDFILE).

 > +            printf "OK\n"
 > +        else
 > +            printf "failed\n"
 > +        fi
 > +        ;;
 > +    stop)
 > +        printf "Stoping ser2net daemon: "
 > +        start-stop-daemon -K -q -p ${PIDFILE} -s TERM
 > +        sleep 2
 > +        if start-stop-daemon -K -q -p ${PIDFILE} -t; then
 > +            printf "failed, killing: "
 > +            start-stop-daemon -K -q -p ${PIDFILE} -s KILL -o
 > +        fi

Any particular reason why this is needed? A quick
git grep 'start-stop-daemon.*-K' shows that we're not doing anything
like this anywhere else.


 > +        rm -f "${PIDFILE}"
 > +        printf "OK\n"
 > +        ;;
 > +    restart|force-reload)
 > +        "${0}" stop
 > +        sleep 2
 > +        "${0}" start

Why the sleep?
 > +        ;;
 > +    *)
 > +        echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2

Where does $SCRIPTNAME come from? Why not just $0?
 > +        exit 1
 > +        ;;
 > +esac
 > diff --git a/package/ser2net/ser2net.conf b/package/ser2net/ser2net.conf
 > new file mode 100644
 > index 0000000..ba6fd43
 > --- /dev/null
 > +++ b/package/ser2net/ser2net.conf
 > @@ -0,0 +1,3 @@
 > +#CONTROLPORT:1000
 > +BANNER:buildroot:Welcome to ser2net, running on Buildroot\r\n
 > +2000:raw:600:/dev/ttyS1:9600 8DATABITS NONE 1STOPBIT buildroot

CONTROLPORT doesn't seem to be valid in the configuration file according
to the man page.
diff mbox

Patch

diff --git a/package/ser2net/S50ser2net b/package/ser2net/S50ser2net
new file mode 100644
index 0000000..58a98fc
--- /dev/null
+++ b/package/ser2net/S50ser2net
@@ -0,0 +1,48 @@ 
+#! /bin/sh
+# ser2net startup script
+
+# Author: Yann E. MORIN <yann.morin.1998@free.fr>
+
+PATH=/usr/sbin:/usr/bin:/sbin:/bin
+NAME=ser2net
+DAEMON=/usr/bin/$NAME
+PIDFILE=/var/run/$NAME.pid
+
+[ -f "${DAEMON}" -a -x "${DAEMON}" ] || exit 0
+
+# Read configuration variable file if it is present
+[ -r "/etc/default/${NAME}" ] && . "/etc/default/${NAME}"
+
+ARGS="-c /etc/ser2net.conf -P ${PIDFILE}"
+[ -z "${CONTROLPORT}" ] || ARGS="${ARGS} -p ${CONTROLPORT}"
+
+case "$1" in
+    start)
+        printf "Starting ser2net daemon: "
+        if start-stop-daemon -S -q -p ${PIDFILE} -m --exec "${DAEMON}" -- ${ARGS}; then
+            printf "OK\n"
+        else
+            printf "failed\n"
+        fi
+        ;;
+    stop)
+        printf "Stoping ser2net daemon: "
+        start-stop-daemon -K -q -p ${PIDFILE} -s TERM
+        sleep 2
+        if start-stop-daemon -K -q -p ${PIDFILE} -t; then
+            printf "failed, killing: "
+            start-stop-daemon -K -q -p ${PIDFILE} -s KILL -o
+        fi
+        rm -f "${PIDFILE}"
+        printf "OK\n"
+        ;;
+    restart|force-reload)
+        "${0}" stop
+        sleep 2
+        "${0}" start
+        ;;
+    *)
+        echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2
+        exit 1
+        ;;
+esac
diff --git a/package/ser2net/ser2net.conf b/package/ser2net/ser2net.conf
new file mode 100644
index 0000000..ba6fd43
--- /dev/null
+++ b/package/ser2net/ser2net.conf
@@ -0,0 +1,3 @@ 
+#CONTROLPORT:1000
+BANNER:buildroot:Welcome to ser2net, running on Buildroot\r\n
+2000:raw:600:/dev/ttyS1:9600 8DATABITS NONE 1STOPBIT buildroot
diff --git a/package/ser2net/ser2net.mk b/package/ser2net/ser2net.mk
index 5e77d36..a6f1cbb 100644
--- a/package/ser2net/ser2net.mk
+++ b/package/ser2net/ser2net.mk
@@ -9,4 +9,13 @@  SER2NET_SITE = http://downloads.sourceforge.net/project/ser2net/ser2net
 SER2NET_LICENSE = GPLv2+
 SER2NET_LICENSE_FILES = COPYING
 
+define SER2NET_INSTALL_INIT_SYSV
+	$(INSTALL) -m 0755 -D package/ser2net/S50ser2net $(TARGET_DIR)/etc/init.d/S50ser2net
+endef
+
+define SER2NET_INSTALL_CONF
+	$(INSTALL) -m 0644 -D package/ser2net/ser2net.conf $(TARGET_DIR)/etc/ser2net.conf
+endef
+SER2NET_POST_INSTALL_TARGET_HOOKS += SER2NET_INSTALL_CONF
+
 $(eval $(autotools-package))