gpsd/gpsd.spec
Dirk Stoecker 818da8daf7 Accepting request 731583 from home:adkorte:branches:openSUSE:Factory
- Update to version 3.19
  * Rearrange rawdata_t.  Bump the API because gps_data_t changed.
  * Report sequence-ID fields in type 7 and 13 AIS messages.
  * Preliminary support for SiRFstar V
  * Improve error modeling.
  * Update pseudo NMEA to v3.0, with fractional time.
  * Improve cycle detection, mostly for NMEA.
  * Move epe from gps_data_t to be near its friends in gps_fix_t.
  * Preliminary u-blox 9 support.
  * Add qErr in gps_data_t to store PPS quantization error.
  * Add Android (AOSP) support
  * Improved multi gnss and multi signal support.
  * NMEA 4.10 multi gnss multi signal support.
  * The arguments to "ubxtool -p P" have been expanded and changed.
  * New options, -g, -x, -z, added to ubxtool for u-blox 9 support.
- Drop gpsd-declaration-in-for-loop.patch

OBS-URL: https://build.opensuse.org/request/show/731583
OBS-URL: https://build.opensuse.org/package/show/Application:Geo/gpsd?expand=0&rev=126
2019-09-18 07:38:15 +00:00

370 lines
12 KiB
RPMSpec

