0

当我跑brew edit ejabberd

require 'formula'

class Ejabberd < Formula
  homepage 'http://www.ejabberd.im'
  url "http://www.process-one.net/downloads/ejabberd/2.1.11/ejabberd-2.1.11.tgz"
  md5 'a70b040c4e7602f47718c8afe8780d50'

  depends_on "openssl" if MacOS.leopard?
  depends_on "erlang"

  def options
    [
      ['--odbc', "Build with ODBC support."],
      ['--32-bit', "Build 32-bit only."]
    ]
  end

  def install
    ENV['TARGET_DIR'] = ENV['DESTDIR'] = "#{lib}/ejabberd/erlang/lib/ejabberd-#{version}"
    ENV['MAN_DIR'] = man
    ENV['SBIN_DIR'] = sbin

    if ARGV.build_32_bit?
      %w{ CFLAGS LDFLAGS }.each do |compiler_flag|
        ENV.remove compiler_flag, "-arch x86_64"
        ENV.append compiler_flag, "-arch i386"
      end
    end

    cd "src" do
      args = ["--prefix=#{prefix}",
              "--sysconfdir=#{etc}",
              "--localstatedir=#{var}"]

      if MacOS.leopard?
        openssl = Formula.factory('openssl')
        args << "--with-openssl=#{openssl.prefix}"
      end

      args << "--enable-odbc" if ARGV.include? '--odbc'

      system "./configure", *args
      system "make"
      system "make install"
    end

    (etc+"ejabberd").mkpath
    (var+"lib/ejabberd").mkpath
    (var+"spool/ejabberd").mkpath
  end

  def caveats; <<-EOS.undent
    If you face nodedown problems, concat your machine name to:
      /private/etc/hosts
    after 'localhost'.
    EOS
  end
end

我想知道选项方法用于?它会附加--odbc--32-bit./configure

  def options
    [
      ['--odbc', "Build with ODBC support."],
      ['--32-bit', "Build 32-bit only."]
    ]
  end
4

1 回答 1

0

不; 它发出信号,--odbc并且--32-bit是您可以传递给brew install命令本身的选项。

在脚本的更下方,它说if ARGV.build_32_bit?if ARGV.include? '--odbc',它会检查您是否通过了其中一个选项,并相应地修改其构建过程。

我相信brew install不再使用指示命令行选项可用性和检查命令行选项的特定方式。但我不在我的 Mac 上检查当前程序是什么。

于 2013-01-10T16:49:44.997 回答