Class: BottleSpecification Private
- Extended by:
- Attrable
- Defined in:
- extend/os/linux/software_spec.rb,
software_spec.rb,
sorbet/rbi/parlour.rbi
This class is part of a private API. This class may only be used in the Homebrew/brew repository. Third parties should avoid using this class if possible, as it may be removed or changed without warning.
Constant Summary collapse
- RELOCATABLE_CELLARS =
This constant is part of a private API. This constant may only be used in the Homebrew/brew repository. Third parties should avoid using this constant if possible, as it may be removed or changed without warning.
[:any, :any_skip_relocation].freeze
Instance Attribute Summary collapse
- #collector ⇒ Object readonly private
- #repository ⇒ Object readonly private
- #root_url_specs ⇒ Object readonly private
- #tap ⇒ Object private
Instance Method Summary collapse
- #checksums ⇒ Object private
- #compatible_locations?(tag: Utils::Bottles.tag) ⇒ Boolean private
- #initialize ⇒ void constructor private
- #rebuild(arg = T.unsafe(nil)) ⇒ T.untyped private
- #root_url(var = nil, specs = {}) ⇒ Object private
-
#sha256(hash) ⇒ Object
private
Checksum methods in the DSL's bottle block take a Hash, which indicates the platform the checksum applies on.
-
#skip_relocation?(tag: Utils::Bottles.tag) ⇒ Boolean
private
Does the Bottle this BottleSpecification belongs to need to be relocated?.
- #tag?(tag, no_older_versions: false) ⇒ Boolean private
- #tag_specification_for(tag, no_older_versions: false) ⇒ Utils::Bottles::TagSpecification? private
- #tag_to_cellar(tag = Utils::Bottles.tag) ⇒ Symbol, String private
Methods included from Attrable
Constructor Details
#initialize ⇒ void
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
520 521 522 523 524 525 |
# File 'software_spec.rb', line 520 def initialize @rebuild = 0 @repository = Homebrew::DEFAULT_REPOSITORY @collector = Utils::Bottles::Collector.new @root_url_specs = {} end |
Instance Attribute Details
#collector ⇒ Object (readonly)
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
517 518 519 |
# File 'software_spec.rb', line 517 def collector @collector end |
#repository ⇒ Object (readonly)
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
517 518 519 |
# File 'software_spec.rb', line 517 def repository @repository end |
#root_url_specs ⇒ Object (readonly)
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
517 518 519 |
# File 'software_spec.rb', line 517 def root_url_specs @root_url_specs end |
#tap ⇒ Object
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
516 517 518 |
# File 'software_spec.rb', line 516 def tap @tap end |
Instance Method Details
#checksums ⇒ Object
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 |
# File 'software_spec.rb', line 621 def checksums = collector..sort_by do |tag| version = tag.to_macos_version # Give `arm64` bottles a higher priority so they are first. priority = (tag.arch == :arm64) ? 2 : 1 "#{priority}.#{version}_#{tag}" rescue MacOSVersion::Error # Sort non-macOS tags below macOS tags. "0.#{tag}" end .reverse.map do |tag| spec = collector.specification_for(tag) { "tag" => spec.tag.to_sym, "digest" => spec.checksum, "cellar" => spec.cellar, } end end |
#compatible_locations?(tag: Utils::Bottles.tag) ⇒ Boolean
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 |
# File 'software_spec.rb', line 561 def compatible_locations?(tag: Utils::Bottles.tag) cellar = tag_to_cellar(tag) return true if RELOCATABLE_CELLARS.include?(cellar) prefix = Pathname(cellar.to_s).parent.to_s cellar_relocatable = cellar.size >= HOMEBREW_CELLAR.to_s.size && ENV["HOMEBREW_RELOCATE_BUILD_PREFIX"].present? prefix_relocatable = prefix.size >= HOMEBREW_PREFIX.to_s.size && ENV["HOMEBREW_RELOCATE_BUILD_PREFIX"].present? compatible_cellar = cellar == HOMEBREW_CELLAR.to_s || cellar_relocatable compatible_prefix = prefix == HOMEBREW_PREFIX.to_s || prefix_relocatable compatible_cellar && compatible_prefix end |
#rebuild(arg = T.unsafe(nil)) ⇒ T.untyped
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
270 |
# File 'sorbet/rbi/parlour.rbi', line 270 def rebuild(arg = T.unsafe(nil)); end |
#root_url(var = nil, specs = {}) ⇒ Object
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 |
# File 'software_spec.rb', line 527 def root_url(var = nil, specs = {}) if var.nil? @root_url ||= if (github_packages_url = GitHubPackages.root_url_if_match(Homebrew::EnvConfig.bottle_domain)) github_packages_url else Homebrew::EnvConfig.bottle_domain end else @root_url = if (github_packages_url = GitHubPackages.root_url_if_match(var)) github_packages_url else var end @root_url_specs.merge!(specs) end end |
#sha256(hash) ⇒ Object
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
Checksum methods in the DSL's bottle block take a Hash, which indicates the platform the checksum applies on. Example bottle block syntax: bottle do sha256 cellar: :any_skip_relocation, big_sur: "69489ae397e4645..." sha256 cellar: :any, catalina: "449de5ea35d0e94..." end
596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 |
# File 'software_spec.rb', line 596 def sha256(hash) sha256_regex = /^[a-f0-9]{64}$/i # find new `sha256 big_sur: "69489ae397e4645..."` format tag, digest = hash.find do |key, value| key.is_a?(Symbol) && value.is_a?(String) && value.match?(sha256_regex) end cellar = hash[:cellar] if digest && tag tag = Utils::Bottles::Tag.from_symbol(tag) cellar ||= tag.default_cellar collector.add(tag, checksum: Checksum.new(digest), cellar:) end |
#skip_relocation?(tag: Utils::Bottles.tag) ⇒ Boolean
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
Does the Bottle this BottleSpecification belongs to need to be relocated?
6 7 8 |
# File 'extend/os/linux/software_spec.rb', line 6 def skip_relocation?(tag: Utils::Bottles.tag) false end |
#tag?(tag, no_older_versions: false) ⇒ Boolean
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
585 586 587 |
# File 'software_spec.rb', line 585 def tag?(tag, no_older_versions: false) collector.tag?(tag, no_older_versions:) end |
#tag_specification_for(tag, no_older_versions: false) ⇒ Utils::Bottles::TagSpecification?
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
617 618 619 |
# File 'software_spec.rb', line 617 def tag_specification_for(tag, no_older_versions: false) collector.specification_for(tag, no_older_versions:) end |
#tag_to_cellar(tag = Utils::Bottles.tag) ⇒ Symbol, String
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
551 552 553 554 555 556 557 558 |
# File 'software_spec.rb', line 551 def tag_to_cellar(tag = Utils::Bottles.tag) spec = collector.specification_for(tag) if spec.present? spec.cellar else tag.default_cellar end end |