extend: add on_os (for on_macos/on_linux)
This commit is contained in:
parent
24f7898606
commit
a2af19360b
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
|
# typed: strict
|
||||||
# frozen_string_literal: true
|
# frozen_string_literal: true
|
||||||
|
|
||||||
if OS.mac?
|
require "extend/os/linux/formula" if OS.linux?
|
||||||
require "extend/os/mac/formula"
|
|
||||||
elsif OS.linux?
|
|
||||||
require "extend/os/linux/formula"
|
|
||||||
end
|
|
||||||
|
|||||||
@ -2,14 +2,6 @@
|
|||||||
# frozen_string_literal: true
|
# frozen_string_literal: true
|
||||||
|
|
||||||
class Formula
|
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
|
undef shared_library
|
||||||
|
|
||||||
def shared_library(name, version = nil)
|
def shared_library(name, version = nil)
|
||||||
@ -17,14 +9,6 @@ class Formula
|
|||||||
end
|
end
|
||||||
|
|
||||||
class << self
|
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
|
undef ignore_missing_libraries
|
||||||
|
|
||||||
def ignore_missing_libraries(*libs)
|
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
|
# frozen_string_literal: true
|
||||||
|
|
||||||
if OS.mac?
|
if OS.mac?
|
||||||
require "extend/os/mac/resource"
|
require "extend/os/mac/on_os"
|
||||||
elsif OS.linux?
|
elsif OS.linux?
|
||||||
require "extend/os/linux/resource"
|
require "extend/os/linux/on_os"
|
||||||
end
|
end
|
||||||
@ -25,6 +25,7 @@ require "tab"
|
|||||||
require "mktemp"
|
require "mktemp"
|
||||||
require "find"
|
require "find"
|
||||||
require "utils/spdx"
|
require "utils/spdx"
|
||||||
|
require "extend/on_os"
|
||||||
|
|
||||||
# A formula provides instructions and metadata for Homebrew to install a piece
|
# A formula provides instructions and metadata for Homebrew to install a piece
|
||||||
# of software. Every Homebrew formula is a {Formula}.
|
# of software. Every Homebrew formula is a {Formula}.
|
||||||
@ -59,6 +60,7 @@ class Formula
|
|||||||
include Utils::Shebang
|
include Utils::Shebang
|
||||||
include Utils::Shell
|
include Utils::Shell
|
||||||
include Context
|
include Context
|
||||||
|
include OnOS
|
||||||
extend Enumerable
|
extend Enumerable
|
||||||
extend Forwardable
|
extend Forwardable
|
||||||
extend Cachable
|
extend Cachable
|
||||||
@ -1389,22 +1391,6 @@ class Formula
|
|||||||
"#<Formula #{name} (#{active_spec_sym}) #{path}>"
|
"#<Formula #{name} (#{active_spec_sym}) #{path}>"
|
||||||
end
|
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.
|
# Standard parameters for cargo builds.
|
||||||
def std_cargo_args
|
def std_cargo_args
|
||||||
["--locked", "--root", prefix, "--path", "."]
|
["--locked", "--root", prefix, "--path", "."]
|
||||||
@ -2238,6 +2224,7 @@ class Formula
|
|||||||
# The methods below define the formula DSL.
|
# The methods below define the formula DSL.
|
||||||
class << self
|
class << self
|
||||||
include BuildEnvironment::DSL
|
include BuildEnvironment::DSL
|
||||||
|
include OnOS
|
||||||
|
|
||||||
def method_added(method)
|
def method_added(method)
|
||||||
super
|
super
|
||||||
@ -2557,22 +2544,6 @@ class Formula
|
|||||||
specs.each { |spec| spec.uses_from_macos(dep, bounds) }
|
specs.each { |spec| spec.uses_from_macos(dep, bounds) }
|
||||||
end
|
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
|
# @!attribute [w] option
|
||||||
# Options can be used as arguments to `brew install`.
|
# Options can be used as arguments to `brew install`.
|
||||||
# To switch features on/off: `"with-something"` or `"with-otherthing"`.
|
# To switch features on/off: `"with-something"` or `"with-otherthing"`.
|
||||||
|
|||||||
@ -5,6 +5,7 @@ require "download_strategy"
|
|||||||
require "checksum"
|
require "checksum"
|
||||||
require "version"
|
require "version"
|
||||||
require "mktemp"
|
require "mktemp"
|
||||||
|
require "extend/on_os"
|
||||||
|
|
||||||
# Resource is the fundamental representation of an external resource. The
|
# Resource is the fundamental representation of an external resource. The
|
||||||
# primary formula download, along with other declared resources, are instances
|
# primary formula download, along with other declared resources, are instances
|
||||||
@ -16,6 +17,7 @@ class Resource
|
|||||||
|
|
||||||
include Context
|
include Context
|
||||||
include FileUtils
|
include FileUtils
|
||||||
|
include OnOS
|
||||||
|
|
||||||
attr_reader :mirrors, :specs, :using, :source_modified_time, :patches, :owner
|
attr_reader :mirrors, :specs, :using, :source_modified_time, :patches, :owner
|
||||||
attr_writer :version
|
attr_writer :version
|
||||||
@ -189,18 +191,6 @@ class Resource
|
|||||||
patches << p
|
patches << p
|
||||||
end
|
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
|
protected
|
||||||
|
|
||||||
def mktemp(prefix, &block)
|
def mktemp(prefix, &block)
|
||||||
@ -280,5 +270,3 @@ class ResourceStageContext
|
|||||||
"<#{self.class}: resource=#{resource} staging=#{staging}>"
|
"<#{self.class}: resource=#{resource} staging=#{staging}>"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
require "extend/os/resource"
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user