The python toolchains depend on the "final" clang artifacts, which take a relatively long time to be produced, and also may be triggered for changes that don't have an impact on python (e.g. bug 1831980 triggered rebuilds of python because of that). By making them depend on the "toolchain" variant of clang (and adding the compiler-rt they need), we can reduce the number of times they need to be rebuilt, and when they are rebuilt because of clang changes, they can be rebuilt earlier. While we're here, use the "toolchain" variant of the mac SDK. Differential Revision: https://phabricator.services.mozilla.com/D177561
71 lines
2.3 KiB
Bash
Executable File
71 lines
2.3 KiB
Bash
Executable File
#!/bin/sh
|
|
# This Source Code Form is subject to the terms of the Mozilla Public
|
|
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
#
|
|
# This script builds the official interpreter for the python language,
|
|
# while also packing in a few default extra packages.
|
|
|
|
set -e
|
|
set -x
|
|
|
|
# Required fetch artifact
|
|
clang_bindir=${MOZ_FETCHES_DIR}/clang/bin
|
|
clang_libdir=${MOZ_FETCHES_DIR}/clang/lib
|
|
python_src=${MOZ_FETCHES_DIR}/cpython-source
|
|
|
|
# Make the compiler-rt available to clang.
|
|
env UPLOAD_DIR= $GECKO_PATH/taskcluster/scripts/misc/repack-clang.sh
|
|
|
|
# Setup environment
|
|
export PATH=${clang_bindir}:${PATH}
|
|
export CC=clang
|
|
export CXX=clang++
|
|
export LDFLAGS=-fuse-ld=lld
|
|
|
|
# Extra setup for OSX
|
|
case `uname -s` in
|
|
Darwin)
|
|
case `uname -m` in
|
|
aarch64)
|
|
macosx_version_min=11.0
|
|
;;
|
|
*)
|
|
macosx_version_min=10.12
|
|
;;
|
|
esac
|
|
macosx_sdk=13.0
|
|
# NOTE: both CFLAGS and CPPFLAGS need to be set here, otherwise
|
|
# configure step fails.
|
|
sysroot_flags="-isysroot ${MOZ_FETCHES_DIR}/MacOSX${macosx_sdk}.sdk -mmacosx-version-min=${macosx_version_min}"
|
|
export CPPFLAGS=${sysroot_flags}
|
|
export CFLAGS=${sysroot_flags}
|
|
export LDFLAGS="${LDFLAGS} ${sysroot_flags}"
|
|
configure_flags_extra=--with-openssl=/usr/local/opt/openssl
|
|
|
|
# see https://bugs.python.org/issue44065
|
|
sed -i -e 's,$CC --print-multiarch,:,' ${python_src}/configure
|
|
;;
|
|
esac
|
|
|
|
# Patch Python to honor MOZPYTHONHOME instead of PYTHONHOME. That way we have a
|
|
# relocatable python for free, while not interfering with the system Python that
|
|
# already honors PYTHONHOME.
|
|
find ${python_src} -type f -print0 | xargs -0 perl -i -pe "s,PYTHONHOME,MOZPYTHONHOME,g"
|
|
|
|
# Actual build
|
|
work_dir=`pwd`
|
|
tardir=python
|
|
|
|
cd `mktemp -d`
|
|
${python_src}/configure --prefix=/${tardir} --enable-optimizations ${configure_flags_extra} || { exit_status=$? && cat config.log && exit $exit_status ; }
|
|
export MAKEFLAGS=-j`nproc`
|
|
make
|
|
make DESTDIR=${work_dir} install
|
|
cd ${work_dir}
|
|
|
|
${work_dir}/python/bin/python3 -m pip install --upgrade pip==23.0
|
|
${work_dir}/python/bin/python3 -m pip install -r ${GECKO_PATH}/build/psutil_requirements.txt -r ${GECKO_PATH}/build/zstandard_requirements.txt
|
|
|
|
$(dirname $0)/pack.sh ${tardir}
|