Bug 88110 - HDF5 (sci-libs/hdf5) on AMD64 needs LAM MPI (sys-cluster/lam-mpi) compiled with -fPIC in order to have parallel support.
|
Bug#:
88110
|
Product: Gentoo Linux
|
Version: unspecified
|
Platform: AMD64
|
|
OS/Version: All
|
Status: RESOLVED
|
Severity: normal
|
Priority: P2
|
|
Resolution: FIXED
|
Assigned To: hp-cluster@gentoo.org
|
Reported By: tacvbo@tacvbo.net
|
|
Component: Ebuilds
|
|
|
URL:
http://www.lam-mpi.org
|
|
Summary: HDF5 (sci-libs/hdf5) on AMD64 needs LAM MPI (sys-cluster/lam-mpi) compiled with -fPIC in order to have parallel support.
|
|
Keywords: InCVS
|
|
Status Whiteboard:
|
|
Opened: 2005-04-05 18:50 0000
|
HDF5 (sci-libs/hdf5) on AMD64 needs LAM MPI (sys-cluster/lam-mpi) compiled with
-fPIC in order to have parallel support.
Created an attachment (id=55418) [details]
4450-hdf5-1.6.4.log
/usr/lib/gcc/x86_64-pc-linux-gnu/3.4.3-20050110/../../../../x86_64-pc-linux-gnu/bin/ld:
/usr/lib64/liblammpio.a(close.o): relocation R_X86_64_32 against `a local
symbol' can not be used when making a shared object; recompile with -fPIC
Could you please attach a patch against the current ebuild rather than a full
ebuild, using `diff -u`?
The proposed patch is not acceptable. lam-mpi builds several executables
and also, a static library (in this case liblampio.a) should never be built
with PIC. Instead we need a patch to create both a static and a shared version
of mpiolib.
The best way would probably be to libtoolize the buildsystem of romio/lib-mpio...
Created an attachment (id=58688) [details]
Enable build of liblammpio.so with PIC
Attached patch work fine for me to
a) build liblammpio.so
b) compile HDF5-1.6.5 with USE="mpi" against lam-mpi-7.1.1
Donnie: May I commit ? Do you have contact to upstream ?
+ $(CC) $(CFLAGS) -fPIC -DPIC -c -o shared/$@ $<
Seems like you should just be sticking the PIC stuff into a variable instead of tacking it on like this: SOCFLAGS, SHAREDLIBCFLAGS, whatever.
I do have some contact with upstream, but they're working on openmpi now. 7.1.2 of lam-mpi is being worked on and will likely be the last release, ever. So if something needs to get upstream, better do it quick.
Patch commited for lam-mpi-7.1.1 and marked stable as well. This should fix
this
BUG.
>>> Unpacking source...
>>> Unpacking lam-7.1.1.tar.bz2 to /var/tmp/portage/lam-mpi-7.1.1/work
* Applying lam-mpi-7.1.1-shared-romio.patch ...
* Failed Patch: lam-mpi-7.1.1-shared-romio.patch !
* ( /usr/portage/sys-cluster/lam-mpi/files/lam-mpi-7.1.1-shared-romio.patch )
*
* Include in your bugreport the contents of:
*
* /var/tmp/portage/lam-mpi-7.1.1/temp/lam-mpi-7.1.1-shared-romio.patch-13929.out
!!! ERROR: sys-cluster/lam-mpi-7.1.1 failed.
!!! Function epatch, Line 358, Exitcode 0
!!! Failed Patch: lam-mpi-7.1.1-shared-romio.patch!
!!! If you need support, post the topmost build error, NOT this status message.
HDF5 (sci-libs/hdf5) still can not be compiled with mpi support (mpi USE): Now
the mpicc can not create executables...
# emerge hdf5
Calculating dependencies ...done!
>>> emerge (1 of 1) sci-libs/hdf5-1.6.4 to /
>>> md5 files ;-) hdf5-1.6.2.ebuild
>>> md5 files ;-) hdf5-1.6.4.ebuild
>>> md5 files ;-) files/digest-hdf5-1.6.2
>>> md5 files ;-) files/digest-hdf5-1.6.4
>>> md5 src_uri ;-) hdf5-1.6.4.tar.gz
>>> Unpacking source...
>>> Unpacking hdf5-1.6.4.tar.gz to /var/tmp/portage/hdf5-1.6.4/work
>>> Source unpacked.
checking build system type... x86_64-unknown-linux-gnu
checking host system type... x86_64-unknown-linux-gnu
checking shell variables initial values... done
checking if tr works... yes
checking if basename works... yes
checking if xargs works... yes
checking for cached host... none
checking for sizeof hsize_t and hssize_t... large
checking for config x86_64-unknown-linux-gnu... no
checking for config x86_64-unknown-linux-gnu... no
checking for config unknown-linux-gnu... no
checking for config unknown-linux-gnu... no
checking for config x86_64-linux-gnu... no
checking for config x86_64-linux-gnu... no
checking for config x86_64-unknown... no
checking for config linux-gnu... found
compiler '/usr/bin/mpicc' is GNU gcc-3.4.320050110
checking for config ./config/site-specific/host-avalancha... no
checking for gcc... /usr/bin/mpicc
checking for C compiler default output file name... configure: error: C
compiler cannot create executables
See `config.log' for more details.
!!! ERROR: sci-libs/hdf5-1.6.4 failed.
!!! Function src_compile, Line 43, Exitcode 77
!!! configure failed
!!! If you need support, post the topmost build error, NOT this status message.
configure:2150: /usr/bin/mpicc -O2 -march=athlon64 -fomit-frame-pointer -pipe
-std=c99 -pedantic -Wall -Wextra -Wundef -Wshadow -Wpointer-arith
-Wbad-function-cast -Wcast-qual -Wcast-align -Wwrite-strings -Wconversion
-Wsign-compare -Waggregate-return -Wstrict-prototypes -Wmissing-prototypes
-Wmissing-declarations -Wredundant-decls -Wnested-externs -Winline
-Wno-long-long -Wfloat-equal -Wmissing-format-attribute -Wpadded
-Wmissing-noreturn -Wpacked -Wdisabled-optimization -Wmultichar -Wendif-labels
-Wdeclaration-after-statement -Wold-style-definition -Winvalid-pch conftest.c
>&5
conftest.c:13: warning: function declaration isn't a prototype
conftest.c: In function `main':
conftest.c:13: warning: old-style parameter declaration
/usr/lib64/liblammpio.so: undefined reference to `ADIOI_Malloc_request'
/usr/lib64/liblammpio.so: undefined reference to `ADIOI_Get_eof_offset'
/usr/lib64/liblammpio.so: undefined reference to `ADIOI_Ftable_max'
/usr/lib64/liblammpio.so: undefined reference to `ADIOI_Reqtable_ptr'
/usr/lib64/liblammpio.so: undefined reference to `ADIOI_Shfp_fname'
/usr/lib64/liblammpio.so: undefined reference to `ADIO_Init'
/usr/lib64/liblammpio.so: undefined reference to `ADIOI_DFLT_ERR_HANDLER'
/usr/lib64/liblammpio.so: undefined reference to `ADIO_Close'
/usr/lib64/liblammpio.so: undefined reference to `ADIO_Init_keyval'
/usr/lib64/liblammpio.so: undefined reference to `ADIO_Set_shared_fp'
/usr/lib64/liblammpio.so: undefined reference to `ADIOI_Set_lock'
/usr/lib64/liblammpio.so: undefined reference to `ADIOI_Reqtable'
/usr/lib64/liblammpio.so: undefined reference to `ADIOI_Free_fn'
/usr/lib64/liblammpio.so: undefined reference to `ADIOI_Get_position'
/usr/lib64/liblammpio.so: undefined reference to `ADIOI_Ftable_ptr'
/usr/lib64/liblammpio.so: undefined reference to `ADIO_Open'
/usr/lib64/liblammpio.so: undefined reference to `ADIOI_Reqtable_max'
/usr/lib64/liblammpio.so: undefined reference to `ADIOI_Realloc_fn'
/usr/lib64/liblammpio.so: undefined reference to `ADIOI_Get_byte_offset'
/usr/lib64/liblammpio.so: undefined reference to `ADIOI_Datatype_iscontig'
/usr/lib64/liblammpio.so: undefined reference to `ADIOI_End_call'
/usr/lib64/liblammpio.so: undefined reference to `ADIO_Get_shared_fp'
/usr/lib64/liblammpio.so: undefined reference to `ADIOI_Ftable'
/usr/lib64/liblammpio.so: undefined reference to `ADIO_ResolveFileType'
/usr/lib64/liblammpio.so: undefined reference to `ADIOI_Malloc_fn'
collect2: ld returned 1 exit status
Ok, it seems we need ADI libraries also built as shared objects. I'll try to
sit
down tonight and add that to the patch. Sorry for all the inconvenience/borkage
:-/
Created an attachment (id=65985) [details]
Enable build of liblammpio.so with PIC (includes ADIO objects now)
Ok, new patch, new look...
This one works fine for me, but that isn't really significant. Please test and
report back.
Fix is in CVS now as sys-cluster/lam-mpi-7.1.1-r3.