Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 308487 - app-misc/gpsdrive-2.10_pre7 fails to compile if boost-1.42.0 is installed
Summary: app-misc/gpsdrive-2.10_pre7 fails to compile if boost-1.42.0 is installed
Status: RESOLVED FIXED
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: Current packages (show other bugs)
Hardware: All Linux
: High normal (vote)
Assignee: Steve Arnold
URL:
Whiteboard:
Keywords:
Depends on:
Blocks: 301673
  Show dependency tree
 
Reported: 2010-03-08 16:14 UTC by Juergen Rose
Modified: 2010-03-29 04:30 UTC (History)
2 users (show)

See Also:
Package list:
Runtime testing required: ---


Attachments
/var/tmp/portage/app-misc/gpsdrive-2.10_pre7/temp/build.log (build.log,60.02 KB, text/plain)
2010-03-08 16:16 UTC, Juergen Rose
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Juergen Rose 2010-03-08 16:14:59 UTC
'emerge -v gpsdrive' fails with:
...
 cd /var/tmp/portage/app-misc/gpsdrive-2.10_pre7/work/gpsdrive-2.10pre7_build/src && /usr/bin/x86_64-pc-linux-gnu-g++  -DGDA3 -DMAPNIK -DDBUS -DWITH_KISMET -DDEBUG  -DNDEBUG -march=nocona -O2 -pipe -fomit-frame-pointer  -I/var/tmp/portage/app-misc/gpsdrive-2.10_pre7/work/gpsdrive-2.10pre7_build/src -I/var/tmp/portage/app-misc/gpsdrive-2.10_pre7/work/gpsdrive-2.10pre7/src -I/var/tmp/portage/app-misc/gpsdrive-2.10_pre7/work/gpsdrive-2.10pre7_build -I/usr/include/gtk-2.0 -I/usr/lib64/glib-2.0/include -I/usr/include/glib-2.0 -I/usr/include/pango-1.0 -I/usr/lib/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/libxml2 -I/usr/include/freetype2 -I/usr/include/libgda-3.0 -I/usr/include/dbus-1.0 -I/usr/lib64/dbus-1.0/include   -fPIC -o CMakeFiles/gpsdrive.dir/mapnik.o -c /var/tmp/portage/app-misc/gpsdrive-2.10_pre7/work/gpsdrive-2.10pre7/src/mapnik.cpp
In file included from /usr/include/mapnik/filter.hpp:29,
                 from /usr/include/mapnik/rule.hpp:35,
                 from /usr/include/mapnik/feature_type_style.hpp:28,
                 from /usr/include/mapnik/map.hpp:33,
                 from /var/tmp/portage/app-misc/gpsdrive-2.10_pre7/work/gpsdrive-2.10pre7/src/mapnik.cpp:14:
/usr/include/mapnik/feature.hpp:32:34: error: boost/property_map.hpp: No such file or directory
In file included from /usr/include/mapnik/filter.hpp:29,
                 from /usr/include/mapnik/rule.hpp:35,
                 from /usr/include/mapnik/feature_type_style.hpp:28,
                 from /usr/include/mapnik/map.hpp:33,
                 from /var/tmp/portage/app-misc/gpsdrive-2.10_pre7/work/gpsdrive-2.10pre7/src/mapnik.cpp:14:
/usr/include/mapnik/feature.hpp:40: error: expected initializer before '<' token
/usr/include/mapnik/feature.hpp:45: error: expected class-name before ',' token
/usr/include/mapnik/feature.hpp: In constructor 'mapnik::feature<T1, T2>::feature(int)':
/usr/include/mapnik/feature.hpp:62: error: class 'mapnik::feature<T1, T2>' does not have any field named 'properties'
In file included from /var/tmp/portage/app-misc/gpsdrive-2.10_pre7/work/gpsdrive-2.10pre7/src/mapnik.cpp:20:
/usr/include/mapnik/memory_datasource.hpp: In member function 'void mapnik::point_datasource::add_point(double, double, const char*, const char*)':
/usr/include/mapnik/memory_datasource.hpp:64: error: no match for 'operator[]' in 'feature.boost::shared_ptr< <template-parameter-1-1> >::operator* [with T = mapnik::feature<mapnik::geometry<mapnik::vertex<double, 2> >, boost::shared_ptr<mapnik::raster> >]()[key]'
make[2]: *** [src/CMakeFiles/gpsdrive.dir/mapnik.o] Error 1



