From 10fd04909d3bf77bb26bf6610dbdd10940e80e09 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mislav=20Marohni=C4=87?= Date: Mon, 27 Oct 2014 12:47:33 +0100 Subject: [PATCH] Fix Yosemite builds that use gcc-4.2 through `require_gcc` The definitions that use `require_gcc` are not compatible with Apple's clang-powered `gcc` and need gcc-4.2 from Homebrew. However, builds using gcc-4.2 fail on Yosemite with a warning: couldn't understand kern.osversion `14.0.0' Although the warning is non-fatal, the build goes to shit from there. It seems that setting the magical value `MACOSX_DEPLOYMENT_TARGET=10.9` makes the build work and doesn't seem to have negative consequences. --- bin/ruby-build | 13 +++++++++++++ test/compiler.bats | 38 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 51 insertions(+) create mode 100644 test/compiler.bats diff --git a/bin/ruby-build b/bin/ruby-build index 91513557..eac498bb 100755 --- a/bin/ruby-build +++ b/bin/ruby-build @@ -85,6 +85,16 @@ os_information() { fi } +# 9.1 -> 901 +# 10.9 -> 1009 +# 10.10 -> 1010 +osx_version() { + local ver="$(sw_vers -productVersion)" + local major="${ver%.*}" + local minor="${ver#*.}" + echo $(( major*100 + minor )) +} + build_failed() { { echo colorize 1 "BUILD FAILED" @@ -715,6 +725,9 @@ require_gcc() { fi export CC="$gcc" + if [ "$(uname -s)" = "Darwin" ] && [ "$(osx_version)" -ge 1010 ]; then + export MACOSX_DEPLOYMENT_TARGET=10.9 + fi } locate_gcc() { diff --git a/test/compiler.bats b/test/compiler.bats new file mode 100644 index 00000000..dade89f1 --- /dev/null +++ b/test/compiler.bats @@ -0,0 +1,38 @@ +#!/usr/bin/env bats + +load test_helper +export MAKE=make + +@test "require_gcc on OS X 10.9" { + stub uname '-s : echo Darwin' + stub sw_vers '-productVersion : echo 10.9' + stub gcc '--version : echo 4.2.1' + + run_inline_definition <