574 Commits

Author SHA1 Message Date
Adam Vandenberg
5437a480eb install plist before linking
If linking fails,  won't try to re-install the plist.

Closes Homebrew/homebrew#20843.
2013-06-30 11:16:53 -07:00
Adam Vandenberg
6d41707b2b Make non-exes in bin fatal to brew-bot
Closes Homebrew/homebrew#10817.
2013-06-28 08:57:49 -07:00
Adam Vandenberg
1cd3149677 Be explicit about passing formulae names or instances to Tab 2013-06-26 19:58:08 -07:00
Jack Nagel
915977889c Note which formula's requirements failed
Closes Homebrew/homebrew#20713.
2013-06-25 10:37:34 -05:00
Adam Vandenberg
4c26224a24 Misplaced manpages fail brewbot
Closes Homebrew/homebrew#20711.
2013-06-24 07:34:45 -07:00
Adam Vandenberg
1aabba7b9e Show conflicting files on install if linking fails
Closes Homebrew/homebrew#18303.
Closes Homebrew/homebrew#20726.
2013-06-24 07:31:44 -07:00
Adam Vandenberg
8777901cf0 Use unicode escape
Prevents this character from being changed when resaving this file
with TextMate (1) on Snow Leopard.

Closes Homebrew/homebrew#20715.
2013-06-23 16:43:32 -07:00
Adam Vandenberg
f85863cbd0 Clean the cleaner
* Fix a comment; we pass in formulae not names
* Don't pass the formula to factory; this is just a pass-through
* Move require to top-level
2013-06-23 12:54:28 -07:00
Jack Nagel
28b9790dbd FormulaInstaller: ensure locks are always released 2013-06-11 15:35:30 -05:00
Jack Nagel
8b9a3a560f Separate formula conflicts from requirements
Closes Homebrew/homebrew#20357.
2013-06-09 13:45:25 -05:00
Jack Nagel
f848a08344 FormulaInstaller: factor out readline workaround 2013-06-08 15:14:23 -05:00
Mike McQuaid
95f9c6227a Use new download strategy for local bottles.
Fixes installation of e.g. ScriptFileFormula/denominator bottles.
2013-06-08 16:41:23 +01:00
Mike McQuaid
ff65923531 Raise bottle exceptions for Homebrew developers. 2013-06-08 16:40:40 +01:00
Jack Nagel
b87bf885c4 FormulaInstaller: fix "optional build-time dep" edge case
An "optional build-time dep" is unlikely, but possible, and I happen to
notice this wasn't handled correctly while digging around in the deps
code over the last few days.
2013-06-03 22:55:28 -05:00
Jack Nagel
0b4316fbd4 FormulaInstaller: split up big method 2013-06-03 22:50:11 -05:00
Jack Nagel
873d9766ae Allow explicit conversion of requirements to deps
Fixes Homebrew/homebrew#19857.
2013-06-03 16:52:00 -05:00
Jack Nagel
daef74aa27 Adjust semantics of Formula#fetch
It doesn't really make logical sense that this method returns both the
fetched path (or sometimes nil!) and the downloader, so just return the
path (again, or nil!) and callers that want the downloader can ask for
it separately.
2013-05-16 14:06:26 -05:00
Jack Nagel
136aa4c6f4 Remove last use of deprecated Formula#recursive_deps
Fixes Homebrew/homebrew#19107.
2013-04-10 11:55:02 -05:00
Jack Nagel
05a8c1913c FormulaInstaller: this local is an ivar now 2013-04-05 22:07:02 -05:00
Jack Nagel
6eac9679c0 FormulaInstaller: initialize @tab 2013-04-05 22:00:36 -05:00
Jack Nagel
9f9608e6c5 Allow pipe fd to be inherited under Ruby 2.0 2013-04-05 17:42:53 -05:00
Jack Nagel
12932a51b3 Don't error out when a package is already installed
Fixes Homebrew/homebrew#17010.
2013-04-03 18:27:28 -05:00
Mike McQuaid
462a418878 Add optional post_install method to Formula.
Sometimes we may want to run commands after bottle installation (such as
creating directories outside the Cellar) so this method allows us to do
so.

Closes Homebrew/homebrew#18382.
2013-04-01 22:12:43 +01:00
Mike McQuaid
1263b429df formula_installer: warn on bottles being skipped.
We want to notify users that non-/usr/local installs may result in some
bottles being not used.

References Homebrew/homebrew#18540
2013-04-01 22:12:43 +01:00
Mike McQuaid
8a33564cab Fix local installation of bottles.
Fixes Homebrew/homebrew#18631.
2013-03-21 10:33:17 +00:00
Mike McQuaid
b578a47bb9 brew-info: specify whether poured or built.
- Store in the tab if a bottle was poured for the build.
- Add an additional line of output to `brew info` outputting whether
  the formula was built from source or poured from a bottle.

Closes Homebrew/homebrew#18430.
Closes Homebrew/homebrew#18475.
2013-03-20 23:06:38 +00:00
Mike McQuaid
43a8e896e8 Temporarily omit bottle source warning.
Pending a decent fix.

Fixes Homebrew/homebrew#18540.
2013-03-17 14:49:08 +00:00
Mike McQuaid
0f9910d352 Relocate bottles using install_name_tool.
This has two parts:

