Class: DependencyCollector
- Extended by:
- Cachable
- Defined in:
- extend/os/mac/dependency_collector.rb,
extend/os/linux/dependency_collector.rb,
dependency_collector.rb
Overview
This class is used by depends_on
in the formula DSL to turn dependency
specifications into the proper kinds of dependencies and requirements.
Instance Attribute Summary collapse
-
#deps ⇒ Object
readonly
Returns the value of attribute deps.
-
#requirements ⇒ Object
readonly
Returns the value of attribute requirements.
Class Method Summary collapse
Instance Method Summary collapse
-
#add(spec) ⇒ Object
-
#build(spec) ⇒ Object
-
#bzip2_dep_if_needed(tags) ⇒ Object
-
#cache_key(spec) ⇒ Object
-
#curl_dep_if_needed(tags) ⇒ Object
-
#cvs_dep_if_needed(tags) ⇒ Object
-
#fetch(spec) ⇒ Object
-
#freeze ⇒ Object
-
#gcc_dep_if_needed(related_formula_names) ⇒ Dependency?
-
#git_dep_if_needed(tags) ⇒ Object
-
#glibc_dep_if_needed(related_formula_names) ⇒ Dependency?
-
#initialize ⇒ void
constructor
-
#initialize_dup(other) ⇒ Object
-
#subversion_dep_if_needed(tags) ⇒ Object
-
#unzip_dep_if_needed(tags) ⇒ Object
-
#xz_dep_if_needed(tags) ⇒ Object
-
#zstd_dep_if_needed(tags) ⇒ Object
Methods included from Cachable
Constructor Details
#initialize ⇒ void
26 27 28 29 30 31 32 |
# File 'dependency_collector.rb', line 26 def initialize # Ensure this is synced with `initialize_dup` and `freeze` (excluding simple objects like integers and booleans) @deps = Dependencies.new @requirements = Requirements.new init_global_dep_tree_if_needed! end |
Instance Attribute Details
#deps ⇒ Object (readonly)
Returns the value of attribute deps.
23 24 25 |
# File 'dependency_collector.rb', line 23 def deps @deps end |
#requirements ⇒ Object (readonly)
Returns the value of attribute requirements.
23 24 25 |
# File 'dependency_collector.rb', line 23 def requirements @requirements end |
Class Method Details
.tar_needs_xz_dependency? ⇒ Boolean
120 121 122 |
# File 'dependency_collector.rb', line 120 def self.tar_needs_xz_dependency? !new.xz_dep_if_needed([]).nil? end |
Instance Method Details
#add(spec) ⇒ Object
46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
# File 'dependency_collector.rb', line 46 def add(spec) case dep = fetch(spec) when Dependency @deps << dep when Requirement @requirements << dep when nil # no-op when we have a nil value nil else raise ArgumentError, "DependencyCollector#add passed something that isn't a Dependency or Requirement!" end dep end |
#build(spec) ⇒ Object
73 74 75 76 |
# File 'dependency_collector.rb', line 73 def build(spec) spec, = spec.is_a?(Hash) ? spec.first : spec parse_spec(spec, Array()) end |
#bzip2_dep_if_needed(tags) ⇒ Object
22 |
# File 'extend/os/mac/dependency_collector.rb', line 22 def bzip2_dep_if_needed(); end |
#cache_key(spec) ⇒ Object
65 66 67 68 69 70 71 |
# File 'dependency_collector.rb', line 65 def cache_key(spec) if spec.is_a?(Resource) && spec.download_strategy <= CurlDownloadStrategy File.extname(spec.url) else spec end end |
#curl_dep_if_needed(tags) ⇒ Object
90 91 92 |
# File 'dependency_collector.rb', line 90 def curl_dep_if_needed() Dependency.new("curl", ) end |
#cvs_dep_if_needed(tags) ⇒ Object
14 15 16 |
# File 'extend/os/mac/dependency_collector.rb', line 14 def cvs_dep_if_needed() Dependency.new("cvs", ) end |
#fetch(spec) ⇒ Object
61 62 63 |
# File 'dependency_collector.rb', line 61 def fetch(spec) self.class.cache.fetch(cache_key(spec)) { |key| self.class.cache[key] = build(spec) } end |
#freeze ⇒ Object
40 41 42 43 44 |
# File 'dependency_collector.rb', line 40 def freeze @deps.freeze @requirements.freeze super end |
#gcc_dep_if_needed(related_formula_names) ⇒ Dependency?
12 13 14 15 16 17 18 19 20 21 |
# File 'extend/os/linux/dependency_collector.rb', line 12 def gcc_dep_if_needed() # gcc is required for libgcc_s.so.1 if glibc or gcc are too old return unless DevelopmentTools.needs_build_formulae? return if building_global_dep_tree? return if .include?(GCC) return if global_dep_tree[GCC]&.intersect?() return unless formula_for(GCC) Dependency.new(GCC) end |
#git_dep_if_needed(tags) ⇒ Object
8 |
# File 'extend/os/mac/dependency_collector.rb', line 8 def git_dep_if_needed(); end |
#glibc_dep_if_needed(related_formula_names) ⇒ Dependency?
24 25 26 27 28 29 30 31 32 |
# File 'extend/os/linux/dependency_collector.rb', line 24 def glibc_dep_if_needed() return unless DevelopmentTools.needs_libc_formula? return if building_global_dep_tree? return if .include?(GLIBC) return if global_dep_tree[GLIBC]&.intersect?() return unless formula_for(GLIBC) Dependency.new(GLIBC) end |
#initialize_dup(other) ⇒ Object
34 35 36 37 38 |
# File 'dependency_collector.rb', line 34 def initialize_dup(other) super @deps = @deps.dup @requirements = @requirements.dup end |
#subversion_dep_if_needed(tags) ⇒ Object
10 11 12 |
# File 'extend/os/mac/dependency_collector.rb', line 10 def subversion_dep_if_needed() Dependency.new("subversion", ) end |
#unzip_dep_if_needed(tags) ⇒ Object
20 |
# File 'extend/os/mac/dependency_collector.rb', line 20 def unzip_dep_if_needed(); end |
#xz_dep_if_needed(tags) ⇒ Object
18 |
# File 'extend/os/mac/dependency_collector.rb', line 18 def xz_dep_if_needed(); end |
#zstd_dep_if_needed(tags) ⇒ Object
108 109 110 |
# File 'dependency_collector.rb', line 108 def zstd_dep_if_needed() Dependency.new("zstd", ) unless which("zstd") end |