-
Couldn't load subscription status.
- Fork 928
Rename VERSION to VERSION.txt #7163
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 one of the admins verify this patch? |
b660a91 to
6c160ce
Compare
|
ok to test |
|
I can't speak for everyone, but I really don't agree with this change. This is a problem outside of our scope, and this solution just begs for yet another conflict with some other package that uses VERSION.txt. Let's not chase our tails. |
|
The IBM CI (GNU Compiler) build failed! Please review the log, linked below. Gist: https://gist.github.com/2d2e5fa4f036dd2321fa27cc5dd4bb22 |
|
The IBM CI (XL Compiler) build failed! Please review the log, linked below. Gist: https://gist.github.com/e9031b2a81e271b01f3cbbca75ae3369 |
I don't completely disagree, but it's also part of the C++ standard (as of C++20). So this will be a problem any time a C++ compiler is used to compile Open MPI; it's not a bug in the compiler or the standard library; they are required to provide that file. Of course, that file is supposed to be named All that being said, please do not merge this patch in at this time. I'm worried about fall-out impacts on build / test infrastructure. We should think about going down this option, but 1) I know there are more places than configure.ac that look at the |
libc++ v8.0.0 and above uses a header named <version> in the C++ standard headers. VERSION file in this repo root conflicts with the header from libc++ on case-insensitive file systems when building the C++ bindings because the repo root is added to the search directories by the build system. Fixes open-mpi#7155 Signed-off-by: Isuru Fernando <[email protected]>
6c160ce to
a6fb77a
Compare
|
Agreed. Let's talk about it on one of the calls. My concern is that we will just wind up repeatedly renaming files as we keep hitting such issues. Only real solution I can see is to prefix/suffix the filenames with something OMPI specific, and doing that for every file with a commonly used name (e.g., README, INSTALL, HACKING, etc) for consistency. Other option that seems really easy: just tell people not to use C++20 compilers to build OMPI - there is no valid reason for doing so anyway. I personally think that any standard that requires a file named "version" be unique in the system has violated all common sense. That filename is routinely used by everyone, not just OMPI. I'm sure they are getting an earful about it from across the community. |
|
@isuruf You might want to also try Brian is right: that VERSION file is read all over the place. The next two weeks unfortunately kinda suck in terms of timing. 😢 |
|
An other option is to create a Of course, we can always get rid of the C++ bindings and the need for a C++ compiler will magically go away. |
+10! |
|
Seriously, we should get rid of them for OMPI v5 at the very least - they were removed from the standard quite a while ago. |
Signed-off-by: Gilles Gouaillardet <[email protected]>
Signed-off-by: Gilles Gouaillardet <[email protected]>
252842c to
33f79b4
Compare
|
I pushed two more commits to get the fix pass the tests. Strictly speaking, the issue is not only triggered by a C++ compiler used to build Open MPI. |
|
Actually, that's a good way of thinking about this: take a step back and think about other ways to solve this issue. We/Open MPI are being a bit "odd" in that we That being said, I wonder if Given that this horribly-named FWIW, in https://github.com/open-mpi/ompi/wiki/5.0.x-FeatureList: "...we all seem to agree that removing the C++ bindings in v5.0.x is not a problem." |
|
I already tried without |
|
As @rhc54 suggested above why not addressing this particular issue by preventing the use of any C++ compiler subject to the name collision issue ? We can easily detect this during configure, stop the build and dump an error message suggesting the use of a different compiler. |
@bosilca the file is mandated in C++20, so the number of compilers with this issue will go up, not down. Probably not a good plan. |
|
@bwbarrett Wait, so WG21 is responsible for this mess? I have to wonder WTH they were thinking? |
|
@isuruf Thank you for adding that. So, wouldn't it be better to do this for the releases only and then in master just run |
|
I like the |
|
@gpaulsen True. Didn't think of that case. Short of somehow getting rid of -I${top_srcdir} this might be the only way to deal with WG21's odd decision. |
|
I suspect WG21 is going to have to re-address this issue. Imagine all of the packages out there that have a "VERSION" file in them - does anyone actually believe that every one of them is going to change their file name just to accommodate an idiotic C++ decision?? Let's not overreact and do something right away - let's give this a bit to see what happens long term. For now, just put in a check and abort if someone uses a bad compiler. |
|
@rhc54 I have a friend who participates in WG21 meetings. I will ping him and see if I can find out more and communicate the issue. There is likely still time to change C++20 before it is ratified. |
|
@bwbarrett the number of CXX+20 compilers will hopefully go up, but the number of people compiling OMPI with a CXX compiler on a case-insensitive file system will most certainly not follow the same trend. We can waste hours trying to find a better solution for such a minor issue (in number of potentially impacted users), or take the pragmatic approach and not support this combination of OS and CXX compilers. |
That's a very valuable data point. I was thinking that we were pretty unusual (i.e., adding Please remember what I said above:
So ya -- let's think about this and come up with a palatable solution. It's a stupid issue, but it's unfortunately one that we should probably solve (although we have time -- per above, the timing sucks, and we can spend a little time thinking about this). My $0.02 is that renaming I'm not concerned about compilers someday including |
|
Got a response. This is not the correct fix. PR coming shortly. |
|
Replaced by #7169 |
libc++ v8.0.0 and above uses a header named in the C++
standard headers. VERSION file in this repo root conflicts with the
header from libc++ on case-insensitive file systems when building
the C++ bindings because the repo root is added to the search
directories by the build system.
Fixes #7155