The cc wrapper's make_fuss is only enabled when HOMEBREW_CCCFG contains
'O', which is set by the make wrapper. This means it is disable when
running configure scripts. However, this does not include configure
scripts invoked by make, which inherit the value of HOMEBREW_CCCFG from
the make process. make_fuss will be enabled for these scripts, cause
breakage.
Configure scripts generated by autoconf 2.56 (November 2002) or later
export DUALCASE into the environment of subprocesses. This variable is
only used by the MKS shell, so we can use it as a heuristic to determine
if we are running as a subprocess of a configure script.
In 6e3a585607116d06f47aac2ff5a649f2898216f0 ("Improve superenv
add/remove message."), more debugging information was added to the
"make_fuss" output generated by the superenv compiler
wrapper.
This resulted in some breakage in configure scripts that inspect stderr,
so in e1bd9b9e980c433878e60833f09964b8ca996657 ("Don't use stderr for
make_fuss output."), the output was moved to stdout. This only appeared
to solve the problem, since stdout is buffered but stderr is not.
Later, in fb749e47509b77b5bd89e7b14f0a1097d4af7f40, Homebrew started
generating logs even in verbose mode. This had the side effect of moving
stdout/stderr from a TTY to a pipe, and thus stdout was no longer
line-buffered.
Since it was not line-buffered, and Ruby's internal buffers were not
flushed, the debug output was being lost. This was addressed in
2d5724af8613c820b8c14f4171fe1de6a17f10c3 ("cc: ensure wrapper output is
always flushed").
This caused stdout to be flushed during configure, which resurfaced the
original bug that prompted e1bd9b9e980c433878e60833f09964b8ca996657.
This was fixed by disabling the debug output during configure, in
f1779837a46a58520560fba3850a0e2992284d0a.
Since the original bug has been addressed in a more robust way, we can
move the debug output back to stderr.
FixesHomebrew/homebrew#23923.
* In certain cases, a C++ software may result in linking to a different
and incompatible C++ standard library than its dependencies and still
works fine because it is by design. Examples include GCC, which will
bootstrap itself and self-host after finish.
* Add a cxxstdlib_check method to formula to request changing the C++
standard library checking. Currently using "cxxstdlib_check :skip"
will let a formula skip such checking. This should only be used on
rare occasions and be very careful.
ClosesHomebrew/homebrew#23687.
* When Homebrew developer mode is enabled, if a bottle is not found to
be relocatable attempt to explain why
* Print out paths of each file that still contains the string search for
* If the string searched for was found in an executable, check to see
if `otool` can explain the string's appearance
* If otool can't explain, see if `strings` can explain
ClosesHomebrew/homebrew#23824.
Signed-off-by: Mike McQuaid <mike@mikemcquaid.com>
When a formula is removed from core and installed let's tap it so users
can get updates without caring which tap we want to put things in.
This should allow us to migrate a lot of things to taps.
ClosesHomebrew/homebrew#23760.
Ruby's OpenURI library is somewhat broken under 1.8 and chokes on
otherwise valid values of http(s)_proxy. Use curl to get the mirror list
instead.
FixesHomebrew/homebrew#23708.