add EmacsRequirement

Closes Homebrew/homebrew#39326.

Signed-off-by: Xu Cheng <xucheng@me.com>
This commit is contained in:
Alex Dunn 2015-05-08 14:37:15 +08:00 committed by Xu Cheng
parent 8297810e3c
commit dba9675ed3
3 changed files with 32 additions and 0 deletions

View File

@ -121,6 +121,7 @@ class DependencyCollector
when :tuntap then TuntapDependency.new(tags)
when :ant then ant_dep(spec, tags)
when :apr then AprDependency.new(tags)
when :emacs then EmacsRequirement.new(tags)
# Tiger's ld is too old to properly link some software
when :ld64 then LD64Dependency.new if MacOS.version < :leopard
when :clt # deprecated

View File

@ -12,6 +12,7 @@ require 'requirements/ruby_requirement'
require 'requirements/tuntap_dependency'
require 'requirements/unsigned_kext_requirement'
require 'requirements/x11_dependency'
require 'requirements/emacs_requirement'
class XcodeDependency < Requirement
fatal true

View File

@ -0,0 +1,30 @@
class EmacsRequirement < Requirement
fatal true
default_formula "emacs"
def initialize(tags)
@version = tags.shift if /\d+\.*\d*/ === tags.first
raise "Specify a version for EmacsRequirement" unless @version
super
end
satisfy :build_env => false do
next unless which "emacs"
emacs_version = Utils.popen_read("emacs", "--batch", "--eval", "(princ emacs-version)")
Version.new(emacs_version) >= Version.new(@version)
end
env do
ENV.prepend_path "PATH", which("emacs").dirname
end
def message
s = "Emacs #{@version} or later is required."
s += super
s
end
def inspect
"#<#{self.class.name}: #{name.inspect} #{tags.inspect} version=#{@version.inspect}>"
end
end