From c41edc24fd322fd81ba0fafcaf3ae834dbd42be9 Mon Sep 17 00:00:00 2001 From: Lucas Mazza Date: Thu, 7 May 2015 17:32:30 -0300 Subject: [PATCH] Update formula to match brew's vanilla formula. The 9.4.x series does not require the same patches as the 9.3 does (https://github.com/Homebrew/homebrew/commit/ea1b7bce8e9278244e7b7c4893151f83a3f7116c), so simply updating the version does not ensure that the new formula installs on OSX. --- files/brews/postgresql.rb | 140 ++++++++++++++++++++++++++------------ manifests/params.pp | 2 +- 2 files changed, 96 insertions(+), 46 deletions(-) diff --git a/files/brews/postgresql.rb b/files/brews/postgresql.rb index 109c4f2..6f7cdc8 100644 --- a/files/brews/postgresql.rb +++ b/files/brews/postgresql.rb @@ -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 @@ -38,7 +48,6 @@ def install --enable-thread-safety --with-bonjour --with-gssapi - --with-krb5 --with-ldap --with-openssl --with-pam @@ -46,36 +55,77 @@ def install --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 + + + + + KeepAlive + + Label + #{plist_name} + ProgramArguments + + #{opt_bin}/postgres + -D + #{var}/postgres + -r + #{var}/postgres/server.log + + RunAtLoad + + WorkingDirectory + #{HOMEBREW_PREFIX} + StandardErrorPath + #{var}/postgres/server.log + + + EOS + end + + test do + system "#{bin}/initdb", testpath/"test" + end +end diff --git a/manifests/params.pp b/manifests/params.pp index 2df25b6..a42caf4 100644 --- a/manifests/params.pp +++ b/manifests/params.pp @@ -12,7 +12,7 @@ $port = 15432 $package = 'boxen/brews/postgresql' - $version = '9.4.1-boxen' + $version = '9.4.1-boxen2' $service = 'dev.postgresql'