/Library/Formula/mysql.rb
Ruby | 194 lines | 141 code | 34 blank | 19 comment | 12 complexity | 1ffddcb84f552b03f8596f1a920e1597 MD5 | raw file
- require 'formula'
- class Mysql < Formula
- homepage 'http://dev.mysql.com/doc/refman/5.5/en/'
- url 'http://dev.mysql.com/get/Downloads/MySQL-5.5/mysql-5.5.25a.tar.gz/from/http://cdn.mysql.com/'
- version '5.5.25a'
- sha1 '85dfea413a7d5d2733a40f9dd79cf2320302979f'
- depends_on 'cmake' => :build
- depends_on 'readline'
- depends_on 'pidof'
- fails_with :llvm do
- build 2326
- cause "https://github.com/mxcl/homebrew/issues/issue/144"
- end
- skip_clean :all # So "INSTALL PLUGIN" can work.
- def options
- [
- ['--with-tests', "Build with unit tests."],
- ['--with-embedded', "Build the embedded server."],
- ['--with-libedit', "Compile with EditLine wrapper instead of readline"],
- ['--with-archive-storage-engine', "Compile with the ARCHIVE storage engine enabled"],
- ['--with-blackhole-storage-engine', "Compile with the BLACKHOLE storage engine enabled"],
- ['--universal', "Make mysql a universal binary"],
- ['--enable-local-infile', "Build with local infile loading support"]
- ]
- end
- # Remove optimization flags from `mysql_config --cflags`
- # This facilitates easy compilation of gems using a brewed mysql
- # Also fix compilation with Xcode and no CLT: http://bugs.mysql.com/bug.php?id=66001
- def patches; DATA; end
- def install
- # Make sure the var/mysql directory exists
- (var+"mysql").mkpath
- args = [".",
- "-DCMAKE_INSTALL_PREFIX=#{prefix}",
- "-DMYSQL_DATADIR=#{var}/mysql",
- "-DINSTALL_MANDIR=#{man}",
- "-DINSTALL_DOCDIR=#{doc}",
- "-DINSTALL_INFODIR=#{info}",
- # CMake prepends prefix, so use share.basename
- "-DINSTALL_MYSQLSHAREDIR=#{share.basename}/#{name}",
- "-DWITH_SSL=yes",
- "-DDEFAULT_CHARSET=utf8",
- "-DDEFAULT_COLLATION=utf8_general_ci",
- "-DSYSCONFDIR=#{etc}"]
- # To enable unit testing at build, we need to download the unit testing suite
- if ARGV.include? '--with-tests'
- args << "-DENABLE_DOWNLOADS=ON"
- else
- args << "-DWITH_UNIT_TESTS=OFF"
- end
- # Build the embedded server
- args << "-DWITH_EMBEDDED_SERVER=ON" if ARGV.include? '--with-embedded'
- # Compile with readline unless libedit is explicitly chosen
- args << "-DWITH_READLINE=yes" unless ARGV.include? '--with-libedit'
- # Compile with ARCHIVE engine enabled if chosen
- args << "-DWITH_ARCHIVE_STORAGE_ENGINE=1" if ARGV.include? '--with-archive-storage-engine'
- # Compile with BLACKHOLE engine enabled if chosen
- args << "-DWITH_BLACKHOLE_STORAGE_ENGINE=1" if ARGV.include? '--with-blackhole-storage-engine'
- # Make universal for binding to universal applications
- args << "-DCMAKE_OSX_ARCHITECTURES='i386;x86_64'" if ARGV.build_universal?
- # Build with local infile loading support
- args << "-DENABLED_LOCAL_INFILE=1" if ARGV.include? '--enable-local-infile'
- system "cmake", *args
- system "make"
- system "make install"
- plist_path.write startup_plist
- plist_path.chmod 0644
- # Don't create databases inside of the prefix!
- # See: https://github.com/mxcl/homebrew/issues/4975
- rm_rf prefix+'data'
- # Link the setup script into bin
- ln_s prefix+'scripts/mysql_install_db', bin+'mysql_install_db'
- # Fix up the control script and link into bin
- inreplace "#{prefix}/support-files/mysql.server" do |s|
- s.gsub!(/^(PATH=".*)(")/, "\\1:#{HOMEBREW_PREFIX}/bin\\2")
- end
- ln_s "#{prefix}/support-files/mysql.server", bin
- end
- def caveats; <<-EOS.undent
- Set up databases to run AS YOUR USER ACCOUNT with:
- unset TMPDIR
- mysql_install_db --verbose --user=`whoami` --basedir="$(brew --prefix mysql)" --datadir=#{var}/mysql --tmpdir=/tmp
- To set up base tables in another folder, or use a different user to run
- mysqld, view the help for mysqld_install_db:
- mysql_install_db --help
- and view the MySQL documentation:
- * http://dev.mysql.com/doc/refman/5.5/en/mysql-install-db.html
- * http://dev.mysql.com/doc/refman/5.5/en/default-privileges.html
- To run as, for instance, user "mysql", you may need to `sudo`:
- sudo mysql_install_db ...options...
- Start mysqld manually with:
- mysql.server start
- Note: if this fails, you probably forgot to run the first two steps up above
- A "/etc/my.cnf" from another install may interfere with a Homebrew-built
- server starting up correctly.
- To connect:
- mysql -uroot
- To launch on startup:
- * if this is your first install:
- mkdir -p ~/Library/LaunchAgents
- 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}
- You may also need to edit the plist to use the correct "UserName".
- 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
- __END__
- diff --git a/scripts/mysql_config.sh b/scripts/mysql_config.sh
- index 9296075..70c18db 100644
- --- a/scripts/mysql_config.sh
- +++ b/scripts/mysql_config.sh
- @@ -137,7 +137,9 @@ for remove in DDBUG_OFF DSAFE_MUTEX DUNIV_MUST_NOT_INLINE DFORCE_INIT_OF_VARS \
- DEXTRA_DEBUG DHAVE_purify O 'O[0-9]' 'xO[0-9]' 'W[-A-Za-z]*' \
- 'mtune=[-A-Za-z0-9]*' 'mcpu=[-A-Za-z0-9]*' 'march=[-A-Za-z0-9]*' \
- Xa xstrconst "xc99=none" AC99 \
- - unroll2 ip mp restrict
- + unroll2 ip mp restrict \
- + mmmx 'msse[0-9.]*' 'mfpmath=sse' w pipe 'fomit-frame-pointer' 'mmacosx-version-min=10.[0-9]' \
- + aes Os
- do
- # The first option we might strip will always have a space before it because
- # we set -I$pkgincludedir as the first option
- diff --git a/cmake/libutils.cmake b/cmake/libutils.cmake
- index 89a9de9..677c68d 100644
- --- a/cmake/libutils.cmake
- +++ b/cmake/libutils.cmake
- @@ -183,7 +183,7 @@ MACRO(MERGE_STATIC_LIBS TARGET OUTPUT_NAME LIBS_TO_MERGE)
- # binaries properly)
- ADD_CUSTOM_COMMAND(TARGET ${TARGET} POST_BUILD
- COMMAND rm ${TARGET_LOCATION}
- - COMMAND /usr/bin/libtool -static -o ${TARGET_LOCATION}
- + COMMAND libtool -static -o ${TARGET_LOCATION}
- ${STATIC_LIBS}
- )
- ELSE()