gpsd/gpsd.spec
2023-08-29 13:30:37 +08:00

322 lines
8.0 KiB
RPMSpec

%global with_qt 1
Name: gpsd
Version: 3.25
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
BuildRequires: gcc
BuildRequires: dbus-devel
BuildRequires: ncurses-devel
BuildRequires: python3-devel
BuildRequires: python3-setuptools
BuildRequires: gtk3-devel
BuildRequires: python3-scons
BuildRequires: python3-gobject
BuildRequires: python3-cairo
BuildRequires: python3-pyserial
BuildRequires: desktop-file-utils
BuildRequires: bluez-libs-devel
BuildRequires: pps-tools-devel
BuildRequires: systemd
%if %{with_qt}
BuildRequires: gcc-c++
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 python3-%{name}
Summary: Python libraries and modules for use with gpsd
Requires: %{name}-libs%{?_isa} = %{epoch}:%{version}-%{release}
Requires: python3-pyserial
%{?python_provide:%python_provide python3-%{name}}
%description -n python3-%{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: python3-%{name} = %{epoch}:%{version}-%{release}
Requires: %{name}-libs%{?_isa} = %{epoch}:%{version}-%{release}
%description clients
This package contains various clients using gpsd.
%package xclients
Summary: Graphical clients for gpsd
Requires: python3-%{name} = %{epoch}:%{version}-%{release}
Requires: python3-cairo
Requires: python3-gobject
Requires: gtk3
# split from clients package
Conflicts: gpsd-clients < 1:3.25-1
%description xclients
This package contains X clients using gpsd.
%prep
%setup -q
%patch1 -p1 -b .apistatus
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}
qt=yes \
%else
qt=no \
%endif
debug=yes \
leapfetch=no \
manbuild=no \
prefix="" \
sysconfdif=%{_sysconfdir} \
bindir=%{_bindir} \
includedir=%{_includedir} \
libdir=%{_libdir} \
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=%{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}
# Fix permissions
chmod 644 %{buildroot}%{python3_sitearch}/gps/gps.py
rm -f %{buildroot}%{_libdir}/libgpsdpacket.so
# 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.30*
%files -n python3-%{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.30*
%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}/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*
%files xclients
%{_bindir}/xgps
%{_bindir}/xgpsspeed
%{_datadir}/applications/*.desktop
%dir %{_datadir}/gpsd
%{_datadir}/gpsd/gpsd-logo.png
%{_mandir}/man1/xgps.1*
%{_mandir}/man1/xgpsspeed.1*
%changelog
* Tue Aug 29 2023 misaka00251 <liuxin@iscas.ac.cn> - 1:3.25-1
- Upgrade to 3.25
* Fri Jul 15 2022 misaka00251 <misaka00251@misakanet.cn> - 1:3.24-1
- Init package