summaryrefslogtreecommitdiff
path: root/gpsd-minimal.spec
diff options
context:
space:
mode:
Diffstat (limited to 'gpsd-minimal.spec')
-rw-r--r--gpsd-minimal.spec233
1 files changed, 233 insertions, 0 deletions
diff --git a/gpsd-minimal.spec b/gpsd-minimal.spec
new file mode 100644
index 0000000..488130e
--- /dev/null
+++ b/gpsd-minimal.spec
@@ -0,0 +1,233 @@
+%global scons_ver 4.5.2
+%global scons python3 scons-%{scons_ver}/scripts/scons.py
+%global note1 The Red Hat support for this package is limited. See
+%global note2 https://access.redhat.com/support/policy/gpsd-support for more details.
+
+Name: gpsd-minimal
+Version: 3.25
+Release: 4%{?dist}
+Epoch: 1
+Summary: Service daemon for mediating access to a GPS
+
+License: BSD
+URL: https://gpsd.gitlab.io/gpsd/index.html
+Source0: https://download-mirror.savannah.gnu.org/releases/gpsd/gpsd-%{version}.tar.gz
+# used only for building
+Source1: https://github.com/SCons/scons/archive/%{scons_ver}/scons-%{scons_ver}.tar.gz
+Source11: gpsd.sysconfig
+
+# add missing IPv6 support
+Patch1: gpsd-ipv6.patch
+# fix some issues reported by coverity and shellcheck
+Patch2: gpsd-scanfixes.patch
+# fix busy wait when reading from gpsd socket
+Patch3: gpsd-busywait.patch
+
+BuildRequires: gcc
+BuildRequires: dbus-devel
+BuildRequires: ncurses-devel
+BuildRequires: python3-devel
+BuildRequires: python3-setuptools
+BuildRequires: python3-pyserial
+BuildRequires: bluez-libs-devel
+BuildRequires: pps-tools-devel
+BuildRequires: systemd-rpm-macros
+BuildRequires: libusb1-devel
+
+Requires: udev
+%{?systemd_requires}
+
+Conflicts: gpsd < %{epoch}:%{version}-%{release}
+
+%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.
+
+%{note1}
+%{note2}
+
+%package clients
+Summary: Clients for gpsd
+Requires: python3-pyserial
+Conflicts: gpsd-clients < %{epoch}:%{version}-%{release}
+
+%description clients
+This package contains various clients using gpsd.
+
+%{note1}
+%{note2}
+
+%prep
+%setup -q -n gpsd-%{version} -a 1
+%patch -P 1 -p1 -b .ipv6
+%patch -P 2 -p1 -b .scanfixes
+%patch -P 3 -p1 -b .busywait
+
+# add note to man pages about limited support
+sed -i ':a;$!{N;ba};s|\(\.SH "[^"]*"\)|.SH "NOTE"\n%{note1}\n%{note2}\n\1|3' \
+ man/*.{1,8}
+
+# add path to the private python gps module
+sed -i 's|\( *\)\(import gps\)$|\1sys.path.insert(1, "%{_libdir}/gpsd%{version}")\n\1\2|' \
+ *.py.in clients/*.py.in
+
+# don't try reloading systemd when installing in the build root
+sed -i 's|systemctl daemon-reload|true|' SConscript
+
+iconv -f iso8859-1 -t utf8 NEWS > NEWS_ && mv NEWS_ NEWS
+
+%build
+export CCFLAGS="%{optflags}"
+# scons ignores LDFLAGS. LINKFLAGS partially work (some flags like
+# -spec=... are filtered)
+export LINKFLAGS="%{__global_ldflags}"
+
+# breaks with %%{_smp_mflags}
+%{scons} \
+ dbus_export=yes \
+ systemd=yes \
+ qt=no \
+ xgps=no \
+ debug=yes \
+ leapfetch=no \
+ manbuild=no \
+ prefix="" \
+ sysconfdif=%{_sysconfdir} \
+ bindir=%{_bindir} \
+ includedir=%{_includedir} \
+ libdir=%{_libdir}/gpsd%{version} \
+ sbindir=%{_sbindir} \
+ mandir=%{_mandir} \
+ mibdir=%{_docdir}/gpsd \
+ docdir=%{_docdir}/gpsd \
+ pkgconfigdir=%{_libdir}/pkgconfig \
+ icondir=%{_datadir}/gpsd \
+ udevdir=$(dirname %{_udevrulesdir}) \
+ unitdir=%{_unitdir} \
+ target_python=python3 \
+ python_shebang=%{python3} \
+ python_libdir=%{_libdir}/gpsd%{version} \
+ build
+
+%install
+# avoid rebuilding
+export CCFLAGS="%{optflags}"
+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
+
+# Missed in scons install
+install -p -m 0755 gpsinit %{buildroot}%{_sbindir}
+
+# Remove shebang and fix permissions
+sed -i '/^#!.*python/d' %{buildroot}%{_libdir}/gpsd%{version}/gps/{aio,}gps.py
+chmod 644 %{buildroot}%{_libdir}/gpsd%{version}/gps/gps.py
+
+# Remove unpackaged files
+rm -f %{buildroot}%{_libdir}/gpsd%{version}/lib{gps*.so,gps.so.*}
+rm -f %{buildroot}%{_libdir}/gpsd%{version}/*.egg-info
+rm -rf %{buildroot}%{_libdir}/gpsd%{version}/pkgconfig
+rm -rf %{buildroot}%{_includedir}
+rm -rf %{buildroot}%{_mandir}/man{3,5}
+rm -r %{buildroot}%{_mandir}/man1/xgps*
+rm -rf %{buildroot}%{_datadir}/gpsd
+
+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
+
+%files
+%doc README.adoc NEWS
+%license COPYING
+%config(noreplace) %{_sysconfdir}/sysconfig/gpsd
+%{_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 clients
+%license COPYING
+%{_libdir}/gpsd%{version}/libgpsdpacket.so.*
+%{_libdir}/gpsd%{version}/gps
+%{_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}/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/cgps.1*
+%{_mandir}/man1/gpscat.1*
+%{_mandir}/man1/gpsfake.1*
+%{_mandir}/man1/ubxtool.1*
+%{_mandir}/man1/zerk.1*
+
+%changelog
+* Tue Aug 08 2023 Miroslav Lichvar <mlichvar@redhat.com> - 1:3.25-4
+- fix busy wait when reading from gpsd socket
+
+* Tue Aug 08 2023 Miroslav Lichvar <mlichvar@redhat.com> - 1:3.25-3
+- fix gpsfake to load python gps module
+
+* Tue Aug 01 2023 Miroslav Lichvar <mlichvar@redhat.com> - 1:3.25-2
+- add missing IPv6 support
+- fix some issues reported by coverity and shellcheck
+
+* Mon Jul 24 2023 Miroslav Lichvar <mlichvar@redhat.com> - 1:3.25-1
+- initial release based on Fedora gpsd package