-
Notifications
You must be signed in to change notification settings - Fork 903
Address external libevent once again #4413
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Can we just ask the user to install libevent into I'm guessing that this scenario only applies when libevent was built/installed from a source tarball (because if this were a distro-installed libevent and the distro was a) using I.e., can the user just I ask because having 64 bit libraries in prefix/lib and prefix/lib64 does really flout the convention of having |
I guess what I'm trying to say is: Open MPI does try to have a very "full-service" But this case is not just an uncommon user scenario -- it actually seems to go against common conventions. I'm therefore not sure we should apply our typical "full service" attitude in this scenario. |
It may come as a surprise to some, but I actually installed all the software in that location using simply a "prefix" in configure. The individual software packages chose, completely on their own, whether to use lib or lib64. So I suspect this is going to be more the rule rather than the exception case. The problem with the code as it currently sits in master is that it solely checks for the existence of the $with_libevent/lib64 directory, and then decides that this is where libevent should be located. This isn't the default libevent behavior - by default, it installs under $with_libevent/lib. That said, I'm comfortable revising this to simply allow the user to point directly to the lib directory where libevent is located in these cases. |
Just to clarify my comment. I do not have a mixed 32/64-bit system. Everything is 64-bits. What apparently happened is that one package I installed (looks like it was gcc) decided to install by default into I think the bottom line is that this supposed convention isn't really being followed by the individual package developers - including OMPI, by the way. We just blindly install into So I'll reiterate that the scenario I am encountering is probably the more common situation and not the exception case. I'm trying to add some smarts to at least tell the user they have to do something more than the usual to work around it. |
Okay, I have found the problem, though I'm not sure how to solve it. The root cause of the problem is that In this case, libevent is in my LD_LIBRARY_PATH. As a result, passing any directory to OPAL_CHECK_PACKAGE results in a positive response, leaving the LDFLAGS incorrectly set. If I try passing |
@rhc54 You're right: Autoconf installs into My only point was that distros tend to do the So, back to @rhc's last comment... Yes, it was always expected that We for for the presence of the actual library file -- which is a good first check, but it's definitely not sufficient (because, for example, there could be 32/64 versions). So we also do the So I think I'm more agreeing with @rhc54 more than anything else, but I still don't know what the correct answers are. 🤷♂️ I'm open to suggestions here... |
…g the external libevent library, so surrender to the situation and simply remove that requirement. Users wanting to utilize the embedded PMIx library can install it, but will have to use mpicc _and_ add an explicit -lpmix to their cmd line to compile their application. Signed-off-by: Ralph Castain <[email protected]>
As I said in the commit message, I think we are concluding there is no good answer here. Accordingly, I've changed the opal/pmix configury so it no longer tries to link the standalone libpmix back to libevent. It means users who want to work with it will have to use mpicc to build, and will have to explicitly link -lpmix into their application, but I have no good alternative. This commit just adds a little more verbose output to the external event configury and modifies opal/mca/pmix/pmix3x/configure.m4 as per above. |
i think One oddity is that when Open MPI is built as a 32 bits library, and My main issue is the library detection is not consistent accross the various configure files
at first glance, |
I agree that Just to again be clear: this issue was talking about a pure 64-bit system, with software built/installed from tarballs and not rpms. The problem is that there is no standard, de facto or otherwise, for installing in to lib vs lib64 in this scenario. Some packages build into one, some into the other. Thus, you wind up with both a lib and lib64 in the target area, which is what causes the problem. |
Assume that a user has both a lib64 and lib directory under the location of $with_libevent. However, libevent itself was installed in the lib directory, not lib64. Assume also that $with_libevent/lib is in the default LD_LIBRARY_PATH.
We need the configury to be smart enough to see that lib64 exists, but that libevent isn't in it so that it moves along and finds libevent in the correct place. I'm not wild about this solution, but I found that just running AC_CHECK_LIB always succeeded with -L$with_libevent/lib64. I'm open to alternative solutions.
Signed-off-by: Ralph Castain [email protected]