Can't install mysql gem on OS X

I'm doing a

sudo gem install mysql

on OS X to install the mysql gem. This fails with the following output:

Building native extensions. This could take a while...

ERROR: Error installing mysql:

ERROR: Failed to build gem native extension.

/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby extconf.rb

checking for mysql_ssl_set()... yes

checking for rb_str_set_len()... yes

checking for rb_thread_start_timer()... no

checking for mysql.h... yes

creating Makefile

make "DESTDIR=" clean

make "DESTDIR="

compiling mysql.c

linking shared-object mysql/mysql_api.bundle

clang: error: unknown argument: '-multiply_definedsuppress' [-Wunused-command-line-> argument-hard-error-in-future]

clang: note: this will be a hard error (cannot be downgraded to a warning) in the future

make: * [mysql_api.bundle] Error 1

make failed, exit code 2

Gem files will remain installed in /Library/Ruby/Gems/2.0.0/gems/mysql-2.9.1 for inspection.

Results logged to /Library/Ruby/Gems/2.0.0/extensions/universal-darwin-13/2.0.0/mysql-2.9.1/gem_make.out

Any idea what could be causing this? I have mysql installed with homebrew if that makes a difference.

Answers


From Apple's Xcode/Clang release notes:

The Apple LLVM compiler in Xcode 5.1 treats unrecognized command-line options as errors. This issue has been seen when building both Python native extensions and Ruby Gems, where some invalid compiler options are currently specified. Projects using invalid compiler options will need to be changed to remove those options. To help ?ease that transition, the compiler will temporarily accept an option to downgrade the error to a warning:

-Wno-error=unused-command-line-argument-hard-error-in-future

ARCHFLAGS=-Wno-error=unused-command-line-argument-hard-error-in-future gem install GemName


Seems to be an issue with Apple's rbconfig.rb:

$ grep -n DLDFLAGS /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/universal-darwin13/rbconfig.rb
82:  CONFIG["LIBRUBY_DLDFLAGS"] = "-undefineddynamic_lookup -multiply_definedsuppress -install_name $(libdir)/$(LIBRUBY_SO) -current_version $(MAJOR).$(MINOR).$(TEENY) -compatibility_version $(ruby_version)  $(XLDFLAGS)"
84:  CONFIG["EXTDLDFLAGS"] = ""
125:  CONFIG["DLDFLAGS"] = "-undefineddynamic_lookup -multiply_definedsuppress"

Removing the -multiply_definedsuppress should allow it to install.


This is due to Xcode 5.1 - its already reported as a bug to Ruby.

https://bugs.ruby-lang.org/issues/9624

There is some more additional discussion here: Ruby Gem install Json fails on Mavericks and Xcode 5.1 - unknown argument: '-multiply_definedsuppress'


The above answers are correct. The easiest fix though is to rebuild ruby on your machine. Gem extensions use the ruby build configuration when it was itself built and if you built your ruby before the Xcode 5.1, its build configuration contains the offending flags.

This should fix it for all of the many affected gems.


Need Your Help

What to do about "Finishing up a navigation transition in an unexpected state. Navigation Bar subview tree might get corrupted."

iphone ios-simulator titanium appcelerator appcelerator-mobile

I'm writing an iPhone app using Appcelerator Titanium Mobile. I am hiding and showing the tab group based on what window has focus.

Capybara, capybara-webkit and custom file upload form

ruby-on-rails capybara capybara-webkit poltergeist

I have created custom upload form using the following html stack: