Merge pull request #222 from yyuu/macosx-deployment-target

Setting MACOSX_DEPLOYMENT_TARGET on Darwin
This commit is contained in:
Yamashita, Yuu 2014-08-21 19:21:59 +09:00
commit 82aaef7842
2 changed files with 63 additions and 0 deletions

View file

@ -1603,6 +1603,10 @@ fi
# Add support for framework installation (`--enable-framework`) of CPython (#55, #99)
if [[ "$PYTHON_CONFIGURE_OPTS" == *"--enable-framework"* ]]; then
if [[ "Darwin" != "$(uname -s)" ]]; then
echo "python-build: framework installation is not supported." >&2
exit 1
fi
create_framework_dirs() {
local version="$(echo "$1" | sed -E 's/^[^0-9]*([0-9]+\.[0-9]+).*$/\1/')"
mkdir -p "${PREFIX_PATH}/Python.framework/Versions/${version}"
@ -1617,6 +1621,15 @@ if [[ "$PYTHON_CONFIGURE_OPTS" == *"--enable-framework"* ]]; then
package_option python configure --enable-framework="${PREFIX_PATH}"
fi
# Build against universal SDK (#219, #220)
if [[ "$PYTHON_CONFIGURE_OPTS" == *"--enable-universalsdk"* ]]; then
if [[ "Darwin" != "$(uname -s)" ]]; then
echo "python-build: universal installation is not supported." >&2
exit 1
fi
package_option python configure --enable-universalsdk=/ --with-universal-archs=intel
fi
# SSL Certificate error with older wget that does not support Server Name Indication (#60)
if ! command -v curl 1>/dev/null 2>&1 && [[ "$(wget --version 2>/dev/null || true)" = "GNU Wget 1.1"[0-3]* ]]; then
echo "python-build: wget (< 1.14) doesn't support Server Name Indication. Please install curl (>= 7.18.1) and try again" >&2
@ -1642,6 +1655,19 @@ if [ -n "${PIP_VERSION}" ]; then
GET_PIP_URL="https://raw.githubusercontent.com/pypa/pip/${PIP_VERSION}/contrib/get-pip.py"
fi
# Set MACOSX_DEPLOYMENT_TARGET from the product version of OS X (#219, #220)
if [[ "Darwin" == "$(uname -s)" ]]; then
MACOS_VERSION="$(sw_vers -productVersion 2>/dev/null || true)"
MACOS_VERSION_ARRAY=(${MACOS_VERSION//\./ })
if [ "${#MACOS_VERSION_ARRAY[@]}" -ge 2 ]; then
export MACOSX_DEPLOYMENT_TARGET="${MACOS_VERSION_ARRAY[0]}.${MACOS_VERSION_ARRAY[1]}"
else
{ colorize 1 "WARNING"
echo ": Could not detect the product version of OS X for MACOSX_DEPLOYMENT_TARGET. Use default setting."
} >&2
fi
fi
SEED="$(date "+%Y%m%d%H%M%S").$$"
LOG_PATH="${TMP}/python-build.${SEED}.log"
PYTHON_BIN="${PREFIX_PATH}/bin/python"

View file

@ -216,6 +216,7 @@ OUT
@test "number of CPU cores defaults to 2" {
cached_tarball "Python-3.2.1"
stub uname '-s : echo Darwin'
stub uname '-s : echo Darwin'
stub sysctl false
stub_make_install
@ -240,6 +241,7 @@ OUT
@test "number of CPU cores is detected on Mac" {
cached_tarball "Python-3.2.1"
stub uname '-s : echo Darwin'
stub uname '-s : echo Darwin'
stub sysctl '-n hw.ncpu : echo 4'
stub_make_install
@ -316,6 +318,7 @@ OUT
@test "make on FreeBSD defaults to gmake" {
cached_tarball "Python-3.2.1"
stub uname "-s : echo FreeBSD"
stub uname "-s : echo FreeBSD"
MAKE=gmake stub_make_install
@ -389,3 +392,37 @@ OUT
run python-build "${TMP}/build-definition" "$INSTALL_ROOT"
assert_failure "python-build: TMPDIR=$TMPDIR is set to a non-accessible location"
}
@test "setting MACOSX_DEPLOYMENT_TARGET from the product version of OS X" {
stub uname '-s : echo Darwin'
stub sw_vers '-productVersion : echo 10.9.4'
run_inline_definition <<DEF
echo "MACOSX_DEPLOYMENT_TARGET=\${MACOSX_DEPLOYMENT_TARGET}" > "$INSTALL_ROOT/build.log"
DEF
assert_success
assert_build_log <<OUT
MACOSX_DEPLOYMENT_TARGET=10.9
OUT
unstub uname
unstub sw_vers
}
@test "not setting MACOSX_DEPLOYMENT_TARGET if the product version of OS X is not available" {
stub uname '-s : echo Darwin'
stub sw_vers false
run_inline_definition <<DEF
echo "MACOSX_DEPLOYMENT_TARGET=\${MACOSX_DEPLOYMENT_TARGET}" > "$INSTALL_ROOT/build.log"
DEF
assert_success
assert_build_log <<OUT
MACOSX_DEPLOYMENT_TARGET=
OUT
unstub uname
unstub sw_vers
}