Simulate all OS/arch combinations in brew readall
This commit is contained in:
parent
f30f68be7d
commit
174087958b
@ -150,6 +150,9 @@ module Homebrew
|
||||
sig { returns(T::Boolean) }
|
||||
def syntax?; end
|
||||
|
||||
sig { returns(T::Boolean) }
|
||||
def no_simulate?; end
|
||||
|
||||
sig { returns(T::Boolean) }
|
||||
def ignore_non_pypi_packages?; end
|
||||
|
||||
|
@ -26,6 +26,8 @@ module Homebrew
|
||||
switch "--eval-all",
|
||||
description: "Evaluate all available formulae and casks, whether installed or not. " \
|
||||
"Implied if HOMEBREW_EVAL_ALL is set."
|
||||
switch "--no-simulate",
|
||||
description: "Don't simulate other system configurations when checking formulae and casks."
|
||||
|
||||
named_args :tap
|
||||
end
|
||||
@ -41,7 +43,7 @@ module Homebrew
|
||||
Homebrew.failed = true unless Readall.valid_ruby_syntax?(ruby_files)
|
||||
end
|
||||
|
||||
options = { aliases: args.aliases? }
|
||||
options = { aliases: args.aliases?, no_simulate: args.no_simulate? }
|
||||
taps = if args.no_named?
|
||||
if !args.eval_all? && !Homebrew::EnvConfig.eval_all?
|
||||
odeprecated "brew readall", "brew readall --eval-all or HOMEBREW_EVAL_ALL"
|
||||
|
@ -3,7 +3,7 @@
|
||||
|
||||
module Readall
|
||||
class << self
|
||||
def valid_casks?(_casks)
|
||||
def valid_casks?(_casks, bottle_tag: nil)
|
||||
true
|
||||
end
|
||||
end
|
||||
|
@ -39,28 +39,39 @@ module Readall
|
||||
!failed
|
||||
end
|
||||
|
||||
def valid_formulae?(formulae)
|
||||
def valid_formulae?(formulae, bottle_tag: nil)
|
||||
success = T.let(true, T::Boolean)
|
||||
formulae.each do |file|
|
||||
Formulary.factory(file)
|
||||
base = Formulary.factory(file)
|
||||
next if bottle_tag.blank? || !base.path.exist? || !base.class.on_system_blocks_exist?
|
||||
|
||||
formula_contents = base.path.read
|
||||
|
||||
readall_namespace = Formulary.class_s("Readall#{bottle_tag.to_sym.capitalize}")
|
||||
readall_formula_class = Formulary.load_formula(base.name, base.path, formula_contents, readall_namespace,
|
||||
flags: base.class.build_flags, ignore_errors: true)
|
||||
readall_formula_class.new(base.name, base.path, :stable,
|
||||
alias_path: base.alias_path, force_bottle: base.force_bottle)
|
||||
rescue Interrupt
|
||||
raise
|
||||
rescue Exception => e # rubocop:disable Lint/RescueException
|
||||
onoe "Invalid formula: #{file}"
|
||||
onoe "Invalid formula (#{bottle_tag}): #{file}"
|
||||
$stderr.puts e
|
||||
success = false
|
||||
end
|
||||
success
|
||||
end
|
||||
|
||||
def valid_casks?(casks)
|
||||
def valid_casks?(casks, bottle_tag: nil)
|
||||
return true if bottle_tag.present? && bottle_tag.system == :linux
|
||||
|
||||
success = T.let(true, T::Boolean)
|
||||
casks.each do |file|
|
||||
Cask::CaskLoader.load(file)
|
||||
rescue Interrupt
|
||||
raise
|
||||
rescue Exception => e # rubocop:disable Lint/RescueException
|
||||
onoe "Invalid cask: #{file}"
|
||||
onoe "Invalid cask (#{bottle_tag}): #{file}"
|
||||
$stderr.puts e
|
||||
success = false
|
||||
end
|
||||
@ -73,9 +84,27 @@ module Readall
|
||||
valid_aliases = valid_aliases?(tap.alias_dir, tap.formula_dir)
|
||||
success = false unless valid_aliases
|
||||
end
|
||||
valid_formulae = valid_formulae?(tap.formula_files)
|
||||
valid_casks = valid_casks?(tap.cask_files)
|
||||
success = false if !valid_formulae || !valid_casks
|
||||
if options[:no_simulate]
|
||||
success = false unless valid_formulae?(tap.formula_files)
|
||||
success = false unless valid_casks?(tap.cask_files)
|
||||
else
|
||||
arches = [:arm, :intel]
|
||||
os_names = [*MacOSVersions::SYMBOLS.keys, :linux]
|
||||
arches.each do |arch|
|
||||
os_names.each do |os_name|
|
||||
bottle_tag = Utils::Bottles::Tag.new(system: os_name, arch: arch)
|
||||
next unless bottle_tag.valid_combination?
|
||||
|
||||
Homebrew::SimulateSystem.arch = arch
|
||||
Homebrew::SimulateSystem.os = os_name
|
||||
|
||||
success = false unless valid_formulae?(tap.formula_files, bottle_tag: bottle_tag)
|
||||
success = false unless valid_casks?(tap.cask_files, bottle_tag: bottle_tag)
|
||||
|
||||
Homebrew::SimulateSystem.clear
|
||||
end
|
||||
end
|
||||
end
|
||||
success
|
||||
end
|
||||
|
||||
|
@ -1710,6 +1710,7 @@ _brew_readall() {
|
||||
--debug
|
||||
--eval-all
|
||||
--help
|
||||
--no-simulate
|
||||
--quiet
|
||||
--syntax
|
||||
--verbose
|
||||
|
@ -1180,6 +1180,7 @@ __fish_brew_complete_arg 'readall' -l aliases -d 'Verify any alias symlinks in e
|
||||
__fish_brew_complete_arg 'readall' -l debug -d 'Display any debugging information'
|
||||
__fish_brew_complete_arg 'readall' -l eval-all -d 'Evaluate all available formulae and casks, whether installed or not. Implied if HOMEBREW_EVAL_ALL is set'
|
||||
__fish_brew_complete_arg 'readall' -l help -d 'Show this message'
|
||||
__fish_brew_complete_arg 'readall' -l no-simulate -d 'Don\'t simulate other system configurations when checking formulae and casks'
|
||||
__fish_brew_complete_arg 'readall' -l quiet -d 'Make some output more quiet'
|
||||
__fish_brew_complete_arg 'readall' -l syntax -d 'Syntax-check all of Homebrew\'s Ruby files (if no `tap` is passed)'
|
||||
__fish_brew_complete_arg 'readall' -l verbose -d 'Make some output more verbose'
|
||||
|
@ -1439,6 +1439,7 @@ _brew_readall() {
|
||||
'--debug[Display any debugging information]' \
|
||||
'--eval-all[Evaluate all available formulae and casks, whether installed or not. Implied if HOMEBREW_EVAL_ALL is set]' \
|
||||
'--help[Show this message]' \
|
||||
'--no-simulate[Don'\''t simulate other system configurations when checking formulae and casks]' \
|
||||
'--quiet[Make some output more quiet]' \
|
||||
'--syntax[Syntax-check all of Homebrew'\''s Ruby files (if no `tap` is passed)]' \
|
||||
'--verbose[Make some output more verbose]' \
|
||||
|
@ -528,6 +528,8 @@ all items or checking if any current formulae/casks have Ruby issues.
|
||||
Syntax-check all of Homebrew's Ruby files (if no `*`tap`*` is passed).
|
||||
* `--eval-all`:
|
||||
Evaluate all available formulae and casks, whether installed or not. Implied if HOMEBREW_EVAL_ALL is set.
|
||||
* `--no-simulate`:
|
||||
Don't simulate other system configurations when checking formulae and casks.
|
||||
|
||||
### `reinstall` [*`options`*] *`formula`*|*`cask`* [...]
|
||||
|
||||
|
@ -731,6 +731,10 @@ Syntax\-check all of Homebrew\'s Ruby files (if no \fB<tap>\fR is passed)\.
|
||||
\fB\-\-eval\-all\fR
|
||||
Evaluate all available formulae and casks, whether installed or not\. Implied if HOMEBREW_EVAL_ALL is set\.
|
||||
.
|
||||
.TP
|
||||
\fB\-\-no\-simulate\fR
|
||||
Don\'t simulate other system configurations when checking formulae and casks\.
|
||||
.
|
||||
.SS "\fBreinstall\fR [\fIoptions\fR] \fIformula\fR|\fIcask\fR [\.\.\.]"
|
||||
Uninstall and then reinstall a \fIformula\fR or \fIcask\fR using the same options it was originally installed with, plus any appended options specific to a \fIformula\fR\.
|
||||
.
|
||||
|
Loading…
x
Reference in New Issue
Block a user