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