From 45fe3f1cde1e516d1ddccddb5e33ea4316497c36 Mon Sep 17 00:00:00 2001 From: Boris Nagaev Date: Sun, 18 Oct 2015 23:11:28 +0300 Subject: 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 Reviewed-by: Thiago Macieira --- configure | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/configure b/configure index 3fbf97143d..367cb22455 100755 --- a/configure +++ b/configure @@ -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." -- cgit v1.2.3