Keg#fix_install_names punts if bad install names reference dylibs that
aren't "nearby". Enable this machinery to fix more complex directory
hierarchies by searching everything under 'lib' for the bad name's
basename.
Additionally, teach it to correctly handle Mach-O bundle files.
FixesHomebrew/homebrew#12810.
Signed-off-by: Jack Nagel <jacknagel@gmail.com>
Mono installs its own pkg-config symlink into /usr/bin/pkg-config,
which breaks non-Mono builds. Provide a specific warning.
ClosesHomebrew/homebrew#12859.
file(1) does not allow leading whitespace on shebang lines, and there
appears to be no restrictions on what characters follow '#!', either.
While at it, fix an erroneous shebang test.
Signed-off-by: Jack Nagel <jacknagel@gmail.com>
This is useful for doing a --debug build, as the git repo will pick up any
changes that have been made up to that point in the build process.
--git is still most useful in conjunction with --interactive, though.
`brew doctor` shelled to `brew missing` and parsed the results.
When VERBOSE was true, this caused an error as extra, unexpected
output is generated.
Make missing an internal command, and give it a programmatic interface.
(rather than the version being installed)
This avoids having to change the variable when a different version is linked.
Also ensure the private key / cert variables point to only 1 file.
Signed-off-by: Adam Vandenberg <flangy@gmail.com>
Most Homebrew builds produce libraries, so CMake should give priority to
libraries when resolving dependencies.
ClosesHomebrew/homebrew#12497.
Signed-off-by: Charlie Sharpsteen <source@sharpsteen.net>
We now skip the outdated check if our local origin/master tracking
branch matches the origin remote's current master. This prevents false
positives when we are actually up-to-date but the latest commit is over
24 hours old.
Signed-off-by: Jack Nagel <jacknagel@gmail.com>
Rationale: some users insist on replacing the /usr/bin/ruby symlink
to point to another ruby on their system, which may break homebrew.
Use the full Framework path instead, which is less likely to be tampered with.
This also reorganizes the brew --config checks to reflect the different path.
FixesHomebrew/homebrew#12009.
ClosesHomebrew/homebrew#12333.
Signed-off-by: Misty De Meo <mistydemeo@gmail.com>
- Reimplement archs_for_command on top of the new Mach-O methods
- Move ArchitectureListExtension to mach.rb
- Add a test for the ArchitectureListExtension
Signed-off-by: Jack Nagel <jacknagel@gmail.com>
Some libraries do not have the .dylib extension (e.g. Qt framework
libs), but need to have their install names rewritten to prevent other
packages from breaking due to upgrades. Use the new Pathname#dylib?
instead.
The MachO module contains methods for learning about Mach-O binaries,
and can be used where one might normally shell out to file(1).
Signed-off-by: Jack Nagel <jacknagel@gmail.com>
JNI libraries in OS X are suffixed with jnilib. Additionally,
/usr/local/lib is a default search location for JNI libraries,
so Homebrew shouldn't complain when it installs .jnilibs into lib.
Signed-off-by: Adam Vandenberg <flangy@gmail.com>
We use a pipe to marshal exceptions from the build script back to the
main Homebrew process; the associated file descriptor is stored in an
environment variable so that the script can figure out which descriptor
to use after being exec'd.
However, any child processes of the build script inherit this
descriptor (i.e. anything spawned via "system" by the formula during
installation). Normally this is not an issue, but if a formula executes
a long-running process such as a daemon, the main Homebrew process will
never see EOF on the error pipe because the daemon still has an open
descriptor.
We can fix this while preserving current behavior by setting the
close-on-exec flag on the build script's error pipe descriptor.
Signed-off-by: Jack Nagel <jacknagel@gmail.com>
This differs from the current std_cmake_parameters in that it returns an
array instead of a string. Doing so makes dealing with it in formulae
much more pleasant, and for new formula hackers, less surprising.
std_cmake_parameters is retained in compat to maintain compatibility
with external formulae.
Signed-off-by: Jack Nagel <jacknagel@gmail.com>
Potentially build scripts would call sudo, if so we don't want that to automatically succeed just because the time-period in which sudo works is still active after a previous incantation.
ClosesHomebrew/homebrew#10629.
In fact I don't see how this can have been the problem, but if this isn't the problem then I don't see what else can be the problem.
Having in_aclocal_dirlist? defined as a method on FormulaInstaller is a
little weird; since its just a return condition of check_m4, move the
code there.
Signed-off-by: Jack Nagel <jacknagel@gmail.com>
Under certain circumstances, an invalid path element would cause
File.expand_path to bail out. Catch mistakes and report them, then
continue instead.
FixesHomebrew/homebrew#12154
'which' only returns a Pathname or nil, and doesn't care about anything
sent to stderr, so just silence it by default and combine the two
methods.
ClosesHomebrew/homebrew#12115.
Signed-off-by: Jack Nagel <jacknagel@gmail.com>