FileUtils: backport #copy_metadata fix

Entry_#copy_metadata has a nasty bug that makes copying symlinks
across filesystems fail. This lasted all the way through 1.9.3p194
before *finally* being fixed. This backports the official fix.

Fixes #14710.
When builds fail verbosely, be verbose
Don't set $VERBOSE when building nonverbosely

Setting $VERBOSE in the environment makes the haskell-platform build
fall down, which is surely one of the odder bugs I've run into.

See #15164.
Fix conditional

Signed-off-by: Jack Nagel <jacknagel@gmail.com>
Make FileUtils extension available globally

Now that we are monkeypatching copy_metadata, we should load our
extension up front for consistency.

Signed-off-by: Jack Nagel <jacknagel@gmail.com>
Adjust test expectation for 'LD'

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

Previously we detected this by reading the first line of the file.
However, "first line" is meaningless when dealing with binary files, but
IO#readline will happily keep reading until it finds a newline
character, which can result in some unnecessarily large buffers.

Aside from the performance issue, this causes an additional problem
under Ruby 1.9: trying to match the binary string against a pattern will
raise ArgumentError (unless the binary string just happens to also be
valid UTF-8, heh).

Fix both issues: only read the first 1024 bytes, as no sane shebang will
ever be that long, and use a plain read(), which returns an ASCII
encoded string even on 1.9.

Signed-off-by: Jack Nagel <jacknagel@gmail.com>
test_bucket: don't try to clean a non-existent keg

It is a no-op under Ruby 1.8 but Pathname#find raises ENOENT if the
directory doesn't exist under 1.9. But we really shouldn't try to clean
a non-existent keg anyway, and FormulaInstaller will have bailed out
long before the clean step if the keg doesn't exist, so lets just not
even test this condition; the cleaner has its own tests anyway.

Alternatively we can adjust the cleaner to handle this case, but I don't
see much value in that.

n.b. with this, the tests now pass under 1.9.3 (for me), which is nice
because I often run them on that version inadvertently.

Signed-off-by: Jack Nagel <jacknagel@gmail.com>
Fix hg strategy under stdenv

Signed-off-by: Jack Nagel <jacknagel@gmail.com>
Only handle build-errors when it's a build-error

Refs #15164.
Safer way to redirect puts to a file
_Really_ fix hg strategy

Fixes #15181.

Signed-off-by: Jack Nagel <jacknagel@gmail.com>
Fix ENV.fortran info texts

They were being truncated.
superenv: reset LD

Refs #15090.
Make VCS download strategies work without user paths

Closes #15139.

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

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

- Install a sitecustomize.py that is only executed for brewed
  python to
  -  Fix the prefix, python thinks it is installed to.
     (Remember, Python thinks it lives in the Cellar)
  -  Remove "/System/..." stuff from sys.path which caused
     a lot of install trouble because setuptools has the
     habbit to inject itself upfront, overwriting our distribute.
- Allow --with-poll and don't say, we didn't warn you.
- Don't need depends_on :x11 any longer. Yeah, no XQuartz!
- Add --with-brewed-openssl
- pip 1.2.1
- pip, pip-2.7, easy_install and easy_install-2.7 are installed
  to prefix, such that they are directly available, even if
  people have not set their PATH to include
  $(brew --prefix)/share/python
- Caveats shorter and clear.
- For Xcode-only:
  - Patch the distutils buildsystem to use "xcrun cc" etc.
  - Teach distutils the MacOS.sdk_path (for incs and libs)
- superenv.rb add the right python include dir depending on
  whether a brewed python is installed or not.

Closes #15064.

Signed-off-by: Max Howell <mxcl@me.com>
Restore HOMEBREW_LOG functionality
tests: set newly-visible global constants

The changes to error ouput and logging require a few more things to be
visible during installation tests.

Signed-off-by: Jack Nagel <jacknagel@gmail.com>
Add .sh to list of valid library extenions.

As discussed with mistym, it's not only compiled code that goes in
/usr/lib, but any types of libraries. As such, .pm was added to the
valid extensions list a while back. Unfortunately, .sh was not added,
even though configuration includes and platform function library shell
files are often put in /usr/lib as shellscript libraries. This patch
adds .sh to the list of valid library extensions.

Closes #14993.

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