[Buildroot] [PATCH V2] p910nd: Add p910nd lightweight printserver

Dave Purdy david.c.purdy at gmail.com
Mon Jun 18 17:36:29 UTC 2012


Changes since V1:
	-p910nd.mk : Fixed source/site, removed need for patch, decrufted.
	-S55p910nd initscript: Reworked for start-stop-daemon usage,
	 added some basic sanity checks for config-file, lock-dir & run-dir,
	 cleaned up structure and readability, removed cruft,
	 changed do_stop so that it scans run-dir for pid-files instead of
	 looking at the config file, reworked do_start to ensure that each
	 instance of p910nd has its correct/unique process-name and pid-file,
	 and added a restart option.
	-p910nd.conf : Added clarifying documentation RE format of args/options
	-RETESTED: with a fresh rootfs build, with different daemon instances
	 (e.g. p9102d), on various devices (e.g. /dev/usb/lp3) - all successful


Signed-off-by: Dave Purdy <david.c.purdy at gmail.com>

---
 package/Config.in          |    1 +
 package/p910nd/Config.in   |    8 +++++
 package/p910nd/S55p910nd   |   76 ++++++++++++++++++++++++++++++++++++++++++++
 package/p910nd/p910nd.conf |   20 +++++++++++
 package/p910nd/p910nd.mk   |   21 ++++++++++++
 5 files changed, 126 insertions(+), 0 deletions(-)
 create mode 100644 package/p910nd/Config.in
 create mode 100644 package/p910nd/S55p910nd
 create mode 100644 package/p910nd/p910nd.conf
 create mode 100644 package/p910nd/p910nd.mk

diff --git a/package/Config.in b/package/Config.in
index 1044e9f..f5056a7 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -570,6 +570,7 @@ source "package/openntpd/Config.in"
 source "package/openssh/Config.in"
 source "package/openswan/Config.in"
 source "package/openvpn/Config.in"
+source "package/p910nd/Config.in"
 source "package/portmap/Config.in"
 source "package/pppd/Config.in"
 source "package/pptp-linux/Config.in"
