Skip to content
Snippets Groups Projects
Commit 2be79998 authored by Mike McQuaid's avatar Mike McQuaid Committed by GitHub
Browse files

Merge pull request #2274 from rwhogg/fuse-requirement

Port OsxfuseRequirement to Linux
parents 67a0a89b 7b6abc76
No related branches found
No related tags found
No related merge requests found
...@@ -97,6 +97,10 @@ module Homebrew ...@@ -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
......
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
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
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" ...@@ -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? }
def message
<<-EOS.undent
osxfuse is already installed from the binary distribution and
conflicts with this formula.
EOS
end
end end
require "extend/os/requirements/osxfuse_requirement"
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
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
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment