public
Last active

Homebrew formula to build Cocoa Emacs 24.3 with input method patch

  • Download Gist
emacs.rb
Ruby
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144
require 'formula'
 
class Emacs < Formula
homepage 'http://www.gnu.org/software/emacs/'
url 'http://ftpmirror.gnu.org/emacs/emacs-24.3.tar.gz'
mirror 'http://ftp.gnu.org/pub/gnu/emacs/emacs-24.3.tar.gz'
sha256 '0098ca3204813d69cd8412045ba33e8701fa2062f4bff56bedafc064979eef41'
 
skip_clean 'share/info' # Keep the docs
 
option "cocoa", "Build a Cocoa version of emacs"
option "srgb", "Enable sRGB colors in the Cocoa version of emacs"
option "with-x", "Include X11 support"
option "use-git-head", "Use Savannah (faster) git mirror for HEAD builds"
option "keep-ctags", "Don't remove the ctags executable that emacs provides"
 
if build.include? "use-git-head"
head 'http://git.sv.gnu.org/r/emacs.git'
else
head 'bzr://http://bzr.savannah.gnu.org/r/emacs/trunk'
end
 
if build.head? or build.include? "cocoa"
depends_on :autoconf
depends_on :automake
end
 
depends_on 'pkg-config' => :build
depends_on :x11 if build.include? "with-x"
depends_on 'gnutls' => :optional
 
fails_with :llvm do
build 2334
cause "Duplicate symbol errors while linking."
end
 
def patches
p = {}
p[:p0] = []
locale = ENV['LANG'].match(/(\w+)\.\w+/)
 
if build.include? "cocoa" and not build.head?
# Forked inline patch for input method on Mac OS X
# Fixed memory leak of distnoted
p[:p0] << "https://gist.github.com/anonymous/8142555/raw/d67ad1dc814579d125afbd18de3a62ba69895601/emacs-inline.patch" if locale[1] == "ja_JP"
# On Mavericks, fix a issue that default-directory is the root directory
# Fixed upstream in r114730 and r114882.
p[:p0] << "https://gist.github.com/znz/7279123/raw/edef39d879fe453fab43b76add0a1ca6ad355eb3/emacs.c.diff" if MacOS.version == :mavericks
# Make native fullscreen mode optional, mostly from
# upstream r111679
p[:p1] = "https://gist.github.com/scotchi/7209145/raw/a571acda1c85e13ed8fe8ab7429dcb6cab52344f/ns-use-native-fullscreen-and-toggle-frame-fullscreen.patch"
p
end
end
 
# Follow MacPorts and don't install ctags from Emacs. This allows Vim
# and Emacs and ctags to play together without violence.
def do_not_install_ctags
unless build.include? "keep-ctags"
(bin/"ctags").unlink
(share/man/man1/"ctags.1.gz").unlink
end
end
 
def install
# HEAD builds blow up when built in parallel as of April 20 2012
ENV.j1 if build.head?
 
args = ["--prefix=#{prefix}",
"--without-dbus",
"--enable-locallisppath=#{HOMEBREW_PREFIX}/share/emacs/site-lisp",
"--infodir=#{info}/emacs"]
if build.with? 'gnutls'
args << '--with-gnutls'
else
args << '--without-gnutls'
end
 
system "./autogen.sh" if build.head?
 
if build.include? "cocoa"
# Patch for color issues described here:
# http://debbugs.gnu.org/cgi/bugreport.cgi?bug=8402
if build.include? "srgb"
inreplace "src/nsterm.m",
"*col = [NSColor colorWithCalibratedRed: r green: g blue: b alpha: 1.0];",
"*col = [NSColor colorWithDeviceRed: r green: g blue: b alpha: 1.0];"
end
 
args << "--with-ns" << "--disable-ns-self-contained"
system "./configure", *args
system "make"
system "make install"
prefix.install "nextstep/Emacs.app"
 
# Don't cause ctags clash.
do_not_install_ctags
 
# Replace the symlink with one that avoids starting Cocoa.
(bin/"emacs").unlink # Kill the existing symlink
(bin/"emacs").write <<-EOS.undent
#!/bin/bash
#{prefix}/Emacs.app/Contents/MacOS/Emacs -nw "$@"
EOS
else
if build.include? "with-x"
# These libs are not specified in xft's .pc. See:
# https://trac.macports.org/browser/trunk/dports/editors/emacs/Portfile#L74
# https://github.com/Homebrew/homebrew/issues/8156
ENV.append 'LDFLAGS', '-lfreetype -lfontconfig'
args << "--with-x"
args << "--with-gif=no" << "--with-tiff=no" << "--with-jpeg=no"
else
args << "--without-x"
end
 
system "./configure", *args
system "make"
system "make install"
 
# Don't cause ctags clash.
do_not_install_ctags
end
end
 
def caveats
s = ""
if build.include? "cocoa"
s += <<-EOS.undent
Emacs.app was installed to:
#{prefix}
 
To link the application to a normal Mac OS X location:
brew linkapps
or:
ln -s #{prefix}/Emacs.app /Applications
 
A command line wrapper for the cocoa app was installed to:
#{bin}/emacs
EOS
end
return s
end
end

Please sign in to comment on this gist.

Something went wrong with that request. Please try again.