Wednesday, July 24, 2019

Re: Prepare for gpsd-3.x

Index: Makefile
===================================================================
RCS file: /cvs/ports/geo/geoclue/Makefile,v
retrieving revision 1.29
diff -u -p -u -p -r1.29 Makefile
--- Makefile 6 Jul 2018 06:04:42 -0000 1.29
+++ Makefile 14 Jun 2019 07:11:23 -0000
@@ -3,7 +3,7 @@
COMMENT= modular geoinformation service on top of D-Bus

DISTNAME= geoclue-0.12.99
-REVISION= 7
+REVISION= 8
SHARED_LIBS += geoclue 1.1 # .0.0
CATEGORIES= geo devel

Index: patches/patch-providers_gpsd_geoclue-gpsd_c
===================================================================
RCS file: patches/patch-providers_gpsd_geoclue-gpsd_c
diff -N patches/patch-providers_gpsd_geoclue-gpsd_c
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ patches/patch-providers_gpsd_geoclue-gpsd_c 14 Jun 2019 07:11:23 -0000
@@ -0,0 +1,72 @@
+$OpenBSD$
+
+Fix build with newer gpsd API.
+
+--- providers/gpsd/geoclue-gpsd.c.orig Tue Jul 31 20:47:05 2012
++++ providers/gpsd/geoclue-gpsd.c Sun Mar 27 12:35:47 2016
+@@ -40,7 +40,12 @@
+ #include <geoclue/gc-iface-position.h>
+ #include <geoclue/gc-iface-velocity.h>
+
++#if GPSD_API_MAJOR_VERSION >= 5
++/* gps_data conflicts with gps_data function */
++typedef struct gps_data_t gps_data_l;
++#else
+ typedef struct gps_data_t gps_data;
++#endif
+ typedef struct gps_fix_t gps_fix;
+
+ /* only listing used tags */
+@@ -59,7 +64,11 @@ typedef struct {
+ char *host;
+ char *port;
+
++#if GPSD_API_MAJOR_VERSION >= 5
++ gps_data_l *gpsdata;
++#else
+ gps_data *gpsdata;
++#endif
+
+ gps_fix *last_fix;
+
+@@ -397,10 +406,16 @@ geoclue_gpsd_stop_gpsd (GeoclueGpsd *self)
+ static gboolean
+ geoclue_gpsd_start_gpsd (GeoclueGpsd *self)
+ {
++#if GPSD_API_MAJOR_VERSION >= 5
++ int status = gps_open (self->host, self->port, self->gpsdata);
++ if (status == 0) {
++ gps_stream(self->gpsdata, WATCH_ENABLE | WATCH_NMEA, NULL);
++#else
+ self->gpsdata = gps_open (self->host, self->port);
+ if (self->gpsdata) {
+ gps_stream(self->gpsdata, WATCH_ENABLE | WATCH_NMEA | POLL_NONBLOCK, NULL);
+ gps_set_raw_hook (self->gpsdata, gpsd_raw_hook);
++#endif
+ return TRUE;
+ } else {
+ g_warning ("gps_open() failed, is gpsd running (host=%s,port=%s)?", self->host, self->port);
+@@ -413,10 +428,23 @@ gpsd_poll(gpointer data)
+ {
+ GeoclueGpsd *self = (GeoclueGpsd*)data;
+ if (self->gpsdata) {
++#if GPSD_API_MAJOR_VERSION >= 5
++ /* gps_poll and gps_set_raw_hook no longer present in this API version */
++ if (gps_waiting(self->gpsdata, 500)) {
++ if (gps_read(self->gpsdata) == -1) {
++ geoclue_gpsd_set_status (self, GEOCLUE_STATUS_ERROR);
++ geoclue_gpsd_stop_gpsd(self);
++ return FALSE;
++ } else {
++ /* Call existing raw_hook to process the data */
++ gpsd_raw_hook(self->gpsdata, NULL, 0);
++ }
++#else
+ if (gps_poll(self->gpsdata) < 0) {
+ geoclue_gpsd_set_status (self, GEOCLUE_STATUS_ERROR);
+ geoclue_gpsd_stop_gpsd(self);
+ return FALSE;
++#endif
+ }
+ }
+ return TRUE;
Index: Makefile
===================================================================
RCS file: /cvs/ports/misc/gpsd/Makefile,v
retrieving revision 1.72
diff -u -p -r1.72 Makefile
--- Makefile 12 Jul 2019 20:47:50 -0000 1.72
+++ Makefile 20 Jul 2019 05:41:00 -0000
@@ -1,82 +1,99 @@
-# $OpenBSD: Makefile,v 1.72 2019/07/12 20:47:50 sthen Exp $
+# $OpenBSD: Makefile,v 1.47 2012/04/01 19:38:57 sthen Exp $

COMMENT-main= service daemon that monitors one or more GPSes
COMMENT-x11= GUI test apps using gpsd
COMMENT-php= web-based gpsd monitor in php

-VERSION= 2.95
+VERSION= 3.19
DISTNAME= gpsd-${VERSION}
PKGNAME-main= gpsd-${VERSION}
PKGNAME-x11= gpsd-x11-${VERSION}
PKGNAME-php= gpsd-php-${VERSION}
-SHARED_LIBS= gps 19.0 \
- gpsd 0.0
-CATEGORIES= misc geo

-REVISION-main= 11
-REVISION-php= 12
-REVISION-x11= 6
+SHARED_LIBS += gps 20.0 # 25.0
+CATEGORIES= misc geo

-HOMEPAGE= http://www.catb.org/gpsd/
+HOMEPAGE = https://gpsd.gitlab.io/gpsd/index.html

# BSD
-PERMIT_PACKAGE= Yes
+PERMIT_PACKAGE= Yes

-MASTER_SITES= ${MASTER_SITE_SOURCEFORGE:=gpsd.berlios/} \
- ${MASTER_SITE_SAVANNAH:=gpsd/}
+MASTER_SITES = ${MASTER_SITE_SAVANNAH:=gpsd/}

-COMPILER = base-clang ports-gcc base-gcc
+WANTLIB-main += c dbus-1 m curses pthread usb-1.0 ${COMPILER_LIBCXX}
+WANTLIB-php =

-MODULES += lang/python lang/php
+MODULES += devel/scons lang/python lang/php x11/qt4
MODPHP_BUILDDEP= No
-CONFIGURE_STYLE= gnu
-CONFIGURE_ARGS+= --disable-ntpshm \
- --enable-gpsd-user=_gpsd \
- --enable-tnt \
- --enable-oceanserver
-
-PSEUDO_FLAVORS = no_x11
-FLAVOR?=
-
-MULTI_PACKAGES= -main -php -x11
-
-BUILD_DEPENDS= textproc/docbook-xsl
-
+MODSCONS_FLAGS += gpsd_user=_gpsd \
+ qt=no \
+ mandir=man \
+ pps=no \
+ prefix=${PREFIX} \
+ shared=yes \
+ target_python=${MODPY_BIN} \
+ python_libdir=${DESTDIR}/${MODPY_SITEPKG} \
+ qt_versioned=4
+
+MULTI_PACKAGES = -main -php -x11
+
+BUILD_DEPENDS= devel/py-gobject3 \
+ textproc/libxslt \
+ textproc/docbook \
+ textproc/docbook-xsl
+TEST_DEPENDS= misc/gpsd,-main \
+ x11/dbus
+
+LIB_DEPENDS-main = devel/libusb1 \
+ devel/py-serial \
+ x11/dbus
RUN_DEPENDS-main= ${MODPY_RUN_DEPENDS}
-LIB_DEPENDS-main= ${LIB_DEPENDS} \
- devel/libusb1

-RUN_DEPENDS-x11 = ${BASE_PKGPATH} \
+RUN_DEPENDS-x11 = ${BASE_PKGPATH} \
+ devel/py-gobject3 \
+ devel/desktop-file-utils \
x11/py-gtk2

-.include <bsd.port.arch.mk>
-
-.if ${BUILD_PACKAGES:M-x11}
-CONFIGURE_ENV+= CPPFLAGS="-I${X11BASE}/include -I${LOCALBASE}/include" \
- LDFLAGS="-L${X11BASE}/lib -L${LOCALBASE}/lib -lm -pthread -lutil"
-.else
-CONFIGURE_ARGS+= --without-x
-CONFIGURE_ENV += LDFLAGS="-lm -pthread -lutil"
-.endif
-
-WANTLIB-main= m curses c pthread ${COMPILER_LIBCXX} usb-1.0 util ${MODPY_WANTLIB}
-
# the php display script doesn't depend on having any of gpsd around,
# it just sits there and looks pretty.
PKG_ARCH-php= *
RUN_DEPENDS-php= lang/php/${MODPHP_VERSION},-gd
-PREFIX-php= ${VARBASE}/www/
+PREFIX-php= /var/www/
+
+SUBST_VARS += VERSION

-PYTHON_SCRIPTS= gpsprof gps/gps.py gpsfake gpscat xgps gpsspeed
+MODPY_ADJ_FILES = gegps gpsprof gps/gps.py gpsfake gpscat xgps xgpsspeed \
+ leapsecond.py test_maidenhead.py test_misc.py ubxtool zerk

pre-configure:
-.for file in ${PYTHON_SCRIPTS}
- perl -pi -e 's,/usr/bin/env python,${MODPY_BIN},g' ${WRKSRC}/${file}
-.endfor
+ @perl -pi -e "s,/usr/share/gpsd/,," ${WRKSRC}/packaging/X11/*.desktop
+ @perl -pi -e "s,http://docbook.sourceforge.net/release/xsl/current/,\
+ ${LOCALBASE}/share/xsl/docbook/," \
+ ${WRKSRC}/SConstruct
+ @perl -pi -e "s,python2,${MODPY_BIN}," ${WRKSRC}/regress-driver
+ ${SUBST_CMD} ${WRKSRC}/SConstruct

post-install:
${INSTALL_DATA_DIR} ${WRKINST}/var/www/gpsd
${INSTALL_SCRIPT} ${WRKSRC}/gpsd.php ${WRKINST}/var/www/gpsd
${INSTALL_DATA} ${WRKSRC}/gpsd_config.h ${PREFIX}/include
+ ${INSTALL_DATA_DIR} ${PREFIX}/share/applications/
+ ${INSTALL_DATA_DIR} ${PREFIX}/share/pixmaps/
+ ${INSTALL_DATA} ${WRKSRC}/packaging/X11/*.desktop \
+ ${PREFIX}/share/applications/
+ ${INSTALL_DATA} ${WRKSRC}/packaging/X11/gpsd-logo.png \
+ ${PREFIX}/share/pixmaps/
+
+ @find ${DESTDIR}/${MODPY_SITEPKG}/gps -name "*.py" -exec \
+ ${MODPY_BIN} ${MODPY_LIBDIR}/py_compile.py {} \;
+ @find ${DESTDIR}/${MODPY_SITEPKG}/gps -name "*.py" -exec \
+ ${MODPY_BIN} -O ${MODPY_LIBDIR}/py_compile.py {} \;
+
+# Needs running messagebus daemon
+TEST_IS_INTERACTIVE= Yes
+
+do-test:
+ @${SETENV} ${MAKE_ENV} ${MODSCONS_BIN} -C ${WRKSRC} \
+ ${MODSCONS_ENV} ${MODSCONS_FLAGS} check

.include <bsd.port.mk>
Index: distinfo
===================================================================
RCS file: /cvs/ports/misc/gpsd/distinfo,v
retrieving revision 1.9
diff -u -p -r1.9 distinfo
--- distinfo 9 Jul 2014 09:24:47 -0000 1.9
+++ distinfo 20 Jul 2019 05:41:00 -0000
@@ -1,2 +1,2 @@
-SHA256 (gpsd-2.95.tar.gz) = gyNDpTkhqDce+lQLpXyR2t7dpEXlccG+uXwGU570UK4=
-SIZE (gpsd-2.95.tar.gz) = 1385681
+SHA256 (gpsd-3.19.tar.gz) = J90k1Fsqxpuqt5M9or9q5fsL6QEw9n51PBEKNHcVXzk=
+SIZE (gpsd-3.19.tar.gz) = 10581777
Index: patches/patch-SConstruct
===================================================================
RCS file: patches/patch-SConstruct
diff -N patches/patch-SConstruct
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ patches/patch-SConstruct 20 Jul 2019 05:41:00 -0000
@@ -0,0 +1,45 @@
+$OpenBSD$
+Index: SConstruct
+--- SConstruct.orig
++++ SConstruct
+@@ -72,8 +72,7 @@ gpsd_version = "3.19"
+ libgps_version_current = 25
+ libgps_version_revision = 0
+ libgps_version_age = 0
+-libgps_version = "%d.%d.%d" % (libgps_version_current, libgps_version_age,
+- libgps_version_revision)
++libgps_version = "%s" % ('${LIBgps_VERSION}')
+ #
+ # Release identification ends here
+
+@@ -546,7 +545,7 @@ def CheckPKG(context, name):
+
+
+ # Stylesheet URLs for making HTML and man pages from DocBook XML.
+-docbook_url_stem = 'http://docbook.sourceforge.net/release/xsl/current/'
++docbook_url_stem = '${LOCALBASE}/share/xsl/docbook/'
+ docbook_man_uri = docbook_url_stem + 'manpages/docbook.xsl'
+ docbook_html_uri = docbook_url_stem + 'html/docbook.xsl'
+
+@@ -1090,6 +1089,10 @@ else:
+ # if not, force qt to off
+ if config.env["qt"]:
+ qt_net_name = 'Qt%sNetwork' % config.env["qt_versioned"]
++ if env["qt_versioned"] == "5":
++ qt_net_name = 'Qt5Network'
++ elif env["qt_versioned"] == "4":
++ qt_net_name = 'QtNetwork'
+ qt_network = config.CheckPKG(qt_net_name)
+ if not qt_network:
+ config.env["qt"] = False
+@@ -1685,9 +1688,7 @@ else:
+ python_objects[ext].append(
+ python_env.NoCache(
+ python_env.SharedObject(
+- src.split(".")[0] + '-py_' +
+- '_'.join(['%s' % (x) for x in sys.version_info]) +
+- python_config['SO'], src
++ src.split(".")[0] + python_config['SO'], src
+ )
+ )
+ )
Index: patches/patch-configure
===================================================================
RCS file: patches/patch-configure
diff -N patches/patch-configure
--- patches/patch-configure 23 Aug 2012 17:51:22 -0000 1.3
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,28 +0,0 @@
-$OpenBSD: patch-configure,v 1.3 2012/08/23 17:51:22 ajacoutot Exp $
---- configure.orig Wed Jul 14 00:48:24 2010
-+++ configure Wed Nov 3 12:20:34 2010
-@@ -4875,6 +4875,16 @@ $as_echo "$am_cv_python_pyexecdir" >&6; }
- fi
-
-
-+# Check whether --enable-python was given.
-+if test "${enable_python+set}" = set; then
-+ enableval=$enable_python; try_python="$enableval"
-+else
-+ try_python="yes"
-+fi
-+
-+if test x"$try_python" = xyes ; then
-+
-+
- ac_python=yes
- if test "x$PYTHON" = "x"; then
- # Extract the first word of "python", so it can be a program name with args.
-@@ -4953,6 +4963,7 @@ $as_echo "$PYTHON, $PYTHON_VERSION, $PYTHON_PREFIX" >&
- CPPFLAGS="$CPPFLAGS $PYTHON_CFLAGS"
- CXXFLAGS="$CXXFLAGS $PYTHON_CFLAGS"
-
-+fi
-
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
Index: pkg/PLIST-main
===================================================================
RCS file: /cvs/ports/misc/gpsd/pkg/PLIST-main,v
retrieving revision 1.9
diff -u -p -r1.9 PLIST-main
--- pkg/PLIST-main 20 Mar 2015 22:47:41 -0000 1.9
+++ pkg/PLIST-main 20 Jul 2019 05:41:00 -0000
@@ -1,8 +1,10 @@
-@comment $OpenBSD: PLIST-main,v 1.9 2015/03/20 22:47:41 naddy Exp $
+@comment $OpenBSD: PLIST-main,v 1.8 2012/01/26 08:03:57 ajacoutot Exp $
@conflict gpsd-python-<=2.38p3
@pkgpath misc/gpsd,-python
@newuser _gpsd:551:dialer:daemon:GPS server:/nonexistent:/sbin/nologin
@bin bin/cgps
+bin/gegps
+@bin bin/gps2udp
bin/gpscat
@bin bin/gpsctl
@bin bin/gpsdecode
@@ -10,39 +12,42 @@ bin/gpsfake
@bin bin/gpsmon
@bin bin/gpspipe
bin/gpsprof
+@bin bin/gpsrinex
@bin bin/gpxlogger
@bin bin/lcdgps
+bin/ubxtool
+bin/zerk
include/gps.h
-include/gpsd.h
include/gpsd_config.h
include/libgpsmm.h
-lib/libgps.a
-lib/libgps.la
@lib lib/libgps.so.${LIBgps_VERSION}
-lib/libgpsd.a
-lib/libgpsd.la
-@lib lib/libgpsd.so.${LIBgpsd_VERSION}
lib/pkgconfig/libgps.pc
-lib/pkgconfig/libgpsd.pc
lib/python${MODPY_VERSION}/site-packages/gps/
-lib/python${MODPY_VERSION}/site-packages/gps-2.95-py${MODPY_VERSION}.egg-info
+lib/python${MODPY_VERSION}/site-packages/gps-${VERSION}.egg-info
lib/python${MODPY_VERSION}/site-packages/gps/__init__.py
lib/python${MODPY_VERSION}/site-packages/gps/__init__.pyc
+lib/python${MODPY_VERSION}/site-packages/gps/__init__.${MODPY_PYOEXTENSION}
lib/python${MODPY_VERSION}/site-packages/gps/client.py
lib/python${MODPY_VERSION}/site-packages/gps/client.pyc
+lib/python${MODPY_VERSION}/site-packages/gps/client.${MODPY_PYOEXTENSION}
lib/python${MODPY_VERSION}/site-packages/gps/clienthelpers.so
lib/python${MODPY_VERSION}/site-packages/gps/fake.py
lib/python${MODPY_VERSION}/site-packages/gps/fake.pyc
+lib/python${MODPY_VERSION}/site-packages/gps/fake.${MODPY_PYOEXTENSION}
lib/python${MODPY_VERSION}/site-packages/gps/gps.py
lib/python${MODPY_VERSION}/site-packages/gps/gps.pyc
+lib/python${MODPY_VERSION}/site-packages/gps/gps.${MODPY_PYOEXTENSION}
lib/python${MODPY_VERSION}/site-packages/gps/misc.py
lib/python${MODPY_VERSION}/site-packages/gps/misc.pyc
+lib/python${MODPY_VERSION}/site-packages/gps/misc.${MODPY_PYOEXTENSION}
lib/python${MODPY_VERSION}/site-packages/gps/packet.so
-lib/python${MODPY_VERSION}/site-packages/gpscap.py
-lib/python${MODPY_VERSION}/site-packages/gpscap.pyc
-lib/python${MODPY_VERSION}/site-packages/gpscap.pyo
+lib/python${MODPY_VERSION}/site-packages/gps/watch_options.py
+lib/python${MODPY_VERSION}/site-packages/gps/watch_options.pyc
+lib/python${MODPY_VERSION}/site-packages/gps/watch_options.${MODPY_PYOEXTENSION}
@man man/man1/cgps.1
+@man man/man1/gegps.1
@man man/man1/gps.1
+@man man/man1/gps2udp.1
@man man/man1/gpscat.1
@man man/man1/gpsctl.1
@man man/man1/gpsdecode.1
@@ -50,11 +55,18 @@ lib/python${MODPY_VERSION}/site-packages
@man man/man1/gpsmon.1
@man man/man1/gpspipe.1
@man man/man1/gpsprof.1
+@man man/man1/gpsrinex.1
+@man man/man1/gpxlogger.1
@man man/man1/lcdgps.1
+@man man/man1/ubxtool.1
+@man man/man1/zerk.1
+@man man/man3/libQgpsmm.3
@man man/man3/libgps.3
-@man man/man3/libgpsd.3
@man man/man3/libgpsmm.3
-@man man/man5/rtcm-104.5
+@man man/man5/gpsd_json.5
@man man/man5/srec.5
@man man/man8/gpsd.8
+@man man/man8/gpsdctl.8
+@man man/man8/gpsinit.8
@bin sbin/gpsd
+@bin sbin/gpsdctl
Index: pkg/PLIST-php
===================================================================
RCS file: /cvs/ports/misc/gpsd/pkg/PLIST-php,v
retrieving revision 1.1
diff -u -p -r1.1 PLIST-php
--- pkg/PLIST-php 8 Feb 2007 23:03:38 -0000 1.1
+++ pkg/PLIST-php 20 Jul 2019 05:41:00 -0000
@@ -1,3 +1,4 @@
@comment $OpenBSD: PLIST-php,v 1.1 2007/02/08 23:03:38 ckuethe Exp $
+@cwd /var/www
gpsd/
gpsd/gpsd.php
Index: pkg/PLIST-x11
===================================================================
RCS file: /cvs/ports/misc/gpsd/pkg/PLIST-x11,v
retrieving revision 1.1
diff -u -p -r1.1 PLIST-x11
--- pkg/PLIST-x11 25 Nov 2010 08:55:24 -0000 1.1
+++ pkg/PLIST-x11 20 Jul 2019 05:41:00 -0000
@@ -5,3 +5,8 @@ bin/xgps
bin/xgpsspeed
@man man/man1/xgps.1
@man man/man1/xgpsspeed.1
+share/applications/xgps.desktop
+share/applications/xgpsspeed.desktop
+share/pixmaps/
+share/pixmaps/gpsd-logo.png
+@tag update-desktop-database
Index: patches/patch-src_CDeviceGPSD_cpp
===================================================================
RCS file: patches/patch-src_CDeviceGPSD_cpp
diff -N patches/patch-src_CDeviceGPSD_cpp
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ patches/patch-src_CDeviceGPSD_cpp 16 Jun 2019 07:14:21 -0000
@@ -0,0 +1,18 @@
+$OpenBSD$
+
+Fix build with newer gpsd API
+
+Index: src/CDeviceGPSD.cpp
+--- src/CDeviceGPSD.cpp.orig
++++ src/CDeviceGPSD.cpp
+@@ -212,7 +212,9 @@ void CGPSDThread::run()
+ } // if
+ else if( FD_ISSET( gpsdata->gps_fd, &fds ) )
+ {
+-#if GPSD_API_MAJOR_VERSION >= 5
++#if GPSD_API_MAJOR_VERSION >= 7
++ gps_read( gpsdata, NULL, 0 );
++#elif GPSD_API_MAJOR_VERSION >= 5
+ gps_read( gpsdata );
+ #else
+ gps_poll( gpsdata );
On Thu, June 20, 2019 10:08, Kirill Bychkov wrote:
> Hi!
> Long time ago I've started update of gpsd from 2.x to 3.x.
> Upstream moved from auto crap to scons so it gave me some
> headache.
> Before switching to new gpsd we need to prepare some ports
> which are linking against libgps because API has changed.
> Here are the diffs for foxtrotgps, geoclue and qlandkaretegt.

Hi!
foxtrotgps and viking are both updatetd to latest upstream releases
which brings compatibility with gpsd-3.x.
geoclue and qlandkartegt should be the last ports incompatible with
new gpsd API.
Pathces for fixing them are attached.
OKs, objections?

P.S. gpsd patch is also attached for review.

No comments:

Post a Comment