homebrew-core/Formula/proof-general.rb

80 lines
2.2 KiB
Ruby

require 'formula'
require 'ostruct'
class ProofGeneral < Formula
homepage 'http://proofgeneral.inf.ed.ac.uk'
url 'http://proofgeneral.inf.ed.ac.uk/releases/ProofGeneral-4.2.tgz'
sha1 'c8d2e4457478b9dbf4080d3cf8255325fcffe619'
option 'with-doc', 'Install HTML documentation'
option 'with-emacs=', 'Re-compile lisp files with specified emacs'
def which_emacs
emacs_binary = ARGV.value('with-emacs')
if emacs_binary.nil?
return OpenStruct.new(
:binary => "",
:major => 0,
:empty? => true)
end
raise "#{emacs_binary} not found" if not File.exists? "#{emacs_binary}"
version_info = `#{emacs_binary} --version`
version_info =~ /GNU Emacs (\d+)\./
major = $1
if major != '23' && major != '24'
raise "Emacs 23.x or 24.x is required; #{major}.x provided."
end
return OpenStruct.new(
:binary => emacs_binary,
:major => major,
:empty? => false)
end
def install
ENV.j1 # Otherwise lisp compilation can result in 0-byte files
emacs = which_emacs
args = ["PREFIX=#{prefix}",
"DEST_PREFIX=#{prefix}",
"ELISPP=share/emacs/site-lisp/ProofGeneral",
"ELISP_START=#{share}/emacs/site-lisp/site-start.d",
"EMACS=#{emacs.binary}"];
Dir.chdir "ProofGeneral" do
unless emacs.empty?
# http://proofgeneral.inf.ed.ac.uk/trac/ticket/458
if emacs.major == "24"
inreplace 'Makefile', '(setq byte-compile-error-on-warn t)', ''
end
system "make clean"
system "make", "compile", *args
end
system "make", "install", *args
man1.install "doc/proofgeneral.1"
info.install "doc/ProofGeneral.info", "doc/PG-adapting.info"
doc.install "doc/ProofGeneral", "doc/PG-adapting" if build.include? 'with-doc'
end
end
def caveats
doc = ""
if build.include? 'with-doc'
doc += <<-EOS.undent
HTML documentation is available in:
#{HOMEBREW_PREFIX}/share/doc/proof-general
EOS
end
<<-EOS.undent
To use ProofGeneral with Emacs, add the following line to your ~/.emacs file:
(load-file "#{HOMEBREW_PREFIX}/share/emacs/site-lisp/ProofGeneral/generic/proof-site.el")
#{doc}
EOS
end
end