Merge pull request #2274 from rwhogg/fuse-requirement
Port OsxfuseRequirement to Linux
This commit is contained in:
commit
2be7999878
@ -97,6 +97,10 @@ module Homebrew
|
|||||||
files = files.reject { |p| p =~ %r{^test/(os/mac|cask)(/.*|_spec\.rb)$} }
|
files = files.reject { |p| p =~ %r{^test/(os/mac|cask)(/.*|_spec\.rb)$} }
|
||||||
end
|
end
|
||||||
|
|
||||||
|
unless OS.linux?
|
||||||
|
files = files.reject { |p| p =~ %r{^test/os/linux(/.*|_spec\.rb)$} }
|
||||||
|
end
|
||||||
|
|
||||||
if parallel
|
if parallel
|
||||||
system "bundle", "exec", "parallel_rspec", *opts, "--", *args, "--", *files
|
system "bundle", "exec", "parallel_rspec", *opts, "--", *args, "--", *files
|
||||||
else
|
else
|
||||||
|
|||||||
@ -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
|
class OsxfuseRequirement < Requirement
|
||||||
fatal true
|
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
|
end
|
||||||
|
|
||||||
class NonBinaryOsxfuseRequirement < Requirement
|
class NonBinaryOsxfuseRequirement < Requirement
|
||||||
fatal true
|
fatal false
|
||||||
satisfy(build_env: false) { HOMEBREW_PREFIX.to_s != "/usr/local" || !OsxfuseRequirement.binary_osxfuse_installed? }
|
end
|
||||||
|
|
||||||
def message
|
require "extend/os/requirements/osxfuse_requirement"
|
||||||
<<-EOS.undent
|
|
||||||
osxfuse is already installed from the binary distribution and
|
|
||||||
conflicts with this formula.
|
|
||||||
EOS
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|||||||
@ -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