57 Commits

Author SHA1 Message Date
Adam Vandenberg
88865416e9 document FormulaConflict 2014-05-12 21:22:01 -07:00
Jack Nagel
6b001f1e3b Add keg-only reason symbols for Xcode 4.3 and Xcode 5
Closes Homebrew/homebrew#28095.
2014-04-03 09:12:51 -05:00
Jack Nagel
8f1f1d8d8a Make keg_only validation lazy 2014-04-01 21:35:22 -05:00
Jack Nagel
a31fcb554c Move SoftwareSpec to a separate file 2013-09-14 10:16:52 -05:00
Jack Nagel
f6536e9c8b Reject versions that aren't strings 2013-06-28 21:18:04 -05:00
Jack Nagel
033ef09518 Detect versions in tag specs
Closes Homebrew/homebrew#18300.
Closes Homebrew/homebrew#20891.
2013-06-28 21:17:23 -05:00
Jack Nagel
74b60a561c Simplify custom version scheme handling 2013-06-28 21:17:12 -05:00
Jack Nagel
8b9a3a560f Separate formula conflicts from requirements
Closes Homebrew/homebrew#20357.
2013-06-09 13:45:25 -05:00
Mike McQuaid
bf828aa36b Bottle DSL: allow checksums access. 2013-06-08 16:41:44 +01:00
Jack Nagel
79a769215f Decouple bottle tags from MacOS.cat 2013-06-06 16:02:27 -05:00
Jack Nagel
856cebd9b4 Use ivar accessors 2013-06-06 12:10:41 -05:00
Jack Nagel
b97b013fce Extract attr_rw from Formula for reuse
Closes Homebrew/homebrew#20239.
2013-06-04 11:06:18 -05:00
Adam Vandenberg
903c340664 Audit url/devel/head for redundant :using 2013-05-27 22:25:34 -07:00
Mike McQuaid
a75aff246e Remove cat_without_underscores bottle methods. 2013-05-25 16:02:18 +01:00
Jack Nagel
9dda9339ad Remove dead code
This is initialized in #initialize.
2013-04-08 00:27:47 -05:00
Jack Nagel
dda22a3562 Rename checksums.rb to match class name 2013-04-04 12:34:24 -05:00
Jack Nagel
0d45c3c0f2 Suppress uninitialized instance variable warnings 2013-03-28 17:37:29 -05:00
Jack Nagel
c8168d8a4a Simplify SoftwareSpec checksum methods
Reader methods for specific checksum types have been absent from the
Formula class for some time, so there isn't any reason to expose them in
SoftwareSpec, either.

Thus, these methods now only act as setters, and #checksum should be
used to access the constructed Checksum object.
2013-03-18 15:10:36 -05:00
Jack Nagel
79a67fd097 Pass filename and lineno arguments to class_eval 2013-03-12 00:38:52 -05: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
Jack Nagel
00f05eafe9 Remove redundant attr_readers
These are redefined later for use in the bottle DSL.
2013-03-09 22:44:53 -06:00
Mike McQuaid
5a2874c652 bottles: remove unused 'version' from DSL. 2013-03-09 21:27:41 +00:00
Mike McQuaid
20c0ddc401 Add non-/usr/local bottles support.
Signed-off-by: Mike McQuaid <mike@mikemcquaid.com>
2013-03-01 17:49:09 +00:00
Mike McQuaid
22aec1d0d9 Add custom bottle URL support.
Signed-off-by: Mike McQuaid <mike@mikemcquaid.com>
2013-03-01 17:49:09 +00:00
Mike McQuaid
360af367a8 Cleanup bottle DSL.
* Remove legacy url syntax.
* Use revision instead of version.

Signed-off-by: Mike McQuaid <mike@mikemcquaid.com>
2013-03-01 17:49:09 +00:00
Jack Nagel
248891fde1 Avoid nil in URL specs 2013-02-11 20:52:07 -06:00
Mike McQuaid
b58077b3e8 Don't use underscores in (new) bottle filenames.
Closes Homebrew/homebrew#14270
2013-01-29 17:14:09 -08:00
Jack Nagel
5088fdd543 Move BuildOptions to a separate file 2013-01-26 11:37:02 -06:00
Jack Nagel
70ff06c827 Refactor option handling internals
Currently we handle options in several ways, and it is hard to remember
what code needs an option string ("--foo"), what needs only the name
("foo") and what needs an Option object.

Now that Option objects can act as strings and be converted to JSON, we
can start using them instead of passing around strings between Formula
objects, Tab objects, and ARGV-style arrays.

