diff --git a/Library/Homebrew/cask_dependent.rb b/Library/Homebrew/cask_dependent.rb index cb9841fb8b..36c28c5e2c 100644 --- a/Library/Homebrew/cask_dependent.rb +++ b/Library/Homebrew/cask_dependent.rb @@ -1,8 +1,17 @@ # typed: true # frozen_string_literal: true +require "requirement" + # An adapter for casks to provide dependency information in a formula-like interface. class CaskDependent + # Defines a dependency on another cask + class Requirement < ::Requirement + satisfy(build_env: false) do + Cask::CaskLoader.load(cask).installed? + end + end + attr_reader :cask def initialize(cask) @@ -33,11 +42,21 @@ class CaskDependent dsl_reqs = @cask.depends_on dsl_reqs.arch&.each do |arch| - requirements << ArchRequirement.new([:x86_64]) if arch[:bits] == 64 - requirements << ArchRequirement.new([arch[:type]]) + arch = if arch[:bits] == 64 + if arch[:type] == :intel + :x86_64 + else + :"#{arch[:type]}64" + end + elsif arch[:type] == :intel && arch[:bits] == 32 + :i386 + else + arch[:type] + end + requirements << ArchRequirement.new([arch]) end dsl_reqs.cask.each do |cask_ref| - requirements << Requirement.new([{ cask: cask_ref }]) + requirements << CaskDependent::Requirement.new([{ cask: cask_ref }]) end requirements << dsl_reqs.macos if dsl_reqs.macos diff --git a/Library/Homebrew/dependencies.rb b/Library/Homebrew/dependencies.rb index b3a12d9bff..3b107e9999 100644 --- a/Library/Homebrew/dependencies.rb +++ b/Library/Homebrew/dependencies.rb @@ -2,7 +2,6 @@ # frozen_string_literal: true require "delegate" -require "cask_dependent" # A collection of dependencies. #