Merge branch 'llvm-gcc-4.2-on-osx'

This commit is contained in:
Yamashita Yuu 2013-06-29 12:32:35 +09:00
commit 7a4fe458b8
6 changed files with 74 additions and 27 deletions

View file

@ -622,30 +622,56 @@ fix_directory_permissions() {
}
require_gcc() {
local gcc="$(locate_gcc || true)"
require_cc "gcc"
}
if [ -z "$gcc" ]; then
require_cc() {
while [ -n "$1" ]; do
if [ "$1" = "--if" ]; then
"$2" || return 0
shift 2
else
break
fi
done
local cc
local ccname="${1:-cc}"
cc="$(locate_cc "$ccname" || true)"
if [ -n "$cc" ]; then
break
fi
if [ -z "$cc" ]; then
local esc=$'\033'
{ echo
echo "${esc}[1mERROR${esc}[0m: This package must be compiled with GCC, but python-build couldn't"
echo "find a suitable \`gcc\` executable on your system. Please install GCC"
echo "${esc}[1mERROR${esc}[0m: This package must be compiled with $ccname, but python-build couldn't"
echo "find a suitable \`cc\` executable on your system. Please install $ccname"
echo "and try again."
echo
} >&3
return 1
fi
export CC="$gcc"
export CC="$cc"
}
locate_gcc() {
local gcc gccs
IFS=: gccs=($(gccs_in_path))
locate_cc "gcc" "$@"
}
verify_gcc "$CC" ||
verify_gcc "$(command -v gcc || true)" || {
for gcc in "${gccs[@]}"; do
verify_gcc "$gcc" && break || true
locate_cc() {
local ccname="$1"; shift
if [ -z "$ccname" ]; then
return 1
fi
local cc ccs
IFS=: ccs=($(ccs_in_path "${ccname}"))
verify_cc "${ccname}" "$CC" ||
verify_cc "${ccname}" "$(command -v "${ccname}" || true)" || {
for cc in "${ccs[@]}"; do
verify_cc "${ccname}" "$cc" && break || true
done
}
@ -653,33 +679,49 @@ locate_gcc() {
}
gccs_in_path() {
local gcc path paths
local gccs=()
ccs_in_path "gcc" "$@"
}
ccs_in_path() {
local ccname="$1"; shift
if [ -z "$ccname" ]; then
return 1
fi
local cc path paths
local ccs=()
IFS=: paths=($PATH)
shopt -s nullglob
for path in "${paths[@]}"; do
for gcc in "$path"/gcc-*; do
gccs["${#gccs[@]}"]="$gcc"
for cc in "$path"/${ccname}-*; do
ccs["${#ccs[@]}"]="$cc"
done
done
shopt -u nullglob
printf :%s "${gccs[@]}"
printf :%s "${ccs[@]}"
}
verify_gcc() {
local gcc="$1"
if [ -z "$gcc" ]; then
verify_cc "gcc" "$@"
}
verify_cc() {
local ccname="$1"; shift
if [ -z "$ccname" ]; then
return 1
fi
local cc="$1"
if [ -z "$cc" ]; then
return 1
fi
local version="$("$gcc" --version || true)"
local version="$("$cc" --version || true)"
if [ -z "$version" ]; then
return 1
fi
echo "$gcc"
echo "$cc"
}
has_broken_mac_openssl() {
@ -730,6 +772,11 @@ has_broken_mac_readline() {
return "$retval"
}
has_broken_mac_gcc_llvm() {
[ "$(uname -s)" = "Darwin" ] &&
[ "$(gcc --version 2>/dev/null || true)" = "llvm-gcc-4.2" ]
}
# Post-install check for Python 2.5.x
build_package_verify_py25() {
build_package_verify_readline "$@"

View file

@ -1,4 +1,4 @@
require_gcc
require_cc --if has_broken_mac_gcc_llvm "clang"
install_package "readline-6.2" "http://ftpmirror.gnu.org/readline/readline-6.2.tar.gz#67948acb2ca081f23359d0256e9a271c" standard --if has_broken_mac_readline
install_hg "Python-3.3-dev" "https://bitbucket.org/mirror/cpython" "3.3" standard verify_py33
install_package "setuptools-0.7.4" "https://bitbucket.org/pypa/setuptools/downloads/setuptools-0.7.4.tar.gz#c0b8864b63c13312f5d9568c2a54247e" python

View file

@ -1,4 +1,4 @@
require_gcc
require_cc --if has_broken_mac_gcc_llvm "clang"
install_package "readline-6.2" "http://ftpmirror.gnu.org/readline/readline-6.2.tar.gz#67948acb2ca081f23359d0256e9a271c" standard --if has_broken_mac_readline
install_package "Python-3.3.0" "http://python.org/ftp/python/3.3.0/Python-3.3.0.tgz#198a64f7a04d1d5e95ce2782d5fd8254" standard verify_py33
install_package "setuptools-0.7.4" "https://bitbucket.org/pypa/setuptools/downloads/setuptools-0.7.4.tar.gz#c0b8864b63c13312f5d9568c2a54247e" python

View file

@ -1,4 +1,4 @@
require_gcc
require_cc --if has_broken_mac_gcc_llvm "clang"
install_package "readline-6.2" "http://ftpmirror.gnu.org/readline/readline-6.2.tar.gz#67948acb2ca081f23359d0256e9a271c" standard --if has_broken_mac_readline
install_package "Python-3.3.1" "http://python.org/ftp/python/3.3.1/Python-3.3.1.tgz#c19bfd6ea252b61779a4f2996fb3b330" standard verify_py33
install_package "setuptools-0.7.4" "https://bitbucket.org/pypa/setuptools/downloads/setuptools-0.7.4.tar.gz#c0b8864b63c13312f5d9568c2a54247e" python

View file

@ -1,4 +1,4 @@
require_gcc
require_cc --if has_broken_mac_gcc_llvm "clang"
install_package "readline-6.2" "http://ftpmirror.gnu.org/readline/readline-6.2.tar.gz#67948acb2ca081f23359d0256e9a271c" standard --if has_broken_mac_readline
install_package "Python-3.3.2" "http://python.org/ftp/python/3.3.2/Python-3.3.2.tgz#0a2ea57f6184baf45b150aee53c0c8da" standard verify_py33
install_package "setuptools-0.7.4" "https://bitbucket.org/pypa/setuptools/downloads/setuptools-0.7.4.tar.gz#c0b8864b63c13312f5d9568c2a54247e" python

View file

@ -5,7 +5,7 @@ if ! pyenv-which python3.4 1>/dev/null 2>&1; then
fi
fi
require_gcc
require_cc --if has_broken_mac_gcc_llvm "clang"
install_package "readline-6.2" "http://ftpmirror.gnu.org/readline/readline-6.2.tar.gz#67948acb2ca081f23359d0256e9a271c" standard --if has_broken_mac_readline
install_hg "Python-3.4-dev" "https://bitbucket.org/mirror/cpython" "default" standard verify_py34
install_package "setuptools-0.7.4" "https://bitbucket.org/pypa/setuptools/downloads/setuptools-0.7.4.tar.gz#c0b8864b63c13312f5d9568c2a54247e" python