Merge pull request #9439 from SeekingMeaning/os-specifiable
extend: add on_os (for on_macos/on_linux)
This commit is contained in:
commit
a0c0c4ea2a
22
Library/Homebrew/extend/on_os.rb
Normal file
22
Library/Homebrew/extend/on_os.rb
Normal file
@ -0,0 +1,22 @@
|
||||
# typed: true
|
||||
# frozen_string_literal: true
|
||||
|
||||
module OnOS
|
||||
# Block only executed on macOS. No-op on Linux.
|
||||
# <pre>on_macos do
|
||||
# # Do something Mac-specific
|
||||
# end</pre>
|
||||
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.
|
||||
# <pre>on_linux do
|
||||
# # Do something Linux-specific
|
||||
# end</pre>
|
||||
def on_linux(&block)
|
||||
raise "No block content defined for on_linux block" unless block
|
||||
end
|
||||
end
|
||||
|
||||
require "extend/os/on_os"
|
||||
5
Library/Homebrew/extend/on_os.rbi
Normal file
5
Library/Homebrew/extend/on_os.rbi
Normal file
@ -0,0 +1,5 @@
|
||||
# typed: strict
|
||||
|
||||
module OnOS
|
||||
include Kernel
|
||||
end
|
||||
@ -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?
|
||||
|
||||
@ -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)
|
||||
|
||||
10
Library/Homebrew/extend/os/linux/on_os.rb
Normal file
10
Library/Homebrew/extend/os/linux/on_os.rb
Normal file
@ -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
|
||||
@ -1,10 +0,0 @@
|
||||
# typed: true
|
||||
# frozen_string_literal: true
|
||||
|
||||
class Resource
|
||||
undef on_linux
|
||||
|
||||
def on_linux(&_block)
|
||||
yield
|
||||
end
|
||||
end
|
||||
@ -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
|
||||
10
Library/Homebrew/extend/os/mac/on_os.rb
Normal file
10
Library/Homebrew/extend/os/mac/on_os.rb
Normal file
@ -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
|
||||
@ -1,10 +0,0 @@
|
||||
# typed: true
|
||||
# frozen_string_literal: true
|
||||
|
||||
class Resource
|
||||
undef on_macos
|
||||
|
||||
def on_macos(&_block)
|
||||
yield
|
||||
end
|
||||
end
|
||||
@ -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
|
||||
@ -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
|
||||
"#<Formula #{name} (#{active_spec_sym}) #{path}>"
|
||||
end
|
||||
|
||||
# Block only executed on macOS. No-op on Linux.
|
||||
# <pre>on_macos do
|
||||
# # Do something Mac-specific
|
||||
# end</pre>
|
||||
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.
|
||||
# <pre>on_linux do
|
||||
# # Do something Linux-specific
|
||||
# end</pre>
|
||||
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.
|
||||
# <pre>on_macos do
|
||||
# depends_on "mac_only_dep"
|
||||
# end</pre>
|
||||
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.
|
||||
# <pre>on_linux do
|
||||
# depends_on "linux_only_dep"
|
||||
# end</pre>
|
||||
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"`.
|
||||
|
||||
@ -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.
|
||||
# <pre>on_macos do
|
||||
# url "mac_only_url"
|
||||
# end</pre>
|
||||
def on_macos(&_block); end
|
||||
|
||||
# Block only executed on Linux. No-op on macOS.
|
||||
# <pre>on_linux do
|
||||
# url "linux_only_url"
|
||||
# end</pre>
|
||||
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"
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user