root@lynx:/root(21)# qlist -Iv boost
app-admin/eselect-boost-0.3
dev-libs/boost-1.39.0
dev-libs/boost-1.42.0
dev-util/boost-build-1.39.0
dev-util/boost-build-1.42.0


root@lynx:/root(22)# qlist -Iv mapnik
sci-geosciences/mapnik-0.6.1-r2
sci-geosciences/mapnik-world-boundaries-20090514


Reproducible: Always




root@lynx:/root(23)# emerge --info =app-misc/gpsdrive-2.10_pre7
Portage 2.1.8.1 (default/linux/amd64/10.0/desktop, gcc-4.4.3, glibc-2.11-r1, 2.6.32-gentoo-r7 x86_64)
=================================================================
                        System Settings
=================================================================
System uname: Linux-2.6.32-gentoo-r7-x86_64-Intel-R-_Core-TM-2_Duo_CPU_T8300_@_2.40GHz-with-gentoo-2.0.1
Timestamp of tree: Mon, 08 Mar 2010 10:30:01 +0000
app-shells/bash:     4.1_p2
dev-java/java-config: 2.1.10
dev-lang/python:     2.6.4-r1, 3.1.1-r1
dev-python/pycrypto: 2.1.0
dev-util/cmake:      2.8.0-r2
sys-apps/baselayout: 2.0.1
sys-apps/openrc:     0.6.0-r1
sys-apps/sandbox:    2.2
sys-devel/autoconf:  2.13, 2.65
sys-devel/automake:  1.7.9-r2, 1.8.5-r3, 1.9.6-r3, 1.10.3, 1.11.1
sys-devel/binutils:  2.20.1
sys-devel/gcc:       4.4.3
sys-devel/gcc-config: 1.4.1
sys-devel/libtool:   2.2.6b
virtual/os-headers:  2.6.33
ACCEPT_KEYWORDS="amd64 ~amd64"
ACCEPT_LICENSE="* -@EULA PUEL dlj-1.1 skype-eula"
CBUILD="x86_64-pc-linux-gnu"
CFLAGS="-march=nocona -O2 -pipe -fomit-frame-pointer"
CHOST="x86_64-pc-linux-gnu"
CONFIG_PROTECT="/etc /usr/share/X11/xkb /usr/share/config /var/lib/hsqldb"
CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/env.d /etc/env.d/java/ /etc/eselect/postgresql /etc/fonts/fonts.conf /etc/gconf /etc/gentoo-release /etc/php/apache2-php5/ext-active/ /etc/php/cgi-php5/ext-active/ /etc/php/cli-php5/ext-active/ /etc/revdep-rebuild /etc/sandbox.d /etc/terminfo /etc/texmf/language.dat.d /etc/texmf/language.def.d /etc/texmf/updmap.d /etc/texmf/web2c"
CXXFLAGS="-march=nocona -O2 -pipe -fomit-frame-pointer"
DISTDIR="/usr/portage/distfiles"
FEATURES="assume-digests distlocks fixpackages news parallel-fetch protect-owned sandbox sfperms strict unmerge-logs unmerge-orphans userfetch"
FFLAGS="-march=nocona -O2 -pipe -fomit-frame-pointer"
GENTOO_MIRRORS="http://distfiles.gentoo.org"
LDFLAGS="-Wl,-O1"
LINGUAS="de fr"
MAKEOPTS="-j1"
PKGDIR="/usr/portage/packages"
PORTAGE_CONFIGROOT="/"
PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --compress --force --whole-file --delete --stats --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages"
PORTAGE_TMPDIR="/var/tmp"
PORTDIR="/usr/portage"
PORTDIR_OVERLAY="/var/lib/layman/dotnet /var/lib/layman/lordvan /var/lib/layman/n4g /var/lib/layman/science /var/lib/layman/suka /var/lib/layman/x11 /var/lib/layman/zugaina /var/lib/layman/java-overlay /var/lib/layman/sunrise /usr/local/portage"
SYNC="rsync://rsync.gentoo.org/gentoo-portage"
USE="64bit X Xaw3d a52 aac abiword acl acpi administrator afs alsa amd64 ao aotuv apache2 applet archive arpack asf aspell assistant atlas audacious audiofile automap automount bash-completion beagle berkdb blas blast bluetooth boo boost branding bzip2 c++ cairo cardbus cdda cddb cdf cdio cdparanoia cdr cg cgi chm cli consolekit corba cracklib crypt css cuda cups curl cxx daap db dbase dbi dbm dbus designer devhelp device-mapper dga dia djvu doc dri ds2490 dts dv dvb dvd dvdr dvi eds elf emacs emboss empathy encode epiphany esd evo examples exif expat extensions extra extras fam fame ffmpeg fftw firefox fits flac fltk foomaticdb fortran fpx fts3 fuse galago garmin gd gdal gdbm geolocation geos gif gimp ginac git glade glib glitz gml gmp gmtsuppl gnokii gnome gnome-keyring gnome-print gnuplot gnutls gphoto2 gpm grammar graphics graphtft graphviz grass gs gsl gsm gstreamer gtk guile hal harness hddtemp hdf hdf5 hdri hlapi http httpd hvm iconv icq icu id3 ide imagemagick imap innodb inotify ipod ipv6 irda ithreads jabber jadetex java java5 java6 jbig john jpeg jpeg2k kde kdrive kerberos kexi kpathsea kvm ladspa lame lapack laptop latex latex3 lcms ldap lensfun libffi libgda libnotify libsamplerate lirc lua lzo mad mail maildir mailwrapper mapnik math matroska mikmod mkl mmx mmxext mng modules mono moonlight motif mozdevelop mozilla mp3 mp4 mpeg mpi mplayer mtp mudflap multilib musicbrainz mysql mysqli nautilus ncurses neXt netcdf netpbm network networking networkmanager nfs nls nntp nptl nptlonly nsplugin ntfs ntp numarray numeric nvidia obex objc ocaml octave odbc ogdi ogg ole openexr opengl openmp overview pae pam pcre pda pdf perl plotutils plugins png podcast policykit posix postgres postscript ppds pppd preview-latex proj projectx pstricks pulseaudio pymol python qhull qt3support qt4 quicktime readline reflection reiserfs rle romio rpc rrdcgi rrdtool samba sasl science sdl secure-delete semantic-desktop server session sip slang slp smbclient smp sndfile snmp soup sox speex spell spl sql sqlite sse sse2 ssl startup-notification stlport subtitles subversion suexec svg swig sysfs szip t1lib tcl tcpd tex tex4ht texmacs theora thinkpad threads thunar thunderbird tidy tiff tk tntc tools truetype udev unicode usb userlocales utempter v4l2 virtualbox vorbis wav webdav webdav-serf webkit wifi wmf wxwidgets x264 xattr xcb xemacs xext xine xml xmlreader xmlrpc xorg xpm xulrunner xv xvid xvmc zlib zvbi" ALSA_CARDS="intel8x0" ALSA_PCM_PLUGINS="adpcm alaw asym copy dmix dshare dsnoop empty extplug file hooks iec958 ioplug ladspa lfloat linear meter mmap_emul mulaw multi null plug rate route share shm softvol" APACHE2_MODULES="actions alias auth_basic auth_digest authn_anon authn_dbd authn_dbm authn_default authn_file authz_dbm authz_default authz_groupfile authz_host authz_owner authz_user autoindex cache dav dav_fs dav_lock dbd deflate dir disk_cache env expires ext_filter file_cache filter headers ident imagemap include info log_config logio mem_cache mime mime_magic negotiation proxy proxy_ajp proxy_balancer proxy_connect proxy_http rewrite setenvif so speling status unique_id userdir usertrack vhost_alias" CAMERAS="canon" DVB_CARDS="usb-wt220u" ELIBC="glibc" INPUT_DEVICES="keyboard mouse                evdev                synaptics               " KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LINGUAS="de fr" NETBEANS_MODULES="apisupport cnd dlight enterprise ergonomics groovy gsf harness ide identity j2ee java mobility nb php profiler ruby websvccommon xml" QEMU_SOFTMMU_TARGETS="i386 ppc ppc64 x86_64" QEMU_USER_TARGETS="arm i386 x86_64" RUBY_TARGETS="ruby18 jruby" USERLAND="GNU" VIDEO_CARDS="nv nvidia nouveau vesa" 
Unset:  CPPFLAGS, CTARGET, EMERGE_DEFAULT_OPTS, INSTALL_MASK, LANG, LC_ALL, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS

