Created
December 30, 2013 19:43
-
-
Save surjikal/8187029 to your computer and use it in GitHub Desktop.
Postgres 9.3.2 homebrew recipe with nested hstore patch
This file contains hidden or 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' | |
class Postgresql < Formula | |
homepage 'http://www.postgresql.org/' | |
url 'http://ftp.postgresql.org/pub/source/v9.3.2/postgresql-9.3.2.tar.bz2' | |
sha256 '700da51a71857e092f6af1c85fcd86b46d7d5cd2f2ba343cafb1f206c20232d7' | |
bottle do | |
sha1 '106eb209038abdaa2cad8d91d2a422404f8fbe56' => :mavericks | |
sha1 '283c27e518a789d2cd57640375be00e18c829ef4' => :mountain_lion | |
sha1 'f6775c74300b4aee0bf449ac7466310d86701a5f' => :lion | |
end | |
option '32-bit' | |
option 'no-perl', 'Build without Perl support' | |
option 'no-tcl', 'Build without Tcl support' | |
option 'enable-dtrace', 'Build with DTrace support' | |
depends_on 'readline' | |
depends_on 'libxml2' if MacOS.version <= :leopard # Leopard libxml is too old | |
depends_on 'ossp-uuid' => :recommended | |
depends_on :python => :recommended | |
conflicts_with 'postgres-xc', | |
:because => 'postgresql and postgres-xc install the same binaries.' | |
fails_with :clang do | |
build 211 | |
cause 'Miscompilation resulting in segfault on queries' | |
end | |
def patches | |
[ | |
# Add support for nested hstore | |
# http://www.postgresql.org/message-id/[email protected] | |
"https://gist.github.com/surjikal/8186631/raw/nested_hstore-0.40.patch", | |
# Fix uuid-ossp build issues: http://archives.postgresql.org/pgsql-general/2012-07/msg00654.php | |
DATA | |
] | |
end | |
def install | |
ENV.libxml2 if MacOS.version >= :snow_leopard | |
args = %W[ | |
--disable-debug | |
--prefix=#{prefix} | |
--datadir=#{share}/#{name} | |
--docdir=#{doc} | |
--enable-thread-safety | |
--with-bonjour | |
--with-gssapi | |
--with-krb5 | |
--with-ldap | |
--with-openssl | |
--with-pam | |
--with-libxml | |
--with-libxslt | |
] | |
args << "--with-ossp-uuid" if build.with? 'ossp-uuid' | |
args << "--with-python" if build.with? 'python' | |
args << "--with-perl" unless build.include? 'no-perl' | |
args << "--with-tcl" unless build.include? 'no-tcl' | |
args << "--enable-dtrace" if build.include? 'enable-dtrace' | |
if build.with? 'ossp-uuid' | |
ENV.append 'CFLAGS', `uuid-config --cflags`.strip | |
ENV.append 'LDFLAGS', `uuid-config --ldflags`.strip | |
ENV.append 'LIBS', `uuid-config --libs`.strip | |
end | |
if build.build_32_bit? | |
ENV.append 'CFLAGS', "-arch #{MacOS.preferred_arch}" | |
ENV.append 'LDFLAGS', "-arch #{MacOS.preferred_arch}" | |
end | |
system "./configure", *args | |
system "make install-world" | |
end | |
def post_install | |
unless File.exist? "#{var}/postgres" | |
system "#{bin}/initdb", "#{var}/postgres", '-E', 'utf8' | |
end | |
end | |
def caveats | |
s = <<-EOS.undent | |
If builds of PostgreSQL 9 are failing and you have version 8.x installed, | |
you may need to remove the previous version first. See: | |
https://github.com/Homebrew/homebrew/issues/issue/2510 | |
To migrate existing data from a previous major version (pre-9.3) of PostgreSQL, see: | |
http://www.postgresql.org/docs/9.3/static/upgrading.html | |
EOS | |
s << "\n" << gem_caveats if MacOS.prefer_64_bit? | |
return s | |
end | |
def gem_caveats; <<-EOS.undent | |
When installing the postgres gem, including ARCHFLAGS is recommended: | |
ARCHFLAGS="-arch x86_64" gem install pg | |
To install gems without sudo, see the Homebrew wiki. | |
EOS | |
end | |
plist_options :manual => "postgres -D #{HOMEBREW_PREFIX}/var/postgres" | |
def plist; <<-EOS.undent | |
<?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>#{plist_name}</string> | |
<key>ProgramArguments</key> | |
<array> | |
<string>#{opt_prefix}/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>WorkingDirectory</key> | |
<string>#{HOMEBREW_PREFIX}</string> | |
<key>StandardErrorPath</key> | |
<string>#{var}/postgres/server.log</string> | |
</dict> | |
</plist> | |
EOS | |
end | |
end | |
__END__ | |
--- 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