forked from mirrors/gecko-dev
This patch introduces:
1. fetch jobs to fetch python source / installer
2. a) build jobs to build python from source on Linux and OSX
b) build job to manually extract python tree from Windows installer
Some details, per category:
(1) fetches Python 3.8.10 (source) and 3.8.10 (installer).
(2.a) the builds generate optimized version of Python (LTO + PGO)
(2.a) the builds are patched to honor MOZPYTHONHOME instead of
PYTHONHOME. This is used to make OSX builds relocatable, and not
needed on Windows.
(2) zstandard and psutil are added to the default build
Differential Revision: https://phabricator.services.mozilla.com/D164663
67 lines
2.2 KiB
Bash
Executable file
67 lines
2.2 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
|
|
|
|
# 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}
|