-
-
Notifications
You must be signed in to change notification settings - Fork 9.9k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #18305 from Homebrew/no-undefs
Use prepended modules instead of `undef` for OS-specific code
- Loading branch information
Showing
16 changed files
with
241 additions
and
193 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,23 +1,29 @@ | ||
# typed: strict | ||
# frozen_string_literal: true | ||
|
||
module Homebrew | ||
class Cleanup | ||
undef use_system_ruby? | ||
module OS | ||
module Linux | ||
module Cleanup | ||
extend T::Helpers | ||
|
||
sig { returns(T::Boolean) } | ||
def use_system_ruby? | ||
return false if Homebrew::EnvConfig.force_vendor_ruby? | ||
requires_ancestor { Homebrew::Cleanup } | ||
|
||
rubies = [which("ruby"), which("ruby", ORIGINAL_PATHS)].compact | ||
system_ruby = Pathname.new("/usr/bin/ruby") | ||
rubies << system_ruby if system_ruby.exist? | ||
sig { returns(T::Boolean) } | ||
def use_system_ruby? | ||
return false if Homebrew::EnvConfig.force_vendor_ruby? | ||
|
||
check_ruby_version = HOMEBREW_LIBRARY_PATH/"utils/ruby_check_version_script.rb" | ||
rubies.uniq.any? do |ruby| | ||
quiet_system ruby, "--enable-frozen-string-literal", "--disable=gems,did_you_mean,rubyopt", | ||
check_ruby_version, RUBY_VERSION | ||
rubies = [which("ruby"), which("ruby", ORIGINAL_PATHS)].compact | ||
system_ruby = Pathname.new("/usr/bin/ruby") | ||
rubies << system_ruby if system_ruby.exist? | ||
|
||
check_ruby_version = HOMEBREW_LIBRARY_PATH/"utils/ruby_check_version_script.rb" | ||
rubies.uniq.any? do |ruby| | ||
quiet_system ruby, "--enable-frozen-string-literal", "--disable=gems,did_you_mean,rubyopt", | ||
check_ruby_version, RUBY_VERSION | ||
end | ||
end | ||
end | ||
end | ||
end | ||
|
||
Homebrew::Cleanup.prepend(OS::Linux::Cleanup) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,52 +1,56 @@ | ||
# typed: true # rubocop:disable Sorbet/StrictSigil | ||
# frozen_string_literal: true | ||
|
||
class Formula | ||
undef shared_library | ||
undef loader_path | ||
undef deuniversalize_machos | ||
undef add_global_deps_to_spec | ||
undef valid_platform? | ||
|
||
sig { params(name: String, version: T.nilable(T.any(String, Integer))).returns(String) } | ||
def shared_library(name, version = nil) | ||
suffix = if version == "*" || (name == "*" && version.blank?) | ||
"{,.*}" | ||
elsif version.present? | ||
".#{version}" | ||
end | ||
"#{name}.so#{suffix}" | ||
end | ||
module OS | ||
module Linux | ||
module Formula | ||
extend T::Helpers | ||
|
||
sig { returns(String) } | ||
def loader_path | ||
"$ORIGIN" | ||
end | ||
requires_ancestor { ::Formula } | ||
|
||
sig { params(targets: T.nilable(T.any(Pathname, String))).void } | ||
def deuniversalize_machos(*targets); end | ||
|
||
sig { params(spec: SoftwareSpec).void } | ||
def add_global_deps_to_spec(spec) | ||
return unless DevelopmentTools.needs_build_formulae? | ||
|
||
@global_deps ||= begin | ||
dependency_collector = spec.dependency_collector | ||
related_formula_names = Set.new([ | ||
name, | ||
*aliases, | ||
*versioned_formulae_names, | ||
]) | ||
[ | ||
dependency_collector.gcc_dep_if_needed(related_formula_names), | ||
dependency_collector.glibc_dep_if_needed(related_formula_names), | ||
].compact.freeze | ||
end | ||
@global_deps.each { |dep| spec.dependency_collector.add(dep) } | ||
end | ||
sig { params(name: String, version: T.nilable(T.any(String, Integer))).returns(String) } | ||
def shared_library(name, version = nil) | ||
suffix = if version == "*" || (name == "*" && version.blank?) | ||
"{,.*}" | ||
elsif version.present? | ||
".#{version}" | ||
end | ||
"#{name}.so#{suffix}" | ||
end | ||
|
||
sig { returns(String) } | ||
def loader_path | ||
"$ORIGIN" | ||
end | ||
|
||
sig { returns(T::Boolean) } | ||
def valid_platform? | ||
requirements.none?(MacOSRequirement) | ||
sig { params(targets: T.nilable(T.any(Pathname, String))).void } | ||
def deuniversalize_machos(*targets); end | ||
|
||
sig { params(spec: SoftwareSpec).void } | ||
def add_global_deps_to_spec(spec) | ||
return unless DevelopmentTools.needs_build_formulae? | ||
|
||
@global_deps ||= begin | ||
dependency_collector = spec.dependency_collector | ||
related_formula_names = Set.new([ | ||
name, | ||
*aliases, | ||
*versioned_formulae_names, | ||
]) | ||
[ | ||
dependency_collector.gcc_dep_if_needed(related_formula_names), | ||
dependency_collector.glibc_dep_if_needed(related_formula_names), | ||
].compact.freeze | ||
end | ||
@global_deps.each { |dep| spec.dependency_collector.add(dep) } | ||
end | ||
|
||
sig { returns(T::Boolean) } | ||
def valid_platform? | ||
requirements.none?(MacOSRequirement) | ||
end | ||
end | ||
end | ||
end | ||
|
||
Formula.prepend(OS::Linux::Formula) |
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,13 +1,17 @@ | ||
# typed: strict | ||
# frozen_string_literal: true | ||
|
||
class Cleaner | ||
private | ||
module OS | ||
module Mac | ||
module Cleaner | ||
private | ||
|
||
undef executable_path? | ||
|
||
sig { params(path: Pathname).returns(T::Boolean) } | ||
def executable_path?(path) | ||
path.mach_o_executable? || path.text_executable? | ||
sig { params(path: Pathname).returns(T::Boolean) } | ||
def executable_path?(path) | ||
path.mach_o_executable? || path.text_executable? | ||
end | ||
end | ||
end | ||
end | ||
|
||
Cleaner.prepend(OS::Mac::Cleaner) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,15 +1,17 @@ | ||
# typed: strict | ||
# frozen_string_literal: true | ||
|
||
module Homebrew | ||
class Cleanup | ||
undef use_system_ruby? | ||
module OS | ||
module Mac | ||
module Cleanup | ||
sig { returns(T::Boolean) } | ||
def use_system_ruby? | ||
return false if Homebrew::EnvConfig.force_vendor_ruby? | ||
|
||
sig { returns(T::Boolean) } | ||
def use_system_ruby? | ||
return false if Homebrew::EnvConfig.force_vendor_ruby? | ||
|
||
Homebrew::EnvConfig.developer? && ENV["HOMEBREW_USE_RUBY_FROM_PATH"].present? | ||
Homebrew::EnvConfig.developer? && ENV["HOMEBREW_USE_RUBY_FROM_PATH"].present? | ||
end | ||
end | ||
end | ||
end | ||
|
||
Homebrew::Cleanup.prepend(OS::Mac::Cleanup) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,26 +1,26 @@ | ||
# typed: strict | ||
# frozen_string_literal: true | ||
|
||
module Homebrew | ||
module DevCmd | ||
class Bottle < AbstractCommand | ||
undef tar_args | ||
|
||
sig { returns(T::Array[String]) } | ||
def tar_args | ||
if MacOS.version >= :catalina | ||
["--no-mac-metadata", "--no-acls", "--no-xattrs"].freeze | ||
else | ||
[].freeze | ||
module OS | ||
module Mac | ||
module DevCmd | ||
module Bottle | ||
sig { returns(T::Array[String]) } | ||
def tar_args | ||
if MacOS.version >= :catalina | ||
["--no-mac-metadata", "--no-acls", "--no-xattrs"].freeze | ||
else | ||
[].freeze | ||
end | ||
end | ||
end | ||
|
||
undef gnu_tar | ||
|
||
sig { params(gnu_tar_formula: Formula).returns(String) } | ||
def gnu_tar(gnu_tar_formula) | ||
"#{gnu_tar_formula.opt_bin}/gtar" | ||
sig { params(gnu_tar_formula: Formula).returns(String) } | ||
def gnu_tar(gnu_tar_formula) | ||
"#{gnu_tar_formula.opt_bin}/gtar" | ||
end | ||
end | ||
end | ||
end | ||
end | ||
|
||
Homebrew::DevCmd::Bottle.prepend(OS::Mac::DevCmd::Bottle) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,33 +1,39 @@ | ||
# typed: strict | ||
# frozen_string_literal: true | ||
|
||
class Formula | ||
undef valid_platform? | ||
undef std_cmake_args | ||
module OS | ||
module Mac | ||
module Formula | ||
extend T::Helpers | ||
|
||
sig { returns(T::Boolean) } | ||
def valid_platform? | ||
requirements.none?(LinuxRequirement) | ||
end | ||
requires_ancestor { ::Formula } | ||
|
||
sig { returns(T::Boolean) } | ||
def valid_platform? | ||
requirements.none?(LinuxRequirement) | ||
end | ||
|
||
sig { | ||
params( | ||
install_prefix: T.any(String, Pathname), | ||
install_libdir: T.any(String, Pathname), | ||
find_framework: String, | ||
).returns(T::Array[String]) | ||
} | ||
def std_cmake_args(install_prefix: prefix, install_libdir: "lib", find_framework: "LAST") | ||
args = generic_std_cmake_args(install_prefix:, install_libdir:, find_framework:) | ||
|
||
sig { | ||
params( | ||
install_prefix: T.any(String, Pathname), | ||
install_libdir: T.any(String, Pathname), | ||
find_framework: String, | ||
).returns(T::Array[String]) | ||
} | ||
def std_cmake_args(install_prefix: prefix, install_libdir: "lib", find_framework: "LAST") | ||
args = generic_std_cmake_args(install_prefix:, install_libdir:, | ||
find_framework:) | ||
|
||
# Avoid false positives for clock_gettime support on 10.11. | ||
# CMake cache entries for other weak symbols may be added here as needed. | ||
args << "-DHAVE_CLOCK_GETTIME:INTERNAL=0" if MacOS.version == "10.11" && MacOS::Xcode.version >= "8.0" | ||
|
||
# Ensure CMake is using the same SDK we are using. | ||
args << "-DCMAKE_OSX_SYSROOT=#{MacOS.sdk_for_formula(self).path}" if MacOS.sdk_root_needed? | ||
|
||
args | ||
# Avoid false positives for clock_gettime support on 10.11. | ||
# CMake cache entries for other weak symbols may be added here as needed. | ||
args << "-DHAVE_CLOCK_GETTIME:INTERNAL=0" if MacOS.version == "10.11" && MacOS::Xcode.version >= "8.0" | ||
|
||
# Ensure CMake is using the same SDK we are using. | ||
args << "-DCMAKE_OSX_SYSROOT=#{MacOS.sdk_for_formula(self).path}" if MacOS.sdk_root_needed? | ||
|
||
args | ||
end | ||
end | ||
end | ||
end | ||
|
||
Formula.prepend(OS::Mac::Formula) |
Oops, something went wrong.