diff --git a/Library/Homebrew/extend/on_os.rb b/Library/Homebrew/extend/on_os.rb new file mode 100644 index 0000000000..a30a241d3b --- /dev/null +++ b/Library/Homebrew/extend/on_os.rb @@ -0,0 +1,22 @@ +# typed: true +# frozen_string_literal: true + +module OnOS + # Block only executed on macOS. No-op on Linux. + #
on_macos do + # # Do something Mac-specific + # end+ def on_macos(&block) + raise "No block content defined for on_macos block" unless block + end + + # Block only executed on Linux. No-op on macOS. + #
on_linux do + # # Do something Linux-specific + # end+ def on_linux(&block) + raise "No block content defined for on_linux block" unless block + end +end + +require "extend/os/on_os" diff --git a/Library/Homebrew/extend/on_os.rbi b/Library/Homebrew/extend/on_os.rbi new file mode 100644 index 0000000000..a53474fd86 --- /dev/null +++ b/Library/Homebrew/extend/on_os.rbi @@ -0,0 +1,5 @@ +# typed: strict + +module OnOS + include Kernel +end diff --git a/Library/Homebrew/extend/os/formula.rb b/Library/Homebrew/extend/os/formula.rb index 5a520cf8a3..aef771325f 100644 --- a/Library/Homebrew/extend/os/formula.rb +++ b/Library/Homebrew/extend/os/formula.rb @@ -1,8 +1,4 @@ # typed: strict # frozen_string_literal: true -if OS.mac? - require "extend/os/mac/formula" -elsif OS.linux? - require "extend/os/linux/formula" -end +require "extend/os/linux/formula" if OS.linux? diff --git a/Library/Homebrew/extend/os/linux/formula.rb b/Library/Homebrew/extend/os/linux/formula.rb index 29ff3dd802..ed5c4f38a2 100644 --- a/Library/Homebrew/extend/os/linux/formula.rb +++ b/Library/Homebrew/extend/os/linux/formula.rb @@ -2,14 +2,6 @@ # frozen_string_literal: true class Formula - undef on_linux - - def on_linux(&block) - raise "No block content defined for on_linux block" unless block - - yield - end - undef shared_library def shared_library(name, version = nil) @@ -17,14 +9,6 @@ class Formula end class << self - undef on_linux - - def on_linux(&block) - raise "No block content defined for on_linux block" unless block - - yield - end - undef ignore_missing_libraries def ignore_missing_libraries(*libs) diff --git a/Library/Homebrew/extend/os/linux/on_os.rb b/Library/Homebrew/extend/os/linux/on_os.rb new file mode 100644 index 0000000000..d1bbbab734 --- /dev/null +++ b/Library/Homebrew/extend/os/linux/on_os.rb @@ -0,0 +1,10 @@ +# typed: true +# frozen_string_literal: true + +module OnOS + def on_linux(&block) + raise "No block content defined for on_linux block" unless block + + yield + end +end diff --git a/Library/Homebrew/extend/os/linux/resource.rb b/Library/Homebrew/extend/os/linux/resource.rb deleted file mode 100644 index 47f3801dd5..0000000000 --- a/Library/Homebrew/extend/os/linux/resource.rb +++ /dev/null @@ -1,10 +0,0 @@ -# typed: true -# frozen_string_literal: true - -class Resource - undef on_linux - - def on_linux(&_block) - yield - end -end diff --git a/Library/Homebrew/extend/os/mac/formula.rb b/Library/Homebrew/extend/os/mac/formula.rb deleted file mode 100644 index ed9f64a4b4..0000000000 --- a/Library/Homebrew/extend/os/mac/formula.rb +++ /dev/null @@ -1,22 +0,0 @@ -# typed: true -# frozen_string_literal: true - -class Formula - undef on_macos - - def on_macos(&block) - raise "No block content defined for on_macos block" unless block - - yield - end - - class << self - undef on_macos - - def on_macos(&block) - raise "No block content defined for on_macos block" unless block - - yield - end - end -end diff --git a/Library/Homebrew/extend/os/mac/on_os.rb b/Library/Homebrew/extend/os/mac/on_os.rb new file mode 100644 index 0000000000..f043909555 --- /dev/null +++ b/Library/Homebrew/extend/os/mac/on_os.rb @@ -0,0 +1,10 @@ +# typed: true +# frozen_string_literal: true + +module OnOS + def on_macos(&block) + raise "No block content defined for on_macos block" unless block + + yield + end +end diff --git a/Library/Homebrew/extend/os/mac/resource.rb b/Library/Homebrew/extend/os/mac/resource.rb deleted file mode 100644 index 2947a85a3a..0000000000 --- a/Library/Homebrew/extend/os/mac/resource.rb +++ /dev/null @@ -1,10 +0,0 @@ -# typed: true -# frozen_string_literal: true - -class Resource - undef on_macos - - def on_macos(&_block) - yield - end -end diff --git a/Library/Homebrew/extend/os/resource.rb b/Library/Homebrew/extend/os/on_os.rb similarity index 52% rename from Library/Homebrew/extend/os/resource.rb rename to Library/Homebrew/extend/os/on_os.rb index aa6d675154..38e1bce2e1 100644 --- a/Library/Homebrew/extend/os/resource.rb +++ b/Library/Homebrew/extend/os/on_os.rb @@ -2,7 +2,7 @@ # frozen_string_literal: true if OS.mac? - require "extend/os/mac/resource" + require "extend/os/mac/on_os" elsif OS.linux? - require "extend/os/linux/resource" + require "extend/os/linux/on_os" end diff --git a/Library/Homebrew/formula.rb b/Library/Homebrew/formula.rb index c3227514ec..4d4f94b67c 100644 --- a/Library/Homebrew/formula.rb +++ b/Library/Homebrew/formula.rb @@ -25,6 +25,7 @@ require "tab" require "mktemp" require "find" require "utils/spdx" +require "extend/on_os" # A formula provides instructions and metadata for Homebrew to install a piece # of software. Every Homebrew formula is a {Formula}. @@ -59,6 +60,7 @@ class Formula include Utils::Shebang include Utils::Shell include Context + include OnOS extend Enumerable extend Forwardable extend Cachable @@ -1389,22 +1391,6 @@ class Formula "#
on_macos do - # # Do something Mac-specific - # end- def on_macos(&block) - raise "No block content defined for on_macos block" unless block - end - - # Block only executed on Linux. No-op on macOS. - #
on_linux do - # # Do something Linux-specific - # end- def on_linux(&block) - raise "No block content defined for on_linux block" unless block - end - # Standard parameters for cargo builds. def std_cargo_args ["--locked", "--root", prefix, "--path", "."] @@ -2238,6 +2224,7 @@ class Formula # The methods below define the formula DSL. class << self include BuildEnvironment::DSL + include OnOS def method_added(method) super @@ -2557,22 +2544,6 @@ class Formula specs.each { |spec| spec.uses_from_macos(dep, bounds) } end - # Block only executed on macOS. No-op on Linux. - #
on_macos do - # depends_on "mac_only_dep" - # end- def on_macos(&block) - raise "No block content defined for on_macos block" unless block - end - - # Block only executed on Linux. No-op on macOS. - #
on_linux do - # depends_on "linux_only_dep" - # end- def on_linux(&block) - raise "No block content defined for on_linux block" unless block - end - # @!attribute [w] option # Options can be used as arguments to `brew install`. # To switch features on/off: `"with-something"` or `"with-otherthing"`. diff --git a/Library/Homebrew/resource.rb b/Library/Homebrew/resource.rb index ab19c7b39b..b93d964801 100644 --- a/Library/Homebrew/resource.rb +++ b/Library/Homebrew/resource.rb @@ -5,6 +5,7 @@ require "download_strategy" require "checksum" require "version" require "mktemp" +require "extend/on_os" # Resource is the fundamental representation of an external resource. The # primary formula download, along with other declared resources, are instances @@ -16,6 +17,7 @@ class Resource include Context include FileUtils + include OnOS attr_reader :mirrors, :specs, :using, :source_modified_time, :patches, :owner attr_writer :version @@ -189,18 +191,6 @@ class Resource patches << p end - # Block only executed on macOS. No-op on Linux. - #
on_macos do - # url "mac_only_url" - # end- def on_macos(&_block); end - - # Block only executed on Linux. No-op on macOS. - #
on_linux do - # url "linux_only_url" - # end- def on_linux(&_block); end - protected def mktemp(prefix, &block) @@ -280,5 +270,3 @@ class ResourceStageContext "<#{self.class}: resource=#{resource} staging=#{staging}>" end end - -require "extend/os/resource"