- 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
This commit is contained in:
Douglas E. Warner 2009-03-16 13:54:41 +00:00
parent ea58a0bde3
commit 532b77d09c
10 changed files with 234 additions and 56 deletions

View File

@ -1,2 +1 @@
gpsd-2.37.tar.gz
gpsd-logo.png
gpsd-2.38.tar.gz

BIN
gpsd-logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

28
gpsd.hotplug.wrapper Normal file
View File

@ -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"

91
gpsd.init Normal file
View File

@ -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

41
gpsd.rules Normal file
View File

@ -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"

View File

@ -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 <silfreed@silfreed.net> - 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 <rel-eng@lists.fedoraproject.org> - 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 <silfreed@silfreed.net> - 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 <silfreed@silfreed.net> - 2.37-1
- update to 2.37

2
gpsd.sysconfig Normal file
View File

@ -0,0 +1,2 @@
OPTIONS="-n"
DEVICE="/dev/ttyUSB0"

View File

@ -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)

View File

@ -1,3 +1 @@
6c96cc0b2df0279cb7baac1ebc5881d3 gpsd-2.37.tar.gz
f742145dff43d607f7014aa387835738 gpsd-logo.png
725c320ca6fa35bcdaa1de2d8908f392 gpsd-2.38.tar.gz

View File

@ -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);
}