aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBob W. Hogg2017-02-20 09:42:43 -0800
committerBob W. Hogg2017-04-15 21:20:09 -0700
commit608d72a35fc437a0cf3e8da53729e479cde0be3d (patch)
tree3f7534ed8fb65da220b7a6a227f7d27d53b0f678
parent02f0189335907805d422c817462674081f48ab60 (diff)
downloadbrew-608d72a35fc437a0cf3e8da53729e479cde0be3d.tar.bz2
OsxfuseRequirement: Port to Linux
-rw-r--r--Library/Homebrew/extend/os/linux/requirements/osxfuse_requirement.rb39
-rw-r--r--Library/Homebrew/extend/os/mac/requirements/osxfuse_requirement.rb34
-rw-r--r--Library/Homebrew/extend/os/requirements/osxfuse_requirement.rb7
-rw-r--r--Library/Homebrew/requirements/osxfuse_requirement.rb30
-rw-r--r--Library/Homebrew/test/os/linux/osxfuse_requirement_spec.rb9
-rw-r--r--Library/Homebrew/test/os/mac/osxfuse_requirement_spec.rb36
6 files changed, 128 insertions, 27 deletions
diff --git a/Library/Homebrew/extend/os/linux/requirements/osxfuse_requirement.rb b/Library/Homebrew/extend/os/linux/requirements/osxfuse_requirement.rb
new file mode 100644
index 000000000..3fd847bc4
--- /dev/null
+++ b/Library/Homebrew/extend/os/linux/requirements/osxfuse_requirement.rb
@@ -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
diff --git a/Library/Homebrew/extend/os/mac/requirements/osxfuse_requirement.rb b/Library/Homebrew/extend/os/mac/requirements/osxfuse_requirement.rb
new file mode 100644
index 000000000..8c898a272
--- /dev/null
+++ b/Library/Homebrew/extend/os/mac/requirements/osxfuse_requirement.rb
@@ -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
diff --git a/Library/Homebrew/extend/os/requirements/osxfuse_requirement.rb b/Library/Homebrew/extend/os/requirements/osxfuse_requirement.rb
new file mode 100644
index 000000000..5f56d48c4
--- /dev/null
+++ b/Library/Homebrew/extend/os/requirements/osxfuse_requirement.rb
@@ -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
diff --git a/Library/Homebrew/requirements/osxfuse_requirement.rb b/Library/Homebrew/requirements/osxfuse_requirement.rb
index d5a341567..9a07209d4 100644
--- a/Library/Homebrew/requirements/osxfuse_requirement.rb
+++ b/Library/Homebrew/requirements/osxfuse_requirement.rb
@@ -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"
diff --git a/Library/Homebrew/test/os/linux/osxfuse_requirement_spec.rb b/Library/Homebrew/test/os/linux/osxfuse_requirement_spec.rb
new file mode 100644
index 000000000..c45af2fa7
--- /dev/null
+++ b/Library/Homebrew/test/os/linux/osxfuse_requirement_spec.rb
@@ -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
diff --git a/Library/Homebrew/test/os/mac/osxfuse_requirement_spec.rb b/Library/Homebrew/test/os/mac/osxfuse_requirement_spec.rb
new file mode 100644
index 000000000..06d3d885e
--- /dev/null
+++ b/Library/Homebrew/test/os/mac/osxfuse_requirement_spec.rb
@@ -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