Skip to content

Instantly share code, notes, and snippets.

@devopsmariocom
Forked from takumn/mysql56.rb
Last active December 19, 2015 12:49
Show Gist options
  • Select an option

  • Save devopsmariocom/5957815 to your computer and use it in GitHub Desktop.

Select an option

Save devopsmariocom/5957815 to your computer and use it in GitHub Desktop.

Revisions

  1. devopsmariocom revised this gist Jul 9, 2013. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion mysql56.rb
    Original file line number Diff line number Diff line change
    @@ -4,7 +4,7 @@ class Mysql56 < Formula
    homepage 'http://dev.mysql.com/doc/refman/5.6/en/'
    url 'http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.12.tar.gz/from/http://cdn.mysql.com/'
    version '5.6.12'
    sha1 'f37979eafc241a0ebeac9548cb3f4113074271b7'
    sha1 'c48ae4061c23db89de7ebd2d25abbc36283bab69'

    # bottle do
    # sha1 '3c5b57df466eb538db58654c5f046ddf7bc675e9' => :mountainlion
  2. devopsmariocom revised this gist Jul 9, 2013. 1 changed file with 2 additions and 2 deletions.
    4 changes: 2 additions & 2 deletions mysql56.rb
    Original file line number Diff line number Diff line change
    @@ -2,8 +2,8 @@

    class Mysql56 < Formula
    homepage 'http://dev.mysql.com/doc/refman/5.6/en/'
    url 'http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.10.tar.gz/from/http://cdn.mysql.com/'
    version '5.6.10'
    url 'http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.12.tar.gz/from/http://cdn.mysql.com/'
    version '5.6.12'
    sha1 'f37979eafc241a0ebeac9548cb3f4113074271b7'

    # bottle do
  3. @takumn takumn created this gist Feb 6, 2013.
    168 changes: 168 additions & 0 deletions mysql56.rb
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,168 @@
    require 'formula'

    class Mysql56 < Formula
    homepage 'http://dev.mysql.com/doc/refman/5.6/en/'
    url 'http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.10.tar.gz/from/http://cdn.mysql.com/'
    version '5.6.10'
    sha1 'f37979eafc241a0ebeac9548cb3f4113074271b7'

    # bottle do
    # sha1 '3c5b57df466eb538db58654c5f046ddf7bc675e9' => :mountainlion
    # sha1 '6595eb3f79224193a17159934220bed94fbc2df4' => :lion
    # sha1 '57992bbcc2820ffe41ae9317da81aba7480b0268' => :snowleopard
    # end

    depends_on 'cmake' => :build
    depends_on 'pidof' unless MacOS.version >= :mountain_lion

    option :universal
    option 'with-tests', 'Build with unit tests'
    option 'with-embedded', 'Build the embedded server'
    option 'with-libedit', 'Compile with editline wrapper instead of readline'
    option 'with-archive-storage-engine', 'Compile with the ARCHIVE storage engine enabled'
    option 'with-blackhole-storage-engine', 'Compile with the BLACKHOLE storage engine enabled'
    option 'enable-local-infile', 'Build with local infile loading support'
    option 'enable-debug', 'Build with debug support'

    conflicts_with 'mariadb',
    :because => "mysql and mariadb install the same binaries."

    conflicts_with 'percona-server',
    :because => "mysql and percona-server install the same binaries."

    conflicts_with 'mysql-cluster',
    :because => "mysql and mysql-cluster install the same binaries."

    env :std if build.universal?

    fails_with :llvm do
    build 2326
    cause "https://github.com/mxcl/homebrew/issues/issue/144"
    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

    # 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 build.include? 'with-tests'
    args << "-DENABLE_DOWNLOADS=ON"
    else
    args << "-DWITH_UNIT_TESTS=OFF"
    end

    # Build the embedded server
    args << "-DWITH_EMBEDDED_SERVER=ON" if build.include? 'with-embedded'

    # Compile with readline unless libedit is explicitly chosen
    args << "-DWITH_READLINE=yes" unless build.include? 'with-libedit'

    # Compile with ARCHIVE engine enabled if chosen
    args << "-DWITH_ARCHIVE_STORAGE_ENGINE=1" if build.include? 'with-archive-storage-engine'

    # Compile with BLACKHOLE engine enabled if chosen
    args << "-DWITH_BLACKHOLE_STORAGE_ENGINE=1" if build.include? 'with-blackhole-storage-engine'

    # Make universal for binding to universal applications
    args << "-DCMAKE_OSX_ARCHITECTURES='i386;x86_64'" if build.universal?

    # Build with local infile loading support
    args << "-DENABLED_LOCAL_INFILE=1" if build.include? 'enable-local-infile'

    # Build with debug support
    args << "-DWITH_DEBUG=1" if build.include? 'enable-debug'

    system "cmake", *args
    system "make"
    system "make install"

    # 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")
    # pidof can be replaced with pgrep from proctools on Mountain Lion
    s.gsub!(/pidof/, 'pgrep') if MacOS.version >= :mountain_lion
    end
    ln_s "#{prefix}/support-files/mysql.server", bin

    # Move mysqlaccess to libexec
    mv "#{bin}/mysqlaccess", libexec
    mv "#{bin}/mysqlaccess.conf", libexec
    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 mysql_install_db:
    mysql_install_db --help
    and view the MySQL documentation:
    * http://dev.mysql.com/doc/refman/5.6/en/mysql-install-db.html
    * http://dev.mysql.com/doc/refman/5.6/en/default-privileges.html
    To run as, for instance, user "mysql", you may need to `sudo`:
    sudo mysql_install_db ...options...
    A "/etc/my.cnf" from another install may interfere with a Homebrew-built
    server starting up correctly.
    To connect:
    mysql -uroot
    EOS
    end

    plist_options :manual => "mysql.server start"

    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>Program</key>
    <string>#{opt_prefix}/bin/mysqld_safe</string>
    <key>RunAtLoad</key>
    <true/>
    <key>UserName</key>
    <string>#{`whoami`.chomp}</string>
    <key>WorkingDirectory</key>
    <string>#{var}</string>
    </dict>
    </plist>
    EOS
    end

    test do
    (opt_prefix+'mysql-test').cd do
    system './mysql-test-run.pl', 'status'
    end
    end
    end