[OpenWrt-Devel] [PATCH] gpsd: initial add to packages

John Crispin blogic at openwrt.org
Mon Oct 19 05:29:23 EDT 2015


Hi,

please send a PR against the packages feed hosted on github

	John

On 16/10/2015 23:26, Pushpal Sidhu wrote:
> This package is currently in oldpackages. Add here to keep support for gpsd.
> 
> From oldpackages, this was bumped from 3.10 -> 3.15 and includes an upstream
> patch to allow building with musl.
> 
> Signed-off-by: Pushpal Sidhu <psidhu at gateworks.com>
> ---
>  package/utils/gpsd/Makefile                        | 144 +++++++++++++++++++++
>  package/utils/gpsd/files/gpsd.config               |   5 +
>  package/utils/gpsd/files/gpsd.hotplug              |  16 +++
>  package/utils/gpsd/files/gpsd.init                 |  32 +++++
>  .../utils/gpsd/patches/0001-Remove-a-BSD-ism.patch |  42 ++++++
>  5 files changed, 239 insertions(+)
>  create mode 100644 package/utils/gpsd/Makefile
>  create mode 100644 package/utils/gpsd/files/gpsd.config
>  create mode 100644 package/utils/gpsd/files/gpsd.hotplug
>  create mode 100644 package/utils/gpsd/files/gpsd.init
>  create mode 100644 package/utils/gpsd/patches/0001-Remove-a-BSD-ism.patch
> 
> diff --git a/package/utils/gpsd/Makefile b/package/utils/gpsd/Makefile
> new file mode 100644
> index 0000000..df67cf8
> --- /dev/null
> +++ b/package/utils/gpsd/Makefile
> @@ -0,0 +1,144 @@
> +#
> +# Copyright (C) 2006-2015 OpenWrt.org
> +#
> +# This is free software, licensed under the GNU General Public License v2.
> +# See /LICENSE for more information.
> +#
> +
> +include $(TOPDIR)/rules.mk
> +
> +PKG_NAME:=gpsd
> +PKG_VERSION:=3.15
> +PKG_RELEASE:=1
> +
> +PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
> +PKG_SOURCE_URL:=http://download-mirror.savannah.gnu.org/releases/gpsd/
> +PKG_MD5SUM:=afd79b87337fadf38ee2a7c4314dac79
> +
> +PKG_MAINTAINER:=Pushpal Sidhu <psidhu at gateworks.com>
> +PKG_LICENSE:=BSD-3-Clause
> +PKG_LICENSE_FILES:=COPYING
> +
> +PKG_BUILD_DEPENDS:=libncurses libusb-1.0
> +
> +include $(INCLUDE_DIR)/package.mk
> +include $(INCLUDE_DIR)/scons.mk
> +
> +define Package/gpsd/Default
> +  DEPENDS:=+librt +libncurses
> +  URL:=http://catb.org/gpsd/
> +endef
> +
> +define Package/gpsd/Default/description
> +  gpsd is a userland daemon acting as a translator between GPS and AIS receivers
> +  and their clients. gpsd listens on port 2947 for clients requesting
> +  position/time/velocity information.  The receivers are expected to generate
> +  position information in a well-known format -- as NMEA-0183 sentences, SiRF
> +  binary, Rockwell binary, Garmin binary format, or other vendor binary
> +  protocols.  gpsd takes this information from the GPS and translates it into
> +  something uniform and easier to understand for clients.
> +endef
> +
> +define Package/gpsd
> +  $(call Package/gpsd/Default)
> +  SECTION:=net
> +  CATEGORY:=Network
> +  DEPENDS+= +libgps +libusb-1.0
> +  TITLE:=An interface daemon for GPS receivers
> +endef
> +
> +define Package/gpsd/conffiles
> +/etc/config/gpsd
> +endef
> +
> +define Package/gpsd/description
> +  $(call Package/gpsd/Default/description)
> +  This package contains the GPS daemon.
> +endef
> +
> +define Package/gpsd-clients
> +  $(call Package/gpsd/Default)
> +  SECTION:=net
> +  CATEGORY:=Network
> +  DEPENDS+= +libgps +libncurses +libusb-1.0
> +  TITLE:=GPS tools and clients
> +endef
> +
> +define Package/gpsd-clients/description
> +  $(call Package/gpsd/Default/description)
> +  This package contains auxiliary tools and example clients for monitoring and
> +  testing the GPS daemon.
> +endef
> +
> +define Package/libgps
> +  $(call Package/gpsd/Default)
> +  SECTION:=libs
> +  CATEGORY:=Libraries
> +  DEPENDS+= +libcap
> +  TITLE:=C service library for communicating with the GPS daemon
> +endef
> +
> +define Package/libgps/description
> +  $(call Package/gpsd/Default/description)
> +  This package contains the libgps library.
> +endef
> +
> +SCONS_OPTIONS += \
> +	dbus_export=no \
> +	tsip=no \
> +	fv18=no \
> +	tripmate=no \
> +	earthmate=no \
> +	itrax=no \
> +	navcom=no \
> +	ubx=no \
> +	evermore=no \
> +	ntrip=no \
> +	libgpsmm=no \
> +	libQgpsmm=no \
> +	bluez=no \
> +	strip=no \
> +	python=no \
> +	implicit_link=no \
> +	chrpath=no
> +
> +define Build/InstallDev
> +	$(INSTALL_DIR) $(1)/usr/include
> +	$(CP) $(PKG_INSTALL_DIR)/usr/include/gps.h $(1)/usr/include/
> +	$(INSTALL_DIR) $(1)/usr/lib
> +	$(CP) $(PKG_INSTALL_DIR)/usr/lib/libgps*.so* $(1)/usr/lib/
> +	$(INSTALL_DIR) $(1)/usr/lib/pkgconfig
> +	$(CP) \
> +		$(PKG_INSTALL_DIR)/usr/lib/pkgconfig/libgps*.pc \
> +		$(1)/usr/lib/pkgconfig/
> +endef
> +
> +define Package/gpsd/install
> +	$(INSTALL_DIR) $(1)/etc/config
> +	$(INSTALL_CONF) ./files/gpsd.config $(1)/etc/config/gpsd
> +	$(INSTALL_DIR) $(1)/etc/init.d
> +	$(INSTALL_BIN) ./files/gpsd.init $(1)/etc/init.d/gpsd
> +	$(INSTALL_DIR) $(1)/etc/hotplug.d/usb
> +	$(INSTALL_DATA) ./files/gpsd.hotplug $(1)/etc/hotplug.d/usb/20-gpsd
> +	$(INSTALL_DIR) $(1)/usr/sbin
> +	$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/gpsd $(1)/usr/sbin/
> +endef
> +
> +define Package/gpsd-clients/install
> +	$(INSTALL_DIR) $(1)/usr/bin
> +	$(INSTALL_BIN) \
> +		$(PKG_INSTALL_DIR)/usr/bin/cgps \
> +		$(PKG_INSTALL_DIR)/usr/bin/gps{ctl,decode,mon,pipe} \
> +		$(PKG_INSTALL_DIR)/usr/bin/gpxlogger \
> +		$(PKG_INSTALL_DIR)/usr/bin/lcdgps \
> +		$(1)/usr/bin/
> +endef
> +
> +define Package/libgps/install
> +	$(INSTALL_DIR) $(1)/usr/lib
> +	$(CP) $(PKG_INSTALL_DIR)/usr/lib/libgps.so.* $(1)/usr/lib/
> +endef
> +
> +$(eval $(call BuildPackage,gpsd))
> +$(eval $(call BuildPackage,gpsd-clients))
> +$(eval $(call BuildPackage,libgps))
> diff --git a/package/utils/gpsd/files/gpsd.config b/package/utils/gpsd/files/gpsd.config
> new file mode 100644
> index 0000000..ef19202
> --- /dev/null
> +++ b/package/utils/gpsd/files/gpsd.config
> @@ -0,0 +1,5 @@
> +config gpsd core
> +    option device    "/dev/ttyUSB0"
> +    option port    "2947"
> +    option listen_globally    "false"
> +    option enabled    "true"
> diff --git a/package/utils/gpsd/files/gpsd.hotplug b/package/utils/gpsd/files/gpsd.hotplug
> new file mode 100644
> index 0000000..fc15dda
> --- /dev/null
> +++ b/package/utils/gpsd/files/gpsd.hotplug
> @@ -0,0 +1,16 @@
> +case "$ACTION" in
> +    add)
> +        # start process
> +        # only pl2303 devices are handled
> +        if [ "$PRODUCT" = "67b/2303/300" ] && [ "$TYPE" = "0/0/0" ] && [ "$INTERFACE" = "255/0/0" ]; then
> +            sleep 3 && /etc/init.d/gpsd start
> +        fi
> +        ;;
> +    remove)
> +        # stop process
> +        # only pl2303 devices are handled
> +        if [ "$PRODUCT" = "67b/2303/300" ] && [ "$TYPE" = "0/0/0" ] && [ "$INTERFACE" = "255/0/0" ]; then
> +            /etc/init.d/gpsd stop
> +        fi
> +        ;;
> +esac
> diff --git a/package/utils/gpsd/files/gpsd.init b/package/utils/gpsd/files/gpsd.init
> new file mode 100644
> index 0000000..96cee78
> --- /dev/null
> +++ b/package/utils/gpsd/files/gpsd.init
> @@ -0,0 +1,32 @@
> +#!/bin/sh /etc/rc.common
> +# Copyright (C) 2009-2011 OpenWrt.org
> +START=50
> +
> +NAME=gpsd
> +PIDF=/var/run/$NAME.pid
> +PROG=/usr/sbin/$NAME
> +
> +start() {
> +    config_load gpsd
> +    config_get device core device
> +    config_get port core port
> +    config_get_bool listen_globally core listen_globally
> +    config_get_bool enabled core enabled
> +    [ "$enabled" != "1" ] && exit
> +    logger -t "$NAME" "Starting..."
> +    [ ! -c "$device" ] && {
> +        logger -t "$NAME" "Unable to find device $device. Exiting."
> +        exit 1
> +    }
> +    [ "$listen_globally" != "0" ] && append args "-G"
> +    $PROG -n -P $PIDF -S $port $args $device
> +}
> +
> +stop() {
> +    logger -t "$NAME" "Stopping..."
> +    [ -f "$PIDF" ] && {
> +        read PID < "$PIDF"
> +        kill -9 $PID
> +        rm $PIDF
> +    }
> +}
> diff --git a/package/utils/gpsd/patches/0001-Remove-a-BSD-ism.patch b/package/utils/gpsd/patches/0001-Remove-a-BSD-ism.patch
> new file mode 100644
> index 0000000..55004ab
> --- /dev/null
> +++ b/package/utils/gpsd/patches/0001-Remove-a-BSD-ism.patch
> @@ -0,0 +1,42 @@
> +From 95c99f69e026e8c57aecba545e51c97f3b284e75 Mon Sep 17 00:00:00 2001
> +From: "Gary E. Miller" <gem at rellim.com>
> +Date: Tue, 23 Jun 2015 14:36:26 -0700
> +Subject: [PATCH] Remove a BSD-ism.
> +
> +CTRL('L') is a BSD-ism.  CTRL() is defined in sys/ttydefaults.h
> +which does not always exist.  Instead of adding scons tests for
> +needing CTRL() and its include files just replace with a simple
> +constant.
> +
> +Needed for musl and found by Baruch Siach <baruch at tkos.co.il>
> +---
> + gpsmon.c | 6 +++++-
> + 1 file changed, 5 insertions(+), 1 deletion(-)
> +
> +diff --git a/gpsmon.c b/gpsmon.c
> +index c3001c8..58c8300 100644
> +--- a/gpsmon.c
> ++++ b/gpsmon.c
> +@@ -583,6 +583,9 @@ static void select_packet_monitor(struct gps_device_t *device)
> + 	(void)wnoutrefresh(devicewin);
> + }
> + 
> ++/* Control-L character */
> ++#define CTRL_L 0x0C
> ++
> + static char *curses_get_command(void)
> + /* char-by-char nonblocking input, return accumulated command line on \n */
> + {
> +@@ -591,7 +594,8 @@ static char *curses_get_command(void)
> +     int c;
> + 
> +     c = wgetch(cmdwin);
> +-    if (c == CTRL('L')) {
> ++    if (CTRL_L == c) {
> ++        /* ^L is to repaint the screen */
> + 	(void)clearok(stdscr, true);
> + 	if (active != NULL && (*active)->initialize != NULL)
> + 	    (void)(*active)->initialize();
> +-- 
> +2.6.0
> +
> 
_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel



More information about the openwrt-devel mailing list