Use HOMEBREW_LOGS more consistently.
Allow configuring HOMEBREW_LOGS.
bottle: improve relocatable debugging.

* 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

Closes #23824.

Signed-off-by: Mike McQuaid <mike@mikemcquaid.com>
open-vcdiff: fix 10.9 build

Sets a C preprocessor flag to force gtest to use its own tr1 library
Fixes #23795 where open-vcdiff would fail to build on 10.9.

Closes #23832.

Signed-off-by: Mike McQuaid <mike@mikemcquaid.com>
install: search when formula isn't found.
subversion: update bottle to include serf.

Fixes #23840.
bottle: write to relative path if exists.
bottle: improve written bottle output.
sqlite: update bottle.
libgcrypt: don't apply patch when using clang build 500 or newer

This appears to be a non-issue with recent clang.
New patch implementation and DSL

This commit introduces a new patch implementation that supports
checksums and caching.

Patches are declared in blocks:

  patch do
    url ...
    sha1 ...
  end

A strip level of -p1 is assumed. It can be overridden using a symbol
argument:

  patch :p0 do
    url ...
    sha1 ...
  end

Patches can be declared in stable, devel, and head blocks. This form is
preferred over using conditionals.

  stable do
    # ...

    patch do
      url ...
      sha1 ...
    end
  end

Embedded (__END__) patches are declared like so:

  patch :DATA
  patch :p0, :DATA

Patches can also be embedded by passing a string. This makes it possible
to provide multiple embedded patches while making only some of them
conditional.

  patch :p0, "..."
Enable new patch implementation with compatibility layer
fetch: download external patches
audit: check new and old style patches
Preemptively clear cached legacy patches

Under some circumstances we may end up with a cache hit for legacy
patches (if an identically named file exists, or more likely, the user
interrupted the patching process after fetching but before application).
However these patches have no checksums so we want to download them
fresh each time. Ensure this is the case by attempting to clear the
cache before
fetching.