OsxfuseRequirement: Port to Linux
This commit is contained in:
		
							parent
							
								
									02f0189335
								
							
						
					
					
						commit
						608d72a35f
					
				@ -0,0 +1,39 @@
 | 
			
		||||
require "requirement"
 | 
			
		||||
 | 
			
		||||
class OsxfuseRequirement < Requirement
 | 
			
		||||
  download "https://github.com/libfuse/libfuse"
 | 
			
		||||
 | 
			
		||||
  satisfy(build_env: false) do
 | 
			
		||||
    next true if libfuse_formula_exists? && Formula["libfuse"].installed?
 | 
			
		||||
    includedirs = %w[
 | 
			
		||||
      /usr/include
 | 
			
		||||
      /usr/local/include
 | 
			
		||||
    ]
 | 
			
		||||
    next true if (includedirs.map do |dir|
 | 
			
		||||
      File.exist? "#{dir}/fuse.h"
 | 
			
		||||
    end).any?
 | 
			
		||||
    false
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def message
 | 
			
		||||
    msg = "libfuse is required to install this formula.\n"
 | 
			
		||||
    if libfuse_formula_exists?
 | 
			
		||||
      msg + <<-EOS.undent
 | 
			
		||||
        Run "brew install libfuse" to install it.
 | 
			
		||||
      EOS
 | 
			
		||||
    else
 | 
			
		||||
      msg + super
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  private
 | 
			
		||||
 | 
			
		||||
  def libfuse_formula_exists?
 | 
			
		||||
    begin
 | 
			
		||||
      Formula["libfuse"]
 | 
			
		||||
    rescue FormulaUnavailableError
 | 
			
		||||
      return false
 | 
			
		||||
    end
 | 
			
		||||
    true
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
@ -0,0 +1,34 @@
 | 
			
		||||
require "requirement"
 | 
			
		||||
 | 
			
		||||
class OsxfuseRequirement < Requirement
 | 
			
		||||
  cask "osxfuse"
 | 
			
		||||
  download "https://osxfuse.github.io/"
 | 
			
		||||
 | 
			
		||||
  satisfy(build_env: false) { self.class.binary_osxfuse_installed? }
 | 
			
		||||
 | 
			
		||||
  def self.binary_osxfuse_installed?
 | 
			
		||||
    File.exist?("/usr/local/include/osxfuse/fuse.h") &&
 | 
			
		||||
      !File.symlink?("/usr/local/include/osxfuse")
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  env do
 | 
			
		||||
    ENV.append_path "PKG_CONFIG_PATH", HOMEBREW_LIBRARY/"Homebrew/os/mac/pkgconfig/fuse"
 | 
			
		||||
 | 
			
		||||
    unless HOMEBREW_PREFIX.to_s == "/usr/local"
 | 
			
		||||
      ENV.append_path "HOMEBREW_LIBRARY_PATHS", "/usr/local/lib"
 | 
			
		||||
      ENV.append_path "HOMEBREW_INCLUDE_PATHS", "/usr/local/include/osxfuse"
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
class NonBinaryOsxfuseRequirement < Requirement
 | 
			
		||||
  fatal true
 | 
			
		||||
  satisfy(build_env: false) { HOMEBREW_PREFIX.to_s != "/usr/local" || !OsxfuseRequirement.binary_osxfuse_installed? }
 | 
			
		||||
 | 
			
		||||
  def message
 | 
			
		||||
    <<-EOS.undent
 | 
			
		||||
      osxfuse is already installed from the binary distribution and
 | 
			
		||||
      conflicts with this formula.
 | 
			
		||||
    EOS
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
@ -0,0 +1,7 @@
 | 
			
		||||
require "requirements/osxfuse_requirement"
 | 
			
		||||
 | 
			
		||||
if OS.mac?
 | 
			
		||||
  require "extend/os/mac/requirements/osxfuse_requirement"
 | 
			
		||||
elsif OS.linux?
 | 
			
		||||
  require "extend/os/linux/requirements/osxfuse_requirement"
 | 
			
		||||
end
 | 
			
		||||
@ -2,34 +2,10 @@ require "requirement"
 | 
			
		||||
 | 
			
		||||
