diff --git a/Library/Homebrew/extend/ENV/super.rb b/Library/Homebrew/extend/ENV/super.rb index 8f9a8330c9..f46d88744a 100644 --- a/Library/Homebrew/extend/ENV/super.rb +++ b/Library/Homebrew/extend/ENV/super.rb @@ -130,8 +130,13 @@ module Superenv sig { returns(T::Array[Pathname]) } def homebrew_extra_paths - [] + # Reverse sort by version so that we prefer the newest when there are multiple. + deps.select { |d| d.name.match? Version.formula_optionally_versioned_regex(:python) } + .sort_by(&:version) + .reverse + .map { |d| d.opt_libexec/"bin" } end + alias generic_homebrew_extra_paths homebrew_extra_paths sig { returns(T.nilable(PATH)) } def determine_path diff --git a/Library/Homebrew/extend/os/linux/extend/ENV/super.rb b/Library/Homebrew/extend/os/linux/extend/ENV/super.rb index 1f737b20c5..c0691c0001 100644 --- a/Library/Homebrew/extend/os/linux/extend/ENV/super.rb +++ b/Library/Homebrew/extend/os/linux/extend/ENV/super.rb @@ -26,7 +26,7 @@ module Superenv end def homebrew_extra_paths - paths = [] + paths = generic_homebrew_extra_paths paths += %w[binutils make].map do |f| bin = Formulary.factory(f).opt_bin bin if bin.directory?