-
Couldn't load subscription status.
- Fork 928
configure: use -iquote for non-system include paths #7169
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
configure: use -iquote for non-system include paths #7169
Conversation
|
@isuruf Please test to verify this fixes the issue. |
|
The IBM CI (GNU Compiler) build failed! Please review the log, linked below. Gist: https://gist.github.com/413fde5d1cc19b7aef62ab7b8976026e |
|
The IBM CI (XL Compiler) build failed! Please review the log, linked below. Gist: https://gist.github.com/4e1d87832c39a6b596d5567ae6df7e3b |
|
Unfortunately this does not work. This would work only if there were only implementation files in the repo directory and they used quotes to find the header files. |
|
I'll have a look at it and see if that can be fixed. BTW, +1 for the branch name :-) |
|
I strongly disagree with the WG21 person who told you this is "our problem". Their action is equivalent to us declaring a global symbol called "x" and then insisting that any program which conflicts with that symbol is "wrong". The accepted way of "taking" a namespace is to prefix or suffix the name with something associated with your software. Thus, WG21 should have declared the required file to be something like "version.cpph" or "cpp.version.h" - and not just blanket declare ownership of the name "version". This whole thing is absurd and unnecessary. If some standards body is going to be this stupid, then we shouldn't enable them. Just detect that the compiler has a conflict with "version" and abort with an error message directing the user to use some other compiler - and tell their vendor to stop being dumb about it. |
|
@ggouaillardet I see the problem. Fixing. |
|
@rhc54 I don't disagree with you in the slightest. I do think with should disallow #include <> for internal Open MPI headers so this PR is not the worst idea :). |
|
@ggouaillardet @rhc54 The discussion is better in a private-ish channel. More in slack. |
|
@hjelmn I just noted your comment and pushed my fixes to this PR |
|
@ggouaillardet Indeed. Beat me by 30 seconds! Ok, I will reorder the changes now so the fixes come before the -iquote change. |
1b3111f to
a048b3c
Compare
|
@ggouaillardet Done. @isuruf Should work now. |
|
@hjelmn feel free to squash both commits and/or reword my commit message |
|
@ggouaillardet They should be separate I think. Makes it clear why that change was done. |
|
fair enough, and in that case, my commit message has to be rewritten. |
|
Indeed. Will update the commit message. |
a048b3c to
a393f68
Compare
a393f68 to
4237a6c
Compare
4237a6c to
194f681
Compare
|
This looks like a good idea (many thanks, @hjelmn!), but I'm really not going to have an opportunity to think about this deeply / review it properly until after SC. Can we hold off on merging until after SC / Thanksgiving, perchance? |
|
Did a little more digging:
|
a8b40bb to
6ea574b
Compare
|
This PR will only be merged after the thanksgiving break since the next two weeks are busy for many of us. |
|
I tried this on OSX with clang 9 and it works. Thanks @hjelmn, @ggouaillardet |
This commit fixes an issue with the include usage in some ompi source files. These source files are using the <> form of include when the "" form is correct (as these are internal, **not** system headers). Signed-off-by: Gilles Gouaillardet <[email protected]> Signed-off-by: Nathan Hjelm <[email protected]>
This fixes a bug in the configuration system identified by a change in the C++ standard. C++20 adds a new mandatory header named version. This (and any system) header will always be included with <> and not "". On case-insensitive filesystems this new header conflicts with the VERSION file at the top level of the build tree. To fix this issue Open MPI needs to use -iquote instead of -I for non-system include paths to ensure that these include are only searched for the quote form of include. This commit also adds a check to ensure that if the compiler does not support -iquote that it falls back to -I until support can be added. References open-mpi#7155 Signed-off-by: Nathan Hjelm <[email protected]>
6ea574b to
a6212fe
Compare
|
@hjelmn Somehow this PR fell off our radar in the post-SC/Thanksgiving/Christmas crush. I just rebased it to top of master and fixed some conflicts. Please verify, and then let's merge. |
|
This time, Cray had a false error (network connectivity to github). Try again... bot:ompi:retest |
|
Looks good to go. |
|
@hjelmn We require github reviews on master now. Can you please give a formal review? 😄 |
|
Can i review my own PR? |
|
ZOMG. I forgot this was your PR! Hahaha! Ok, I just reviewed. :-) |
This fixes a bug in the configuration system identified by a change in the C++ standard. C++20 adds a new mandatory header named version. This (and any system) header will always be included with <> and not "". On case-insensitive filesystems this new header conflicts with the VERSION file at the top level of the build tree. To fix this issue PMIx needs to use -iquote instead of -I for non-system include paths to ensure that these include are only searched for the quote form of include. This commit also adds a check to ensure that if the compiler does not support -iquote that it falls back to -I until support can be added. Tracks open-mpi/ompi#7169 Signed-off-by: Ralph Castain <[email protected]>
This fixes a bug in the configuration system identified by a change in the C++ standard. C++20 adds a new mandatory header named version. This (and any system) header will always be included with <> and not "". On case-insensitive filesystems this new header conflicts with the VERSION file at the top level of the build tree. To fix this issue PMIx needs to use -iquote instead of -I for non-system include paths to ensure that these include are only searched for the quote form of include. This commit also adds a check to ensure that if the compiler does not support -iquote that it falls back to -I until support can be added. Tracks open-mpi/ompi#7169 Signed-off-by: Ralph Castain <[email protected]>
This fixes a bug in the configuration system identified by a change in the C++ standard. C++20 adds a new mandatory header named version. This (and any system) header will always be included with <> and not "". On case-insensitive filesystems this new header conflicts with the VERSION file at the top level of the build tree. To fix this issue PMIx needs to use -iquote instead of -I for non-system include paths to ensure that these include are only searched for the quote form of include. This commit also adds a check to ensure that if the compiler does not support -iquote that it falls back to -I until support can be added. Tracks open-mpi/ompi#7169 Signed-off-by: Ralph Castain <[email protected]>
This fixes a bug in the configuration system identified by a change in the C++ standard. C++20 adds a new mandatory header named version. This (and any system) header will always be included with <> and not "". On case-insensitive filesystems this new header conflicts with the VERSION file at the top level of the build tree. To fix this issue PRRTE needs to use -iquote instead of -I for non-system include paths to ensure that these include are only searched for the quote form of include. This commit also adds a check to ensure that if the compiler does not support -iquote that it falls back to -I until support can be added. Tracks open-mpi/ompi#7169 Fixes openpmix#481 Signed-off-by: Ralph Castain <[email protected]>
This fixes a bug in the configuration system identified by a change in the C++ standard. C++20 adds a new mandatory header named version. This (and any system) header will always be included with <> and not "". On case-insensitive filesystems this new header conflicts with the VERSION file at the top level of the build tree. To fix this issue PMIx needs to use -iquote instead of -I for non-system include paths to ensure that these include are only searched for the quote form of include. This commit also adds a check to ensure that if the compiler does not support -iquote that it falls back to -I until support can be added. Tracks open-mpi/ompi#7169 Signed-off-by: Ralph Castain <[email protected]>
This fixes a bug in the configuration system identified by a
change in the C++ standard. C++20 adds a new mandatory header
named version. This (and any system) header will always be
included with <> and not "". On case-insensitive filesystems
this new header conflicts with the VERSION file at the top
level of the build tree.
To fix this issue Open MPI needs to use -iquote instead of -I
for non-system include paths to ensure that these include are
only searched for the quote form of include. This commit also
adds a check to ensure that if the compiler does not support
-iquote that it falls back to -I until support can be added.
Fixes #7155
Signed-off-by: Nathan Hjelm [email protected]