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