public
Last active

Postgresql 8.4.8 recipe for homebrew, lives in /usr/local/Library/Formula/postgresql.rb

  • Download Gist
postgresql.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 145 146 147 148 149 150
require 'formula'
require 'hardware'
 
class Postgresql <Formula
homepage 'http://www.postgresql.org/'
url 'http://ftp2.uk.postgresql.org/sites/ftp.postgresql.org/source/v8.4.8/postgresql-8.4.8.tar.bz2'
md5 '4603e8ea30cee97189b62b39022f2043'
 
depends_on 'readline'
depends_on 'libxml2' if MACOS_VERSION < 10.6 #system libxml is too old
 
aka 'postgres'
 
def options
[
['--no-python', 'Build without Python support.'],
['--no-perl', 'Build without Perl support.']
]
end
 
def install
ENV.libxml2 # wouldn't compile for justinlilly otherwise
configure_args = [
"--enable-thread-safety",
"--with-bonjour",
"--with-gssapi",
"--with-krb5",
"--with-openssl",
"--with-libxml",
"--with-libxslt",
"--prefix=#{prefix}",
"--disable-debug"
]
 
configure_args << "--with-python" unless ARGV.include? '--no-python'
configure_args << "--with-perl" unless ARGV.include? '--no-perl'
 
if bits_64? and not ARGV.include? '--no-python'
configure_args << "ARCHFLAGS='-arch x86_64'"
 
# On 64-bit systems, we need to look for a 32-bit Framework Python.
# The configure script prefers this Python version, and if it doesn't
# have 64-bit support then linking will fail.
 
framework_python = Pathname.new "/Library/Frameworks/Python.framework/Versions/Current/Python"
if framework_python.exist? and not (archs_for_command framework_python).include? :x86_64
opoo "Detected a framework Python that does not have 64-bit support in:"
puts <<-EOS.undent
#{framework_python}
 
The configure script seems to prefer this version of Python over any others,
so you may experience linker problems as described in:
http://osdir.com/ml/pgsql-general/2009-09/msg00160.html
 
To fix this issue, you may need to either delete the version of Python
shown above, or move it out of the way before brewing PostgreSQL.
 
Note that a framework Python in /Library/Frameworks/Python.framework is
the "MacPython" verison, and not the system-provided version which is in:
/System/Library/Frameworks/Python.framework
EOS
end
end
 
# Fails on Core Duo with O4 and O3
ENV.O2 if Hardware.intel_family == :core
 
system "./configure", *configure_args
system "make install"
 
(prefix+'org.postgresql.postgres.plist').write startup_plist
(prefix+'org.postgresql.postgres.plist').chmod 0644
end
 
def skip_clean? path
# NOTE at some point someone should tweak this so it only skips clean
# for the bits that break the build otherwise
true
end
 
def bits_64?
MACOS_VERSION >= 10.6 && Hardware.is_64_bit?
end
 
def caveats
caveats = <<-EOS
To build plpython against a specific Python, set PYTHON prior to brewing:
PYTHON=/usr/local/bin/python brew install postgresql
See:
http://www.postgresql.org/docs/8.4/static/install-procedure.html
 
 
If this is your first install, create a database with:
initdb #{var}/postgres
 
Automatically load on login with:
launchctl load -w #{prefix}/org.postgresql.postgres.plist
 
Or start manually with:
pg_ctl -D #{var}/postgres -l #{var}/postgres/server.log start
 
And stop with:
pg_ctl -D #{var}/postgres stop -s -m fast
EOS
if bits_64? then
caveats << <<-EOS
 
If you want to install the postgres gem, including ARCHFLAGS is recommended:
env ARCHFLAGS="-arch x86_64" gem install postgres
 
To install gems without sudo, see the Homebrew wiki.
EOS
end
 
caveats
end
 
def startup_plist
return <<-EOPLIST
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>KeepAlive</key>
<true/>
<key>Label</key>
<string>org.postgresql.postgres</string>
<key>ProgramArguments</key>
<array>
<string>#{bin}/postgres</string>
<string>-D</string>
<string>#{var}/postgres</string>
<string>-r</string>
<string>#{var}/postgres/server.log</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>UserName</key>
<string>#{`whoami`.chomp}</string>
<key>WorkingDirectory</key>
<string>#{HOMEBREW_PREFIX}</string>
<key>StandardErrorPath</key>
<string>#{var}/postgres/server.log</string>
</dict>
</plist>
EOPLIST
end
end

Please sign in to comment on this gist.

Something went wrong with that request. Please try again.