-
Notifications
You must be signed in to change notification settings - Fork 591
Fix two flaws in Configure #23682
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
base: blead
Are you sure you want to change the base?
Fix two flaws in Configure #23682
Conversation
Configure conflated the file 'cppstdin' and the variable $cppstdin, failing to initialize the latter. It also overrode the hints file wrapper for feeding stdin to the C preprocessor. It did this without asking, but ran a simple test, and if it passed, did the override. This behavior dates to the mid 1990s. The problem is that on z/OS the simple test passes, but not all inputs do. Some system header files on z/OS have C trigraphs, which cause modern compilers to warn about them. The hints file wrapper, which dates from the late 1990's, did an "fgrep -v" to get rid of them, but it doesn't end up getting used. The simple test that Configure ends up of course would not think to try trigraphs. (There may be other issues as well, but this one really pops out.) This commit initializes $cppstdin, and doesn't try to override a furnished cppstdin from the hints.
looks like some cleanup or filtering is missing:
|
It looks like this is a victim of bit rot. cppstdin is used as a variable in a few places to indicate what to eval to feed stdin to the C preprocessor. When set to point to a file that file contains the commands. In grepping through the source, this appears to be the only place where a file is used. The comments in hints/os390.sh say
I don't understand what that all means. Errno looks to see if it is an actual file.
So, this is supposed to be able to be a file, but all but this usage of it has been removed, and this one got broken without anyone noticing. I can try to make this into just a variable, I suppose. @Tux, any ideas? |
When I try to build from this branch,
|
It's probably waiting for end of file (Ctrl-D) |
Well, I've never seen this before in all the thousands of times I've run Ctrl-D. |
This is pretty complicated; I imagine it will have to wait until @Tux gets a chance to grok it and discuss it with me |
"Run Configure" I hope :) But you did get a "waiting for input" hang in Configure once before. |
Configure conflated the file 'cppstdin' and the variable $cppstdin, failing to initialize the latter.
It also overrode the hints file wrapper for feeding stdin to the C preprocessor. It did this without asking, but ran a simple test, and if it passed, did the override. This behavior dates to the mid 1990s. The problem is that on z/OS the simple test passes, but not all inputs do.
Some system header files on z/OS have C trigraphs, which cause modern compilers to warn about them. The hints file wrapper, which dates from the late 1990's, did an "fgrep -v" to get rid of them, but it doesn't end up getting used. The simple test that Configure ends up of course would not think to try trigraphs. (There may be other issues as well, but this one really pops out.)
This commit initializes $cppstdin, and doesn't try to override a furnished cppstdin from the hints.