aboutsummaryrefslogtreecommitdiffstats
path: root/Library/Homebrew/dependency.rb
AgeCommit message (Collapse)Author
2014-12-29TapDependency: add tap accessor.Mike McQuaid
2014-11-21Hashes do not iterate in insertion order on Ruby 1.8Jack Nagel
2014-11-21Fix dependency equalityJack Nagel
2014-08-27Rewrite missing_options in a more obvious wayJack Nagel
2014-08-23Remove an unnecessary default argumentJack Nagel
2014-08-11Replace the build object rather than mutate itJack Nagel
2014-07-30Remove confusing implicit options handlingJack Nagel
This code is supposed to allow depends_on "foo" => "with-bar" to work when foo has only a "without-bar" option. The options system was not designed to support this. Unfortunately, it was bolted on anyway. The implementation is extremely difficult to understand, and it only works for certain types of options, which is confusing from a user's point of view. Luckily, no formulae in core or the official taps rely on the behavior in order to function. It is hindering progress in improving this code, so I am removing it.
2014-07-01Always use class.name to build inspect stringsJack Nagel
2014-06-22Move deprecated Formula class methods to compatJack Nagel
These have all been moved to Formulary.
2014-02-28Add TapDependencyJack Nagel
2014-02-27Eliminate mutation of Dependency objectsJack Nagel
2014-02-27Pass expansion-time build options to install_dependencyJack Nagel
2014-02-27Apply cyclic dependency hack unconditionallyJack Nagel
2014-02-27Remove requested? dependency magicJack Nagel
2014-02-13Eliminate unnecessary arrays and call to flattenJack Nagel
2014-01-03dependency: don't try and expand yourself.Mike McQuaid
This can happen on e.g. fossil where the dependency HEAD requires having an install of fossil in order to check it out. Bit of a silly edge case but this handles it. Fixes #25605
2013-12-09Ensure option names are consistent for default formula requirementsJack Nagel
2013-12-09Pass deps collection to be expanded as a parameterJack Nagel
2013-11-13Prevent deps of build-time deps from leaking into the build environmentJack Nagel
When decided what dependencies should be part of the build environment (and have appropriate entries added to variables like PKG_CONFIG_PATH), we select the entire dependency tree except for (1) inactive optional and recommended deps (2) indirect build-time deps (i.e., build-time deps of other deps) There is a third category that sould be excluded: dependencies of direct build-time deps. These are irrelevant to the build, and including them can cause unexpected linkages.
2013-11-05Dependency: tighten equality checkJack Nagel
2013-09-27Allow Dependency objects to be marshaledJack Nagel
When an exception is raised in the build process, it is marshaled and sent to the main process over a pipe. The marshaled exception has a reference to the formula, so the formula and all objects it references are marshaled as well. Previously this did not include dependencies, as they were stored only on the class and not referenced by an instance variable. However, now they are stored on SoftwareSpec instances, to which the formula *does* have a direct reference, so they must be marshalable.
2013-08-20Avoid the need to compact the expanded deps arrayJack Nagel
2013-07-22Update commentJack Nagel
2013-07-22Check deps of satisfied depsJack Nagel
2013-06-27Fix some #eql? correctness issuesJack Nagel
The implementation of #eql? and #hash should ensure that if a.eql?(b), then a.hash == b.hash, but #eql? itself should not *depend* on #hash. For example, given class Thingy def eql? instance_of?(other.class) && hash == other.hash end def hash [name, *tags].hash end end if #hash produces a collision for different values of [name, *tags], two Thingy objects will appear to be eql?, even though this is not the case. Instead, #eql? should depend on the equality of name and tags directly.
2013-06-25Uniqify tags when merging dependenciesJack Nagel
2013-06-24Copy env_proc when merging depsJack Nagel
2013-06-08Use actual class of dep when recreating merged depsJack Nagel
Refs #19182.
2013-06-08Merge repeated deps with differing optionsJack Nagel
When expanding dependencies, repeated deps are treated as equal and all but the first are discarded when #uniq is called on the resulting array. However, they may have different sets of options attached, so we cannot assume they are the same. After the initial expansion, we group them by name and then create a new Dependency object for each name, merging the options from each group. Fixes #20335.
2013-06-07Add Dependency#inspectJack Nagel
2013-06-03Allow explicit conversion of requirements to depsJack Nagel
Fixes #19857.
2013-06-03Python 2.x and 3.x supportSamuel John
New `depends_on :python` Dependency. New `depends_on :python3` Dependency. To avoid having multiple formulae with endings -py2 and -py3, we will handle support for different pythons (2.x vs. 3.x) in the same formula. Further brewed vs. external python will be transparently supported. The formula also gets a new object `python`, which is false if no Python is available or the user has disabled it. Otherwise it is defined and provides several support methods: python.site_packages # the site-packages in the formula's Cellar python.global_site_packages python.binary # the full path to the python binary python.prefix python.version python.version.major python.version.minor python.xy # => e.g. "python2.7" python.incdir # includes of python python.libdir # the python dylib library python.pkg_config_path # used internally by brew python.from_osx? python.framework? python.universal? python.pypy? python.standard_caveats # Text to set PYTHONPATH for python.from_osx? python.if3then3 # => "" for 2.x and to "3" for 3.x. Further, to avoid code duplication, `python` takes an optional block that is run twice if the formula defines depends_on :python AND :python3. python do system python, 'setup.py', "--prefix=#{prefix}" end Read more in the Homebrew wiki.
2013-05-25Dependency: use instanceof? in eql?Jack Nagel
This matches the eql? definition for requirements.
2013-05-10Refactor Dependency.expandJack Nagel
2013-05-06Reduce allocations in dependency constructionJack Nagel
By always passing around a single, unnested array rather than splatting and then defensively flattening and compacting things, we can avoid allocating a bunch of unnecessary arrays. This gives a performance boost of roughly 4% when enumerating 2500 formulae, and has the side effect of cleaning up the dependency API.
2013-01-31Update documentation for Dependency.expandJack Nagel
2013-01-27Extract unsatisfied dependency logic from installerJack Nagel
2013-01-26Split dependency classes into separate filesJack Nagel