Revert "valgrind: remove unused skip_clean"

This reverts commit 24a9737aeb00606c5ef70fb6c8e310eddeee9c22.

This line was originally to fix #2150 which it breaks again.

Fixes #15620.
smlnj 110.75

- Upgrade to 110.75
- Remove the patches that have been merged.
- Add `env :std` because `ENV.m32` doesn't work in superenv.
- This builds a set of 32bit binaries via multiple downloads.

Fixes #15587

Closes #15658.

Signed-off-by: Adam Vandenberg <flangy@gmail.com>
subversion: fix Perl install location

subversion --perl tries to install to `/Library/Perl` which is
not writeable by the regular user and causes a build error.

- Set the perl `DESTDIR=#{prefix}` and add a caveat.

Fixes #15352

Closes #15652.

Signed-off-by: Adam Vandenberg <flangy@gmail.com>
MIRA 3.4.0.2

Fix a compiler error on OS X 10.8.
Link with boost_system for boost::system::system_category().

Closes #15607.

Signed-off-by: Adam Vandenberg <flangy@gmail.com>
Move requirement subclasses to a separate file

Signed-off-by: Jack Nagel <jacknagel@gmail.com>
Allow requirements to record tags

To allow

  depends_on :x11 => :optional

and friends to work as expected, make requirements record any tags and
add special handling to the X11Dependency to record both a minimum
version and additional tags.

Signed-off-by: Jack Nagel <jacknagel@gmail.com>
test_cleaner: add missing require

Signed-off-by: Jack Nagel <jacknagel@gmail.com>
libsvg-cairo: depend on Homebrew's cairo

We depend on our cairo on all platforms for consistency, but this one
was overlooked.

Signed-off-by: Jack Nagel <jacknagel@gmail.com>
ComparableSet#merge returns self

Set#merge is supposed to return self, and Formula#recursive_requirements
depended on this being true.

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>
Install receipt housekeeping

- Since using opt_prefix means we can find receipts for keg-only
  formulae, try it first and fall back on using linked_keg.
- Make the tab filename a constant instead of duplicating the string
  everywhere.
- Address a couple of other things that need cleanup.

Signed-off-by: Jack Nagel <jacknagel@gmail.com>
BuildOptions: simplify setting description

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>
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: factor out requirement checking

Signed-off-by: Jack Nagel <jacknagel@gmail.com>
FormulaInstaller: factor out dependency installation

Signed-off-by: Jack Nagel <jacknagel@gmail.com>
FormulaInstaller: skip build-time deps for bottles

Signed-off-by: Jack Nagel <jacknagel@gmail.com>
FormulaInstaller: implement installation locks

FormulaInstaller now attempts to take a lock on a "foo.brewing" file for
the formula and all of its dependencies before attempting installation.

The lock is an advisory lock implemented using flock(), and as such it
only locks out other processes that attempt to take the lock. It also
means that it is never necessary to manually remove the lock file,
because the lock is not enforced by I/O.

The uninstall, link, and unlink commands all learn to respect this lock
as well, so that the installation cannot be corrupted by a concurrent
Homebrew process, and keg operations cannot occur simultaneously.

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

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