#
# spec file for package gpsd
#
# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
%define sover 25
%define libgps libgps%{sover}
%define libQgps libQgpsmm%{sover}
%define _udevdir %(pkg-config --variable udevdir udev)
Name: gpsd
Version: 3.19
Release: 0
Summary: Service daemon for mediating access to a GPS
License: BSD-3-Clause
Group: Hardware/Other
URL: http://www.catb.org/gpsd/
Source0: http://download-mirror.savannah.gnu.org/releases/gpsd/%{name}-%{version}.tar.gz
Source1: rules.gpsd
Source2: udev.gpsd
Source3: sysconfig.gpsd
Source98: http://download-mirror.savannah.gnu.org/releases/gpsd/%{name}-%{version}.tar.gz.sig
Source99: %{name}.keyring
BuildRequires: chrpath
BuildRequires: fdupes
BuildRequires: gcc-c++
BuildRequires: hicolor-icon-theme
BuildRequires: libcap-devel
BuildRequires: ncurses-devel
BuildRequires: pkgconfig
BuildRequires: python3-cairo-devel
BuildRequires: python3-gobject-devel
BuildRequires: python3-pyserial
BuildRequires: scons >= 2.3.0
BuildRequires: systemd-rpm-macros
BuildRequires: update-desktop-files
BuildRequires: xmlto
BuildRequires: pkgconfig(Qt5Core)
BuildRequires: pkgconfig(Qt5Network)
BuildRequires: pkgconfig(Qt5Widgets)
BuildRequires: pkgconfig(bluez)
BuildRequires: pkgconfig(dbus-1)
BuildRequires: pkgconfig(libusb-1.0)
BuildRequires: pkgconfig(python2)
BuildRequires: pkgconfig(python3)
BuildRequires: pkgconfig(udev)
Requires: udev
Requires(pre): %fillup_prereq
Requires(pre): coreutils
%{?systemd_requires}
%if 0%{?suse_version} > 1320 || 0%{?sle_version} >= 120200
BuildRequires: pps-tools-devel
%endif
%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 wardriving 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. A client library is provided for applications.
After installing this RPM, gpsd will automatically connect to USB GPSes
when they are plugged in and requires no configuration. For serial
GPSes, you will need to start gpsd by hand. Once connected, the daemon
automatically discovers the correct baudrate, stop bits, and protocol.
The daemon will be quiescent when there are no clients asking for
location information, and copes gracefully when the GPS is unplugged
and replugged.
%package devel
Summary: Client libraries in C and Python for talking to a running gpsd or GPS
Group: Development/Libraries/C and C++
Requires: %{libQgps}
Requires: %{libgps}
Requires: %{name} = %{version}
Requires: pkgconfig
Requires: python3-curses
Requires: python3-gpsd = %{version}
%description devel
This package provides C header files for the gpsd shared libraries that
manage access to a GPS for applications and debugging tools. You will
need to have gpsd installed for it to work.
%package -n %{libgps}
Summary: Shared library for GPS applications
Group: System/Libraries
%description -n %{libgps}
This package provides the shared library for gpsd and other GPS aware
applications.
%package -n %{libQgps}
Summary: Shared Qt library for GPS applications
Group: System/Libraries
%description -n %{libQgps}
This package provides the shared Qt library for gpsd and other GPS aware
applications.
%package -n python2-gpsd
Summary: Client libraries in C and Python for talking to a running gpsd or GPS
Group: Development/Libraries/Python
Requires: %{name} = %{version}
Provides: python-gpsd = %{version}-%{release}
Obsoletes: python-gpsd < %{version}-%{release}
%description -n python2-gpsd
This package provides python modules and tools for the gpsd shared libraries.
You will need to have gpsd installed for it to work.
%package -n python3-gpsd
Summary: Client libraries in C and Python3 for talking to a running gpsd or GPS
Group: Development/Libraries/Python
Requires: %{name} = %{version}
%description -n python3-gpsd
This package provides python3 modules and tools for the gpsd shared libraries.
You will need to have gpsd installed for it to work.
%package clients
Summary: Example clients for gpsd
Group: Hardware/Other
Requires: python3-cairo
Requires: python3-gobject
Requires: python3-gobject-Gdk
Requires: python3-gpsd
Requires: python3-serial
%description clients
xgps is a simple test client for gpsd with an X interface. It displays
current GPS position/time/velocity information and (for GPSes that
support the feature) the locations of accessible satellites.
xgpsspeed is a speedometer that uses position information from the GPS.
It accepts an -h option and optional argument as for gps, or a -v
option to dump the package version and exit. Additionally, it accepts
-rv (reverse video) and -nc (needle color) options.
cgps resembles xgps, but without the pictorial satellite display. It
can run on a serial terminal or terminal emulator.
%prep
mkdir -p %{name}-%{version}/python2
mkdir -p %{name}-%{version}/python3
tar -xf %{SOURCE0} -C %{name}-%{version}/python2
tar -xf %{SOURCE0} -C %{name}-%{version}/python3
cd %{name}-%{version}
# fix systemd path
sed -i 's|systemd_dir =.*|systemd_dir = '\'%{_unitdir}\''|' python*/%{name}-%{version}/SConstruct
# don't try reloading systemd when installing in the build root
sed -i 's|systemctl daemon-reload|true|' python*/%{name}-%{version}/SConstruct
# don't set RPATH
sed -i 's|env.Prepend.*RPATH.*|pass #\0|' python*/%{name}-%{version}/SConstruct
# fix gpsd path
sed -i 's|ExecStart=.*/gpsd|ExecStart=%{_sbindir}/gpsd|' python*/%{name}-%{version}/systemd/gpsd.service
%build
# The SCons description does not handle CXXFLAGS correctly, pass C++ flags also in CFLAGS
export CFLAGS="%{optflags}"
export CXXFLAGS="%{optflags}"
export CPPFLAGS="%{optflags}"
pyversions=( python2 python3 )
pylibdir=( %{python2_sitearch} %{python3_sitearch} )
for i in 0 1
do
pushd %{name}-%{version}/${pyversions[i]}/%{name}-%{version}
# breaks with %{?_smp_mflags}
scons \
dbus_export=yes \
systemd=yes \
libQgpsmm=yes \
qt=yes \
qt_versioned=5 \
leapfetch=no \
prefix="" \
sysconfdif=%{_sysconfdir} \
bindir=%{_bindir} \
includedir=%{_includedir} \
libdir=%{_libdir} \
sbindir=%{_sbindir} \
mandir=%{_mandir} \
docdir=%{_docdir} \
pkgconfigdir=%{_libdir}/pkgconfig \
udevdir=$(dirname %{_udevrulesdir}) \
target_python=${pyversions[i]} \
python_libdir=${pylibdir[i]} \
build
# Fix python interpreter path.
sed -e "s,#!%{_bindir}/\(python[23]\?\|env \+python[23]\?\),#!%{_bindir}/${pyversions[i]},g" -i \
gegps gpscat gpsfake xgps xgpsspeed gpsprof ubxtool zerk gps/*.py
popd
done
%install
# The SCons description does not handle CXXFLAGS correctly, pass C++ flags also in CFLAGS
export CFLAGS="%{optflags}"
export CXXFLAGS="%{optflags}"
export CPPFLAGS="%{optflags}"
# Install python2 first
pushd %{name}-%{version}/python2/%{name}-%{version}
DESTDIR=%{buildroot} scons nostrip=True install
# Now delete all the installed files except the python2 files
find %{buildroot} \( -not -type d -a -not -path "*/python2.*/*" \) -delete
popd
pushd %{name}-%{version}/python3/%{name}-%{version}
DESTDIR=%{buildroot} scons nostrip=True install
install -d -m 755 %{buildroot}%{_udevdir}
install -d -m 755 %{buildroot}%{_udevdir}/rules.d
install -d -m 755 %{buildroot}%{_fillupdir}
install -d -m 755 %{buildroot}%{_datadir}/applications
install -m 644 %{SOURCE1} %{buildroot}%{_udevdir}/rules.d/51-gpsd.rules
install -m 755 %{SOURCE2} %{buildroot}%{_udevdir}/gpsd.sh
install -m 644 %{SOURCE3} %{buildroot}%{_fillupdir}
# install desktop entries
install -D -m 644 -t %{buildroot}%{_datadir}/icons/hicolor/128x128/apps/ packaging/X11/gpsd-logo.png
install -D -m 644 -t %{buildroot}%{_datadir}/applications/ packaging/X11/xgps.desktop
install -D -m 644 -t %{buildroot}%{_datadir}/applications/ packaging/X11/xgpsspeed.desktop
install -D -m 644 systemd/gpsd.service %{buildroot}/%{_unitdir}/gpsd.service
install -D -m 644 systemd/gpsd.socket %{buildroot}/%{_unitdir}/gpsd.socket
install -D -m 644 systemd/gpsdctl@.service %{buildroot}/%{_unitdir}/gpsdctl@.service
ln -s %{_sbindir}/service %{buildroot}%{_sbindir}/rcgpsd
%fdupes -s %{buildroot}%{_mandir}
# strip absolute path and suffix
sed -i -e 's#Icon=.*/\([^/]\+\)\(\..\+\)#Icon=\1#' %{buildroot}%{_datadir}/applications/xgps{,speed}.desktop
%suse_update_desktop_file -r xgpsspeed System Monitor
%suse_update_desktop_file -r xgps System Monitor
%pre
%service_add_pre gpsd.service gpsdctl@.service gpsd.socket
%post
/sbin/ldconfig
%fillup_only -n gpsd
%service_add_post gpsd.service gpsdctl@.service gpsd.socket
%udev_rules_update
%preun
%service_del_preun gpsd.service gpsdctl@.service gpsd.socket
%postun
/sbin/ldconfig
%service_del_postun gpsd.service gpsdctl@.service gpsd.socket
%post -n %{libgps} -p /sbin/ldconfig
%postun -n %{libgps} -p /sbin/ldconfig
%post -n %{libQgps} -p /sbin/ldconfig
%postun -n %{libQgps} -p /sbin/ldconfig
%files
%license %{name}-%{version}/python3/%{name}-%{version}/COPYING
%doc %{name}-%{version}/python3/%{name}-%{version}/README
%{_mandir}/man?/gpsd.*
%{_mandir}/man?/gpsdctl.*
%{_mandir}/man?/gpsctl.*
%{_mandir}/man?/gpsinit.*
%{_udevdir}/gpsd.sh
%{_udevdir}/rules.d/*
%{_unitdir}/gpsd.service
%{_unitdir}/gpsd.socket
%{_unitdir}/gpsdctl@.service
%{_sbindir}/rcgpsd
%{_sbindir}/gpsd
%{_sbindir}/gpsdctl
%{_bindir}/gpsctl
%{_fillupdir}/sysconfig.gpsd
%files -n %{libgps}
%{_libdir}/libgps.so.*
%files -n %{libQgps}
%{_libdir}/libQgpsmm.so.*
%files devel
%doc %{name}-%{version}/python3/%{name}-%{version}/TODO
%{_mandir}/man?/gpsfake.*
%{_mandir}/man?/gpscat.*
%{_mandir}/man?/libgps.*
%{_mandir}/man?/libgpsmm.*
%{_mandir}/man?/srec*
%{_mandir}/man?/gpsdecode.*
%{_mandir}/man?/gpsd_json.*
%{_mandir}/man?/gpsprof.*
%{_bindir}/gpsfake
%{_bindir}/gpscat
%{_bindir}/gpsdecode
%{_bindir}/gpsprof
%{_includedir}/gps.h
%{_includedir}/libgpsmm.h
%{_libdir}/libgps.so
%{_libdir}/pkgconfig/libgps.pc
%{_libdir}/libQgpsmm.so
%{_libdir}/libQgpsmm.prl
%{_libdir}/pkgconfig/Qgpsmm.pc
%{_mandir}/man?/libQgps*
%files -n python2-gpsd
%{python_sitearch}/gps/
%{python_sitearch}/gps-%{version}.*
%files -n python3-gpsd
%{python3_sitearch}/gps/
%{python3_sitearch}/gps-%{version}.*
%files clients
%{_mandir}/man?/gps.*
%{_mandir}/man?/gegps.*
%{_mandir}/man?/cgps.*
%{_mandir}/man?/lcdgps.*
%{_mandir}/man?/xgps.*
%{_mandir}/man?/xgpsspeed.*
%{_mandir}/man?/gpspipe.*
%{_mandir}/man?/gpsmon.*
%{_mandir}/man?/gps2udp.*
%{_mandir}/man?/ntpshmmon.*
%{_mandir}/man?/ppscheck.*
%{_mandir}/man?/gpxlogger.*
%{_mandir}/man?/ubxtool.*
%{_mandir}/man?/zerk.*
%{_mandir}/man?/gpsrinex.*
%{_bindir}/gegps
%{_bindir}/xgps
%{_bindir}/xgpsspeed
%{_bindir}/cgps
%{_bindir}/lcdgps
%{_bindir}/gpsmon
%{_bindir}/gpspipe
%{_bindir}/gps2udp
%{_bindir}/gpxlogger
%{_bindir}/ntpshmmon
%{_bindir}/ppscheck
%{_bindir}/ubxtool
%{_bindir}/zerk
%{_bindir}/gpsrinex
%{_datadir}/applications/*.desktop
%{_datadir}/icons/hicolor/*/apps/*
%changelog