Bear with me -- this is a somewhat lengthy post, but I need some RPM
help on how to get the requires of an RPM correct (manually adding a
Require is not an option). It seems that there is a problem with some
distro's RPM-building tools and/or their packaging of libaio.
-----
Following up with some IM with Bernard yesterday to clarify his
nebulous query about LAM's mpicc, it seems that he was experiencing the
same problem as another poster on the users list (a post which I
entirely missed until after the fact -- whoops!), that when he was
trying to compile an MPI application, the linker was complaining that
it couldn't find -laio.
This happens despite the fact that the libaio RPM is installed (this is
on FC2/FC3, btw). This RPM installs /usr/lib/libaio.so.1.0.0 and
(IIRC) /usr/lib/libaio.so.1 (sym link to libaio.so.1.0.0). The problem
here is that libaio.so is not found -- which is apparently what the
linker is looking for. Taking this down to the simplest case, if you:
gcc foo.c -o foo -laio
it'll fail, because libaio.so is not there (even though libaio.so.* is
there).
It turns out that the sym link from libaio.so.1.0.0 to libaio.so is in
the FC2/FC3 libaio-devel RPM (I think this is what Bernard was trying
to say this in his mail yesterday, but it wasn't clear to me at that
point). So if you install the libaio-devel RPM, all is fine.
But this brings up the obvious question: why isn't libaio-devel
installed by OSCAR by default? Shouldn't packman/depman figure this
out and install it?
Unfortunately, no. Looking at the LAM RPMs in SVN, I queried the
--requires of each of them for what their AIO requirements are:
./rh90/lam-oscar-7.0.6-3.i386.rpm: libaio.so.1
./mdk10/lam-oscar-7.0.6-2.i586.rpm: <none>
./rh3as/lam-oscar-7.0.6-3.i386.rpm: libaio.so.1
./rh3as/lam-oscar-7.0.6-3.ia64.rpm: libaio.so.1
./fedora/lam-oscar-7.0.6-3.i386.rpm: libaio.so.1.0.0
So it seems that none of them require libaio.so directly -- they all
require libaio.so.something. So packman/depman is doing exactly the
Right Thing in Bernard's case: it is finding the libaio RPM, which
contains libaio.so.1.0.0. It is *not* finding the libaio-devel RPM
(which contains libaio.so) because there is no requirement to do so.
Hence, mpicc (i.e., the linker) complains when it tries to link
something.
This does not appear to be a problem with other distros because they
bundle libaio.so with the same RPM that includes libaio.so.*.
So the question is -- how to make this right? I can't just add a
"Require" to the .spec file because some systems do not require it
(e.g., MDK 10). Only LAM's configure figures this out -- it's not
something that can be fed back into the .spec file.
I'm almost to the point of adding an explicit <rpmlist> for FC2/3 in
the LAM config.xml file, but that sucks and defeats the point of the
auto-detection stuff.
--
{+} Jeff Squyres
{+} [EMAIL PROTECTED]
{+} http://www.lam-mpi.org/Any suggestions here?
--
{+} Jeff Squyres
{+} The Open MPI Project
{+} http://www.open-mpi.org/
-------------------------------------------------------
This SF.Net email is sponsored by Oracle Space Sweepstakes
Want to be the first software developer in space?
Enter now for the Oracle Space Sweepstakes!
http://ads.osdn.com/?ad_id=7412&alloc_id=16344&op=click
_______________________________________________
Oscar-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/oscar-devel