gpsd: As discssed on the ML:
authorMatthias Hentges <oe@hentges.net>
Fri, 4 Jan 2008 12:56:35 +0000 (12:56 +0000)
committerMatthias Hentges <oe@hentges.net>
Fri, 4 Jan 2008 12:56:35 +0000 (12:56 +0000)
- Add a gpsd-conf package
- gpe-conf installs /etc/defaults/gpsd and /etc/init.d/gps-hardware
          via update-alternatives
- A sample machine-specific -conf package for fix-gta01 is provided.
- Constructive comments welcome

packages/gpsd/files/fic-gta01/gps-hardware [new file with mode: 0644]
packages/gpsd/files/fic-gta01/gpsd [deleted file]
packages/gpsd/files/gps-hardware [new file with mode: 0644]
packages/gpsd/files/gpsd
packages/gpsd/gpsd.inc
packages/gpsd/gpsd_2.28.bb
packages/gpsd/gpsd_2.34.bb
packages/gpsd/gpsd_2.36.bb

diff --git a/packages/gpsd/files/fic-gta01/gps-hardware b/packages/gpsd/files/fic-gta01/gps-hardware
new file mode 100644 (file)
index 0000000..6490f52
--- /dev/null
@@ -0,0 +1,41 @@
+#! /bin/sh
+#
+# Copyright Matthias Hentges <devel@hentges.net> (c) 2008
+# License: GPL (see http://www.gnu.org/licenses/gpl.txt for a copy of the license)
+#
+# Filename: gps-hardware
+# Date: 20080103 (YMD)
+#
+#################################################################################
+#
+# 20080103 - v0.0.1    - Initial release
+
+if ! test -e /home/root/gllin/gllin
+then
+       echo -e "\n\ngllin GPS driver for Neo1973 not found,"
+       echo "please install the gllin package from"
+       echo "http://3rdparty.downloads.openmoko.org/gllin/"
+       echo ""
+       exit 1
+fi
+
+
+do_start() {
+       /home/root/gllin/gllin >/var/log/gllin.log 2>&1 &
+       sleep 1
+}
+
+do_stop() {
+       gllin_PIDs="`ps ax | grep "/home/root/gllin" | grep -v grep | awk '{print $1}'`"        
+       test -n "$gllin_PIDs" && kill $gllin_PIDs
+}
+
+do_status() {
+       ps ax | grep -v grep | grep -q gllin && echo "ready" || echo "unknown"
+}
+
+case "$1" in
+       start)          do_start ;;
+       stop)           do_stop ;;
+       status)         do_status ;;
+esac
diff --git a/packages/gpsd/files/fic-gta01/gpsd b/packages/gpsd/files/fic-gta01/gpsd
deleted file mode 100755 (executable)
index 113f43d..0000000
+++ /dev/null
@@ -1,105 +0,0 @@
-#!/bin/sh
-#
-# gpsd This shell script starts and stops gpsd.
-#
-# chkconfig: 345 90 40
-# description: Gpsd manages access to a serial- or USB-connected GPS
-# processname: gpsd
-
-# Source function library.
-#. /etc/rc.d/init.d/functions
-
-RETVAL=0
-prog="gpsd"
-
-test -f /etc/default/$prog && . /etc/default/$prog
-
-start() {
-       # Start daemons.
-       echo -n "Starting $prog: "
-       # We don't use the daemon function here because of a known bug
-       # in initlog -- it spuriously returns a nonzero status when 
-       # starting daemons that fork themselves.  See
-       # http://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=130629
-       # for discussion.  Fortunately:
-       #
-       # 1. gpsd startup can't fail, or at least not in the absence of
-       # much larger resource-exhaustion problems that would be very obvious.
-       #
-       # 2. We don't need all the logging crud that daemon/initlog sets
-       # up -- gpsd does its own syslog calls.
-       #
-       
-       if test -e /home/root/gllin/gllin
-       then
-               /home/root/gllin/gllin >/var/log/gllin.log 2>&1 &
-       else
-               echo -e "\n\ngllin GPS driver for Neo1973 not found,"
-               echo "please install the gllin package from"
-               echo "http://3rdparty.downloads.openmoko.org/gllin/"
-               echo ""
-               exit 1
-       fi
-       
-       if [ -e "${GPS_DEV}" ]
-       then
-           gpsd ${GPSD_OPTS} -p ${GPS_DEV}
-            echo "success"
-       else
-           # User needs to symlink ${GPS_DEV} to the right thing
-           echo "No ${GPS_DEV} GPS device, aborting gpsd startup. Check /etc/default/$prog"
-       fi
-       RETVAL=$?
-       echo
-       [ $RETVAL -eq 0 ] && touch /var/lock/subsys/gpsd
-       return $RETVAL
-}
-
-stop() {
-       # Stop daemons.
-       echo -n "Shutting down $prog: "
-
-       gllin_PIDs="`ps ax | grep "/home/root/gllin" | grep -v grep | awk '{print $1}'`"        
-       test -n "$gllin_PIDs" && kill $gllin_PIDs
-
-        killall gpsd
-        killproc gpsd
-       RETVAL=$?
-       echo
-       if [ $RETVAL -eq 0 ]
-       then
-           rm -f /var/lock/subsys/gpsd;
-       fi
-       return $RETVAL
-}
-
-# See how we were called.
-case "$1" in
-  start)
-       start
-       ;;
-  stop)
-       stop
-       ;;
-  restart|reload)
-       stop
-       start
-       RETVAL=$?
-       ;;
-  condrestart)
-       if [ -f /var/lock/subsys/gpsd ]; then
-           stop
-           start
-           RETVAL=$?
-       fi
-       ;;
-  status)
-#      status gpsd
-#      RETVAL=$?
-       ;;
-  *)
-       echo "Usage: $0 {start|stop|restart|condrestart|status}"
-       exit 1
-esac
-
-exit $RETVAL
diff --git a/packages/gpsd/files/gps-hardware b/packages/gpsd/files/gps-hardware
new file mode 100644 (file)
index 0000000..ff2ddb3
--- /dev/null
@@ -0,0 +1,2 @@
+# This is a dummy file. Some machines use it to bring up integrated GPS
+# devices on demand.
index 3a14867..e536837 100755 (executable)
@@ -29,9 +29,18 @@ start() {
        # 2. We don't need all the logging crud that daemon/initlog sets
        # up -- gpsd does its own syslog calls.
        #
+       
+       if test -x /etc/init.d/gps-hardware
+       then
+               if ! ( /etc/init.d/gps-hardware status | grep -q "ready" )
+               then
+                       /etc/init.d/gps-hardware start
+               fi
+       fi
+       
        if [ -e "${GPS_DEV}" ]
        then
-           gpsd ${GPSD_OPTS} -p ${GPS_DEV}
+           gpsd ${GPSD_OPTS} ${GPS_DEV}
             echo "success"
        else
            # User needs to symlink ${GPS_DEV} to the right thing
index be593e0..dac62ec 100644 (file)
@@ -3,6 +3,7 @@ SECTION = "console/network"
 PRIORITY = "optional"
 LICENSE = "GPL"
 DEPENDS = "dbus-glib ncurses python"
+RDEPENDS = "gpsd-conf"
 
 EXTRA_OECONF = "--x-includes=${STAGING_INCDIR}/X11 \
                 --x-libraries=${STAGING_LIBDIR} \
@@ -11,6 +12,7 @@ EXTRA_OECONF = "--x-includes=${STAGING_INCDIR}/X11 \
 
 SRC_URI = "http://download.berlios.de/gpsd/gpsd-${PV}.tar.gz \
            file://gpsd-default \
+          file://gps-hardware \
            file://gpsd"
 
 inherit autotools update-rc.d
@@ -41,15 +43,29 @@ do_install_append() {
         install -d ${D}/${sysconfdir}/init.d
         install -d ${D}/dev
         install -m 0755 ${WORKDIR}/gpsd ${D}/${sysconfdir}/init.d/
+       install -m 0755 ${WORKDIR}/gps-hardware ${D}/${sysconfdir}/init.d/gps-hardware.default
         install -d ${D}/${sysconfdir}/default
-        install -m 0644 ${WORKDIR}/gpsd-default ${D}/${sysconfdir}/default/gpsd
+        install -m 0644 ${WORKDIR}/gpsd-default ${D}/${sysconfdir}/default/gpsd.default
 }
 
-PACKAGES =+ "libgps python-pygps"
+pkg_postinst_${PN}-conf() {
+       update-alternatives --install ${sysconfdir}/default/gpsd gpsd-defaults ${sysconfdir}/default/gpsd.default 10
+       update-alternatives --install ${sysconfdir}/init.d/gps-hardware gps-hardware ${sysconfdir}/init.d/gps-hardware.default 10
+}
+
+pkg_postrm_${PN}-conf() {      
+       update-alternatives --remove gpsd-defaults ${sysconfdir}/default/gpsd.default
+       update-alternatives --remove gps-hardware ${sysconfdir}/init.d/gps-hardware.default             
+}
+
+SRC_URI_OVERRIDES_PACKAGE_ARCH = "0"
+
+PACKAGES =+ "libgps python-pygps gpsd-conf"
+
+PACKAGE_ARCH_gpsd-conf = "${MACHINE_ARCH}"
 
-FILES_${PN} += "${sysconfdir}"
 FILES_libgps = "${libdir}/*.so.*"
-CONFFILES_${PN} = "${sysconfdir}/default/gpsd"
+FILES_gpsd-conf = "${sysconfdir}"
 
 DESCRIPTION_python-pygps = "Python bindings to gpsd"
 FILES_python-pygps = "${libdir}/*/site-packages/*"
index c16de2e..ffd7322 100644 (file)
@@ -1,2 +1,2 @@
 require gpsd.inc
-PR = "r4"
+PR = "r5"
index 8472eb1..969ef1b 100644 (file)
@@ -1,4 +1,4 @@
 require gpsd.inc
 
-PR = "r6"
+PR = "r7"
 
index 58e9ebe..885a41d 100644 (file)
@@ -1,3 +1,3 @@
 require gpsd.inc
 
-PR = "r0"
+PR = "r1"