diff --git a/.cvsignore b/.cvsignore index f1b773d..5af95f3 100644 --- a/.cvsignore +++ b/.cvsignore @@ -1,2 +1 @@ -gpsd-2.37.tar.gz -gpsd-logo.png +gpsd-2.38.tar.gz diff --git a/gpsd-logo.png b/gpsd-logo.png new file mode 100644 index 0000000..83ca308 Binary files /dev/null and b/gpsd-logo.png differ diff --git a/gpsd.hotplug.wrapper b/gpsd.hotplug.wrapper new file mode 100644 index 0000000..3c68cab --- /dev/null +++ b/gpsd.hotplug.wrapper @@ -0,0 +1,28 @@ +#! /bin/bash +# $Id$ + +if [ "$ACTION" == "remove" ] ; then + if [ $(echo $DEVLINKS | grep -q /dev/gps) ] ; then + exec /lib/udev/gpsd.hotplug "$ACTION" "$DEVNAME" + fi + exit 0 +fi + +# This was formerly in /lib/udev/hotplug.functions +wait_for_file() { + [ -e "$1" ] && return 0 + local count=0 + while sleep 1; do + let count=count+1 + [ -e "$1" ] && return 0 + if [ $count -gt 60 ]; then + return 1 + fi + done +} + +# wait for /usr & /var to be mounted +wait_for_file /usr/bin/python && \ +wait_for_file /var/run && \ + exec /lib/udev/gpsd.hotplug "$ACTION" "$DEVNAME" + diff --git a/gpsd.init b/gpsd.init new file mode 100644 index 0000000..305ccb3 --- /dev/null +++ b/gpsd.init @@ -0,0 +1,91 @@ +#!/bin/sh +# +# gpsd Service daemon for mediating access to a GPS +# +# chkconfig: - 44 66 +# description: gpsd is a service daemon that mediates access to a GPS sensor \ +# connected to the host computer by serial or USB interface, \ +# making its data on the location/course/velocity of the sensor \ +# available to be queried on TCP port 2947 of the host computer. +# processname: gpsd +# pidfile: /var/run/gpsd.pid + +# http://fedoraproject.org/wiki/FCNewInit/Initscripts +### BEGIN INIT INFO +# Provides: gpsd +# Required-Start: network +# Required-Stop: network +# Should-Start: +# Should-Stop: +# Default-Start: +# Default-Stop: +# Short-Description: Service daemon for mediating access to a GPS +# Description: gpsd is a service daemon that mediates access to a GPS sensor +# connected to the host computer by serial or USB interface, making its +# data on the location/course/velocity of the sensor available to be +# queried on TCP port 2947 of the host computer. +### END INIT INFO + +# Source function library. +. /etc/rc.d/init.d/functions + +exec="/usr/bin/gpsd" +prog=$(basename $exec) +PIDFILE=/var/run/gpsd.pid +CONTROL_SOCKET=/var/run/gpsd.sock + +[ -e /etc/sysconfig/$prog ] && . /etc/sysconfig/$prog +OPTIONS="-n" +DEVICE="/dev/ttyUSB0" + +lockfile=/var/lock/subsys/$prog + +start() { + echo -n $"Starting $prog: " + daemon $exec -p $PIDFILE -F $CONTROL_SOCKET $OPTIONS $DEVICE + retval=$? + echo + [ $retval -eq 0 ] && touch $lockfile + return $retval +} + +stop() { + echo -n $"Stopping $prog: " + killproc $prog + retval=$? + echo + [ $retval -eq 0 ] && rm -f $lockfile + return $retval +} + +restart() { + stop + start +} + +case "$1" in + start|stop|restart) + $1 + ;; + force-reload) + restart + ;; + status) + status $prog + ;; + try-restart|condrestart) + if status $prog >/dev/null ; then + restart + fi + ;; + reload) + status $prog >/dev/null || exit 7 + # If config can be reloaded without restarting, implement it here, + # remove the "exit", and add "reload" to the usage message below. + action $"Service $prog does not support the reload action: " /bin/false + exit 3 + ;; + *) + echo $"Usage: $0 {start|stop|status|restart|try-restart|force-reload}" + exit 2 +esac diff --git a/gpsd.rules b/gpsd.rules new file mode 100644 index 0000000..2b8e743 --- /dev/null +++ b/gpsd.rules @@ -0,0 +1,41 @@ +# udev rules for gpsd +# $Id$ +# +# GPSes don't have their own USB device class. They're serial-over-USB +# devices, so what you see is actually the ID of the serial-over-USB chip. +# Fortunately, just two of these account for over 80% of consumer-grade +# GPS sensors. The gpsd.hotplug.wrapper script will tell a running gpsd +# that it should look at the device that just went active, because it +# might be a GPS. +# +# The following setup works on Debian - something similar will apply on +# other distributions: +# +# /etc/udev/gpsd.rules +# /etc/udev/rules.d/025_gpsd.rules -> ../gpsd.rules +# /lib/udev/gpsd.hotplug.wrapper +# /lib/udev/gpsd.hotplug +# +# Setting the link in /etc/udev/rules.d activates the rule and determines +# when to run it on boot (similar to init.d processing). + +SUBSYSTEM!="usb", GOTO="gpsd_rules_end" + +# Prolific Technology, Inc. PL2303 Serial Port +SYSFS{idVendor}=="067b", SYSFS{idProduct}=="2303", SYMLINK="gps%n", RUN+="/lib/udev/gpsd.hotplug.wrapper" +# ATEN International Co., Ltd UC-232A Serial Port [pl2303] +SYSFS{idVendor}=="0557", SYSFS{idProduct}=="2008", SYMLINK="gps%n", RUN+="/lib/udev/gpsd.hotplug.wrapper" +# FTDI 8U232AM +SYSFS{idVendor}=="0403", SYSFS{idProduct}=="6001", SYMLINK="gps%n", RUN+="/lib/udev/gpsd.hotplug.wrapper" +# Cypress M8/CY7C64013 (DeLorme uses these) +SYSFS{idVendor}=="1163", SYSFS{idProduct}=="0100", SYMLINK="gps%n", RUN+="/lib/udev/gpsd.hotplug.wrapper" +# PS-360 OEM (Microsoft GPS sold with Street and Trips 2005) +SYSFS{idVendor}=="067b", SYSFS{idProduct}=="aaa0", SYMLINK="gps%n", RUN+="/lib/udev/gpsd.hotplug.wrapper" +# Garmin International GPSmap, various models (tested with Garmin GPS 18 USB) +SYSFS{idVendor}=="091e", SYSFS{idProduct}=="0003", SYMLINK="gps%n", RUN+="/lib/udev/gpsd.hotplug.wrapper" +# Cygnal Integrated Products, Inc. CP210x Composite Device (Used by Holux m241) +SYSFS{idVendor}=="10c4", SYSFS{idProduct}=="ea60", SYMLINK="gps%n", RUN+="/lib/udev/gpsd.hotplug.wrapper" + +ACTION=="remove", RUN+="/lib/udev/gpsd.hotplug.wrapper" + +LABEL="gpsd_rules_end" diff --git a/gpsd.spec b/gpsd.spec index f223e43..d956c4b 100644 --- a/gpsd.spec +++ b/gpsd.spec @@ -1,8 +1,8 @@ %{!?python_sitearch: %define python_sitearch %(%{__python} -c "from distutils.sysconfig import get_python_lib; print get_python_lib(1)")} Name: gpsd -Version: 2.37 -Release: 4%{?dist} +Version: 2.38 +Release: 2%{?dist} Summary: Service daemon for mediating access to a GPS Group: System Environment/Daemons @@ -12,14 +12,18 @@ Source0: http://download.berlios.de/gpsd/%{name}-%{version}.tar.gz Source1: xgps.desktop Source2: xgpsspeed.desktop Source3: gpsd-logo.png -Patch0: python-pyexecdir-install-gpsd-2.37.patch -Patch1: zero.patch +Source10: gpsd.init +Source11: gpsd.sysconfig +Source20: gpsd.rules +Source21: gpsd.hotplug.wrapper +Patch0: python-pyexecdir-install-gpsd-2.38.patch BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) BuildRequires: dbus-devel dbus-glib-devel ncurses-devel xmlto python-devel BuildRequires: lesstif-devel libXaw-devel desktop-file-utils BuildRequires: python +Requires: udev Requires(post): /sbin/ldconfig Requires(postun): /sbin/ldconfig @@ -64,7 +68,6 @@ can run on a serial terminal or terminal emulator. %prep %setup -q %patch0 -p1 -%patch1 -p0 %build @@ -84,10 +87,24 @@ make DESTDIR=%{buildroot} install %{__install} -p -m 0644 xgpsspeed.ad \ %{buildroot}%{_datadir}/X11/app-defaults/xgpsspeed +# init scripts +%{__install} -d -m 0755 %{buildroot}%{_sysconfdir}/init.d +%{__install} -p -m 0644 %{SOURCE10} \ + %{buildroot}%{_sysconfdir}/init.d/gpsd + +%{__install} -d -m 0755 %{buildroot}%{_sysconfdir}/sysconfig +%{__install} -p -m 0644 %{SOURCE11} \ + %{buildroot}%{_sysconfdir}/sysconfig/gpsd + +# udev rules +%{__install} -d -m 0755 %{buildroot}%{_sysconfdir}/udev/rules.d +%{__install} -p -m 0644 %{SOURCE20} \ + %{buildroot}%{_sysconfdir}/udev/rules.d/99-gpsd.rules + # hotplug script -%{__install} -d -m 0755 %{buildroot}%{_sysconfdir}/hotplug.d/usb -%{__install} -p -m 0644 gpsd.hotplug gpsd.usermap \ - %{buildroot}%{_sysconfdir}/hotplug.d/usb/ +%{__install} -d -m 0755 %{buildroot}/lib/udev +%{__install} -p -m 0755 gpsd.hotplug %{SOURCE21} \ + %{buildroot}/lib/udev # remove .la files rm -f %{buildroot}%{_libdir}/libgps.la @@ -126,19 +143,23 @@ rm -rf %{buildroot} %files %defattr(-,root,root,-) %doc README INSTALL COPYING +%config(noreplace) %{_sysconfdir}/init.d/%{name} +%config(noreplace) %{_sysconfdir}/sysconfig/%{name} +%config(noreplace) %{_sysconfdir}/udev/rules.d/* %{_sbindir}/gpsd %{_bindir}/gpsprof %{_bindir}/sirfmon %{_bindir}/gpsctl %{_libdir}/libgps.so.* +/lib/udev/gpsd* %{python_sitearch}/gps.py* +%{python_sitearch}/gpscap.py* +%{python_sitearch}/gpslib.so %{python_sitearch}/gpspacket.so %{_mandir}/man8/gpsd.8* %{_mandir}/man1/gpsprof.1* %{_mandir}/man1/sirfmon.1* %{_mandir}/man1/gpsctl.1* -%{_sysconfdir}/hotplug.d/usb/gpsd.hotplug -%{_sysconfdir}/hotplug.d/usb/gpsd.usermap %files devel %defattr(-,root,root,-) @@ -166,6 +187,7 @@ rm -rf %{buildroot} %{_bindir}/xgps %{_bindir}/xgpsspeed %{_bindir}/cgps +%{_bindir}/gpsdlcdd %{_bindir}/gpspipe %{_bindir}/gpxlogger %{_bindir}/cgpxlogger @@ -185,6 +207,30 @@ rm -rf %{buildroot} %changelog +* Mon Mar 16 2009 Douglas E. Warner - 2.38-2 +- updating to 2.38 +- creating init script and sysconfig files +- migrating hotplug rules to udev + hotplug wrapper script from svn r5147 +- updating pyexecdir patch +- fixing udev rule subsystem match +- Regression test load for RoyalTek RGM3800 and Blumax GPS-009 added +- Scaling on E error-estimate fields fixed to match O +- Listen on localhost only by default to avoid security problems; this can be + overridden with the -G command-line option +- The packet-state machine can now recognize RTCM3 packets, though support is + not yet complete +- Added support for ublox5 and mkt-3301 devices +- Add a wrapper around gpsd_hexdump to save CPU +- Lots of little fixes to various packet parsers +- Always keep the device open: "-n" is not optional any more +- xgpsspeed no longer depends on Motif +- gpsctl can now ship arbitrary payloads to a device; + It's possible to send binary through the control channel with the + new "&" command +- Experimental new driver for Novatel SuperStarII +- The 'g' mode switch command now requires, and returns, 'rtcm104v2' rather + than 'rtcm104'; this is design forward for when RTCM104v2 is fully working + * Tue Feb 24 2009 Fedora Release Engineering - 2.37-4 - Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild @@ -193,7 +239,6 @@ rm -rf %{buildroot} * Wed Mar 19 2008 Douglas E. Warner - 2.37-2 - moving gpspacket.so python lib to main package -- adding zero.patch to make ZEROIZE error go away on fedora 7 * Wed Feb 27 2008 Douglas E. Warner - 2.37-1 - update to 2.37 diff --git a/gpsd.sysconfig b/gpsd.sysconfig new file mode 100644 index 0000000..1f7b1f6 --- /dev/null +++ b/gpsd.sysconfig @@ -0,0 +1,2 @@ +OPTIONS="-n" +DEVICE="/dev/ttyUSB0" diff --git a/python-pyexecdir-install-gpsd-2.37.patch b/python-pyexecdir-install-gpsd-2.38.patch similarity index 87% rename from python-pyexecdir-install-gpsd-2.37.patch rename to python-pyexecdir-install-gpsd-2.38.patch index 90df748..e24c83a 100644 --- a/python-pyexecdir-install-gpsd-2.37.patch +++ b/python-pyexecdir-install-gpsd-2.38.patch @@ -1,7 +1,7 @@ -diff -ruN gpsd-2.37/Makefile.in gpsd-2.37-new/Makefile.in ---- gpsd-2.37/Makefile.in 2008-02-17 12:41:06.000000000 -0500 -+++ gpsd-2.37-new/Makefile.in 2008-02-28 11:45:00.000000000 -0500 -@@ -77,7 +77,7 @@ +diff -ruN gpsd-2.38-orig/Makefile.in gpsd-2.38/Makefile.in +--- gpsd-2.38-orig/Makefile.in 2009-02-10 15:44:43.000000000 -0500 ++++ gpsd-2.38/Makefile.in 2009-02-12 11:04:18.000000000 -0500 +@@ -75,7 +75,7 @@ am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)" \ "$(DESTDIR)$(sbindir)" "$(DESTDIR)$(bindir)" \ @@ -10,12 +10,12 @@ diff -ruN gpsd-2.37/Makefile.in gpsd-2.37-new/Makefile.in "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(man3dir)" \ "$(DESTDIR)$(man5dir)" "$(DESTDIR)$(man8dir)" \ "$(DESTDIR)$(pkgconfigdir)" "$(DESTDIR)$(includedir)" \ -@@ -966,21 +966,21 @@ - uninstall-info-am: +@@ -1005,21 +1005,21 @@ + -rm -f libtool install-nodist_pythonPYTHON: $(nodist_python_PYTHON) @$(NORMAL_INSTALL) -- test -z "$(pythondir)" || $(mkdir_p) "$(DESTDIR)$(pythondir)" -+ test -z "$(pyexecdir)" || $(mkdir_p) "$(DESTDIR)$(pyexecdir)" +- test -z "$(pythondir)" || $(MKDIR_P) "$(DESTDIR)$(pythondir)" ++ test -z "$(pyexecdir)" || $(MKDIR_P) "$(DESTDIR)$(pyexecdir)" @list='$(nodist_python_PYTHON)'; dlist=''; for p in $$list; do\ if test -f "$$p"; then b=; else b="$(srcdir)/"; fi; \ if test -f $$b$$p; then \ @@ -37,7 +37,7 @@ diff -ruN gpsd-2.37/Makefile.in gpsd-2.37-new/Makefile.in fi; \ else :; fi -@@ -988,27 +988,27 @@ +@@ -1027,27 +1027,27 @@ @$(NORMAL_UNINSTALL) @list='$(nodist_python_PYTHON)'; dlist=''; for p in $$list; do\ f=$(am__strip_dir) \ @@ -50,8 +50,8 @@ diff -ruN gpsd-2.37/Makefile.in gpsd-2.37-new/Makefile.in done install-pythonPYTHON: $(python_PYTHON) @$(NORMAL_INSTALL) -- test -z "$(pythondir)" || $(mkdir_p) "$(DESTDIR)$(pythondir)" -+ test -z "$(pyexecdir)" || $(mkdir_p) "$(DESTDIR)$(pyexecdir)" +- test -z "$(pythondir)" || $(MKDIR_P) "$(DESTDIR)$(pythondir)" ++ test -z "$(pyexecdir)" || $(MKDIR_P) "$(DESTDIR)$(pyexecdir)" @list='$(python_PYTHON)'; dlist=''; for p in $$list; do\ if test -f "$$p"; then b=; else b="$(srcdir)/"; fi; \ if test -f $$b$$p; then \ @@ -73,7 +73,7 @@ diff -ruN gpsd-2.37/Makefile.in gpsd-2.37-new/Makefile.in fi; \ else :; fi -@@ -1016,9 +1016,9 @@ +@@ -1055,9 +1055,9 @@ @$(NORMAL_UNINSTALL) @list='$(python_PYTHON)'; dlist=''; for p in $$list; do\ f=$(am__strip_dir) \ @@ -86,12 +86,12 @@ diff -ruN gpsd-2.37/Makefile.in gpsd-2.37-new/Makefile.in done install-man1: $(man1_MANS) $(man_MANS) @$(NORMAL_INSTALL) -@@ -1436,7 +1436,7 @@ +@@ -1478,7 +1478,7 @@ install-binPROGRAMS: install-libLTLIBRARIES installdirs: - for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)" "$(DESTDIR)$(sbindir)" "$(DESTDIR)$(bindir)" "$(DESTDIR)$(pythondir)" "$(DESTDIR)$(pythondir)" "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(man3dir)" "$(DESTDIR)$(man5dir)" "$(DESTDIR)$(man8dir)" "$(DESTDIR)$(pkgconfigdir)" "$(DESTDIR)$(includedir)" "$(DESTDIR)$(includedir)"; do \ + for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)" "$(DESTDIR)$(sbindir)" "$(DESTDIR)$(bindir)" "$(DESTDIR)$(pyexecdir)" "$(DESTDIR)$(pyexecdir)" "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(man3dir)" "$(DESTDIR)$(man5dir)" "$(DESTDIR)$(man8dir)" "$(DESTDIR)$(pkgconfigdir)" "$(DESTDIR)$(includedir)" "$(DESTDIR)$(includedir)"; do \ - test -z "$$dir" || $(mkdir_p) "$$dir"; \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: $(BUILT_SOURCES) diff --git a/sources b/sources index ba86350..da5315e 100644 --- a/sources +++ b/sources @@ -1,3 +1 @@ -6c96cc0b2df0279cb7baac1ebc5881d3 gpsd-2.37.tar.gz -f742145dff43d607f7014aa387835738 gpsd-logo.png - +725c320ca6fa35bcdaa1de2d8908f392 gpsd-2.38.tar.gz diff --git a/zero.patch b/zero.patch deleted file mode 100644 index 41923a2..0000000 --- a/zero.patch +++ /dev/null @@ -1,26 +0,0 @@ ---- libgpsd_core.c.orig 2008-03-19 12:11:55.000000000 -0700 -+++ libgpsd_core.c 2008-03-19 12:14:28.000000000 -0700 -@@ -415,6 +415,7 @@ - tm.tm_mon++; - tm.tm_year %= 100; - } -+#define ZEROIZE(x) (isnan(x)!=0 ? 0.0 : x) - /*@ -usedef @*/ - (void)snprintf(bufp, len, - "$GPRMC,%02d%02d%02d,%c,%09.4f,%c,%010.4f,%c,%.4f,%.3f,%02d%02d%02d,,", -@@ -426,14 +427,13 @@ - ((session->gpsdata.fix.latitude > 0) ? 'N' : 'S'), - degtodm(fabs(session->gpsdata.fix.longitude)), - ((session->gpsdata.fix.longitude > 0) ? 'E' : 'W'), --#define ZEROIZE(x) (isnan(x)!=0 ? 0.0 : x) - ZEROIZE(session->gpsdata.fix.speed * MPS_TO_KNOTS), - ZEROIZE(session->gpsdata.fix.track), --#undef ZEROIZE - tm.tm_mday, - tm.tm_mon, - tm.tm_year); - /*@ +usedef @*/ -+#undef ZEROIZE - nmea_add_checksum(bufp); - } -