aboutsummaryrefslogtreecommitdiffstats
path: root/Library/Homebrew/dependency.rb
AgeCommit message (Collapse)Author
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 Homebrew/homebrew#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 Homebrew/homebrew#20335.
2013-06-07Add Dependency#inspectJack Nagel
2013-06-03Allow explicit conversion of requirements to depsJack Nagel
Fixes Homebrew/homebrew#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