hdf5 does not change it's SONAME with version bumps but instead checks the library version at runtime and aborts if it has changed, so everything linking against libhdf5 has to be recompiled or you get errors like $ h5totxt foo.h5 Warning! ***HDF5 library version mismatched error*** The HDF5 header files used to compile this application do not match the version used by the HDF5 library to which this application is linked. Data corruption or segmentation faults may occur if the application continues. This can happen when an application was compiled by one version of HDF5 but linked with a different version of static or shared HDF5 library. You should recompile the application or check your shared library related settings such as 'LD_LIBRARY_PATH'. You can, at your own risk, disable this warning by setting the environment variable 'HDF5_DISABLE_VERSION_CHECK' to a value of '1'. Setting it to 2 or higher will suppress the warning messages totally. Headers are 1.8.9, library is 1.8.10 ... Since the SONAME does not change, preserve-libs and similar can't help with this. This seems like a good case for the new EAPI5 subslots. $ emerge --info Portage 2.2.01.21313-prefix (prefix/linux/x86, gcc-4.6.3, unavailable, 2.6.18-308.11.1.el5PAE i686) ================================================================= System uname: Linux-2.6.18-308.11.1.el5PAE-i686-Intel-R-_Xeon-R-_CPU_5150_@_2.66GHz-with-redhat-5.8-Tikanga Timestamp of tree: Thu, 29 Nov 2012 19:49:53 +0000 app-shells/bash: 4.2_p37::gentoo_prefix dev-lang/python: 2.7.3-r2::gentoo_prefix dev-util/cmake: 2.8.9-r1::gentoo_prefix dev-util/pkgconfig: 0.27.1::gentoo_prefix sys-devel/autoconf: 2.69::gentoo_prefix sys-devel/automake: 1.12.4::gentoo_prefix sys-devel/binutils: 2.23::gentoo_prefix sys-devel/gcc: 4.6.3::gentoo_prefix sys-devel/gcc-config: 1.5-r2::gentoo_prefix sys-devel/libtool: 2.4.2::gentoo_prefix sys-devel/make: 3.82-r4::gentoo_prefix sys-kernel/linux-headers: 3.6::gentoo_prefix (virtual/os-headers) Repositories: gentoo_prefix g-cpan ACCEPT_KEYWORDS="x86-linux ~x86-linux" ACCEPT_LICENSE="@FREE" CBUILD="i686-pc-linux-gnu" CFLAGS="-march=native -O2 -pipe" CHOST="i686-pc-linux-gnu" CONFIG_PROTECT="/etc" CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/env.d /etc/fonts/fonts.conf /etc/gconf /etc/portage /etc/revdep-rebuild /etc/terminfo /etc/texmf/language.dat.d /etc/texmf/language.def.d /etc/texmf/updmap.d /etc/texmf/web2c" CXXFLAGS="-march=native -O2 -pipe" DISTDIR="/home/astrosun/wthrowe/tmp/distfiles" EMERGE_DEFAULT_OPTS="--ask" FCFLAGS="-O2 -march=i686 -pipe" FEATURES="assume-digests binpkg-logs clean-logs collision-protect compress-build-logs config-protect-if-modified distlocks ebuild-locks fixlafiles force-prefix news parallel-fetch preserve-libs protect-owned sfperms strict unknown-features-warn unmerge-orphans userfetch" FFLAGS="-O2 -march=i686 -pipe" GENTOO_MIRRORS="http://distfiles.gentoo.org" LANG="POSIX" LDFLAGS="-Wl,-O1 -Wl,--hash-style=gnu" MAKEOPTS="-j3" PKGDIR="/home/supernova/wthrowe/gentoo/usr/portage/packages" PORTAGE_CONFIGROOT="/home/supernova/wthrowe/gentoo/" PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --compress --force --whole-file --delete --stats --human-readable --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages" PORTAGE_TMPDIR="/home/supernova/wthrowe/gentoo/var/tmp" PORTDIR="/home/supernova/wthrowe/gentoo/usr/portage" PORTDIR_OVERLAY="/home/supernova/wthrowe/gentoo/var/lib/g-cpan" SYNC="rsync://rsync.prefix.freens.org/gentoo-portage-prefix" USE="berkdb bindist bzip2 cli cracklib crypt cxx dri fortran gdbm iconv ipv6 modules mudflap ncurses nls nptl openmp pcre pppd prefix readline session ssl tcpd unicode x86 zlib" ALSA_CARDS="ali5451 als4000 atiixp atiixp-modem bt87x ca0106 cmipci emu10k1 emu10k1x ens1370 ens1371 es1938 es1968 fm801 hda-intel intel8x0 intel8x0m maestro3 trident usb-audio via82xx via82xx-modem ymfpci" 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="authn_core authz_core socache_shmcb unixd actions alias auth_basic authn_alias authn_anon authn_dbm authn_default authn_file authz_dbm authz_default authz_groupfile authz_host authz_owner authz_user autoindex cache cgi cgid dav dav_fs dav_lock deflate dir disk_cache env expires ext_filter file_cache filter headers include info log_config logio mem_cache mime mime_magic negotiation rewrite setenvif speling status unique_id userdir usertrack vhost_alias" CALLIGRA_FEATURES="kexi words flow plan sheets stage tables krita karbon braindump" CAMERAS="ptp2" COLLECTD_PLUGINS="df interface irq load memory rrdtool swap syslog" ELIBC="glibc" GPSD_PROTOCOLS="ashtech aivdm earthmate evermore fv18 garmin garmintxt gpsclock itrax mtk3301 nmea ntrip navcom oceanserver oldstyle oncore rtcm104v2 rtcm104v3 sirf superstar2 timing tsip tripmate tnt ubx" INPUT_DEVICES="keyboard mouse evdev" KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LIBREOFFICE_EXTENSIONS="presenter-console presenter-minimizer" PHP_TARGETS="php5-3" PYTHON_SINGLE_TARGET="python2_7" PYTHON_TARGETS="python2_7 python3_2" RUBY_TARGETS="ruby18 ruby19" USERLAND="GNU" VIDEO_CARDS="fbdev glint intel mach64 mga nouveau nv r128 radeon savage sis tdfx trident vesa via vmware dummy v4l" XTABLES_ADDONS="quota2 psd pknock lscan length2 ipv4options ipset ipp2p iface geoip fuzzy condition tee tarpit sysrq steal rawnat logmark ipmark dhcpmac delude chaos account" Unset: CPPFLAGS, CTARGET, INSTALL_MASK, LC_ALL, LINGUAS, PORTAGE_BUNZIP2_COMMAND, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS, USE_PYTHON
(In reply to comment #0) > hdf5 does not change it's SONAME with version bumps but instead checks the > library version at runtime and aborts if it has changed, so everything > linking against libhdf5 has to be recompiled or you get errors like SONAME hasn't changed cause ABI of the library didn't. It's perfectly fine to use h5utils, pytables, h5py etc compiled with different version of library. At least I haven't noticed any issues in the past. I give you that this warning message is pretty damn annoying, though I don't see anything that would justify rebuilding all reverse dependencies.
hdf5 api does not change very much: http://upstream-tracker.org/versions/hdf5.html
(In reply to comment #1) > SONAME hasn't changed cause ABI of the library didn't. It's perfectly fine > to use h5utils, pytables, h5py etc compiled with different version of > library. At least I haven't noticed any issues in the past. > I give you that this warning message is pretty damn annoying, though I don't > see anything that would justify rebuilding all reverse dependencies. Despite being referred to as a warning, it is actually a fatal error unless you've set the mentioned environment variable. h5totxt just aborts without printing any data. It does seem to work if HDF5_DISABLE_VERSION_CHECK is set to 2. If you want to avoid rebuilding reverse dependencies, maybe ship an environment file setting that?
(In reply to comment #3) > (In reply to comment #1) > > SONAME hasn't changed cause ABI of the library didn't. It's perfectly fine > > to use h5utils, pytables, h5py etc compiled with different version of > > library. At least I haven't noticed any issues in the past. > > I give you that this warning message is pretty damn annoying, though I don't > > see anything that would justify rebuilding all reverse dependencies. > > Despite being referred to as a warning, it is actually a fatal error unless > you've set the mentioned environment variable. h5totxt just aborts without > printing any data. > > It does seem to work if HDF5_DISABLE_VERSION_CHECK is set to 2. If you want > to avoid rebuilding reverse dependencies, maybe ship an environment file > setting that? I'd like to avoid that too, cause *if* something ever breaks unaware person would spend a lot of time trying to find out what hit him. Would you be satisfied with pkg_inst() message? Something like: If you have upgraded hdf5 from previous version, the software using it may start complaining about mismatch between headers and library version. You have two options: * export HDF5_DISABLE_VERSION_CHECK=2 to get rid of the warning/error message * re-emerge all reverse dependencies (type emerge --depclean -pv sci-libs/hdf5, to get the list)
(In reply to comment #4) > I'd like to avoid that too, cause *if* something ever breaks unaware person > would spend a lot of time trying to find out what hit him. Would you be > satisfied with pkg_inst() message? Something like: > > If you have upgraded hdf5 from previous version, the software using it may > start complaining about mismatch between headers and library version. You > have two options: > * export HDF5_DISABLE_VERSION_CHECK=2 to get rid of the warning/error > message > * re-emerge all reverse dependencies (type emerge --depclean -pv > sci-libs/hdf5, to get the list) That sounds reasonable.
+ 04 Dec 2012; Kacper Kowalik <xarthisius@gentoo.org> hdf5-1.8.10.ebuild: + Add warning message about possible mismatch between headers and library in + reverse dependencies. Fixes bug 445268 by William Throwe <wtt6@cornell.edu>