Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 452622 - dev-python/pytables needs to be recompiled for the exact sci-libs/hdf5 version.
Summary: dev-python/pytables needs to be recompiled for the exact sci-libs/hdf5 version.
Status: RESOLVED FIXED
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: [OLD] Library (show other bugs)
Hardware: All Linux
: Normal normal (vote)
Assignee: Gentoo Science Related Packages
URL:
Whiteboard:
Keywords: NeedPatch
: 452672 (view as bug list)
Depends on:
Blocks: 505296
  Show dependency tree
 
Reported: 2013-01-17 00:01 UTC by David Mohr
Modified: 2014-03-22 16:17 UTC (History)
5 users (show)

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


Attachments
patch to hdf5 ebuild (hdf5-1.8.10_p1.ebuild.patch,1.29 KB, patch)
2013-02-27 04:11 UTC, William Throwe
Details | Diff
patch to pytables ebuild (pytables-2.4.0.ebuild.patch,556 bytes, patch)
2013-02-27 04:19 UTC, William Throwe
Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description David Mohr 2013-01-17 00:01:44 UTC
If there is a minor version bump in hdf5, any python code using pytables will fail with an error like:
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.8, library is 1.8.10
	    SUMMARY OF THE HDF5 CONFIGURATION
	    =================================

General Information:
-------------------
		   HDF5 Version: 1.8.10
		  Configured on: Mon Jan 14 11:10:24 MST 2013
		  Configured by: root@kelvin
		 Configure mode: production
		    Host system: x86_64-pc-linux-gnu
	      Uname information: Linux kelvin 3.5.7-gentoo #1 SMP Tue Nov 20 14:51:34 MST 2012 x86_64 Intel(R) Core(TM) i7 CPU 980 @ 3.33GHz GenuineIntel GNU/Linux
		       Byte sex: little-endian
		      Libraries: 
	     Installation point: /usr

Compiling Options:
------------------
               Compilation Mode: production
                     C Compiler: /usr/bin/x86_64-pc-linux-gnu-gcc
                         CFLAGS: -march=native -O2 -pipe
                      H5_CFLAGS: -std=c99 -pedantic -Wall -Wextra -Wundef -Wshadow -Wpointer-arith -Wbad-function-cast -Wcast-qual -Wcast-align -Wwrite-strings -Wconversion -Waggregate-return -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -Wredundant-decls -Wnested-externs -Winline -Wno-long-long -Wfloat-equal -Wmissing-format-attribute -Wmissing-noreturn -Wpacked -Wdisabled-optimization -Wformat=2 -Wendif-labels -Wdeclaration-after-statement -Wold-style-definition -Winvalid-pch -Wvariadic-macros -Wnonnull -Winit-self -Wmissing-include-dirs -Wswitch-default -Wswitch-enum -Wunused-macros -Wunsafe-loop-optimizations -Wc++-compat -Wstrict-overflow -Wlogical-op -Wlarger-than=2048 -Wvla -Wsync-nand -Wframe-larger-than=16384 -Wpacked-bitfield-compat -Wstrict-aliasing -Wstrict-overflow=5 -Wjump-misses-init -Wunsuffixed-float-constants -O3 -fomit-frame-pointer -finline-functions
                      AM_CFLAGS: 
                       CPPFLAGS: 
                    H5_CPPFLAGS: -D_POSIX_C_SOURCE=199506L   -DNDEBUG -UH5_DEBUG_API
                    AM_CPPFLAGS: -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_BSD_SOURCE -D_GNU_SOURCE 
               Shared C Library: yes
               Static C Library: no
  Statically Linked Executables: no
                        LDFLAGS: -Wl,-O1 -Wl,--as-needed
                     H5_LDFLAGS: 
                     AM_LDFLAGS: 
 	 	Extra libraries:  -lz -lrt -lm 
 		       Archiver: x86_64-pc-linux-gnu-ar
 		 	 Ranlib: x86_64-pc-linux-gnu-ranlib
 	      Debugged Packages: 
		    API Tracing: no