1. Bottles are temporarily relocated on bottling and tested if that is
sufficient for them to contain no longer reference the prefix or
cellar. If so, they are marked as relocatable.
2. On installation if bottles are marked as relocatable they will be
relocated using install_name_tool to the current prefix and cellar.

Closes Homebrew/homebrew#18374.
2013-03-11 18:58:37 +00:00
Shaun Jackman
258d70028f Portability fixes to run Homebrew on Linux systems
Closes Homebrew/homebrew#16344.

Signed-off-by: Mike McQuaid <mike@mikemcquaid.com>
2013-03-11 18:26:25 +00:00
Mike McQuaid
d39280bdf7 Add current Ruby globals.
Allows access to the Ruby path. Needed for Linux
porting.
2013-03-11 18:26:25 +00:00
Mike McQuaid
c7c33c9830 Warn on bottles skipped due to non-default Cellar.
Closes Homebrew/homebrew#18333.
2013-03-09 21:29:53 +00:00
Jack Nagel
7b23870b98 Normalize magic encoding comments 2013-03-02 17:43:58 -06:00
Mike McQuaid
443bf9f287 Build from source on bottle pour failure.
Signed-off-by: Mike McQuaid <mike@mikemcquaid.com>
2013-03-01 17:49:09 +00:00
Jack Nagel
47a3e1ddc5 This file has embedded UTF-8 2013-02-19 14:27:17 -06:00
Jack Nagel
1a799f04e6 Remove unused variables 2013-02-18 12:13:35 -06:00
Jack Nagel
f172d3a6eb Don't use deprecated form of attr
The form "attr :name, true" is deprecated and causes Ruby to emit a
warning in verbose mode. Using attr_{reader,writer,accessor} is more
clear anyway, so do so.
2013-02-18 12:13:34 -06:00
Jack Nagel
c0822f8400 FormulaInstaller#check_requirements: fix inverted conditional 2013-02-02 14:51:10 -06:00
Jack Nagel
1408610b81 Proper recursive expansion of requirements with filtering
Expand requirements recursively while applying the same optional? and
recommended? filters that dependencies are run through. Options
generated by requirements are now checked against the correct list of
requirements, eliminating the temporary "best guess" logic in the
installer.
2013-01-31 15:40:06 -06:00
Jack Nagel
1a05e18fe9 FormulaInstaller: actually select unsatisfied requirements
Fixes Homebrew/homebrew#17422.
2013-01-29 23:43:44 -06:00
Jack Nagel
48a8af32f3 Filter optional and reccommended requirements 2013-01-28 10:35:15 -06:00
Jack Nagel
b90af5be13 Consider correct dependent when skipping build-time deps
We skip build-time deps when installing from bottles. However, the
current logic only considers the root, rather than the actual dependent
formula. Given

  A (bottled)
  |__B (not bottled)
     |__C (build-time)

C will be pruned from the effective dependency tree of A. This is wrong,
because C is required in order to build B.

Fix this by examining the current dependent rather than the root.

Fixes Homebrew/homebrew#17356.
2013-01-27 21:20:09 -06:00
Jack Nagel
5e83629119 Extract unsatisfied dependency logic from installer 2013-01-27 21:20:09 -06:00
Jack Nagel
036f3e7bfc Don't force universal for build deps 2013-01-26 17:24:17 -06:00
Jack Nagel
b8a884bcee FormulaInstaller: wrap --build-from-source in an Option object
c.f. Homebrew/homebrew#17327.
2013-01-26 13:53:32 -06:00
Jack Nagel
109145bf21 Replace usages of recursive_deps with recursive_dependencies 2013-01-26 12:14:49 -06:00
Jack Nagel
cf08b71bf8 FormulaInstaller: construct new ARGV from an Options collection
The array of options that is passed to the spawned build process is a
combination of the current ARGV, options passed in by a dependent
formula, and an existing install receipt. The objects that are
interacting here each expect the resulting collection to have certain
properties, and the expectations are not consistent.

Clear up this confusing mess by only dealing with Options collections.
This keeps our representation of options uniform across the codebase.

We can remove BuildOptions dependency on HomebrewArgvExtension, which
allows us to pass any Array-like collection to Tab.create. The only
other site inside of FormulaInstaller that uses the array is the #exec
call, and there it is splatted and thus we can substitute our Options
collection there as well.
2013-01-26 12:14:47 -06:00
Jack Nagel
046d802d09 FormulaInstaller: allow formulae to pass options to deps
Formulae can now pass build options to dependencies. The following
syntax is supported:

  depends_on 'foo' => 'with-bar'
  depends_on 'foo' => ['with-bar', 'with-baz']

If a dependency is already installed but lacks the required build
options, an exception is raised. Eventually we may be able to just stash
the existing keg and reinstall it with the combined set of used_options
and passed options, but enabling that is left for another day.
2013-01-26 12:14:46 -06:00
Jack Nagel
951872c4be FormulaInstaller: don't install bottle if options were passed 2013-01-26 12:14:46 -06:00
Jack Nagel
5822aa80cf FormulaInstaller: make tab an attr, but never a parameter 2013-01-26 12:14:46 -06:00
Jack Nagel
37a56fa513 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.
2013-01-26 12:14:45 -06:00