diff --git a/package/p910nd/Config.in b/package/p910nd/Config.in
new file mode 100644
index 0000000..490dace
--- /dev/null
+++ b/package/p910nd/Config.in
@@ -0,0 +1,8 @@
+config BR2_PACKAGE_P910ND
+	bool "p910nd"
+	help
+	  p910nd is a small printer daemon intended for diskless
+	  workstations. Using ports 9100-9102, it accepts
+	  print jobs and passes them directly to a USB printer.
+
+	  http://p910nd.sourceforge.net/
diff --git a/package/p910nd/S55p910nd b/package/p910nd/S55p910nd
new file mode 100644
index 0000000..60b719a
--- /dev/null
+++ b/package/p910nd/S55p910nd
@@ -0,0 +1,76 @@
+#!/bin/sh
+#
+#   /etc/init.d/[S55]p910nd
+#   initscript to start p910nd printer daemon, with match pid-files and process-names
+
+
+CONFIG=/etc/p910nd.conf
+RUN_D=/var/run
+P910ND=/usr/sbin/p910nd
+SUBSYS=/var/lock/subsys
+
+# check if /etc/p910nd.conf exists, print message & exit if it doesn't
+[ ! -f $CONFIG ] && ( echo "The config file /etc/p910nd.conf is missing... exiting now." && exit 0 )
+
+#  description of config line format for /etc/p910nd.conf
+#  each configuration line must have form 
+#  N  [-b]  -f <printer_device> , where N is the port number [0|1|2], -b enables bidirectional traffic, 
+#                                 and -f specifies a printer device
+# 
+#  examples:
+#  0 -b -f /dev/usb/lp0   
+# (listen on port 9100, with bidirectional traffic, use /dev/usb/lp0, pid-file p9100d.pid)
+#
+#  2  -f /dev/usb/lp3     
+# (listen on port 9102, use /dev/usb/lp3, pid-file p9102d.pid)
+
+
+# check if /var/run exists, create it if not
+[ ! -d $RUN_D ] && mkdir -p $RUN_D
+
+# check if /var/lock/subsys exists, create it if not
+[ ! -d $SUBSYS ] && mkdir -p $SUBSYS
+
+do_start() {
+	[ -f $CONFIG ] && ( while read PORT OPTIONS; do
+   		case "$PORT" in
+    			""|\#*)
+     			continue;
+   		esac
+		P910XD_PID="p910"$PORT"d.pid"	# create the correct pid-filename, e.g. p9102d.pid
+		P910ND_ARGS=" $OPTIONS $PORT"
+		start-stop-daemon -m -p  $RUN_D/$P910XD_PID -S -x $P910ND -- $P910ND_ARGS
+		echo "starting p910nd with options" $OPTIONS "on port" $PORT "with pid-file" $P910XD_PID
+   		if [ $? -ne 0 ]; then
+    			exit 1
+		fi
+  	done
+	) < $CONFIG
+ 	exit 0
+}
+
+do_stop() {
+        for PID_F in $RUN_D/p910?d.pid; do
+                start-stop-daemon -q -K -p $PID_F 
+		rm $PID_F && echo "stopping p910nd instance with pid-file" $PID_F
+        done
+}
+
+case $1 in
+	start)
+ 	 	do_start
+  		;;
+  	stop)
+  		do_stop
+  		;;
+  	restart)
+        	do_stop
+		sleep 1
+        	do_start
+        	;;
+  	*)
+        	echo $"Usage: $0 {start|stop|restart}"
+        exit 1
+esac
+
+exit $?
diff --git a/package/p910nd/p910nd.conf b/package/p910nd/p910nd.conf
new file mode 100644
index 0000000..da1b7f0
--- /dev/null
+++ b/package/p910nd/p910nd.conf
@@ -0,0 +1,20 @@
+# p910nd Version 0.95 Copyright (c) 2010 Ken Yap, GPLv2
+# For additional daemon arguments, see man 8 p910nd
+#
+#  description of config line format for /etc/p910nd.conf
+#  each configuration line must have form
+#  N  [-b]  -f <printer_device> 
+#
+#  where:
+#	 N is the port number [0|1|2],
+#	-b enables (optional) bidirectional traffic, and
+#       -f specifies a printer device
+#
+#  examples:
+  0 -b -f /dev/usb/lp0
+# (listen on port 9100, bidirectional traffic, use /dev/usb/lp0, pid-file p9100d)
+#
+#  2  -f /dev/usb/lp3
+# (listen on port 9102, use /dev/usb/lp3, pid-file p9102d.pid)
+
+
diff --git a/package/p910nd/p910nd.mk b/package/p910nd/p910nd.mk
new file mode 100644
index 0000000..94b0ddb
--- /dev/null
+++ b/package/p910nd/p910nd.mk
@@ -0,0 +1,21 @@
+#############################################################
+#
+# p910nd
+#
+#############################################################
+
+P910ND_VERSION = 0.95
+P910ND_SITE = http://$(BR2_SOURCEFORGE_MIRROR).dl.sourceforge.net/sourceforge/p910nd/$(P910ND_VERSION)
+P910ND_SOURCE = p910nd-$(P910ND_VERSION).tar.bz2
+
+define P910ND_BUILD_CMDS
+	$(MAKE) $(TARGET_CONFIGURE_OPTS) $(P910ND_MAKE_OPTS) -C $(@D)
+endef
+
+define P910ND_INSTALL_TARGET_CMDS
+	$(INSTALL) -D -m 0755 $(@D)/p910nd $(TARGET_DIR)/usr/sbin/p910nd
+	$(INSTALL) -m 0644 -D package/p910nd/p910nd.conf $(TARGET_DIR)/etc/p910nd.conf
+	$(INSTALL) -m 0755 -D package/p910nd/S55p910nd $(TARGET_DIR)/etc/init.d/S55p910nd
+endef
+
+$(eval $(call GENTARGETS))
-- 
1.7.0.4



More information about the buildroot mailing list