Languages:
----------
                        Fortran: yes
               Fortran Compiler: /usr/bin/x86_64-pc-linux-gnu-gfortran
          Fortran 2003 Compiler: no
                  Fortran Flags: -O2 -pipe
               H5 Fortran Flags:  
               AM Fortran Flags:  -O2 -pipe
         Shared Fortran Library: yes
         Static Fortran Library: no

                            C++: yes
                   C++ Compiler: /usr/bin/x86_64-pc-linux-gnu-g++
                      C++ Flags: -march=native -O2 -pipe
                   H5 C++ Flags:  
                   AM C++ Flags: 
             Shared C++ Library: yes
             Static C++ Library: no

Features:
---------
                  Parallel HDF5: no
             High Level library: yes
                   Threadsafety: no
            Default API Mapping: v18
 With Deprecated Public Symbols: yes
         I/O filters (external): deflate(zlib)
         I/O filters (internal): shuffle,fletcher32,nbit,scaleoffset
                            MPE: no
                     Direct VFD: yes
                        dmalloc: no
Clear file buffers before write: yes
           Using memory checker: no
         Function Stack Tracing: no
                           GPFS: no
      Strict File Format Checks: no
   Optimization Instrumentation: no
       Large File Support (LFS): yes
Bye...
zsh: abort

Neither python-updater nor revdep-rebuild catch this, so it's very annoying since it time and time again breaks my long running scripts.

