Created
September 14, 2012 10:01
-
-
Save shigeya/3721125 to your computer and use it in GitHub Desktop.
brew's postgresql8.rb locally patched
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
require 'formula' | |
require 'hardware' | |
class Postgresql8 < Formula | |
homepage 'http://www.postgresql.org/' | |
url 'http://ftp.postgresql.org/pub/source/v8.4.12/postgresql-8.4.12.tar.gz' | |
sha1 '53a17cd0f104bcad112925d3c6fc2e29e1f89c8e' | |
depends_on 'readline' | |
depends_on 'libxml2' if MACOS_VERSION < 10.6 # Leopard libxml is too old | |
depends_on 'ossp-uuid' | |
def options | |
[ | |
['--no-python', 'Build without Python support.'], | |
['--no-perl', 'Build without Perl support.'] | |
] | |
end | |
skip_clean :all | |
# Fix PL/Python build: https://github.com/mxcl/homebrew/issues/11162 | |
# Fix uuid-ossp build issues: http://archives.postgresql.org/pgsql-general/2012-07/msg00654.php | |
def patches | |
DATA | |
end | |
def install | |
ENV.libxml2 if MACOS_VERSION >= 10.6 | |
args = ["--disable-debug", | |
"--prefix=#{prefix}", | |
"--enable-thread-safety", | |
"--with-bonjour", | |
"--with-gssapi", | |
"--with-krb5", | |
"--with-openssl", | |
"--with-libxml", "--with-libxslt"] | |
args << "--with-python" unless ARGV.include? '--no-python' | |
args << "--with-perl" unless ARGV.include? '--no-perl' | |
args << "--with-ossp-uuid" | |
ENV.append 'CFLAGS', `uuid-config --cflags`.strip | |
ENV.append 'LDFLAGS', `uuid-config --ldflags`.strip | |
ENV.append 'LIBS', `uuid-config --libs`.strip | |
if snow_leopard_64? and not ARGV.include? '--no-python' | |
args << "ARCHFLAGS='-arch x86_64'" | |
check_python_arch | |
end | |
# Fails on Core Duo with O4 and O3 | |
ENV.O2 if Hardware.intel_family == :core | |
system "./configure", *args | |
system "make install" | |
%w[ adminpack dblink fuzzystrmatch lo uuid-ossp pg_buffercache pg_trgm | |
pgcrypto tsearch2 vacuumlo xml2 intarray ].each do |a| | |
system "cd contrib/#{a}; make install" | |
end | |
(prefix+'org.postgresql.postgres.plist').write startup_plist | |
end | |
def check_python_arch | |
# 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" | |
return unless framework_python.exist? | |
unless (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 | |
def caveats | |
s = <<-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 | |
If this is your first install, automatically load on login with: | |
cp #{prefix}/org.postgresql.postgres.plist ~/Library/LaunchAgents | |
launchctl load -w ~/Library/LaunchAgents/org.postgresql.postgres.plist | |
If this is an upgrade and you already have the org.postgresql.postgres.plist loaded: | |
launchctl unload -w ~/Library/LaunchAgents/org.postgresql.postgres.plist | |
cp #{prefix}/org.postgresql.postgres.plist ~/Library/LaunchAgents | |
launchctl load -w ~/Library/LaunchAgents/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 snow_leopard_64? then | |
s << <<-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 | |
return s | |
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> | |
</dict> | |
</plist> | |
EOPLIST | |
end | |
end | |
__END__ | |
--- a/src/pl/plpython/Makefile 2011-09-23 08:03:52.000000000 +1000 | |
+++ b/src/pl/plpython/Makefile 2011-10-26 21:43:40.000000000 +1100 | |
@@ -24,8 +24,6 @@ | |
# Darwin (OS X) has its own ideas about how to do this. | |
ifeq ($(PORTNAME), darwin) | |
shared_libpython = yes | |
-override python_libspec = -framework Python | |
-override python_additional_libs = | |
endif | |
# If we don't have a shared library and the platform doesn't allow it | |
--- a/contrib/uuid-ossp/uuid-ossp.c 2012-07-30 18:34:53.000000000 -0700 | |
+++ b/contrib/uuid-ossp/uuid-ossp.c 2012-07-30 18:35:03.000000000 -0700 | |
@@ -9,6 +9,8 @@ | |
*------------------------------------------------------------------------- | |
*/ | |
+#define _XOPEN_SOURCE | |
+ | |
#include "postgres.h" | |
#include "fmgr.h" | |
#include "utils/builtins.h" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment