[packages/gpsd] - updated to 3.8 - reenabled updated link patch (fixes libgpsd linking, kills whole rpath stuff) - a
qboosh
qboosh at pld-linux.org
Fri Mar 1 21:50:48 CET 2013
commit d96c1154df8fa5ea0ad75bb853fdd5a8080d5081
Author: Jakub Bogusz <qboosh at pld-linux.org>
Date: Fri Mar 1 21:50:37 2013 +0100
- updated to 3.8
- reenabled updated link patch (fixes libgpsd linking, kills whole rpath stuff)
- added flags patch (add dbus pkgconfig flags also for static library build)
- added destdir patch (DESTDIR support for udev-install target)
- use scons [udev-]install, but ensure that build and install environments are
identical and rpaths are not used (they caused DESTDIR-poisoned relinking on install)
gpsd-destdir.patch | 17 +++++++++
gpsd-flags.patch | 11 ++++++
gpsd-link.patch | 78 ++++++++++++++++------------------------
gpsd.spec | 102 ++++++++++++++++++++++++++++-------------------------
4 files changed, 111 insertions(+), 97 deletions(-)
---
diff --git a/gpsd.spec b/gpsd.spec
index 75d279e..55d181a 100644
--- a/gpsd.spec
+++ b/gpsd.spec
@@ -1,22 +1,21 @@
#
-# TODO
-# - libgpsd.so needs -lm
-
# Conditional build:
%bcond_without dbus # build without dbus support
%bcond_without bluez # build without Bluetooth support
-
+#
Summary: Service daemon for mediating access to a GPS
Summary(pl.UTF-8): Oprogramowanie komunikujące się z GPS-em
Name: gpsd
-Version: 3.7
-Release: 1.1
+Version: 3.8
+Release: 1
License: BSD
Group: Daemons
Source0: http://download-mirror.savannah.gnu.org/releases/gpsd/%{name}-%{version}.tar.gz
-# Source0-md5: 52d9785eaf1a51298bb8900dbde88f98
+# Source0-md5: 1a3177b907f25c0ce6d1a0aa22597270
Patch0: %{name}-link.patch
Patch1: %{name}-qt.patch
+Patch2: %{name}-flags.patch
+Patch3: %{name}-destdir.patch
URL: http://www.catb.org/gpsd/
BuildRequires: QtNetwork-devel >= 4.4
%if %{with dbus}
@@ -42,8 +41,7 @@ Requires: %{name}-libs = %{version}-%{release}
BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
# libgpsd expects gpsd_report() defined by user
-# libQgpsmm expects libgps_dump_state(gps_data_t*)
-%define skip_post_check_so libgpsd\.so.* libQgpsmm\.so.*
+%define skip_post_check_so libgpsd\.so.*
%description
gpsd is a service daemon that mediates access to a GPS sensor
@@ -206,20 +204,23 @@ xgpsspeed to prędkościomierz używający informacji o położeniu z GPS-a.
%prep
%setup -q
-#%patch0 -p1 CHECK ME
+%patch0 -p1
%patch1 -p1
-
-# make .egg-info in builddir
-%{__sed} -i -e 's/^\(build = .*\)\])$/\1, python_egg_info])/' SConstruct
+%patch2 -p1
+%patch3 -p1
%build
-export CC="%{__cc}"
-export CXX="%{__cxx}"
-export CFLAGS="%{rpmcflags}"
-export CXXFLAGS="%{rpmcxxflags}"
-export CPPFLAGS="%{rpmcppflags}" # -I/usr/include/ncurses $(pkg-config --cflags dbus-1)"
-export LDFLAGS="%{rpmldflags}"
-%scons \
+# note: to avoid recompiling/relinking on scons install, whole environment
+# needs to be the same in both build and install sections
+%define scons_env \
+CC="%{__cc}" \
+CXX="%{__cxx}" \
+CFLAGS="%{rpmcflags}" \
+CXXFLAGS="%{rpmcxxflags}" \
+CPPFLAGS="%{rpmcppflags}" \
+LDFLAGS="%{rpmldflags}"
+
+%define scons_opts \
libdir=%{_libdir} \
pkgconfigdir=%{_pkgconfigdir} \
chrpath=False \
@@ -231,35 +232,34 @@ export LDFLAGS="%{rpmldflags}"
%{!?with_bluez:bluez=False} \
%{?with_dbus:dbus_export=True}
+%scons_env \
+%scons \
+ %scons_opts
+
%install
rm -rf $RPM_BUILD_ROOT
-install -d $RPM_BUILD_ROOT{%{_datadir}/%{name},/lib/udev/rules.d,/etc/sysconfig}
-
-# must install manually
-# or great scons would recompile everything
-# FIXME: to avoid scons rebuilding identical *FLAGS must be present in env that were in build section
-install -d $RPM_BUILD_ROOT{%{_bindir},%{_sbindir},%{_includedir},%{_libdir},%{_pkgconfigdir},%{_mandir}/man{1,3,5,8},%{py_sitedir}/gps}
-install -p cgps gegps gpscat gpsctl gpsdecode gpsfake gpsmon gpspipe gpsprof gpxlogger lcdgps xgps xgpsspeed $RPM_BUILD_ROOT%{_bindir}
-install -p gpsd gpsdctl $RPM_BUILD_ROOT%{_sbindir}
-cp -p cgps.1 gegps.1 gps.1 gpscat.1 gpsctl.1 gpsdecode.1 gpsfake.1 gpsmon.1 gpspipe.1 gpsprof.1 lcdgps.1 xgps.1 xgpsspeed.1 $RPM_BUILD_ROOT%{_mandir}/man1
-cp -p gpsd_json.5 srec.5 $RPM_BUILD_ROOT%{_mandir}/man5
-cp -p gpsd.8 gpsdctl.8 $RPM_BUILD_ROOT%{_mandir}/man8
-cp -p gps.h gpsd.h libgpsmm.h $RPM_BUILD_ROOT%{_includedir}
-cp -dp lib{Qgpsmm,gps,gpsd}.so{,.??,.*.*.*} $RPM_BUILD_ROOT%{_libdir}
-for f in libgps.pc libgpsd.pc ; do
- %{__sed} -e 's, at VERSION@,%{version},;s, at prefix@,%{_prefix},;s, at libdir@,/%{_lib},' ${f}.in >$RPM_BUILD_ROOT%{_pkgconfigdir}/${f}
-done
-cp -p libQgpsmm.3 libgps.3 libgpsd.3 libgpsmm.3 $RPM_BUILD_ROOT%{_mandir}/man3
-cp -p gps-%{version}.egg-info $RPM_BUILD_ROOT%{py_sitedir}
-install gps/*.so $RPM_BUILD_ROOT%{py_sitedir}/gps
-cp -p gps/*.py $RPM_BUILD_ROOT%{py_sitedir}/gps
-
-install -p gpsd.hotplug $RPM_BUILD_ROOT/lib/udev
-install -p gpsd.rules $RPM_BUILD_ROOT/lib/udev/rules.d/25-gpsd.rules
+
+%scons_env \
+DESTDIR=$RPM_BUILD_ROOT \
+%scons udev-install \
+ %scons_opts
+
+# fix buggy libdir, kill -L/usr/* from qt Libs
+%{__sed} -i -e 's,^libdir=.*,libdir=%{_libdir},' \
+ -e 's,-L/[^ ]* *,,' \
+ $RPM_BUILD_ROOT%{_pkgconfigdir}/*.pc
+
+# invoke python directly
+%{__sed} -i -e '1s,/usr/bin/env python,/usr/bin/python,' \
+ $RPM_BUILD_ROOT%{_bindir}/{gpscat,gpsfake,gpsprof,xgps,xgpsspeed,gegps}
+
+# omitted from make install
+install gpsinit $RPM_BUILD_ROOT%{_sbindir}
+install -Dp dgpsip-servers $RPM_BUILD_ROOT%{_datadir}/gpsd/dgpsip-servers
+cp -p gpsd.h $RPM_BUILD_ROOT%{_includedir}
+
#install packaging/rpm/gpsd.init $RPM_BUILD_ROOT/etc/rc.d/init.d/gpsd
#install packaging/rpm/gpsd.sysconfig $RPM_BUILD_ROOT/etc/sysconfig/gpsd
-install -p dgpsip-servers $RPM_BUILD_ROOT%{_datadir}/gpsd/dgpsip-servers
-
install -d $RPM_BUILD_ROOT{%{_desktopdir},%{_pixmapsdir}}
cp -p packaging/X11/{xgps,xgpsspeed}.desktop $RPM_BUILD_ROOT%{_desktopdir}
cp -p packaging/X11/gpsd-logo.png $RPM_BUILD_ROOT%{_pixmapsdir}
@@ -268,6 +268,9 @@ cp -p packaging/X11/gpsd-logo.png $RPM_BUILD_ROOT%{_pixmapsdir}
%py_ocomp $RPM_BUILD_ROOT%{py_sitedir}
%py_postclean
+# symlinks not needed
+%{__rm} $RPM_BUILD_ROOT%{_libdir}/lib*.so.??.0
+
%clean
rm -rf $RPM_BUILD_ROOT
@@ -283,9 +286,11 @@ rm -rf $RPM_BUILD_ROOT
%attr(755,root,root) %{_bindir}/gpsmon
%attr(755,root,root) %{_sbindir}/gpsd
%attr(755,root,root) %{_sbindir}/gpsdctl
+%attr(755,root,root) %{_sbindir}/gpsinit
%{_mandir}/man1/gpsmon.1*
%{_mandir}/man8/gpsd.8*
%{_mandir}/man8/gpsdctl.8*
+%{_mandir}/man8/gpsinit.8*
%dir %{_datadir}/gpsd
%{_datadir}/gpsd/dgpsip-servers
@@ -299,7 +304,7 @@ rm -rf $RPM_BUILD_ROOT
%files libs
%defattr(644,root,root,755)
%attr(755,root,root) %{_libdir}/libgpsd.so.*.*.*
-%attr(755,root,root) %ghost %{_libdir}/libgpsd.so.20
+%attr(755,root,root) %ghost %{_libdir}/libgpsd.so.21
%attr(755,root,root) %{_libdir}/libgps.so.*.*.*
%attr(755,root,root) %ghost %{_libdir}/libgps.so.20
@@ -329,9 +334,8 @@ rm -rf $RPM_BUILD_ROOT
%defattr(644,root,root,755)
%attr(755,root,root) %{_libdir}/libQgpsmm.so
%{_mandir}/man3/libQgpsmm.3*
-# missing in scons build
-#%{_libdir}/libQgpsmm.prl
-#%{_pkgconfigdir}/Qgpsmm.pc
+%{_libdir}/libQgpsmm.prl
+%{_pkgconfigdir}/Qgpsmm.pc
%files -n python-gps
%defattr(644,root,root,755)
diff --git a/gpsd-destdir.patch b/gpsd-destdir.patch
new file mode 100644
index 0000000..8fa7392
--- /dev/null
+++ b/gpsd-destdir.patch
@@ -0,0 +1,17 @@
+--- gpsd-3.8/SConstruct.orig 2013-03-01 18:15:47.709276155 +0100
++++ gpsd-3.8/SConstruct 2013-03-01 18:38:43.379218424 +0100
+@@ -1660,10 +1660,10 @@
+ # is plugged in.
+
+ Utility('udev-install', 'install', [
+- 'mkdir -p ' + env['udevdir'],
+- 'cp $SRCDIR/gpsd.rules ' + env['udevdir'] + '/rules.d/25-gpsd.rules',
+- 'cp $SRCDIR/gpsd.hotplug ' + env['udevdir'],
+- 'chmod a+x ' + env['udevdir'] + '/gpsd.hotplug',
++ 'mkdir -p ' + DESTDIR + env['udevdir'] + '/rules.d',
++ 'cp $SRCDIR/gpsd.rules ' + DESTDIR + env['udevdir'] + '/rules.d/25-gpsd.rules',
++ 'cp $SRCDIR/gpsd.hotplug ' + DESTDIR + env['udevdir'],
++ 'chmod a+x ' + DESTDIR + env['udevdir'] + '/gpsd.hotplug',
+ ])
+
+ Utility('udev-uninstall', '', [
diff --git a/gpsd-flags.patch b/gpsd-flags.patch
new file mode 100644
index 0000000..b50f672
--- /dev/null
+++ b/gpsd-flags.patch
@@ -0,0 +1,11 @@
+--- gpsd-3.8/SConstruct.orig 2013-03-01 16:31:35.872871853 +0100
++++ gpsd-3.8/SConstruct 2013-03-01 17:26:39.839399865 +0100
+@@ -886,7 +886,7 @@
+ # linking
+ # The final executable will build but not be portable.
+
+-env.StaticLibrary(target = 'libgps.a', source = libgps_sources)
++env.StaticLibrary(target = 'libgps.a', source = libgps_sources, parse_flags = dbus_libs)
+
+ # Source groups
+
diff --git a/gpsd-link.patch b/gpsd-link.patch
index 9fa2eaf..49760af 100644
--- a/gpsd-link.patch
+++ b/gpsd-link.patch
@@ -1,54 +1,36 @@
---- gpsd-3.1/SConstruct.orig 2011-08-28 13:14:24.000000000 +0200
-+++ gpsd-3.1/SConstruct 2011-09-26 18:53:55.711394116 +0200
-@@ -686,7 +686,8 @@
- compiled_gpsdlib = Library(env=env,
+--- gpsd-3.8/SConstruct.orig 2013-03-01 18:51:51.019185370 +0100
++++ gpsd-3.8/SConstruct 2013-03-01 19:07:33.045812503 +0100
+@@ -273,8 +273,6 @@
+ env.Prepend(LIBPATH=[installdir('libdir')])
+ else:
+ env.Prepend(LIBPATH=[env["sysroot"] + installdir('libdir')])
+-if env["shared"]:
+- env.Prepend(RPATH=[installdir('libdir')])
+
+ # Give deheader a way to set compiler flags
+ if 'MORECFLAGS' in os.environ:
+@@ -842,7 +840,8 @@
target="gpsd",
sources=libgpsd_sources,
-- version=libversion, parse_flags=usblibs + rtlibs + bluezlibs)
-+ version=libversion, parse_flags=usblibs + rtlibs + bluezlibs + ["-L.", "-lgps", "-lm"])
+ version=libgpsd_version,
+- parse_flags=usblibs + rtlibs + bluezlibs)
++ parse_flags=usblibs + rtlibs + bluezlibs + ["-L.", "-lgps", "-lm"])
+env.Depends(compiled_gpsdlib, compiled_gpslib)
libraries = [compiled_gpslib, compiled_gpsdlib]
-@@ -709,7 +710,8 @@
- compile_flags = qt_env['CFLAGS']
- qtobjects.append(qt_env.SharedObject(src.split(".")[0] + '-qt', src,
- CC=compile_with, CFLAGS=compile_flags))
-- compiled_qgpsmmlib = Library(qt_env, "Qgpsmm", qtobjects, libversion)
-+ compiled_qgpsmmlib = Library(qt_env, "Qgpsmm", qtobjects, libversion, parse_flags=["-L.", "-lgps"])
-+ env.Depends(compiled_qgpsmmlib, compiled_gpslib)
- libraries.append(compiled_qgpsmmlib)
-
- # The libraries have dependencies on system libraries
-@@ -751,7 +753,7 @@
- gpsd_env.MergeFlags("-pthread")
-
- gpsd = gpsd_env.Program('gpsd', gpsd_sources,
-- parse_flags = gpsdlibs + dbus_xmit_libs)
-+ parse_flags = gpsdlibs + dbus_xmit_libs + ["-lm"])
- env.Depends(gpsd, [compiled_gpsdlib, compiled_gpslib])
-
- gpsdecode = env.Program('gpsdecode', ['gpsdecode.c'], parse_flags=gpsdlibs)
-@@ -764,19 +766,19 @@
- env.Depends(gpsdctl, compiled_gpslib)
-
- gpsmon = env.Program('gpsmon', gpsmon_sources,
-- parse_flags=gpsdlibs + ncurseslibs)
-+ parse_flags=gpsdlibs + ncurseslibs + ["-lm"])
- env.Depends(gpsmon, [compiled_gpsdlib, compiled_gpslib])
-
- gpspipe = env.Program('gpspipe', ['gpspipe.c'], parse_flags=gpslibs)
- env.Depends(gpspipe, compiled_gpslib)
-
- gpxlogger = env.Program('gpxlogger', ['gpxlogger.c'], parse_flags=gpslibs+dbus_recv_libs)
--env.Depends(gpspipe, compiled_gpslib)
-+env.Depends(gpxlogger, compiled_gpslib)
-
- lcdgps = env.Program('lcdgps', ['lcdgps.c'], parse_flags=gpslibs)
- env.Depends(lcdgps, compiled_gpslib)
-
--cgps = env.Program('cgps', ['cgps.c'], parse_flags=gpslibs + ncurseslibs)
-+cgps = env.Program('cgps', ['cgps.c'], parse_flags=gpslibs + ncurseslibs + ["-lm"])
- env.Depends(cgps, compiled_gpslib)
-
- binaries = [gpsd, gpsdecode, gpsctl, gpsdctl, gpspipe, gpxlogger, lcdgps]
+--- gpsd-3.8/SConstruct.orig 2013-03-01 19:26:46.005764118 +0100
++++ gpsd-3.8/SConstruct 2013-03-01 19:54:31.782360879 +0100
+@@ -268,12 +268,6 @@
+ wrapped.replace("/usr/etc", "/etc")
+ return wrapped
+
+-# Honor the specified installation prefix in link paths.
+-if not env["sysroot"]:
+- env.Prepend(LIBPATH=[installdir('libdir')])
+-else:
+- env.Prepend(LIBPATH=[env["sysroot"] + installdir('libdir')])
+-
+ # Give deheader a way to set compiler flags
+ if 'MORECFLAGS' in os.environ:
+ env.Append(CFLAGS=Split(os.environ['MORECFLAGS']))
================================================================
---- gitweb:
http://git.pld-linux.org/gitweb.cgi/packages/gpsd.git/commitdiff/d96c1154df8fa5ea0ad75bb853fdd5a8080d5081
More information about the pld-cvs-commit
mailing list