Hide --disable-debug from non verbose output also
More brew irb examples
Revert the user-PATH fix

User paths might have anything in them, anything can break builds.

Instead special case these two formula with the view to having an eventual DSL to allow injection of user paths into superenv. Certainly defaulting to off.
make -e has env-vars override Makefile vars

So the CC= in the Makefile is overridden by the $CC setting. I considered doing this generally, but as it stands we keep most of the user's environment in both superenv and stdenv so it's too risky. But I wanted to commit one example of it at least.
Consider superenv “servile” during configure

superenv defaults to servile mode. In servile mode:

* If 'gcc' is called, then 'gcc' is run (we ignore HOMEBREW_CC)
* CFLAGS (optimizations) are not applied
* ARGV is not mangled (TODO though we should apply fixes)
* -I and -L environment is still forcibly inserted.

This fixes, eg. jack which was still broken with stdenv. Jack was broken because we set CC in stdenv, and Jack has a stupid build-system. Unsetting CC allowed Jack to find and use the gcc tool it so demanded, but (previously) we would then substitute clang under its nose. The configure still failed. In servile mode (llvm-)gcc is used and Jack compiles.

In normal circumstances clang would then be inserted again during the make phase. But Jack uses the niche-wag build tool that we don't support for setting the O HOMEBREW_CCCFG flag that disables servile mode.
`brew --env` puts HOMEBREW_SDKROOT
MacOS.sdk_path is unlicensed Xcode aware

Now we should get an sdk_path, but tools like xcodebuild, xcode-select and xcrun will still error out. But at least more of Homebrew will work.

Also putting the Xcode 3 path finder last. We get bug reports because newer Xcodes are installed in parallel to older Xcodes. We want to find and use the newer Xcode's first. Xcode.prefix is pretty smart about that.

Refs #14558.
Doctor check for unlicensed Xcode

Checking the license text is probably the most future proofed method. Though for future reference other possible methods are listed in the below ticket.

Closes #14558.
Remove plain "-O"
Refs #14558. Try to find tools when xcrun fails.
Set VERBOSE if --verbose

You tend to get more useful build output this way, and (more importantly?), superenv itself only outputs certain things if VERBOSE is set.
Raise if sdk_path is nil for nclt

This situation should be impossible now (in that, we should detect sdk_path provided we also detected nclt), so if it happens somehow raise in such a way that the user will be encouraged to report the bug.
Extend Set to allow repetition (*)

Signed-off-by: Jack Nagel <jacknagel@gmail.com>
Return the block value in ARGV.filter_for_dependencies

Signed-off-by: Jack Nagel <jacknagel@gmail.com>
Tab: provide an interface similar to BuildOptions

Eventually a common interface could be factored out into a module, but
for now this will suffice.

Signed-off-by: Jack Nagel <jacknagel@gmail.com>
BuildOptions: check has_option? for universal and 32-bit

Signed-off-by: Jack Nagel <jacknagel@gmail.com>
Provide a common interface for Dependency and Requirement

Introduce a new Dependable module that provides useful interrogation
methods for Dependency and Requirement. These methods are mapped to
dependency tags in formula (:build, :optional, and :recommended).

Previously only Dependency objects recorded tags; this allows
Requirements to do the same.

Move Requirement subclasses to a separate file.
Formula#recursive_dependencies

This behaves like recursive_deps, but the resulting list consists of
Dependency objects instead of Formula objects. The list maintains the
installable order property of recursive_deps.

While in the area, add some comments clarifying the purpose of related
methods.

Signed-off-by: Jack Nagel <jacknagel@gmail.com>
Dependency#to_formula and associated helpers

Signed-off-by: Jack Nagel <jacknagel@gmail.com>
FormulaInstaller: disambiguate show_header usage

show_header should default to false (we don't want to display it in the
case of installing a single formula without dependencies), but it only
worked this way by accident.

The assignment "show_header = true" creates a local variable named
show_header, and in the case where needed_deps is empty and this
assignment is not actually executed, the latter usage evaluates the
local variable instead of calling the method.

Signed-off-by: Jack Nagel <jacknagel@gmail.com>