This repository has been archived by the owner. It is now read-only.
Permalink
Cannot retrieve contributors at this time
Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.
Sign up
Fetching contributors…
| class Ruby < Formula | |
| desc "Powerful, clean, object-oriented scripting language" | |
| homepage "https://www.ruby-lang.org/" | |
| stable do | |
| url "https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.0.tar.bz2" | |
| sha256 "ec7579eaba2e4c402a089dbc86c98e5f1f62507880fd800b9b34ca30166bfa5e" | |
| # Reverts an upstream commit which incorrectly tries to install headers | |
| # into SDKROOT, if defined | |
| # See https://bugs.ruby-lang.org/issues/11881 | |
| # The issue has been fixed on HEAD as of 1 Jan 2016, but there has not been | |
| # a release since then, so the patch is still required for release builds | |
| patch do | |
| url "https://raw.githubusercontent.com/Homebrew/patches/ba8cc6b88e6b7153ac37739e5a1a6bbbd8f43817/ruby/mkconfig.patch" | |
| sha256 "929c618f74e89a5e42d899a962d7d2e4af75716523193af42626884eaba1d765" | |
| end | |
| end | |
| bottle do | |
| revision 2 | |
| sha256 "a6dca59ac0c5f65b0855d556210d1e1ac3458e39a4350793daeadaa6ab83f037" => :el_capitan | |
| sha256 "67fc5ce859ff0ee81c802e2a16081fb61af870987958c78a4c9847739e056dba" => :yosemite | |
| sha256 "7a22a019656c870c3749f32cece8fe743cf2ecee51979f6a358a026fbc27fa20" => :mavericks | |
| end | |
| head do | |
| url "http://svn.ruby-lang.org/repos/ruby/trunk/" | |
| depends_on "autoconf" => :build | |
| end | |
| option :universal | |
| option "with-suffix", "Suffix commands with '23'" | |
| option "with-doc", "Install documentation" | |
| option "with-tcltk", "Install with Tcl/Tk support" | |
| depends_on "pkg-config" => :build | |
| depends_on "readline" => :recommended | |
| depends_on "gdbm" => :optional | |
| depends_on "gmp" => :optional | |
| depends_on "libffi" => :optional | |
| depends_on "libyaml" | |
| depends_on "openssl" | |
| depends_on :x11 if build.with? "tcltk" | |
| fails_with :llvm do | |
| build 2326 | |
| end | |
| def install | |
| system "autoconf" if build.head? | |
| args = %W[ | |
| --prefix=#{prefix} | |
| --enable-shared | |
| --disable-silent-rules | |
| --with-sitedir=#{HOMEBREW_PREFIX}/lib/ruby/site_ruby | |
| --with-vendordir=#{HOMEBREW_PREFIX}/lib/ruby/vendor_ruby | |
| ] | |
| if build.universal? | |
| ENV.universal_binary | |
| args << "--with-arch=#{Hardware::CPU.universal_archs.join(",")}" | |
| end | |
| args << "--program-suffix=#{program_suffix}" if build.with? "suffix" | |
| args << "--with-out-ext=tk" if build.without? "tcltk" | |
| args << "--disable-install-doc" if build.without? "doc" | |
| args << "--disable-dtrace" unless MacOS::CLT.installed? | |
| args << "--without-gmp" if build.without? "gmp" | |
| # Reported upstream: https://bugs.ruby-lang.org/issues/10272 | |
| args << "--with-setjmp-type=setjmp" if MacOS.version == :lion | |
| paths = [ | |
| Formula["libyaml"].opt_prefix, | |
| Formula["openssl"].opt_prefix, | |
| ] | |
| %w[readline gdbm gmp libffi].each do |dep| | |
| paths << Formula[dep].opt_prefix if build.with? dep | |
| end | |
| args << "--with-opt-dir=#{paths.join(":")}" | |
| system "./configure", *args | |
| # Ruby has been configured to look in the HOMEBREW_PREFIX for the | |
| # sitedir and vendordir directories; however we don't actually want to create | |
| # them during the install. | |
| # | |
| # These directories are empty on install; sitedir is used for non-rubygems | |
| # third party libraries, and vendordir is used for packager-provided libraries. | |
| inreplace "tool/rbinstall.rb" do |s| | |
| s.gsub! 'prepare "extension scripts", sitelibdir', "" | |
| s.gsub! 'prepare "extension scripts", vendorlibdir', "" | |
| s.gsub! 'prepare "extension objects", sitearchlibdir', "" | |
| s.gsub! 'prepare "extension objects", vendorarchlibdir', "" | |
| end | |
| system "make" | |
| system "make", "install" | |
| # A newer version of ruby-mode.el is shipped with Emacs | |
| elisp.install Dir["misc/*.el"].reject { |f| f == "misc/ruby-mode.el" } | |
| end | |
| def post_install | |
| # Customize rubygems to look/install in the global gem directory | |
| # instead of in the Cellar, making gems last across reinstalls | |
| config_file = lib/"ruby/#{abi_version}/rubygems/defaults/operating_system.rb" | |
| config_file.unlink if config_file.exist? | |
| config_file.write rubygems_config | |
| # Create the sitedir and vendordir that were skipped during install | |
| ruby="#{bin}/ruby#{program_suffix}" | |
| %w[sitearchdir vendorarchdir].each do |dir| | |
| mkdir_p `#{ruby} -rrbconfig -e 'print RbConfig::CONFIG["#{dir}"]'` | |
| end | |
| end | |
| def abi_version | |
| "2.3.0" | |
| end | |
| def program_suffix | |
| build.with?("suffix") ? "23" : "" | |
| end | |
| def rubygems_bindir | |
| "#{HOMEBREW_PREFIX}/bin" | |
| end | |
| def rubygems_config; <<-EOS.undent | |
| module Gem | |
| class << self | |
| alias :old_default_dir :default_dir | |
| alias :old_default_path :default_path | |
| alias :old_default_bindir :default_bindir | |
| alias :old_ruby :ruby | |
| end | |
| def self.default_dir | |
| path = [ | |
| "#{HOMEBREW_PREFIX}", | |
| "lib", | |
| "ruby", | |
| "gems", | |
| "#{abi_version}" | |
| ] | |
| @default_dir ||= File.join(*path) | |
| end | |
| def self.private_dir | |
| path = if defined? RUBY_FRAMEWORK_VERSION then | |
| [ | |
| File.dirname(RbConfig::CONFIG['sitedir']), | |
| 'Gems', | |
| RbConfig::CONFIG['ruby_version'] | |
| ] | |
| elsif RbConfig::CONFIG['rubylibprefix'] then | |
| [ | |
| RbConfig::CONFIG['rubylibprefix'], | |
| 'gems', | |
| RbConfig::CONFIG['ruby_version'] | |
| ] | |
| else | |
| [ | |
| RbConfig::CONFIG['libdir'], | |
| ruby_engine, | |
| 'gems', | |
| RbConfig::CONFIG['ruby_version'] | |
| ] | |
| end | |
| @private_dir ||= File.join(*path) | |
| end | |
| def self.default_path | |
| if Gem.user_home && File.exist?(Gem.user_home) | |
| [user_dir, default_dir, private_dir] | |
| else | |
| [default_dir, private_dir] | |
| end | |
| end | |
| def self.default_bindir | |
| "#{rubygems_bindir}" | |
| end | |
| def self.ruby | |
| "#{opt_bin}/ruby#{program_suffix}" | |
| end | |
| end | |
| EOS | |
| end | |
| test do | |
| hello_text = shell_output("#{bin}/ruby#{program_suffix} -e 'puts :hello'") | |
| assert_equal "hello\n", hello_text | |
| system "#{bin}/gem#{program_suffix}", "list", "--local" | |
| end | |
| end |