|
|
@ -622,30 +622,56 @@ fix_directory_permissions() { |
|
|
|
} |
|
|
|
|
|
|
|
require_gcc() { |
|
|
|
local gcc="$(locate_gcc || true)" |
|
|
|
require_cc "gcc" |
|
|
|
} |
|
|
|
|
|
|
|
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 "$gcc" ]; then |
|
|
|
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="$cc" |
|
|
|
} |
|
|
|
|
|
|
|
export CC="$gcc" |
|
|
|
locate_gcc() { |
|
|
|
locate_cc "gcc" "$@" |
|
|
|
} |
|
|
|
|
|
|
|
locate_gcc() { |
|
|
|
local gcc gccs |
|
|
|
IFS=: gccs=($(gccs_in_path)) |
|
|
|
locate_cc() { |
|
|
|
local ccname="$1"; shift |
|
|
|
if [ -z "$ccname" ]; then |
|
|
|
return 1 |
|
|
|
fi |
|
|
|
local cc ccs |
|
|
|
IFS=: ccs=($(ccs_in_path "${ccname}")) |
|
|
|
|
|
|
|
verify_gcc "$CC" || |
|
|
|
verify_gcc "$(command -v gcc || true)" || { |
|
|
|
for gcc in "${gccs[@]}"; do |
|
|
|
verify_gcc "$gcc" && break || true |
|
|
|
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 "$@" |
|
|
|