Skip to content
This repository has been archived by the owner on Mar 12, 2019. It is now read-only.

Commit

Permalink
core: Create an X.Org requirement.
Browse files Browse the repository at this point in the history
The existing X11 requirement only works for OS X, and works in concert
with XQuartz. For Linux, we want to install upstream X.Org instead.

Closes #10.

Signed-off-by: Bob W. Hogg <rwhogg@linux.com>
  • Loading branch information
Bob W. Hogg committed May 23, 2016
1 parent 988129d commit bcb349a
Show file tree
Hide file tree
Showing 5 changed files with 32 additions and 9 deletions.
2 changes: 1 addition & 1 deletion Library/Homebrew/dependency_collector.rb
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,7 @@ def parse_string_spec(spec, tags)

def parse_symbol_spec(spec, tags)
case spec
when :x11 then X11Requirement.new(spec.to_s, tags)
when :x11 then OS.mac? ? X11Requirement.new(spec.to_s, tags) : XorgRequirement.new(spec.to_s, tags)
when :xcode then XcodeRequirement.new(tags)
when :macos then MinimumMacOSRequirement.new(tags)
when :mysql then MysqlRequirement.new(tags)
Expand Down
2 changes: 0 additions & 2 deletions Library/Homebrew/os/mac/xquartz.rb
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,6 @@ module XQuartz
# The X11.app distributed by Apple is also XQuartz, and therefore covered
# by this method.
def version
@version ||= latest_version if OS.linux?
@version ||= detect_version
end

Expand Down Expand Up @@ -96,7 +95,6 @@ def provided_by_apple?
# remain public. New code should use MacOS::X11.bin, MacOS::X11.lib and
# MacOS::X11.include instead, as that accounts for Xcode-only systems.
def prefix
@prefix ||= Pathname.new("/usr") if OS.linux?
@prefix ||= if Pathname.new("/opt/X11/lib/libpng.dylib").exist?
Pathname.new("/opt/X11")
elsif Pathname.new("/usr/X11/lib/libpng.dylib").exist?
Expand Down
1 change: 1 addition & 0 deletions Library/Homebrew/requirements.rb
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
require "requirements/tuntap_requirement"
require "requirements/unsigned_kext_requirement"
require "requirements/x11_requirement"
require "requirements/xorg_requirement"
require "requirements/emacs_requirement"
require "requirements/glibc_requirement"

Expand Down
18 changes: 18 additions & 0 deletions Library/Homebrew/requirements/xorg_requirement.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
require "requirement"

class XorgRequirement < Requirement
fatal true
default_formula "linuxbrew/xorg/xorg"

def initialize(name = "xorg", tags = [])
@name = name
if /(\d\.)+\d/ === tags.first
tags.shift
end
super(tags)
end

satisfy :build_env => false do
Formula["linuxbrew/xorg/xorg"].installed?
end
end
18 changes: 12 additions & 6 deletions Library/Homebrew/test/test_dependency_collector.rb
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,8 @@ def test_dependency_tags

def test_requirement_creation
@d.add :x11
assert_instance_of X11Requirement, find_requirement(X11Requirement)
req = OS.mac? ? X11Requirement : XorgRequirement
assert_instance_of req, find_requirement(req)
end

def test_no_duplicate_requirements
Expand All @@ -50,29 +51,34 @@ def test_no_duplicate_requirements
def test_requirement_tags
@d.add :x11 => "2.5.1"
@d.add :xcode => :build
assert_empty find_requirement(X11Requirement).tags
req = OS.mac? ? X11Requirement : XorgRequirement
assert_empty find_requirement(req).tags
assert_predicate find_requirement(XcodeRequirement), :build?
end

def test_x11_no_tag
@d.add :x11
assert_empty find_requirement(X11Requirement).tags
req = OS.mac? ? X11Requirement : XorgRequirement
assert_empty find_requirement(req).tags
end

def test_x11_min_version
skip "XQuartz versions are relevant only on Mac OS" unless OS.mac?
@d.add :x11 => "2.5.1"
assert_equal "2.5.1", find_requirement(X11Requirement).min_version.to_s
end

def test_x11_tag
@d.add :x11 => :optional
assert_predicate find_requirement(X11Requirement), :optional?
req = OS.mac? ? X11Requirement : XorgRequirement
assert_predicate find_requirement(req), :optional?
end

def test_x11_min_version_and_tag
@d.add :x11 => ["2.5.1", :optional]
dep = find_requirement(X11Requirement)
assert_equal "2.5.1", dep.min_version.to_s
req = OS.mac? ? X11Requirement : XorgRequirement
dep = find_requirement(req)
assert_equal "2.5.1", dep.min_version.to_s if OS.mac?
assert_predicate dep, :optional?
end

Expand Down

0 comments on commit bcb349a

Please sign in to comment.