Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 445268 - sci-libs/hdf5 - Should use subslots. - HDF5 library version mismatched error
Summary: sci-libs/hdf5 - Should use subslots. - HDF5 library version mismatched error
Status: RESOLVED FIXED
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: [OLD] Library (show other bugs)
Hardware: All Linux
: Normal enhancement (vote)
Assignee: Kacper Kowalik (Xarthisius) (RETIRED)
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2012-11-29 22:08 UTC by William Throwe
Modified: 2012-12-04 07:00 UTC (History)
2 users (show)

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


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description William Throwe 2012-11-29 22:08:04 UTC
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
Comment 1 Kacper Kowalik (Xarthisius) (RETIRED) gentoo-dev 2012-11-30 15:48:03 UTC
(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.
Comment 2 Sébastien Fabbro (RETIRED) gentoo-dev 2012-11-30 16:45:26 UTC
hdf5 api does not change very much:

http://upstream-tracker.org/versions/hdf5.html
Comment 3 William Throwe 2012-11-30 17:53:16 UTC
(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?
Comment 4 Kacper Kowalik (Xarthisius) (RETIRED) gentoo-dev 2012-12-02 08:57:36 UTC
(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)
Comment 5 William Throwe 2012-12-04 02:42:54 UTC
(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.
Comment 6 Kacper Kowalik (Xarthisius) (RETIRED) gentoo-dev 2012-12-04 07:00:15 UTC
+  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>