configure: fix log corruption with option -v
This bug occurs if ./configure is called with -v on systems on which fd proc entries point to the files/devices they are open on instead of being magic nodes which would basically dup() the actual fds (e.g., Linux). In this case, the command "tee $tty" appends to /dev/stderr, which may be already opened by the parent process. This breaks the log file. Normally, the log file starts with This is the Qt Open Source Edition. ... but with `-v` flag it would start with output of awkprog and maybe some zero bytes. Zero bytes are observed on Debian Wheezy. DEFAULT_INCDIRS=... ... ^@^@^@^@^@^@^@^@^@^@^@^@... Done running configuration tests. ... To fix this problem, the output of `...` is saved to a variable, and then eval'd and echo'd (if -v). This solution was found by Tony Theodore. https://github.com/mxe/mxe/issues/938#issuecomment-149770348 Change-Id: Id0c28598890e813774cc92f38ee46a0697b34e77 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
This commit is contained in:
parent
456f721917
commit
45fe3f1cde
7
configure
vendored
7
configure
vendored
@ -3613,10 +3613,9 @@ END {
|
||||
print "DEFAULT_LIBDIRS=\"/lib\n/usr/lib\"\n";
|
||||
}'
|
||||
|
||||
unset tty
|
||||
[ "$OPT_VERBOSE" = "yes" ] && tty=/dev/stderr
|
||||
eval "`LC_ALL=C $TEST_COMPILER $SYSROOT_FLAG $TEST_COMPILER_CXXFLAGS -xc++ -E -v - < /dev/null 2>&1 > /dev/null | $AWK "$awkprog" | tee $tty`"
|
||||
unset tty
|
||||
awkprog_result=`LC_ALL=C $TEST_COMPILER $SYSROOT_FLAG $TEST_COMPILER_CXXFLAGS -xc++ -E -v - < /dev/null 2>&1 > /dev/null | $AWK "$awkprog"`
|
||||
eval "$awkprog_result"
|
||||
[ "$OPT_VERBOSE" = "yes" ] && echo "$awkprog_result"
|
||||
|
||||
echo "Done running configuration tests."
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user