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.
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 );

Reply via email to