The Options class is a special collection that can be queried for the
inclusion of options in any form: '--foo', 'foo', or Option.new("foo").
2013-01-26 11:37:01 -06:00
Jack Nagel
26b1b88c97 BuildOptions: check has_option? for universal and 32-bit 2013-01-26 11:37:01 -06:00
Jack Nagel
cbf0fe6549 BuildOptions: simplify setting description 2013-01-26 11:37:01 -06:00
Jack Nagel
4062559acb Options can be dumped as JSON 2013-01-26 11:37:01 -06:00
Jack Nagel
a5471a0cb0 Options can be used interchangeably with Strings
We want to be able to use Option objects in place of strings and have
this be transparent. Defining to_str means that methods like
Kernel#system and Kernel#exec will be able to perform an implicit
conversion.
2013-01-26 11:37:01 -06:00
Jack Nagel
f3d3bc4368 Move option comparison into BuildOptions 2013-01-26 11:37:00 -06:00
Jack Nagel
39ec66614b Test coverage for DownloadStrategyDetector
While at it, make it use class methods instead; no reason to instantiate
an object for this.

Eventually there should be some functional tests for the individual
strategies as well.

Signed-off-by: Jack Nagel <jacknagel@gmail.com>
2012-10-15 17:45:48 -05:00
Mike McQuaid
6400f41a77 Fix keg-only on pre-Mountain Lion formulae. 2012-08-23 09:49:08 -07:00
Jack Nagel
3f9e88ae69 Simplify build options API
Simplify access to the different forms of a formula's build options by
making options into real objects rather than strings, and expose both
the 'name' and 'flag' form.
2012-08-20 14:16:08 -05:00
Jack Nagel
2ff6c40735 Add support for custom version schemes
A version scheme is a class that inherits from Version and reimplements
Version#<=>. This will allow formulae to specify a custom comparison
method that will be used instead of the default, for cases where the
default is insufficient.
2012-08-18 11:12:09 -05:00
Jack Nagel
741a4168d0 SoftwareSpec: simplify conditional 2012-08-18 11:12:09 -05:00
Jack Nagel
e57122780e Add Version#detected_from_url? 2012-08-18 11:12:09 -05:00
Jack Nagel
329f0a8490 Replace version strings with Version objects 2012-08-18 11:12:08 -05:00
Jack Nagel
a054dc5019 Add :when_xquartz_installed as a keg-only reason
Using :when_xquartz_installed will tell the keg-only machinery to activate
if XQuartz is installed.

Signed-off-by: Jack Nagel <jacknagel@gmail.com>
2012-08-12 17:28:15 -05:00
Jack Nagel
8952bcf315 Fix writing build options to install receipt
Signed-off-by: Jack Nagel <jacknagel@gmail.com>
2012-08-12 13:37:40 -05:00
Jack Nagel
0549a9ab05 BuildOptions: store option tuples in a Set
As options are stored in an object owned by the eigenclass of a formula,
options defined in the Formula#options method can be added multiple
times if the formula is instantiated multiple times.

Store them in a set to prevent duplicates.

Fixes Homebrew/homebrew#14133.

Signed-off-by: Jack Nagel <jacknagel@gmail.com>
2012-08-12 00:58:48 -05:00
Adam Vandenberg
2104510b63 New style is for option descriptions to not end with periods 2012-08-09 21:35:56 -07:00
Adam Vandenberg
dbe460ef04 options: remove duplicate function 2012-08-09 07:20:14 -07:00
Adam Vandenberg
d1d52b3467 Add option to the DSL
Closes Homebrew/homebrew#9982
2012-08-08 22:01:27 -07:00
Misty De Meo
90b2f1f4ba SoftwareSpec: initialize @mirrors
Since methods were being called on it without verifying its type.
2012-07-05 13:11:44 -05:00
Jack Nagel
c235395fd7 Give SoftwareSpec an initializer
Tools like `brew create` need to create and manipulate SoftwareSpec
objects. It is useful to be able to do this directly, rather than by
proxy through the special methods that serve the main formula DSL.

Signed-off-by: Jack Nagel <jacknagel@gmail.com>
2012-07-04 22:47:35 -05:00
Jack Nagel
56fe164e95 Teach download strategies to take a SoftwareSpec
Now that a URL, version, and the (for lack of a better term) "specs"
associated with said URL (e.g. the VCS revision, or a download strategy
hint) are neatly bundled up in a SoftwareSpec object, it doesn't make
sense to pass them individually to download strategy constructors. These
constructors now take only the formula name and a SoftwareSpec as
parameters.

This allows us to move mirror handling out out of Formula#fetch and into
the download strategies themselves. While doing so, we adjust the mirror
implementation a bit; mirrors now assume the same "specs" as their
owner's URL. They are still only useable by the CurlDownloadStrategy,
but this provides a basis for extending mirror support to other
strategies.

Signed-off-by: Jack Nagel <jacknagel@gmail.com>
2012-07-04 22:47:35 -05:00