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