[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