=================================================================
                        Package Settings
=================================================================

app-misc/gpsdrive-2.10_pre7 was built with the following:
USE="dbus doc gdal mapnik (multilib) -debug -scripts" 



root@lynx:/root(24)# emerge -pqv =app-misc/gpsdrive-2.10_pre7
[ebuild   R   ] app-misc/gpsdrive-2.10_pre7  USE="dbus doc gdal mapnik -debug -scripts"
Comment 1 Juergen Rose 2010-03-08 16:16:13 UTC
Created attachment 222695 [details]
/var/tmp/portage/app-misc/gpsdrive-2.10_pre7/temp/build.log
Comment 2 Sebastian Luther (few) 2010-03-08 17:35:28 UTC
That's another fun bug. It's not gpsdrive itself, but its dependency mapnik causing the problems.
Comment 3 Steve Arnold archtester gentoo-dev 2010-03-12 05:48:06 UTC
The property_map stuff changed quite a bit between 1.39 and 1.41, which is another reason why the current version of mapnik is pegged at less than 1.41 until a new version of mapnik is released.
Comment 4 Sebastian Luther (few) 2010-03-12 06:32:50 UTC
(In reply to comment #3)
> The property_map stuff changed quite a bit between 1.39 and 1.41, which is
> another reason why the current version of mapnik is pegged at less than 1.41
> until a new version of mapnik is released.
> 

That doesn't help here. app-misc/gpsdrive doesn't use boost itself. It includes mapniks headers, which in turn include boost headers. Since gpsdrive does not specify a boost include dir, the eselected one is used, which breaks if it is 1.42. To fix this it's neccesary for gpsdrive to pass the boost directory used by mapnik to all its compiler invocations.
Comment 5 Steve Arnold archtester gentoo-dev 2010-03-21 19:32:55 UTC
I haven't observed that here, even with 4 version of boost installed:

$ eselect boost list
Available boost versions:
  [1]   boost-1.37/default
  [2]   boost-1.39/default
  [3]   boost-1.41/default
  [4]   boost-1.42/default *

After finally getting mapnik to build and link against the specified version of boost, I haven't seen any issues with boost or mapnik.  Mapnik looks fine:

$ ldd -r /usr/lib64/libmapnik.so.0.6.1|grep boost
        libboost_filesystem-mt-1_39.so.1.39.0 => /usr/lib/libboost_filesystem-mt
        libboost_regex-mt-1_39.so.1.39.0 => /usr/lib/libboost_regex-mt-1_39.so.1
        libboost_thread-mt-1_39.so.1.39.0 => /usr/lib/libboost_thread-mt-1_39.so
        libboost_system-mt-1_39.so.1.39.0 => /usr/lib/libboost_system-mt-1_39.so

but it appears gpsdrive needs to be more selective in what it links against:

$ ldd -r /usr/bin/gpsdrive|grep boost
        libboost_filesystem-mt-1_41.so.1.41.0 => /usr/lib/libboost_filesystem-mt-1_41.so.1.41.0 (0x00007f35ebcb3000)
        libboost_system-mt-1_41.so.1.41.0 => /usr/lib/libboost_system-mt-1_41.so.1.41.0 (0x00007f35e9b0b000)
        libboost_thread-mt-1_39.so.1.39.0 => /usr/lib/libboost_thread-mt-1_39.so.1.39.0 (0x00007f35e98f4000)
        libboost_filesystem-mt-1_39.so.1.39.0 => /usr/lib/libboost_filesystem-mt-1_39.so.1.39.0 (0x00007f35e063e000)
        libboost_regex-mt-1_39.so.1.39.0 => /usr/lib/libboost_regex-mt-1_39.so.1.39.0 (0x00007f35e036a000)
        libboost_system-mt-1_39.so.1.39.0 => /usr/lib/libboost_system-mt-1_39.so.1.39.0 (0x00007f35dbea9000)

I have no idea why it's not trying to link against 1.42 here, but I'm just not seeing the failure, so I guess the bug summary isn't quite right...  Anyway, I'll see if I can get it to link correctly, at least link against only one version.  The real fix would be to get upstream to update their code, and the ebuild workaround would be easy if there were a boost eclass that could enforce something like WANT_BOOST="1.39" but we don't currently have such an eclass.
Comment 6 Steve Arnold archtester gentoo-dev 2010-03-21 19:57:55 UTC
Even though gpsdrive is a bit too willing to link against anything in /usr/lib, I did manage to finally reproduce the property_map include error.  At least now I have something I can try to fix...
Comment 7 Steve Arnold archtester gentoo-dev 2010-03-29 04:30:07 UTC
Wait a bit, then sync, and try the new revs of both mapnik and gpsdrive.  They should build and link against Boost-1.39 only (with no unknown symbols or other weird stuff).

If you encounter another problem with either one, please file a new bug...  I'm tired of this one...  :/