Merge pull request #18305 from Homebrew/no-undefs
Use prepended modules instead of `undef` for OS-specific code
This commit is contained in:
commit
3b649d1dec
@ -19,9 +19,6 @@ module Homebrew
|
|||||||
sig { returns(T::Array[String]) }
|
sig { returns(T::Array[String]) }
|
||||||
attr_reader :options_only, :flags_only
|
attr_reader :options_only, :flags_only
|
||||||
|
|
||||||
# undefine tap to allow --tap argument
|
|
||||||
undef tap
|
|
||||||
|
|
||||||
sig { void }
|
sig { void }
|
||||||
def initialize
|
def initialize
|
||||||
require "cli/named_args"
|
require "cli/named_args"
|
||||||
|
|||||||
@ -24,6 +24,9 @@ module Homebrew
|
|||||||
}.freeze, T::Hash[Symbol, String])
|
}.freeze, T::Hash[Symbol, String])
|
||||||
private_constant :ArgType, :HIDDEN_DESC_PLACEHOLDER, :SYMBOL_TO_USAGE_MAPPING
|
private_constant :ArgType, :HIDDEN_DESC_PLACEHOLDER, :SYMBOL_TO_USAGE_MAPPING
|
||||||
|
|
||||||
|
sig { returns(Args) }
|
||||||
|
attr_reader :args
|
||||||
|
|
||||||
sig { returns(Args::OptionsType) }
|
sig { returns(Args::OptionsType) }
|
||||||
attr_reader :processed_options
|
attr_reader :processed_options
|
||||||
|
|
||||||
|
|||||||
@ -1,9 +1,12 @@
|
|||||||
# typed: strict
|
# typed: strict
|
||||||
# frozen_string_literal: true
|
# frozen_string_literal: true
|
||||||
|
|
||||||
module Homebrew
|
module OS
|
||||||
class Cleanup
|
module Linux
|
||||||
undef use_system_ruby?
|
module Cleanup
|
||||||
|
extend T::Helpers
|
||||||
|
|
||||||
|
requires_ancestor { Homebrew::Cleanup }
|
||||||
|
|
||||||
sig { returns(T::Boolean) }
|
sig { returns(T::Boolean) }
|
||||||
def use_system_ruby?
|
def use_system_ruby?
|
||||||
@ -20,4 +23,7 @@ module Homebrew
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
Homebrew::Cleanup.prepend(OS::Linux::Cleanup)
|
||||||
|
|||||||
31
Library/Homebrew/extend/os/linux/cli/parser.rb
Normal file
31
Library/Homebrew/extend/os/linux/cli/parser.rb
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
# typed: strict
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
module OS
|
||||||
|
module Linux
|
||||||
|
module CLI
|
||||||
|
module Parser
|
||||||
|
extend T::Helpers
|
||||||
|
|
||||||
|
requires_ancestor { Homebrew::CLI::Parser }
|
||||||
|
|
||||||
|
sig { void }
|
||||||
|
def set_default_options
|
||||||
|
args["formula?"] = true if args.respond_to?(:formula?)
|
||||||
|
end
|
||||||
|
|
||||||
|
sig { void }
|
||||||
|
def validate_options
|
||||||
|
return unless args.respond_to?(:cask?)
|
||||||
|
return unless args.cask?
|
||||||
|
|
||||||
|
# NOTE: We don't raise an error here because we don't want
|
||||||
|
# to print the help page or a stack trace.
|
||||||
|
odie "Invalid `--cask` usage: Casks do not work on Linux"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
Homebrew::CLI::Parser.prepend(OS::Linux::CLI::Parser)
|
||||||
@ -1,12 +1,12 @@
|
|||||||
# typed: true # rubocop:disable Sorbet/StrictSigil
|
# typed: true # rubocop:disable Sorbet/StrictSigil
|
||||||
# frozen_string_literal: true
|
# frozen_string_literal: true
|
||||||
|
|
||||||
class Formula
|
module OS
|
||||||
undef shared_library
|
module Linux
|
||||||
undef loader_path
|
module Formula
|
||||||
undef deuniversalize_machos
|
extend T::Helpers
|
||||||
undef add_global_deps_to_spec
|
|
||||||
undef valid_platform?
|
requires_ancestor { ::Formula }
|
||||||
|
|
||||||
sig { params(name: String, version: T.nilable(T.any(String, Integer))).returns(String) }
|
sig { params(name: String, version: T.nilable(T.any(String, Integer))).returns(String) }
|
||||||
def shared_library(name, version = nil)
|
def shared_library(name, version = nil)
|
||||||
@ -49,4 +49,8 @@ class Formula
|
|||||||
def valid_platform?
|
def valid_platform?
|
||||||
requirements.none?(MacOSRequirement)
|
requirements.none?(MacOSRequirement)
|
||||||
end
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
Formula.prepend(OS::Linux::Formula)
|
||||||
|
|||||||
@ -1,24 +0,0 @@
|
|||||||
# typed: strict
|
|
||||||
# frozen_string_literal: true
|
|
||||||
|
|
||||||
module Homebrew
|
|
||||||
module CLI
|
|
||||||
class Parser
|
|
||||||
undef set_default_options
|
|
||||||
undef validate_options
|
|
||||||
|
|
||||||
def set_default_options
|
|
||||||
@args["formula?"] = true if @args.respond_to?(:formula?)
|
|
||||||
end
|
|
||||||
|
|
||||||
def validate_options
|
|
||||||
return unless @args.respond_to?(:cask?)
|
|
||||||
return unless @args.cask?
|
|
||||||
|
|
||||||
# NOTE: We don't raise an error here because we don't want
|
|
||||||
# to print the help page or a stack trace.
|
|
||||||
odie "Invalid `--cask` usage: Casks do not work on Linux"
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
@ -1,13 +1,17 @@
|
|||||||
# typed: strict
|
# typed: strict
|
||||||
# frozen_string_literal: true
|
# frozen_string_literal: true
|
||||||
|
|
||||||
class Cleaner
|
module OS
|
||||||
|
module Mac
|
||||||
|
module Cleaner
|
||||||
private
|
private
|
||||||
|
|
||||||
undef executable_path?
|
|
||||||
|
|
||||||
sig { params(path: Pathname).returns(T::Boolean) }
|
sig { params(path: Pathname).returns(T::Boolean) }
|
||||||
def executable_path?(path)
|
def executable_path?(path)
|
||||||
path.mach_o_executable? || path.text_executable?
|
path.mach_o_executable? || path.text_executable?
|
||||||
end
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
Cleaner.prepend(OS::Mac::Cleaner)
|
||||||
|
|||||||
@ -1,10 +1,9 @@
|
|||||||
# typed: strict
|
# typed: strict
|
||||||
# frozen_string_literal: true
|
# frozen_string_literal: true
|
||||||
|
|
||||||
module Homebrew
|
module OS
|
||||||
class Cleanup
|
module Mac
|
||||||
undef use_system_ruby?
|
module Cleanup
|
||||||
|
|
||||||
sig { returns(T::Boolean) }
|
sig { returns(T::Boolean) }
|
||||||
def use_system_ruby?
|
def use_system_ruby?
|
||||||
return false if Homebrew::EnvConfig.force_vendor_ruby?
|
return false if Homebrew::EnvConfig.force_vendor_ruby?
|
||||||
@ -12,4 +11,7 @@ module Homebrew
|
|||||||
Homebrew::EnvConfig.developer? && ENV["HOMEBREW_USE_RUBY_FROM_PATH"].present?
|
Homebrew::EnvConfig.developer? && ENV["HOMEBREW_USE_RUBY_FROM_PATH"].present?
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
Homebrew::Cleanup.prepend(OS::Mac::Cleanup)
|
||||||
|
|||||||
@ -1,11 +1,10 @@
|
|||||||
# typed: strict
|
# typed: strict
|
||||||
# frozen_string_literal: true
|
# frozen_string_literal: true
|
||||||
|
|
||||||
module Homebrew
|
module OS
|
||||||
|
module Mac
|
||||||
module DevCmd
|
module DevCmd
|
||||||
class Bottle < AbstractCommand
|
module Bottle
|
||||||
undef tar_args
|
|
||||||
|
|
||||||
sig { returns(T::Array[String]) }
|
sig { returns(T::Array[String]) }
|
||||||
def tar_args
|
def tar_args
|
||||||
if MacOS.version >= :catalina
|
if MacOS.version >= :catalina
|
||||||
@ -15,12 +14,13 @@ module Homebrew
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
undef gnu_tar
|
|
||||||
|
|
||||||
sig { params(gnu_tar_formula: Formula).returns(String) }
|
sig { params(gnu_tar_formula: Formula).returns(String) }
|
||||||
def gnu_tar(gnu_tar_formula)
|
def gnu_tar(gnu_tar_formula)
|
||||||
"#{gnu_tar_formula.opt_bin}/gtar"
|
"#{gnu_tar_formula.opt_bin}/gtar"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
Homebrew::DevCmd::Bottle.prepend(OS::Mac::DevCmd::Bottle)
|
||||||
|
|||||||
@ -1,9 +1,12 @@
|
|||||||
# typed: strict
|
# typed: strict
|
||||||
# frozen_string_literal: true
|
# frozen_string_literal: true
|
||||||
|
|
||||||
class Formula
|
module OS
|
||||||
undef valid_platform?
|
module Mac
|
||||||
undef std_cmake_args
|
module Formula
|
||||||
|
extend T::Helpers
|
||||||
|
|
||||||
|
requires_ancestor { ::Formula }
|
||||||
|
|
||||||
sig { returns(T::Boolean) }
|
sig { returns(T::Boolean) }
|
||||||
def valid_platform?
|
def valid_platform?
|
||||||
@ -18,8 +21,7 @@ class Formula
|
|||||||
).returns(T::Array[String])
|
).returns(T::Array[String])
|
||||||
}
|
}
|
||||||
def std_cmake_args(install_prefix: prefix, install_libdir: "lib", find_framework: "LAST")
|
def std_cmake_args(install_prefix: prefix, install_libdir: "lib", find_framework: "LAST")
|
||||||
args = generic_std_cmake_args(install_prefix:, install_libdir:,
|
args = generic_std_cmake_args(install_prefix:, install_libdir:, find_framework:)
|
||||||
find_framework:)
|
|
||||||
|
|
||||||
# Avoid false positives for clock_gettime support on 10.11.
|
# Avoid false positives for clock_gettime support on 10.11.
|
||||||
# CMake cache entries for other weak symbols may be added here as needed.
|
# CMake cache entries for other weak symbols may be added here as needed.
|
||||||
@ -30,4 +32,8 @@ class Formula
|
|||||||
|
|
||||||
args
|
args
|
||||||
end
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
Formula.prepend(OS::Mac::Formula)
|
||||||
|
|||||||
@ -1,12 +1,20 @@
|
|||||||
# typed: strict
|
# typed: strict
|
||||||
# frozen_string_literal: true
|
# frozen_string_literal: true
|
||||||
|
|
||||||
class FormulaInstaller
|
module OS
|
||||||
undef fresh_install?
|
module Mac
|
||||||
|
module FormulaInstaller
|
||||||
|
extend T::Helpers
|
||||||
|
|
||||||
|
requires_ancestor { ::FormulaInstaller }
|
||||||
|
|
||||||
sig { params(formula: Formula).returns(T.nilable(T::Boolean)) }
|
sig { params(formula: Formula).returns(T.nilable(T::Boolean)) }
|
||||||
def fresh_install?(formula)
|
def fresh_install?(formula)
|
||||||
!Homebrew::EnvConfig.developer? && !OS::Mac.version.outdated_release? &&
|
!Homebrew::EnvConfig.developer? && !OS::Mac.version.outdated_release? &&
|
||||||
(!installed_as_dependency? || !formula.any_version_installed?)
|
(!installed_as_dependency? || !formula.any_version_installed?)
|
||||||
end
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
FormulaInstaller.prepend(OS::Mac::FormulaInstaller)
|
||||||
|
|||||||
@ -1,9 +1,9 @@
|
|||||||
# typed: strict
|
# typed: strict
|
||||||
# frozen_string_literal: true
|
# frozen_string_literal: true
|
||||||
|
|
||||||
class LinkageChecker
|
module OS
|
||||||
undef system_libraries_exist_in_cache?
|
module Mac
|
||||||
|
module LinkageChecker
|
||||||
private
|
private
|
||||||
|
|
||||||
sig { returns(T::Boolean) }
|
sig { returns(T::Boolean) }
|
||||||
@ -11,4 +11,8 @@ class LinkageChecker
|
|||||||
# In macOS Big Sur and later, system libraries do not exist on-disk and instead exist in a cache.
|
# In macOS Big Sur and later, system libraries do not exist on-disk and instead exist in a cache.
|
||||||
MacOS.version >= :big_sur
|
MacOS.version >= :big_sur
|
||||||
end
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
LinkageChecker.prepend(OS::Mac::LinkageChecker)
|
||||||
|
|||||||
@ -1,10 +1,14 @@
|
|||||||
# typed: strict
|
# typed: strict
|
||||||
# frozen_string_literal: true
|
# frozen_string_literal: true
|
||||||
|
|
||||||
module Readall
|
module OS
|
||||||
class << self
|
module Mac
|
||||||
undef valid_casks?
|
module Readall
|
||||||
|
extend T::Helpers
|
||||||
|
|
||||||
|
requires_ancestor { Kernel }
|
||||||
|
|
||||||
|
sig { params(tap: Tap, os_name: T.nilable(Symbol), arch: T.nilable(Symbol)).returns(T::Boolean) }
|
||||||
def valid_casks?(tap, os_name: nil, arch: Hardware::CPU.type)
|
def valid_casks?(tap, os_name: nil, arch: Hardware::CPU.type)
|
||||||
return true if os_name == :linux
|
return true if os_name == :linux
|
||||||
|
|
||||||
@ -36,4 +40,7 @@ module Readall
|
|||||||
success
|
success
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
Readall.singleton_class.prepend(OS::Mac::Readall)
|
||||||
|
|||||||
@ -1,21 +1,22 @@
|
|||||||
# typed: strict
|
# typed: strict
|
||||||
# frozen_string_literal: true
|
# frozen_string_literal: true
|
||||||
|
|
||||||
module Homebrew
|
module OS
|
||||||
class SimulateSystem
|
module Mac
|
||||||
class << self
|
module SimulateSystem
|
||||||
undef simulating_or_running_on_macos?
|
|
||||||
undef current_os
|
|
||||||
|
|
||||||
sig { returns(T::Boolean) }
|
sig { returns(T::Boolean) }
|
||||||
def simulating_or_running_on_macos?
|
def simulating_or_running_on_macos?
|
||||||
os.blank? || [:macos, *MacOSVersion::SYMBOLS.keys].include?(os)
|
return true if Homebrew::SimulateSystem.os.blank?
|
||||||
|
|
||||||
|
[:macos, *MacOSVersion::SYMBOLS.keys].include?(Homebrew::SimulateSystem.os)
|
||||||
end
|
end
|
||||||
|
|
||||||
sig { returns(Symbol) }
|
sig { returns(Symbol) }
|
||||||
def current_os
|
def current_os
|
||||||
os || MacOS.version.to_sym
|
Homebrew::SimulateSystem.os || MacOS.version.to_sym
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
Homebrew::SimulateSystem.singleton_class.prepend(OS::Mac::SimulateSystem)
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
# typed: strict
|
# typed: strict
|
||||||
# frozen_string_literal: true
|
# frozen_string_literal: true
|
||||||
|
|
||||||
require "extend/os/linux/parser" if OS.linux?
|
require "extend/os/linux/cli/parser" if OS.linux?
|
||||||
|
|||||||
@ -6,5 +6,4 @@
|
|||||||
--ignore=/test/.gem
|
--ignore=/test/.gem
|
||||||
--ignore=Formula
|
--ignore=Formula
|
||||||
--ignore=Casks
|
--ignore=Casks
|
||||||
--suppress-error-code=3008
|
|
||||||
--suppress-error-code=7019
|
--suppress-error-code=7019
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user