Skip to content
This repository has been archived by the owner on Dec 2, 2020. It is now read-only.

Commit

Permalink
Update formula to match brew's vanilla formula.
Browse files Browse the repository at this point in the history
The 9.4.x series does not require the same patches as the 9.3 does (Homebrew/legacy-homebrew@ea1b7bc),
so simply updating the version does not ensure that the new formula installs on
OSX.
  • Loading branch information
lucasmazza committed May 7, 2015
1 parent d93a6fa commit c41edc2
Show file tree
Hide file tree
Showing 2 changed files with 96 additions and 46 deletions.
140 changes: 95 additions & 45 deletions files/brews/postgresql.rb
Original file line number Diff line number Diff line change
@@ -1,30 +1,40 @@
require 'formula'

class Postgresql < Formula
homepage 'http://www.postgresql.org/'
url 'http://ftp.postgresql.org/pub/source/v9.4.1/postgresql-9.4.1.tar.bz2'
sha256 '29ddb77c820095b8f52e5455e9c6c6c20cf979b0834ed1986a8857b84888c3a6'
version '9.4.1-boxen'
homepage "http://www.postgresql.org/"

stable do
url "http://ftp.postgresql.org/pub/source/v9.4.1/postgresql-9.4.1.tar.bz2"
sha256 "29ddb77c820095b8f52e5455e9c6c6c20cf979b0834ed1986a8857b84888c3a6"
end

version "9.4.1-boxen2"

bottle do
revision 1
sha1 "4b5a1f7ebe10ec5aba088459a4faa2ba7c13a691" => :yosemite
sha1 "e7844fc53d1ffef1cb809332d88b5bb777927176" => :mavericks
sha1 "a5e70e04dba89fee99bb5fb7dae74e4a849813c4" => :mountain_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'
option "32-bit"
option "without-perl", "Build without Perl support"
option "without-tcl", "Build without Tcl support"
option "with-dtrace", "Build with DTrace support"

depends_on 'readline'
depends_on 'ossp-uuid' => :recommended
deprecated_option "no-perl" => "without-perl"
deprecated_option "no-tcl" => "without-tcl"
deprecated_option "enable-dtrace" => "with-dtrace"

conflicts_with 'postgres-xc',
:because => 'postgresql and postgres-xc install the same binaries.'
depends_on "openssl"
depends_on "readline"
depends_on "libxml2" if MacOS.version <= :leopard # Leopard libxml is too old
depends_on :python => :optional

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

# Fix uuid-ossp build issues: http://archives.postgresql.org/pgsql-general/2012-07/msg00654.php
def patches
DATA
cause "Miscompilation resulting in segfault on queries"
end

def install
Expand All @@ -38,44 +48,84 @@ def install
--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-perl" unless build.include? 'no-perl'
args << "--with-tcl" unless build.include? 'no-tcl'
args << "--enable-dtrace" if build.include? 'enable-dtrace'
args << "--with-python" if build.with? "python"
args << "--with-perl" if build.with? "perl"

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
# The CLT is required to build tcl support on 10.7 and 10.8 because
# tclConfig.sh is not part of the SDK
if build.with?("tcl") && (MacOS.version >= :mavericks || MacOS::CLT.installed?)
args << "--with-tcl"

if File.exist?("#{MacOS.sdk_path}/usr/lib/tclConfig.sh")
args << "--with-tclconfig=#{MacOS.sdk_path}/usr/lib"
end
end

args << "--enable-dtrace" if build.with? "dtrace"
args << "--with-uuid=e2fs"

if build.build_32_bit?
ENV.append 'CFLAGS', "-arch #{MacOS.preferred_arch}"
ENV.append 'LDFLAGS', "-arch #{MacOS.preferred_arch}"
ENV.append %w{CFLAGS LDFLAGS}, "-arch #{Hardware::CPU.arch_32_bit}"
end

system "./configure", *args
system "make install-world"
system "make", "install-world"
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"
def post_install
unless File.exist? "#{var}/postgres"
system "#{bin}/initdb", "#{var}/postgres"
end
end

def caveats; <<-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/2510
To migrate existing data from a previous major version (pre-9.4) of PostgreSQL, see:
http://www.postgresql.org/docs/9.4/static/upgrading.html
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_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

test do
system "#{bin}/initdb", testpath/"test"
end
end
2 changes: 1 addition & 1 deletion manifests/params.pp
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
$port = 15432

$package = 'boxen/brews/postgresql'
$version = '9.4.1-boxen'
$version = '9.4.1-boxen2'

$service = 'dev.postgresql'

Expand Down

0 comments on commit c41edc2

Please sign in to comment.