aboutsummaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)Author
2013-01-290.9.4: optional/recommended support0.9.4Adam Vandenberg
2013-01-29Add 'instal' to completionsAdam Vandenberg
2013-01-29Keg#lock: guard against nil in ensureJack Nagel
Fixes Homebrew/homebrew#17403.
2013-01-29Update Xcode.version for 4.6Jack Nagel
2013-01-29Don't print git origin check without git repoMisty De Meo
2013-01-29Update clang version regexp in CLT checkJack Nagel
2013-01-28remove vim from the blacklistJack Nagel
2013-01-28Update latest CLT versionJack Nagel
2013-01-28doctor: fix typoJack Nagel
2013-01-28Fix clang version detection on Xcode 4.6+Jack Nagel
2013-01-28Fix compiler map keyJack Nagel
2013-01-28Xcode 4.6 released.Mike McQuaid
Closes Homebrew/homebrew#17383. Closes Homebrew/homebrew#17384.
2013-01-28LanguageModuleDependency: call super() to generate tags listJack Nagel
Fixes Homebrew/homebrew#17379.
2013-01-28Filter optional and reccommended requirementsJack Nagel
2013-01-28Generate options for optional and recommended requirementsJack Nagel
2013-01-28DependencyCollector: return created dep from #addJack Nagel
2013-01-28Allow specifying a name attribute for X11DependencyJack Nagel
2013-01-27Consider correct dependent when skipping build-time depsJack Nagel
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-27Extract unsatisfied dependency logic from installerJack Nagel
2013-01-27Invoke super() in requirement subclassesJack Nagel
2013-01-27audit: hint about depends_on ClassAdam Vandenberg
2013-01-27Update requireJack Nagel
2013-01-27doctor: fix transposed git commandSema
Closes Homebrew/homebrew#17338. Signed-off-by: Jack Nagel <jacknagel@gmail.com>
2013-01-26superenv: --use-gcc should specify gcc-4.2Misty De Meo
Since 'gcc' is a symlink to 'llvm-gcc' on Xcode 4.3+, --use-gcc and --use-llvm were doing exactly the same thing. Combined with the previous commit, this allows users with either a leftover /usr/bin/gcc-4.2 or a homebrewed apple-gcc42 to build with gcc. This doesn't however fix Xcode-only systems with apple-gcc42. Fixes Homebrew/homebrew#17243.
2013-01-26xcrun: actually try fallbacksMisty De Meo
xcrun has a lot of fallbacks if the first case fails but never actually reaches them on CLT systems since it doesn't check the validity of the first path before executing it. (When should it reach these? Mainly for non-Xcode compilers we support, e.g. apple-gcc42 which can be found by xcrun but which isn't in /usr/bin) The xcrun invocation also needed chomping.
2013-01-26Split dependency classes into separate filesJack Nagel
2013-01-26Generate options immediately following depends_onJack Nagel
Given depends_on 'gnutls' => :recommended depends_on 'libgcrypt' unless build.without? 'gnutls' the dependency on libgcrypt should be enabled by default. However, the corresponding option has not yet been generated, so the condition is true and the dependency is disabled. Instead, add a hook method that fires after each depends_on and adds the appropriate option.
2013-01-26Don't force universal for build depsJack Nagel
2013-01-26FormulaInstaller: wrap --build-from-source in an Option objectJack Nagel
c.f. Homebrew/homebrew#17327.
2013-01-26locks: ensure lock directory existsJack Nagel
Fixes Homebrew/homebrew#17326.
2013-01-26audit: warn about nonexistent options passed to depsJack Nagel
2013-01-26upgrade: use standard Tab accessorJack Nagel
Yes, the formula object does refer to a version that has not yet been installed, but we were not looking into Formula#prefix, but #linked_keg, which is version agnostic (since the original patch was committed, we Tab#for_formula learned to look into #opt_prefix as well). The rest of the logic is already embedded in the Tab accessors.
2013-01-26Fix Dependencies -> Array conversionJack Nagel
2013-01-26Tag Xcode and CLT requirements as build-timeJack Nagel
This way they can be skipped when installing bottles.
2013-01-26Add "depends_on :clt"samueljohn
2013-01-26Replace usages of recursive_deps with recursive_dependenciesJack Nagel
2013-01-26upgrade: offload dependency expansion to FormulaInstallerJack Nagel
Now that FormulaInstaller does dependency expansion the _right_ way, avoid duplicating the logic in upgrade. Instead, offload it to the installer, which will generate an exception in check_install_sanity that we can safely ignore when formulae in the outdated list are upgraded as part of the dependency tree of another outdated formula.
2013-01-26uses: utilize modern dependency APIJack Nagel
2013-01-26missing: ignore unused optional and recommended depsJack Nagel
2013-01-26FormulaInstaller: construct new ARGV from an Options collectionJack Nagel
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-26FormulaInstaller: allow formulae to pass options to depsJack Nagel
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-26FormulaInstaller: don't install bottle if options were passedJack Nagel
2013-01-26FormulaInstaller: make tab an attr, but never a parameterJack Nagel
2013-01-26Dependency.expand_dependenciesJack Nagel
Move Formula.expand_dependencies into the Dependency class, and extend it to allow arbitrary filters to be applied when enumerating deps. When supplied with a block, expand_dependencies will yield a [dependent, dependency] pair for each dependency, allowing callers to filter out dependencies that may not be applicable or useful in a given situation. Deps can be skipped by simple calling Dependency.prune in the block, e.g.: Dependency.expand_dependencies do |f, dep| Dependency.prune if dep.to_formula.installed? end The return value of the method is the filtered list. If no block is supplied, a default filter that omits optional or recommended deps based on what the dependent formula has requested is applied. Formula#recursive_dependencies is now implemented on top of this, allowing FormulaInstaller to exact detailed control over what deps are installed. `brew missing` and `brew upgrade` can learn to use this to apply the installed options set when expanding dependencies. Move Formula.expand_deps and Formula#recursive_deps into compat, because these methods do not respect the new optional and recommended tags and thus should no longer be used.
2013-01-26Let option override with/without descriptionsAdam Vandenberg
2013-01-26Add support for optional and recommended depsAdam Vandenberg
Optional deps are not installed by default but generate a corresponding "with-foo" option for the formula. Recommended deps _are_ installed by default, and generate a corresponding "without-foo" option.
2013-01-26Formula::finalize_dslAdam Vandenberg
2013-01-26FormulaInstaller: implement installation locksJack Nagel
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-26FormulaInstaller: skip build-time deps for bottlesJack Nagel
2013-01-26FormulaInstaller: factor out dependency installationJack Nagel