class OsxfuseRequirement < Requirement
 | 
			
		||||
  fatal true
 | 
			
		||||
  cask "osxfuse"
 | 
			
		||||
  download "https://osxfuse.github.io/"
 | 
			
		||||
 | 
			
		||||
  satisfy(build_env: false) { self.class.binary_osxfuse_installed? }
 | 
			
		||||
 | 
			
		||||
  def self.binary_osxfuse_installed?
 | 
			
		||||
    File.exist?("/usr/local/include/osxfuse/fuse.h") &&
 | 
			
		||||
      !File.symlink?("/usr/local/include/osxfuse")
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  env do
 | 
			
		||||
    ENV.append_path "PKG_CONFIG_PATH", HOMEBREW_LIBRARY/"Homebrew/os/mac/pkgconfig/fuse"
 | 
			
		||||
 | 
			
		||||
    unless HOMEBREW_PREFIX.to_s == "/usr/local"
 | 
			
		||||
      ENV.append_path "HOMEBREW_LIBRARY_PATHS", "/usr/local/lib"
 | 
			
		||||
      ENV.append_path "HOMEBREW_INCLUDE_PATHS", "/usr/local/include/osxfuse"
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
class NonBinaryOsxfuseRequirement < Requirement
 | 
			
		||||
  fatal true
 | 
			
		||||
  satisfy(build_env: false) { HOMEBREW_PREFIX.to_s != "/usr/local" || !OsxfuseRequirement.binary_osxfuse_installed? }
 | 
			
		||||
 | 
			
		||||
  def message
 | 
			
		||||
    <<-EOS.undent
 | 
			
		||||
      osxfuse is already installed from the binary distribution and
 | 
			
		||||
      conflicts with this formula.
 | 
			
		||||
    EOS
 | 
			
		||||
  end
 | 
			
		||||
  fatal false
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
require "extend/os/requirements/osxfuse_requirement"
 | 
			
		||||
 | 
			
		||||
@ -0,0 +1,9 @@
 | 
			
		||||
require "requirements/osxfuse_requirement"
 | 
			
		||||
 | 
			
		||||
describe OsxfuseRequirement do
 | 
			
		||||
  subject { described_class.new([]) }
 | 
			
		||||
 | 
			
		||||
  describe "#message" do
 | 
			
		||||
    its(:message) { is_expected.to match("libfuse is required to install this formula") }
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
							
								
								
									
										36
									
								
								Library/Homebrew/test/os/mac/osxfuse_requirement_spec.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										36
									
								
								Library/Homebrew/test/os/mac/osxfuse_requirement_spec.rb
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,36 @@
 | 
			
		||||
require "requirements/osxfuse_requirement"
 | 
			
		||||
 | 
			
		||||
describe OsxfuseRequirement do
 | 
			
		||||
  subject { described_class.new([]) }
 | 
			
		||||
 | 
			
		||||
  describe "::binary_osxfuse_installed?" do
 | 
			
		||||
    it "returns false if fuse.h does not exist" do
 | 
			
		||||
      allow(File).to receive(:exist?).and_return(false)
 | 
			
		||||
      expect(described_class).not_to be_binary_osxfuse_installed
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    it "returns false if osxfuse include directory is a symlink" do
 | 
			
		||||
      allow(File).to receive(:exist?).and_return(true)
 | 
			
		||||
      allow(File).to receive(:symlink?).and_return(true)
 | 
			
		||||
      expect(described_class).not_to be_binary_osxfuse_installed
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  describe "environment" do
 | 
			
		||||
    it "adds the fuse directories to the appropriate paths" do
 | 
			
		||||
      expect(ENV).to receive(:append_path).with("PKG_CONFIG_PATH", any_args)
 | 
			
		||||
      expect(ENV).to receive(:append_path).with("HOMEBREW_LIBRARY_PATHS", any_args)
 | 
			
		||||
      expect(ENV).to receive(:append_path).with("HOMEBREW_INCLUDE_PATHS", any_args)
 | 
			
		||||
      subject.modify_build_environment
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
describe NonBinaryOsxfuseRequirement do
 | 
			
		||||
  subject { described_class.new([]) }
 | 
			
		||||
 | 
			
		||||
  describe "#message" do
 | 
			
		||||
    msg = /osxfuse is already installed from the binary distribution/
 | 
			
		||||
    its(:message) { is_expected.to match(msg) }
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user