diff --git a/gpsd-3.24.tar.gz b/gpsd-3.24.tar.gz new file mode 100644 index 0000000..1edd1c0 Binary files /dev/null and b/gpsd-3.24.tar.gz differ diff --git a/gpsd-apistatus.patch b/gpsd-apistatus.patch new file mode 100644 index 0000000..5380585 --- /dev/null +++ b/gpsd-apistatus.patch @@ -0,0 +1,16 @@ +diff --git a/include/gps.h b/include/gps.h +index 55b9aa621..e5935304d 100644 +--- a/include/gps.h ++++ b/include/gps.h +@@ -173,6 +173,11 @@ struct gps_fix_t { + * PPS is the encrypted military P(Y)-code */ + #define STATUS_PPS_FIX 9 + ++// Old status names for compatibility ++#define STATUS_NO_FIX STATUS_UNK ++#define STATUS_FIX STATUS_GPS ++#define STATUS_DGPS_FIX STATUS_DGPS ++ + double ept; // Expected time uncertainty, seconds + double latitude; // Latitude in degrees (valid if mode >= 2) + double epy; // Latitude position uncertainty, meters diff --git a/gpsd-soname.patch b/gpsd-soname.patch new file mode 100644 index 0000000..d49ea2d --- /dev/null +++ b/gpsd-soname.patch @@ -0,0 +1,12 @@ +diff -up gpsd-3.24/SConscript.soname gpsd-3.24/SConscript +--- gpsd-3.24/SConscript.soname 2022-05-04 15:50:30.809931444 +0200 ++++ gpsd-3.24/SConscript 2022-05-04 16:15:14.022203240 +0200 +@@ -221,7 +221,7 @@ api_version_major = 3 + api_version_minor = 15 + + # client library version +-libgps_version_current = 29 ++libgps_version_current = 291 + libgps_version_revision = 1 + libgps_version_age = 0 + libgps_version = "%d.%d.%d" % (libgps_version_current, libgps_version_age, diff --git a/gpsd.spec b/gpsd.spec new file mode 100644 index 0000000..c03bd44 --- /dev/null +++ b/gpsd.spec @@ -0,0 +1,302 @@ +%global _hardened_build 1 + +%global with_qt 1 + +Name: gpsd +Version: 3.24 +Release: 1 +Epoch: 1 +Summary: Service daemon for mediating access to a GPS + +License: BSD +URL: http://catb.org/gpsd/ +Source0: https://download-mirror.savannah.gnu.org/releases/gpsd/%{name}-%{version}.tar.gz +Source11: gpsd.sysconfig +# Compatibility patch +Patch1: gpsd-apistatus.patch +Patch2: gpsd-soname.patch + +BuildRequires: dbus-devel +BuildRequires: dbus-glib-devel +BuildRequires: ncurses-devel +BuildRequires: xmlto +BuildRequires: python3-devel +BuildRequires: python-setuptools +BuildRequires: gtk3-devel +BuildRequires: python-scons +BuildRequires: python3-gobject +BuildRequires: python-cairo +BuildRequires: python3-pyserial +BuildRequires: desktop-file-utils +BuildRequires: bluez-libs-devel +BuildRequires: pps-tools-devel +BuildRequires: /usr/bin/c++ +BuildRequires: systemd +%if %{with_qt} +BuildRequires: qt-devel +%endif +BuildRequires: libusb1-devel + +Requires: %{name}-libs%{?_isa} = %{epoch}:%{version}-%{release} +Requires: udev +%{?systemd_requires} + +%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. With gpsd, multiple +GPS client applications (such as navigational and war-driving software) +can share access to a GPS without contention or loss of data. Also, +gpsd responds to queries with a format that is substantially easier to +parse than NMEA 0183. + +%package libs +Summary: Client libraries in C for talking to a running gpsd or GPS + +%description libs +This package contains the gpsd libraries that manage access +to a GPS for applications. + +%package -n python-%{name} +Summary: Python libraries and modules for use with gpsd +Requires: %{name}-libs%{?_isa} = %{epoch}:%{version}-%{release} +%{?python_provide:%python_provide python3-%{name}} + +%description -n python-%{name} +This package contains the python3 modules that manage access to a GPS for +applications. + +%package devel +Summary: Development files for the gpsd library +Requires: %{name}-libs%{?_isa} = %{epoch}:%{version}-%{release} + +%description devel +This package provides C header files for the gpsd shared libraries that +manage access to a GPS for applications + +%if %{with_qt} +%package qt +Summary: C++/Qt5 bindings for the gpsd library +Requires: %{name}-libs%{?_isa} = %{epoch}:%{version}-%{release} + +%description qt +This package provide C++ and Qt bindings for use with the libgps library from +gpsd. + +%package qt-devel +Summary: Development files for the C++/Qt5 bindings for the gpsd library +Requires: %{name}-libs%{?_isa} = %{epoch}:%{version}-%{release} +Requires: %{name}-qt%{?_isa} = %{epoch}:%{version}-%{release} + +%description qt-devel +This package provides the development files for the C++ and Qt bindings for use +with the libgps library from gpsd. +%endif + +%package clients +Summary: Clients for gpsd +Requires: python-%{name} = %{epoch}:%{version}-%{release} +Requires: python-pyserial +Requires: %{name}-libs%{?_isa} = %{epoch}:%{version}-%{release} + +%description clients +This package contains various clients using gpsd. + +%prep +%setup -q +%patch1 -p1 -b .apistatus +%patch2 -p1 -b .soname + +sed -i 's|systemctl daemon-reload|true|' SConscript + +%build +%ifarch riscv64 +export CCFLAGS="%{optflags} -Wno-format-security" +%else +export CCFLAGS="%{optflags}" +%endif +export LINKFLAGS="%{__global_ldflags}" + +# breaks with %{_smp_mflags} +scons \ + dbus_export=yes \ + systemd=yes \ + %if %{with_qt} + libQgpsmm=yes \ + %else + libQgpsmm=no \ + %endif + debug=yes \ + leapfetch=no \ + prefix="" \ + sysconfdif=%{_sysconfdir} \ + bindir=%{_bindir} \ + includedir=%{_includedir} \ + libdir=%{_libdir} \ + sbindir=%{_sbindir} \ + mandir=%{_mandir} \ + docdir=%{_docdir}/gpsd \ + pkgconfigdir=%{_libdir}/pkgconfig \ + icondir=%{_datadir}/gpsd \ + udevdir=$(dirname %{_udevrulesdir}) \ + unitdir=%{_unitdir} \ + target_python=python3 \ + python_shebang=%{python3} \ + python_libdir=%{python3_sitearch} \ + build + +%install +%ifarch riscv64 +export CCFLAGS="%{optflags} -Wno-format-security" +%else +export CCFLAGS="%{optflags}" +%endif +export LINKFLAGS="%{__global_ldflags}" + +DESTDIR=%{buildroot} scons install systemd_install udev-install + +# use the old name for udev rules +mv %{buildroot}%{_udevrulesdir}/{25,99}-gpsd.rules + +%{__install} -d -m 0755 %{buildroot}%{_sysconfdir}/sysconfig +%{__install} -p -m 0644 %{SOURCE11} \ + %{buildroot}%{_sysconfdir}/sysconfig/gpsd + +# Install the .desktop files +desktop-file-install \ + --dir %{buildroot}%{_datadir}/applications \ + packaging/X11/xgps.desktop +desktop-file-install \ + --dir %{buildroot}%{_datadir}/applications \ + packaging/X11/xgpsspeed.desktop + +# Missed in scons install +%{__install} -p -m 0755 gpsinit %{buildroot}%{_sbindir} + +# If qt build was disabled, clean up the files that may have been installed +# anyway +%if !%{with_qt} +%{__rm} -f %{buildroot}%{_libdir}/libQgpsmm* \ + %{buildroot}%{_libdir}/pkgconfig/Qgpsmm* \ + %{buildroot}%{_mandir}/man3/libQgpsmm.3* +%endif + +rm -rf %{buildroot}%{_docdir}/gpsd + +%post +%systemd_post gpsd.service gpsd.socket + +%preun +%systemd_preun gpsd.service gpsd.socket + +%postun +# Don't restart the service +%systemd_postun gpsd.service gpsd.socket + +%ldconfig_scriptlets libs + +%if %{with_qt} +%ldconfig_scriptlets qt +%endif + +%files +%doc README.adoc NEWS +%license COPYING +%config(noreplace) %{_sysconfdir}/sysconfig/%{name} +%{_sbindir}/gpsd +%{_sbindir}/gpsdctl +%{_sbindir}/gpsinit +%{_bindir}/gpsmon +%{_bindir}/gpsctl +%{_bindir}/ntpshmmon +%{_bindir}/ppscheck +%{_unitdir}/gpsd.service +%{_unitdir}/gpsd.socket +%{_unitdir}/gpsdctl@.service +%{_udevrulesdir}/*.rules +%{_mandir}/man8/gpsd.8* +%{_mandir}/man8/gpsdctl.8* +%{_mandir}/man8/gpsinit.8* +%{_mandir}/man8/ppscheck.8* +%{_mandir}/man1/gpsmon.1* +%{_mandir}/man1/gpsctl.1* +%{_mandir}/man1/ntpshmmon.1* + +%files libs +%{_libdir}/libgps.so.29* + +%files -n python-%{name} +%{_libdir}/libgpsdpacket.so* +%{python3_sitearch}/gps* + +%files devel +%doc TODO HACKING +%{_libdir}/libgps.so +%{_libdir}/pkgconfig/libgps.pc +%{_includedir}/gps.h +%{_includedir}/libgpsmm.h +%{_mandir}/man3/libgps.3* +%{_mandir}/man3/libgpsmm.3* +%{_mandir}/man5/gpsd_json.5* + +%if %{with_qt} +%files qt +%{_libdir}/libQgpsmm.so.29* + +%files qt-devel +%{_libdir}/libQgpsmm.so +%{_libdir}/libQgpsmm.prl +%{_libdir}/pkgconfig/Qgpsmm.pc +%{_mandir}/man3/libQgpsmm.3* +%endif + +%files clients +%{_bindir}/cgps +%{_bindir}/gegps +%{_bindir}/gps2udp +%{_bindir}/gpscat +%{_bindir}/gpscsv +%{_bindir}/gpsdebuginfo +%{_bindir}/gpsdecode +%{_bindir}/gpspipe +%{_bindir}/gpsplot +%{_bindir}/gpsprof +%{_bindir}/gpsrinex +%{_bindir}/gpssnmp +%{_bindir}/gpssubframe +%{_bindir}/gpxlogger +%{_bindir}/lcdgps +%{_bindir}/xgps +%{_bindir}/xgpsspeed +%{_bindir}/gpsfake +%{_bindir}/ubxtool +%{_bindir}/zerk +%{_mandir}/man1/gegps.1* +%{_mandir}/man1/gps.1* +%{_mandir}/man1/gps2udp.1* +%{_mandir}/man1/gpscsv.1* +%{_mandir}/man1/gpsdebuginfo.1* +%{_mandir}/man1/gpsdecode.1* +%{_mandir}/man1/gpspipe.1* +%{_mandir}/man1/gpsplot.1* +%{_mandir}/man1/gpsprof.1* +%{_mandir}/man1/gpsrinex.1* +%{_mandir}/man1/gpssnmp.1* +%{_mandir}/man1/gpssubframe.1* +%{_mandir}/man1/gpxlogger.1* +%{_mandir}/man1/lcdgps.1* +%{_mandir}/man1/xgps.1* +%{_mandir}/man1/xgpsspeed.1* +%{_mandir}/man1/cgps.1* +%{_mandir}/man1/gpscat.1* +%{_mandir}/man1/gpsfake.1* +%{_mandir}/man1/ubxtool.1* +%{_mandir}/man1/zerk.1* +%{_datadir}/applications/*.desktop +%dir %{_datadir}/gpsd +%{_datadir}/gpsd/gpsd-logo.png + +%changelog +* Fri Jul 15 2022 misaka00251 - 1:3.24-1 +- Init package diff --git a/gpsd.sysconfig b/gpsd.sysconfig new file mode 100644 index 0000000..2d840c0 --- /dev/null +++ b/gpsd.sysconfig @@ -0,0 +1,4 @@ +# Options for gpsd, including serial devices +OPTIONS="" +# Set to 'true' to add USB devices automatically via udev +USBAUTO="true" diff --git a/gpsd.yaml b/gpsd.yaml new file mode 100644 index 0000000..41335c5 --- /dev/null +++ b/gpsd.yaml @@ -0,0 +1,4 @@ +version_control: git +src_repo: https://gitlab.com/gpsd/gpsd.git +tag_prefix: "^release-" +separator: "."