From: [EMAIL PROTECTED] on behalf of Jeff Squyres
Sent: Sat 21/05/2005 4:37 AM
To: OSCAR-devel List
Subject: [Oscar-devel] RPM help
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
