From ea4d137e871ace8200743f237c48189e3b930da1 Mon Sep 17 00:00:00 2001 From: Martin Afanasjew Date: Tue, 15 Dec 2015 10:50:38 +0100 Subject: dependency: fix merging tags in 'merge_repeats' While it may suffice to merge string and non-reserved tags by forming a union of all tags of dependencies of the same name, this approach fails to work for the reserved tags. These are now merged such that the most restrictive tag (meaning sometimes an empty tag) is preserved. The previous behavior caused essential dependencies to be omitted and builds to fail in response. E.g., multiple `:fortran` dependencies with tags `[]`, `[:recommended]`, and `[:optional]` would have been expanded and merged to `"gcc"` with tags `[:recommended, :optional]`, causing it to be no longer seen as a required dependency. Closes Homebrew/homebrew#47040. Signed-off-by: Martin Afanasjew --- Library/Homebrew/dependable.rb | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'Library/Homebrew/dependable.rb') diff --git a/Library/Homebrew/dependable.rb b/Library/Homebrew/dependable.rb index 4a3d2de88..4060973c4 100644 --- a/Library/Homebrew/dependable.rb +++ b/Library/Homebrew/dependable.rb @@ -20,10 +20,16 @@ module Dependable end def required? + # FIXME: Should `required?` really imply `!build?`? And if so, why doesn't + # any of `optional?` and `recommended?` equally imply `!build?`? !build? && !optional? && !recommended? end + def option_tags + tags - RESERVED_TAGS + end + def options - Options.create(tags - RESERVED_TAGS) + Options.create(option_tags) end end -- cgit v1.2.3