homebrew-core/Formula/mariadb.rb
Jack Nagel 407fe8c6af mariadb: build without exotic optimization flags
Currently we patch mysql_config to sanitize the CFLAGS that are exported
to software that queries it during builds, such as the mysql gem. Since
there isn't any way to control what compiler is used by Ruby/gem to
build native extensions, we must remove any compiler or CPU specific
flags.

Instead, let's build without these flags to begin with, which will keep
mysql_config clean and provide consistency between the flags used to
build mariadb and those used to build software that links to it.
Signed-off-by: Jack Nagel <jacknagel@gmail.com>
2012-08-17 11:23:00 -05:00

115 lines
3.6 KiB
Ruby

require 'formula'
class Mariadb < Formula
homepage 'http://mariadb.org/'
url 'http://ftp.osuosl.org/pub/mariadb/mariadb-5.3.7/kvm-tarbake-jaunty-x86/mariadb-5.3.7.tar.gz'
sha1 '1ee2ef4895aefabd66b4884c382ba2cd1f7bbe2d'
depends_on 'readline'
option :universal
option 'with-tests', 'Keep test when installing'
option 'with-bench', 'Keep benchmark app when installing'
option 'client-only', 'Install only client tools'
conflicts_with 'mysql',
:because => "mariadb and mysql install the same binaries."
conflicts_with 'percona-server',
:because => "mariadb and percona-server install the same binaries."
fails_with :clang do
build 421
end
def install
# Build without compiler or CPU specific optimization flags to facilitate
# compilation of gems and other software that queries `mysql-config`.
ENV.minimal_optimization
ENV.append 'CXXFLAGS', '-fno-omit-frame-pointer -felide-constructors'
# Make universal for bindings to universal applications
ENV.universal_binary if build.universal?
configure_args = [
"--without-docs",
"--without-debug",
"--disable-dependency-tracking",
"--prefix=#{prefix}",
"--localstatedir=#{var}/mysql",
"--sysconfdir=#{etc}",
"--with-extra-charsets=complex",
"--enable-assembler",
"--enable-thread-safe-client",
"--with-big-tables",
"--with-plugin-aria",
"--with-aria-tmp-tables",
"--without-plugin-innodb_plugin",
"--with-mysqld-ldflags=-static",
"--with-client-ldflags=-static",
"--with-plugins=max-no-ndb",
"--with-embedded-server",
"--with-libevent",
]
configure_args << "--without-server" if build.include? 'client-only'
system "./configure", *configure_args
system "make install"
bin.install_symlink "#{libexec}/mysqld"
bin.install_symlink "#{share}/mysql/mysql.server"
(prefix+'mysql-test').rmtree unless build.include? 'with-tests' # save 121MB!
(prefix+'sql-bench').rmtree unless build.include? 'with-bench'
plist_path.write startup_plist
plist_path.chmod 0644
end
def caveats; <<-EOS.undent
Set up databases with:
unset TMPDIR
mysql_install_db
If this is your first install, automatically load on login with:
cp #{plist_path} ~/Library/LaunchAgents/
launchctl load -w ~/Library/LaunchAgents/#{plist_path.basename}
If this is an upgrade and you already have the #{plist_path.basename} loaded:
launchctl unload -w ~/Library/LaunchAgents/#{plist_path.basename}
cp #{plist_path} ~/Library/LaunchAgents/
launchctl load -w ~/Library/LaunchAgents/#{plist_path.basename}
Note on upgrading:
We overwrite any existing #{plist_path.basename} in ~/Library/LaunchAgents
if we are upgrading because previous versions of this brew created the
plist with a version specific program argument.
Or start manually with:
mysql.server start
EOS
end
def startup_plist; <<-EOPLIST.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>Program</key>
<string>#{HOMEBREW_PREFIX}/bin/mysqld_safe</string>
<key>RunAtLoad</key>
<true/>
<key>UserName</key>
<string>#{`whoami`.chomp}</string>
<key>WorkingDirectory</key>
<string>#{var}</string>
</dict>
</plist>
EOPLIST
end
end