I mentioned this issue on irc, and they recommended using slots to express this runtime dependency ( http://devmanual.gentoo.org/ebuild-writing/eapi/index.html ), but any fix will be appreciated :-).
Comment 1 David Mohr 2013-01-17 00:02:25 UTC
% sudo emerge --info
Password: 
Portage 2.2.0_alpha153 (default/linux/amd64/10.0, gcc-4.5.4, glibc-2.15-r3, 3.5.7-gentoo x86_64)
=================================================================
System uname: Linux-3.5.7-gentoo-x86_64-Intel-R-_Core-TM-_i7_CPU_980_@_3.33GHz-with-gentoo-2.2
Timestamp of tree: Wed, 16 Jan 2013 10:30:01 +0000
ld GNU ld (GNU Binutils) 2.22
ccache version 3.1.8 [disabled]
app-shells/bash:          4.2_p37
dev-java/java-config:     2.1.11-r3
dev-lang/python:          2.6.8, 2.7.3-r3, 3.2.3
dev-util/ccache:          3.1.8
dev-util/cmake:           2.8.9
dev-util/pkgconfig:       0.27.1
sys-apps/baselayout:      2.2
sys-apps/openrc:          0.11.8
sys-apps/sandbox:         2.5
sys-devel/autoconf:       2.13, 2.69
sys-devel/automake:       1.11.6
sys-devel/binutils:       2.22-r1
sys-devel/gcc:            4.5.4, 4.6.3
sys-devel/gcc-config:     1.7.3
sys-devel/libtool:        2.4-r1
sys-devel/make:           3.82-r4
sys-kernel/linux-headers: 3.6 (virtual/os-headers)
sys-libs/glibc:           2.15-r3
Repositories: gentoo kde java-overlay gentoo-haskell science oal
Installed sets: @oal, @oalcore
ACCEPT_KEYWORDS="amd64"
ACCEPT_LICENSE="*"
CBUILD="x86_64-pc-linux-gnu"
CFLAGS="-march=native -O2 -pipe"
CHOST="x86_64-pc-linux-gnu"
CONFIG_PROTECT="/etc /usr/share/config /usr/share/gnupg/qualified.txt /var/lib/hsqldb /var/yp"
CONFIG_PROTECT_MASK="${EPREFIX}/etc/gconf /etc/X11 /etc/ca-certificates.conf /etc/dbus-1 /etc/dconf /etc/env.d /etc/env.d/java/ /etc/fonts /etc/fonts/fonts.conf /etc/gconf /etc/gentoo-release /etc/hotplug /etc/init.d /etc/inputrc /etc/php /etc/revdep-rebuild /etc/sandbox.d /etc/services /etc/sound /etc/sysstat /etc/terminfo /etc/texmf /etc/texmf/language.dat.d /etc/texmf/language.def.d /etc/texmf/updmap.d /etc/texmf/web2c /etc/udev /etc/xdg /usr/share/config"
CXXFLAGS="-march=native -O2 -pipe"
DISTDIR="/nfs/oalportage/distfiles"
FCFLAGS="-O2 -pipe"
FEATURES="assume-digests binpkg-logs candy config-protect-if-modified distlocks ebuild-locks fail-clean fixlafiles merge-sync news parallel-fetch preserve-libs sandbox sfperms strict unknown-features-warn unmerge-logs unmerge-orphans userfetch"
FFLAGS="-O2 -pipe"
GENTOO_MIRRORS="http://ftp.ucsb.edu/pub/mirrors/linux/gentoo/ http://mirror.usu.edu/mirrors/gentoo/  http://mirror.mcs.anl.gob/pub/gentoo http://distfiles.gentoo.org ftp://mirror.iawnet.sandia.gov/pub/gentoo/"
LANG="en_US.utf8"
LDFLAGS="-Wl,-O1 -Wl,--as-needed"
MAKEOPTS="-j12"
PKGDIR="/usr/portage/packages"
PORTAGE_CONFIGROOT="/"
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="/var/tmp"
PORTDIR="/usr/portage"
PORTDIR_OVERLAY="/nfs/oalportage/layman/kde /nfs/oalportage/layman/java-overlay /nfs/oalportage/layman/haskell /nfs/oalportage/layman/science /nfs/oalportage"
SYNC="rsync://tau.cs.unm.edu/gentoo-portage"
USE="X aac acl acpi alsa amd64 arts bash-completion berkdb bzip2 cairo calendar cli consolekit cpudetection cracklib crypt ctype cups curl cvs cxx dbus dri dvi emacs encode exif expat ffmpeg fftw finger flac flatfile fltk fontforge fortran ftp fuse gd gdbm gif git glib gmp gnome gnutls go gpm graphics graphviz gs gstreamer gtk gzip hal hscolour iconv icu imagemagick imap imlib java jbig jpeg jpeg2k kde kde4 lame lapack latex lm_sensors log4j lzo md5sum mjpeg mmx mng modules motif mp3 mpeg mpi mudflap multilib mysql ncurses nis nls nptl nsplugin ogg openexr opengl openmp pam pcre pdf phonon plotutils png pnm policykit postgres postscript pppd python qt3support qt4 quicktime rar readline ruby samba server session simpleXML soap sockets spell sql sqlite sse sse2 ssl subversion svg tcl tcpd tga threads tiff tk tokenizer toolkit-scroll-bars truetype unfpack unicode usb vim-syntax vim-with-x vorbis wmf wxwindows x264 xcomposite xml xmlrps xpm xprint xsl xvid zip zlib zsh-completion" ALSA_CARDS="ali5451 als4000 atiixp atiixp-modem bt87x ca0106 cmipci 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="evdev keyboard mouse" KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LIBREOFFICE_EXTENSIONS="presenter-console presenter-minimizer" LINGUAS="en en_US" PHP_TARGETS="php5-3" PYTHON_SINGLE_TARGET="python2_7" PYTHON_TARGETS="python2_7 python3_2" RUBY_TARGETS="ruby18 ruby19" USERLAND="GNU" VIDEO_CARDS="nv vesa nvidia" 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, EMERGE_DEFAULT_OPTS, INSTALL_MASK, LC_ALL, PORTAGE_BUNZIP2_COMMAND, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS, USE_PYTHON
Comment 2 Tom Wijsman (TomWij) (RETIRED) gentoo-dev 2013-01-17 00:13:47 UTC
Consider introducing slots in sci-libs/hdf5 such that dev-python/pytables gets recompiled each time the sci-libs/hdf5 slot changes, you can do this by depending on "sci-libs/hdf5:="; unless there is a better alternative available, as slotting might not be feasible if only a single package is affected.
Comment 3 William Throwe 2013-01-17 00:20:37 UTC
(In reply to comment #2)
> Consider introducing slots in sci-libs/hdf5 such that dev-python/pytables
> gets recompiled each time the sci-libs/hdf5 slot changes, you can do this by
> depending on "sci-libs/hdf5:="; unless there is a better alternative
> available, as slotting might not be feasible if only a single package is
> affected.

This affects almost every package using hdf5.  I requested the same thing in bug 445268, so this might be considered a duplicate.  I'd prefer a better solution to what got done in that bug, though.
Comment 4 Sébastien Fabbro (RETIRED) gentoo-dev 2013-01-17 16:47:05 UTC
*** Bug 452672 has been marked as a duplicate of this bug. ***
Comment 5 David Mohr 2013-01-17 17:48:51 UTC
Generally speaking I think the message and the abort by default is strange: Either the ABI did change, and they should've changed SONAME, or there wasn't an ABI change and then compatability should be ensured.

I found the following thread on their ML:
  http://hdf-forum.184993.n3.nabble.com/Results-of-backward-binary-compatibility-tests-for-libhdf5-td2774626.html

So here we can see:
- there was a case where the warning and abort was useful,
- they attempt to maintain compatability

In the end I'd vote for using subslots, since personally I'd rather rebuild all libraries that depend on hdf5 rather than silence that warning.
Comment 6 Sébastien Fabbro (RETIRED) gentoo-dev 2013-01-17 17:57:46 UTC
http://upstream-tracker.org/versions/hdf5.html shows no api changes since 1.8.7
Comment 7 William Throwe 2013-02-27 04:11:53 UTC
Created attachment 340252 [details, diff]
patch to hdf5 ebuild

First part of my proposed patch set.  This one bumps hdf5 to EAPI5, adds a subslot, and removes the warning message.  Patch for pytables ebuild coming up.
Comment 8 William Throwe 2013-02-27 04:19:27 UTC
Created attachment 340254 [details, diff]
patch to pytables ebuild

Second part of my proposed patch set.  This one bumps pytables to EAPI5 and adds a slot := dependency on hdf5.
Comment 9 David Mohr 2013-02-27 21:18:21 UTC
Thanks for the patch! I vote in favor of this solution.
Comment 10 Kacper Kowalik (Xarthisius) (RETIRED) gentoo-dev 2013-02-28 10:07:08 UTC
+  28 Feb 2013; Kacper Kowalik <xarthisius@gentoo.org> -hdf5-1.8.8-r1.ebuild,
+  -hdf5-1.8.9-r2.ebuild, hdf5-1.8.10_p1.ebuild:
+  Drop old, add subslot thanks to courtesy of William Throwe <wtt6@cornell.edu>.
+  Fixes bug #452622

+  28 Feb 2013; Kacper Kowalik <xarthisius@gentoo.org> -pytables-2.3.1.ebuild,
+  pytables-2.4.0.ebuild:
+  Add subslot dependency on hdf5 wrt #452622 by David Mohr <bugs@da.mcbf.net>.
+  Thanks to William Throwe <wtt6@cornell.edu> for the patch. Drop old

+  28 Feb 2013; Kacper Kowalik <xarthisius@gentoo.org> -h5py-2.1.0.ebuild,
+  -h5py-2.1.1-r1.ebuild, -h5py-2.1.1.ebuild, h5py-2.1.2.ebuild:
+  Add subslot dependency on hdf5 wrt #452622 by David Mohr <bugs@da.mcbf.net>.
+  Thanks to William Throwe <wtt6@cornell.edu> for the patch. Drop old