1e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly#!/bin/sh 2e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly# 3e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly# Copyright (C) 2012 The Android Open Source Project 4e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly# Copyright (C) 2012 Ray Donnelly <mingw.android at gmail.com> 5e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly# 6e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly# Licensed under the Apache License, Version 2.0 (the "License"); 7e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly# you may not use this file except in compliance with the License. 8e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly# You may obtain a copy of the License at 9e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly# 10e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly# http://www.apache.org/licenses/LICENSE-2.0 11e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly# 12e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly# Unless required by applicable law or agreed to in writing, software 13e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly# distributed under the License is distributed on an "AS IS" BASIS, 14e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly# See the License for the specific language governing permissions and 16e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly# limitations under the License. 17e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly# 18e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly# Rebuild the host Python binaries from sources. 19c91880dd347579316d1e271edfa8aede57c87214Ray Donnelly# Also copies any gnu libstdc++ pretty-printers 20c91880dd347579316d1e271edfa8aede57c87214Ray Donnelly# found in $TOOLCHAIN_SRC_DIR/gcc/gcc-* 21c91880dd347579316d1e271edfa8aede57c87214Ray Donnelly# and Joachim Reichel's stlport pretty printers 22c91880dd347579316d1e271edfa8aede57c87214Ray Donnelly# found in sources/host-tools/gdb-pretty-printers/stlport 23e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly# 24e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly 25e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly# include common function and variable definitions 26e534e36be95815bdfa09756fa040acb2321a09c2Ray DonnellyNDK_BUILDTOOLS_PATH="$(dirname $0)" 27e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly. "$NDK_BUILDTOOLS_PATH/prebuilt-common.sh" 28e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly. "$NDK_BUILDTOOLS_PATH/common-build-host-funcs.sh" 29e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly 30e534e36be95815bdfa09756fa040acb2321a09c2Ray DonnellyPROGRAM_PARAMETERS="" 31e534e36be95815bdfa09756fa040acb2321a09c2Ray DonnellyPROGRAM_DESCRIPTION="\ 32e534e36be95815bdfa09756fa040acb2321a09c2Ray DonnellyThis program is used to rebuild one or more Python client programs from 33e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnellysources. To use it, you will need a working set of toolchain sources, like 34e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnellythose downloaded with download-toolchain-sources.sh, then pass the 35e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnellycorresponding directory with the --toolchain-src-dir=<path> option. 36e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly 37e534e36be95815bdfa09756fa040acb2321a09c2Ray DonnellyBy default, the script rebuilds Python for you host system [$HOST_TAG], 38e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnellybut you can use --systems=<tag1>,<tag2>,.. to ask binaries that can run on 39e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnellyseveral distinct systems. Each <tag> value in the list can be one of the 40e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnellyfollowing: 41e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly 42e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly linux-x86 43e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly linux-x86_64 44e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly windows 45e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly windows-x86 (equivalent to 'windows') 46e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly windows-x86_64 47e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly darwin-x86 48e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly darwin-x86_64 49e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly 50c39351a729f274b844387658eddc63085d6913ffRay DonnellyFor example, here's how to rebuild Python 2.7.5 on Linux 51e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnellyfor six different systems: 52e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly 5359fd2bfb50dab0b19fddb397cd2d4122b17eb8d0Ray Donnelly $PROGNAME --build-dir=/path/to/toolchain/src \n \ 54c39351a729f274b844387658eddc63085d6913ffRay Donnelly --python-version=2.7.5 \n \ 55e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly --systems=linux-x86,linux-x86_64,windows,windows-x86_64,darwin-x86,darwin-x86_64" 56e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly 574ec84cccdda14ab4ebcafbc6f3200a2cd2868586Ray DonnellyTOOLCHAIN_SRC_DIR= 584ec84cccdda14ab4ebcafbc6f3200a2cd2868586Ray Donnellyregister_var_option "--toolchain-src-dir=<path>" TOOLCHAIN_SRC_DIR "Select toolchain source directory" 594ec84cccdda14ab4ebcafbc6f3200a2cd2868586Ray Donnelly 6055f7fe1583cac5ec726a4101c046eec4b231164dAndrew HsiehPYTHON_VERSION=$DEFAULT_PYTHON_VERSION 61e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnellyregister_var_option "--python-version=<version>" PYTHON_VERSION "Select Python version." 62e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly 63e534e36be95815bdfa09756fa040acb2321a09c2Ray DonnellyNDK_DIR=$ANDROID_NDK_ROOT 64e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnellyregister_var_option "--ndk-dir=<path>" NDK_DIR "Select NDK install directory." 65e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly 66e534e36be95815bdfa09756fa040acb2321a09c2Ray DonnellyPACKAGE_DIR= 67e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnellyregister_var_option "--package-dir=<path>" PACKAGE_DIR "Package prebuilt tarballs into directory." 68e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly 69e534e36be95815bdfa09756fa040acb2321a09c2Ray DonnellyBUILD_DIR= 70e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnellyregister_var_option "--build-dir=<path>" BUILD_DIR "Build Python into directory" 71e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly 72e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnellybh_register_options 73c6798d0201775cd96ae85b67b7653bdc406f2599Lai Wei-Chihregister_try64_option 74c6798d0201775cd96ae85b67b7653bdc406f2599Lai Wei-Chihregister_canadian_option 75e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnellyregister_jobs_option 76e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly 77e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnellyextract_parameters "$@" 78e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly 79e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnellyif [ -n "$PARAMETERS" ]; then 80e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly panic "This script doesn't take parameters, only options. See --help" 81e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnellyfi 82e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly 834ec84cccdda14ab4ebcafbc6f3200a2cd2868586Ray Donnellyif [ -z "$TOOLCHAIN_SRC_DIR" ]; then 844ec84cccdda14ab4ebcafbc6f3200a2cd2868586Ray Donnelly panic "Please use --toolchain-src-dir=<path> to select toolchain source directory." 854ec84cccdda14ab4ebcafbc6f3200a2cd2868586Ray Donnellyfi 86b4789c38c2898b92e7e55274ded1e7f953d5cbf7TDYacheck_toolchain_src_dir "$TOOLCHAIN_SRC_DIR" 87b4789c38c2898b92e7e55274ded1e7f953d5cbf7TDYaTOOLCHAIN_SRC_DIR=`cd $TOOLCHAIN_SRC_DIR; pwd` 884ec84cccdda14ab4ebcafbc6f3200a2cd2868586Ray Donnelly 89e534e36be95815bdfa09756fa040acb2321a09c2Ray DonnellyBH_HOST_SYSTEMS=$(commas_to_spaces $BH_HOST_SYSTEMS) 90c6798d0201775cd96ae85b67b7653bdc406f2599Lai Wei-ChihAUTO_BUILD="no" 91c6798d0201775cd96ae85b67b7653bdc406f2599Lai Wei-Chih 92c6798d0201775cd96ae85b67b7653bdc406f2599Lai Wei-Chihif [ "$MINGW" = "yes" ]; then 9359fd2bfb50dab0b19fddb397cd2d4122b17eb8d0Ray Donnelly BH_HOST_SYSTEMS="windows" 9459fd2bfb50dab0b19fddb397cd2d4122b17eb8d0Ray Donnelly log "Auto-config: --systems=windows" 95c6798d0201775cd96ae85b67b7653bdc406f2599Lai Wei-Chihfi 96c6798d0201775cd96ae85b67b7653bdc406f2599Lai Wei-Chih 97c6798d0201775cd96ae85b67b7653bdc406f2599Lai Wei-Chihif [ "$DARWIN" = "yes" ]; then 98c6798d0201775cd96ae85b67b7653bdc406f2599Lai Wei-Chih BH_HOST_SYSTEMS="darwin-x86" 99c6798d0201775cd96ae85b67b7653bdc406f2599Lai Wei-Chih log "Auto-config: --systems=darwin-x86" 100c6798d0201775cd96ae85b67b7653bdc406f2599Lai Wei-Chihfi 101c6798d0201775cd96ae85b67b7653bdc406f2599Lai Wei-Chih 102c6798d0201775cd96ae85b67b7653bdc406f2599Lai Wei-Chihdetermine_systems () 103c6798d0201775cd96ae85b67b7653bdc406f2599Lai Wei-Chih{ 104c6798d0201775cd96ae85b67b7653bdc406f2599Lai Wei-Chih local IN_SYSTEMS="$1" 105c6798d0201775cd96ae85b67b7653bdc406f2599Lai Wei-Chih local OUT_SYSTEMS 106c6798d0201775cd96ae85b67b7653bdc406f2599Lai Wei-Chih 107c6798d0201775cd96ae85b67b7653bdc406f2599Lai Wei-Chih for SYSTEM in $IN_SYSTEMS; do 108c6798d0201775cd96ae85b67b7653bdc406f2599Lai Wei-Chih if [ "$TRY64" = "yes" ]; then 109c6798d0201775cd96ae85b67b7653bdc406f2599Lai Wei-Chih case $SYSTEM in 110c6798d0201775cd96ae85b67b7653bdc406f2599Lai Wei-Chih darwin-x86|linux-x86|windows-x86) 111c6798d0201775cd96ae85b67b7653bdc406f2599Lai Wei-Chih SYSTEM=${SYSTEM%%x86}x86_64 112c6798d0201775cd96ae85b67b7653bdc406f2599Lai Wei-Chih ;; 113c6798d0201775cd96ae85b67b7653bdc406f2599Lai Wei-Chih windows) 114c6798d0201775cd96ae85b67b7653bdc406f2599Lai Wei-Chih SYSTEM=windows-x86_64 115c6798d0201775cd96ae85b67b7653bdc406f2599Lai Wei-Chih ;; 116c6798d0201775cd96ae85b67b7653bdc406f2599Lai Wei-Chih esac 11759fd2bfb50dab0b19fddb397cd2d4122b17eb8d0Ray Donnelly else 11859fd2bfb50dab0b19fddb397cd2d4122b17eb8d0Ray Donnelly # 'windows-x86' causes substitution 11959fd2bfb50dab0b19fddb397cd2d4122b17eb8d0Ray Donnelly # failure at the packing stage. 12059fd2bfb50dab0b19fddb397cd2d4122b17eb8d0Ray Donnelly case $SYSTEM in 12159fd2bfb50dab0b19fddb397cd2d4122b17eb8d0Ray Donnelly windows-x86) 12259fd2bfb50dab0b19fddb397cd2d4122b17eb8d0Ray Donnelly SYSTEM=windows 12359fd2bfb50dab0b19fddb397cd2d4122b17eb8d0Ray Donnelly ;; 12459fd2bfb50dab0b19fddb397cd2d4122b17eb8d0Ray Donnelly esac 125c6798d0201775cd96ae85b67b7653bdc406f2599Lai Wei-Chih fi 126c6798d0201775cd96ae85b67b7653bdc406f2599Lai Wei-Chih OUT_SYSTEMS="$OUT_SYSTEMS $SYSTEM" 127c6798d0201775cd96ae85b67b7653bdc406f2599Lai Wei-Chih done 128c6798d0201775cd96ae85b67b7653bdc406f2599Lai Wei-Chih echo $OUT_SYSTEMS 129c6798d0201775cd96ae85b67b7653bdc406f2599Lai Wei-Chih} 130c6798d0201775cd96ae85b67b7653bdc406f2599Lai Wei-Chih 131c6798d0201775cd96ae85b67b7653bdc406f2599Lai Wei-ChihBH_HOST_SYSTEMS=$(determine_systems "$BH_HOST_SYSTEMS") 132c6798d0201775cd96ae85b67b7653bdc406f2599Lai Wei-Chih 133c6798d0201775cd96ae85b67b7653bdc406f2599Lai Wei-Chih# Build python for build machine automatically 134c6798d0201775cd96ae85b67b7653bdc406f2599Lai Wei-Chihif [ "$(bh_list_contains $BH_BUILD_TAG $BH_HOST_SYSTEMS)" = "no" ]; then 135c6798d0201775cd96ae85b67b7653bdc406f2599Lai Wei-Chih BH_HOST_SYSTEMS="$BH_BUILD_TAG $BH_HOST_SYSTEMS" 136c6798d0201775cd96ae85b67b7653bdc406f2599Lai Wei-Chih AUTO_BUILD="yes" 137c6798d0201775cd96ae85b67b7653bdc406f2599Lai Wei-Chihfi 138e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly 139e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly# Python needs to execute itself during its build process, so must build the build 140e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly# Python first. It should also be an error if not asked to build for build machine. 141e534e36be95815bdfa09756fa040acb2321a09c2Ray DonnellyBH_HOST_SYSTEMS=$(bh_sort_systems_build_first "$BH_HOST_SYSTEMS") 142e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly 143e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnellydownload_package () 144e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly{ 145e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly # Assume the packages are already downloaded under $ARCHIVE_DIR 146e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly local PKG_URL=$1 147e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly local PKG_NAME=$(basename $PKG_URL) 148e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly 149e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly case $PKG_NAME in 150e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly *.tar.bz2) 151e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly PKG_BASENAME=${PKG_NAME%%.tar.bz2} 152e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly ;; 153e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly *.tar.gz) 154e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly PKG_BASENAME=${PKG_NAME%%.tar.gz} 155e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly ;; 156e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly *) 157e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly panic "Unknown archive type: $PKG_NAME" 158e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly esac 159e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly 160e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly if [ ! -f "$ARCHIVE_DIR/$PKG_NAME" ]; then 161e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly log "Downloading $PKG_URL..." 162e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly (cd $ARCHIVE_DIR && run curl -L -o "$PKG_NAME" "$PKG_URL") 163e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly fail_panic "Can't download '$PKG_URL'" 164e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly fi 165e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly 166e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly if [ ! -d "$SRC_DIR/$PKG_BASENAME" ]; then 167e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly log "Uncompressing $PKG_URL into $SRC_DIR" 168e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly case $PKG_NAME in 169e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly *.tar.bz2) 170e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly run tar xjf $ARCHIVE_DIR/$PKG_NAME -C $SRC_DIR 171e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly ;; 172e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly *.tar.gz) 173e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly run tar xzf $ARCHIVE_DIR/$PKG_NAME -C $SRC_DIR 174e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly ;; 175e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly *) 176e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly panic "Unknown archive type: $PKG_NAME" 177e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly ;; 178e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly esac 179e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly fail_panic "Can't uncompress $ARCHIVE_DIR/$PKG_NAME" 180e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly fi 181e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly} 182e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly 183e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnellyif [ -z "$BUILD_DIR" ] ; then 184e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly BUILD_DIR=/tmp/ndk-$USER/buildhost 185e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnellyfi 186e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly 187e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnellybh_setup_build_dir $BUILD_DIR 188e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly 189e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnellyif [ "$BH_BUILD_MODE" = "debug" ] ; then 190e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly PYDEBUG="-with-pydebug" 191e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnellyfi 192e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly 193e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly# Sanity check that we have the right compilers for all hosts 194e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnellyfor SYSTEM in $BH_HOST_SYSTEMS; do 195e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly bh_setup_build_for_host $SYSTEM 196e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnellydone 197e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly 198e534e36be95815bdfa09756fa040acb2321a09c2Ray DonnellyTEMP_DIR=$BUILD_DIR/tmp 199e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly# Download and unpack source packages from official sites 200e534e36be95815bdfa09756fa040acb2321a09c2Ray DonnellyARCHIVE_DIR=$TEMP_DIR/archive 201e534e36be95815bdfa09756fa040acb2321a09c2Ray DonnellySTAMP_DIR=$TEMP_DIR/timestamps 202e534e36be95815bdfa09756fa040acb2321a09c2Ray DonnellyBUILD_DIR=$TEMP_DIR/build-$HOST_TAG 203e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly 204e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnellymkdir -p $BUILD_DIR 205e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly 206e534e36be95815bdfa09756fa040acb2321a09c2Ray DonnellyPROGDIR=`dirname $0` 207e534e36be95815bdfa09756fa040acb2321a09c2Ray DonnellyPROGDIR=$(cd $PROGDIR && pwd) 208e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly 2094ec84cccdda14ab4ebcafbc6f3200a2cd2868586Ray Donnelly# Sanity check for all Python versions. 210e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnellyfor VERSION in $(commas_to_spaces $PYTHON_VERSION); do 2114ec84cccdda14ab4ebcafbc6f3200a2cd2868586Ray Donnelly PYTHON_SRCDIR=$TOOLCHAIN_SRC_DIR/python/Python-$VERSION 212e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly if [ ! -d "$PYTHON_SRCDIR" ]; then 213e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly panic "Missing source directory: $PYTHON_SRCDIR" 214e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly fi 215e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnellydone 216e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly 217e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnellyarch_to_qemu_arch () 218e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly{ 219e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly case $1 in 220e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly x86) 221e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly echo i386 222e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly ;; 223e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly *) 224e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly echo $1 225e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly ;; 226e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly esac 227e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly} 228e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly 229e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly# $1: host system tag 230e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly# $2: python version 231e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnellybuild_host_python () 232e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly{ 2334ec84cccdda14ab4ebcafbc6f3200a2cd2868586Ray Donnelly local SRCDIR=$TOOLCHAIN_SRC_DIR/python/Python-$2 234e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly local BUILDDIR=$BH_BUILD_DIR/build-python-$1-$2 235e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly local INSTALLDIR=$(python_build_install_dir $1 $2) 236e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly local ARGS TEXT 237e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly 238e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly if [ ! -f "$SRCDIR/configure" ]; then 239e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly panic "Missing configure script in $SRCDIR" 240e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly fi 241e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly 242c39351a729f274b844387658eddc63085d6913ffRay Donnelly # Currently, 2.7.5 and 3.3.0 builds generate $SRCDIR/Lib/_sysconfigdata.py, unless it 2431f2541a7a94b939eef41a9a7d6f046d8fbc65780David 'Digit' Turner # already exists (in which case it ends up wrong anyway!)... this should really be in 24459fd2bfb50dab0b19fddb397cd2d4122b17eb8d0Ray Donnelly # the build directory instead. 24559fd2bfb50dab0b19fddb397cd2d4122b17eb8d0Ray Donnelly if [ ! -f "$SRCDIR/Lib/_sysconfigdata.py" ]; then 24659fd2bfb50dab0b19fddb397cd2d4122b17eb8d0Ray Donnelly log "Removing old $SRCDIR/Lib/_sysconfigdata.py" 24759fd2bfb50dab0b19fddb397cd2d4122b17eb8d0Ray Donnelly rm -f $SRCDIR/Lib/_sysconfigdata.py 24859fd2bfb50dab0b19fddb397cd2d4122b17eb8d0Ray Donnelly fi 24959fd2bfb50dab0b19fddb397cd2d4122b17eb8d0Ray Donnelly 250e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly ARGS=" --prefix=$INSTALLDIR" 251e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly 25259fd2bfb50dab0b19fddb397cd2d4122b17eb8d0Ray Donnelly ARGS=$ARGS" --build=$BH_BUILD_CONFIG" 253e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly ARGS=$ARGS" --host=$BH_HOST_CONFIG" 254b551a38bc664f07a59be17f1a473396a0db0dd02Andrew Hsieh ARGS=$ARGS" --with-build-sysroot" 255e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly ARGS=$ARGS" $PYDEBUG" 256e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly ARGS=$ARGS" --disable-ipv6" 257e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly 258e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly mkdir -p "$BUILDDIR" && rm -rf "$BUILDDIR"/* 259e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly cd "$BUILDDIR" && 260e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly bh_setup_host_env 261e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly 262e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly CFG_SITE= 263e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly # Need to add -L$HOST_STATIC_LIBDIR to LDSHARED if need 264e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly # any static host libs. 265e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly export LDSHARED="$CC -shared " 266e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly if [ ! $BH_HOST_TAG = $BH_BUILD_TAG ]; then 267e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly 268e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly # Cross compiling. 269e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly CFG_SITE=$BUILDDIR/config.site 270e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly 271e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly # Ideally would remove all of these configury hacks by 272e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly # patching the issues. 273e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly 274e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly if [ $1 = darwin-x86 -o $1 = darwin-x86_64 ]; then 275e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly echo "ac_cv_file__dev_ptmx=no" > $CFG_SITE 276e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly echo "ac_cv_file__dev_ptc=no" >> $CFG_SITE 277e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly echo "ac_cv_have_long_long_format=yes" >> $CFG_SITE 278e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly if [ $1 = darwin-x86 ] ; then 279e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly echo "ac_osx_32bit=yes" >> $CFG_SITE 280e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly elif [ $1 = darwin-x86_64 ] ; then 281e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly echo "ac_osx_32bit=no" >> $CFG_SITE 282e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly fi 283e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly echo "ac_cv_have_sendfile=no" >> $CFG_SITE 284e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly # I could change AC_MSG_CHECKING(LDSHARED) in configure.ac 285e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly # to check $host instead of $ac_sys_system/$ac_sys_release 286e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly # but it handles loads of platforms 287e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly # and I can only test on three, so instead... 288e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly export LDSHARED="$CC -bundle -undefined dynamic_lookup" 289e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly elif [ $1 = windows-x86 -o $1 = windows-x86_64 ]; then 290e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly echo "ac_cv_file__dev_ptmx=no" > $CFG_SITE 291e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly echo "ac_cv_file__dev_ptc=no" >> $CFG_SITE 292e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly CFLAGS=$CFLAGS" -D__USE_MINGW_ANSI_STDIO=1" 293e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly CXXFLAGS=$CXXFLAGS" -D__USE_MINGW_ANSI_STDIO=1" 294e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly elif [ $1 = linux-x86 -o $1 = linux-x86_64 ]; then 295e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly echo "ac_cv_file__dev_ptmx=yes" > $CFG_SITE 296e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly echo "ac_cv_file__dev_ptc=no" >> $CFG_SITE 297e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly echo "ac_cv_have_long_long_format=yes" >> $CFG_SITE 298e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly echo "ac_cv_pthread_system_supported=yes" >> $CFG_SITE 299e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly echo "ac_cv_working_tzset=yes" >> $CFG_SITE 300e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly echo "ac_cv_little_endian_double=yes" >> $CFG_SITE 301e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly fi 302e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly 303b551a38bc664f07a59be17f1a473396a0db0dd02Andrew Hsieh if [ "$BH_HOST_OS" = "$BH_BUILD_OS" ]; then 304e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly # Only cross compiling from arch perspective. 305e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly # qemu causes failures as cross-compilation is not detected 306e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly # if a test executable can be run successfully, so we test 307e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly # for qemu-${BH_HOST_ARCH} and qemu-${BH_HOST_ARCH}-static 308e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly # and panic if either are found. 309e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly QEMU_HOST_ARCH=$(arch_to_qemu_arch $BH_HOST_ARCH) 310e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly if [ ! -z "$(which qemu-$QEMU_HOST_ARCH 2>/dev/null)" -o \ 311e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly ! -z "$(which qemu-$QEMU_HOST_ARCH-static 2>/dev/null)" ] ; then 3126d1c6602773e633148dc07413748227970682d25Chih-Hung Hsieh dump "Installed qemu(s) ($(which qemu-$QEMU_HOST_ARCH 2>/dev/null) $(which qemu-$QEMU_HOST_ARCH-static 2>/dev/null))" \ 313e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly "will prevent this build from working." 314e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly fi 315e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly fi 316433f2c4e0348d448f4e31efa93537f1784bf47b4Andrew Hsieh else 317433f2c4e0348d448f4e31efa93537f1784bf47b4Andrew Hsieh if [ $1 = darwin-x86 -o $1 = darwin-x86_64 ]; then 318433f2c4e0348d448f4e31efa93537f1784bf47b4Andrew Hsieh export LDSHARED="$CC -bundle -undefined dynamic_lookup" 319433f2c4e0348d448f4e31efa93537f1784bf47b4Andrew Hsieh fi 320e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly fi 321e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly 32259fd2bfb50dab0b19fddb397cd2d4122b17eb8d0Ray Donnelly TEXT="$(bh_host_text) python-$BH_HOST_CONFIG-$2:" 323e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly 324e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly touch $SRCDIR/Include/graminit.h 325e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly touch $SRCDIR/Python/graminit.c 326e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly echo "" > $SRCDIR/Parser/pgen.stamp 32759fd2bfb50dab0b19fddb397cd2d4122b17eb8d0Ray Donnelly touch $SRCDIR/Parser/Python.asdl 32859fd2bfb50dab0b19fddb397cd2d4122b17eb8d0Ray Donnelly touch $SRCDIR/Parser/asdl.py 32959fd2bfb50dab0b19fddb397cd2d4122b17eb8d0Ray Donnelly touch $SRCDIR/Parser/asdl_c.py 33059fd2bfb50dab0b19fddb397cd2d4122b17eb8d0Ray Donnelly touch $SRCDIR/Include/Python-ast.h 33159fd2bfb50dab0b19fddb397cd2d4122b17eb8d0Ray Donnelly touch $SRCDIR/Python/Python-ast.c 332e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly 3331f2541a7a94b939eef41a9a7d6f046d8fbc65780David 'Digit' Turner # By default, the Python build will force the following compiler flags 3341f2541a7a94b939eef41a9a7d6f046d8fbc65780David 'Digit' Turner # after our own CFLAGS: 3351f2541a7a94b939eef41a9a7d6f046d8fbc65780David 'Digit' Turner # -g -fwrap -O3 -Wall -Wstrict-prototypes 3361f2541a7a94b939eef41a9a7d6f046d8fbc65780David 'Digit' Turner # 3371f2541a7a94b939eef41a9a7d6f046d8fbc65780David 'Digit' Turner # The '-g' is unfortunate because it makes the generated binaries 3381f2541a7a94b939eef41a9a7d6f046d8fbc65780David 'Digit' Turner # much larger than necessary, and stripping them after the fact is 3391f2541a7a94b939eef41a9a7d6f046d8fbc65780David 'Digit' Turner # a bit delicate when cross-compiling. To avoid this, define a 3401f2541a7a94b939eef41a9a7d6f046d8fbc65780David 'Digit' Turner # custom OPT variable here (see Python-2.7.5/configure.ac) when 3411f2541a7a94b939eef41a9a7d6f046d8fbc65780David 'Digit' Turner # generating non stripped builds. 3421f2541a7a94b939eef41a9a7d6f046d8fbc65780David 'Digit' Turner if [ "$BH_BUILD_MODE" = "release" ]; then 3431f2541a7a94b939eef41a9a7d6f046d8fbc65780David 'Digit' Turner OPT="-fwrapv -O3 -Wall -Wstrict-prototypes" 3441f2541a7a94b939eef41a9a7d6f046d8fbc65780David 'Digit' Turner export OPT 3451f2541a7a94b939eef41a9a7d6f046d8fbc65780David 'Digit' Turner fi 3461f2541a7a94b939eef41a9a7d6f046d8fbc65780David 'Digit' Turner 347e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly dump "$TEXT Building" 348e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly export CONFIG_SITE=$CFG_SITE && 349e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly run2 "$SRCDIR"/configure $ARGS && 35059fd2bfb50dab0b19fddb397cd2d4122b17eb8d0Ray Donnelly # 35159fd2bfb50dab0b19fddb397cd2d4122b17eb8d0Ray Donnelly # Note 1: 35259fd2bfb50dab0b19fddb397cd2d4122b17eb8d0Ray Donnelly # sharedmods is a phony target, but it's a dependency of both "make all" and also 35359fd2bfb50dab0b19fddb397cd2d4122b17eb8d0Ray Donnelly # "make install", this causes it to fail on Windows as it tries to rename pydoc3 35459fd2bfb50dab0b19fddb397cd2d4122b17eb8d0Ray Donnelly # to pydoc3.3 twice, and the second time aroud the file exists. So instead, we 35559fd2bfb50dab0b19fddb397cd2d4122b17eb8d0Ray Donnelly # just do make install. 35659fd2bfb50dab0b19fddb397cd2d4122b17eb8d0Ray Donnelly # 35759fd2bfb50dab0b19fddb397cd2d4122b17eb8d0Ray Donnelly # Note 2: 35859fd2bfb50dab0b19fddb397cd2d4122b17eb8d0Ray Donnelly # Can't run make install with -j as from the Makefile: 35959fd2bfb50dab0b19fddb397cd2d4122b17eb8d0Ray Donnelly # install: altinstall bininstall maninstall 36059fd2bfb50dab0b19fddb397cd2d4122b17eb8d0Ray Donnelly # meaning altinstall and bininstall are kicked off at the same time 36159fd2bfb50dab0b19fddb397cd2d4122b17eb8d0Ray Donnelly # but actually, bininstall depends on altinstall being run first 36259fd2bfb50dab0b19fddb397cd2d4122b17eb8d0Ray Donnelly # due to libainstall: doing 36359fd2bfb50dab0b19fddb397cd2d4122b17eb8d0Ray Donnelly # $(INSTALL_SCRIPT) python-config $(DESTDIR)$(BINDIR)/python$(VERSION)-config 36459fd2bfb50dab0b19fddb397cd2d4122b17eb8d0Ray Donnelly # and bininstall: doing 36559fd2bfb50dab0b19fddb397cd2d4122b17eb8d0Ray Donnelly # (cd $(DESTDIR)$(BINDIR); $(LN) -s python$(VERSION)-config python2-config) 36659fd2bfb50dab0b19fddb397cd2d4122b17eb8d0Ray Donnelly # Though the real fix is to make bininstall depend on libainstall. 367e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly run2 make -j$NUM_JOBS && 36859fd2bfb50dab0b19fddb397cd2d4122b17eb8d0Ray Donnelly run2 make install 369c91880dd347579316d1e271edfa8aede57c87214Ray Donnelly 370c91880dd347579316d1e271edfa8aede57c87214Ray Donnelly # Pretty printers. 371c91880dd347579316d1e271edfa8aede57c87214Ray Donnelly PYPPDIR="$INSTALLDIR/share/pretty-printers/" 372c91880dd347579316d1e271edfa8aede57c87214Ray Donnelly 373c91880dd347579316d1e271edfa8aede57c87214Ray Donnelly # .. for gnu stdlibc++ 374c91880dd347579316d1e271edfa8aede57c87214Ray Donnelly GCC_DIRS=$(find $TOOLCHAIN_SRC_DIR/gcc/ -maxdepth 1 -name "gcc-*" -type d) 375c91880dd347579316d1e271edfa8aede57c87214Ray Donnelly for GCC_DIR in $GCC_DIRS; do 376c91880dd347579316d1e271edfa8aede57c87214Ray Donnelly ( 377c91880dd347579316d1e271edfa8aede57c87214Ray Donnelly if [ -d "$GCC_DIR/libstdc++-v3/python" ]; then 378c91880dd347579316d1e271edfa8aede57c87214Ray Donnelly cd "$GCC_DIR/libstdc++-v3/python" 379c91880dd347579316d1e271edfa8aede57c87214Ray Donnelly [ -d "$PYPPDIR/libstdcxx/$(basename $GCC_DIR)" ] || mkdir -p "$PYPPDIR/libstdcxx/$(basename $GCC_DIR)" 380c91880dd347579316d1e271edfa8aede57c87214Ray Donnelly run2 find . -path "*.py" -exec cp {} "$PYPPDIR/libstdcxx/$(basename $GCC_DIR)/" \; 381c91880dd347579316d1e271edfa8aede57c87214Ray Donnelly fi 382c91880dd347579316d1e271edfa8aede57c87214Ray Donnelly ) 383c91880dd347579316d1e271edfa8aede57c87214Ray Donnelly done 384c91880dd347579316d1e271edfa8aede57c87214Ray Donnelly 385c91880dd347579316d1e271edfa8aede57c87214Ray Donnelly # .. for STLPort 386c91880dd347579316d1e271edfa8aede57c87214Ray Donnelly run2 cp -rf $NDK_DIR/sources/host-tools/gdb-pretty-printers/stlport/gppfs-0.2 $PYPPDIR/stlport 387e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly} 388e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly 389e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnellyneed_build_host_python () 390e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly{ 391e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly bh_stamps_do host-python-$1-$2 build_host_python $1 $2 392e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly} 393e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly 394e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly# Install host Python binaries and support files to the NDK install dir. 395e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly# $1: host tag 396e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly# $2: python version 397e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnellyinstall_host_python () 398e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly{ 399e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly local SRCDIR="$(python_build_install_dir $1 $2)" 400e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly local DSTDIR="$NDK_DIR/$(python_ndk_install_dir $1 $2)" 401e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly 402e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly need_build_host_python $1 $2 403e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly 404c6798d0201775cd96ae85b67b7653bdc406f2599Lai Wei-Chih if [ $AUTO_BUILD != "yes" -o $1 != $BH_BUILD_TAG ]; then 405c6798d0201775cd96ae85b67b7653bdc406f2599Lai Wei-Chih dump "$(bh_host_text) python-$BH_HOST_ARCH-$2: Installing" 406c6798d0201775cd96ae85b67b7653bdc406f2599Lai Wei-Chih run copy_directory "$SRCDIR/bin" "$DSTDIR/bin" 407c6798d0201775cd96ae85b67b7653bdc406f2599Lai Wei-Chih run copy_directory "$SRCDIR/lib" "$DSTDIR/lib" 408c6798d0201775cd96ae85b67b7653bdc406f2599Lai Wei-Chih run copy_directory "$SRCDIR/share" "$DSTDIR/share" 409c6798d0201775cd96ae85b67b7653bdc406f2599Lai Wei-Chih run copy_directory "$SRCDIR/include" "$DSTDIR/include" 410d4a49bf41476e5f618d2cb683703c2d33565951eAndrew Hsieh # remove unneeded files 411d4a49bf41476e5f618d2cb683703c2d33565951eAndrew Hsieh run rm -rf "$DSTDIR/share/man" 412f0bef33d63eceb503d6a30ca151a8fcc7f1f2d4dAndrew Hsieh run rm -rf "$DSTDIR/share/pretty-printers/libstdcxx/gcc-4.9.*" 413f0bef33d63eceb503d6a30ca151a8fcc7f1f2d4dAndrew Hsieh run rm -rf "$DSTDIR/share/pretty-printers/libstdcxx/gcc-4.9-*" 414f0bef33d63eceb503d6a30ca151a8fcc7f1f2d4dAndrew Hsieh run rm -rf "$DSTDIR/share/pretty-printers/libstdcxx/gcc-[lm]*" 415c6798d0201775cd96ae85b67b7653bdc406f2599Lai Wei-Chih fi 416e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly} 417e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly 418e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnellyneed_install_host_python () 419e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly{ 420e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly local SRCDIR="$(python_build_install_dir $1 $2)" 421e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly 422e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly bh_stamps_do install-host-python-$1-$2 install_host_python $1 $2 423e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly 424e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly # make sharedmods (setup.py) needs to use the build machine's Python 425e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly # for the other hosts to build correctly. 426e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly if [ $BH_BUILD_TAG = $BH_HOST_TAG ]; then 427e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly export PATH=$SRCDIR/bin:$PATH 428e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly fi 429e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly} 430e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly 431e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly# Package host Python binaries into a tarball 432e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly# $1: host tag 433e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly# $2: python version 434e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnellypackage_host_python () 435e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly{ 4364ec84cccdda14ab4ebcafbc6f3200a2cd2868586Ray Donnelly local BLDDIR="$(python_build_install_dir $1 $2)" 437e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly local SRCDIR="$(python_ndk_install_dir $1 $2)" 43859fd2bfb50dab0b19fddb397cd2d4122b17eb8d0Ray Donnelly # This is similar to BLDDIR=${BLDDIR%%$SRCDIR} (and requires we use windows and not windows-x86) 4394ec84cccdda14ab4ebcafbc6f3200a2cd2868586Ray Donnelly BLDDIR=$(echo "$BLDDIR" | sed "s/$(echo "$SRCDIR" | sed -e 's/\\/\\\\/g' -e 's/\//\\\//g' -e 's/&/\\\&/g')//g") 440877fc9f59b0fb37fadeecfe8cc7327641b750870Ray Donnelly local PACKAGENAME=ndk-python-$(install_dir_from_host_tag $1).tar.bz2 441e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly local PACKAGE="$PACKAGE_DIR/$PACKAGENAME" 442e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly 443e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly need_install_host_python $1 $2 444e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly 445e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly dump "$(bh_host_text) $PACKAGENAME: Packaging" 4464ec84cccdda14ab4ebcafbc6f3200a2cd2868586Ray Donnelly run pack_archive "$PACKAGE" "$BLDDIR" "$SRCDIR" 447e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly} 448e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly 449877fc9f59b0fb37fadeecfe8cc7327641b750870Ray Donnellyneed_package_host_python () 450877fc9f59b0fb37fadeecfe8cc7327641b750870Ray Donnelly{ 451877fc9f59b0fb37fadeecfe8cc7327641b750870Ray Donnelly bh_stamps_do package-host-python-$1-$2 package_host_python $1 $2 452877fc9f59b0fb37fadeecfe8cc7327641b750870Ray Donnelly} 453877fc9f59b0fb37fadeecfe8cc7327641b750870Ray Donnelly 454e534e36be95815bdfa09756fa040acb2321a09c2Ray DonnellyPYTHON_VERSION=$(commas_to_spaces $PYTHON_VERSION) 455e534e36be95815bdfa09756fa040acb2321a09c2Ray DonnellyARCHS=$(commas_to_spaces $ARCHS) 456e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly 457e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly# Let's build this 458e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnellyfor SYSTEM in $BH_HOST_SYSTEMS; do 459e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly bh_setup_build_for_host $SYSTEM 460e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly for VERSION in $PYTHON_VERSION; do 461e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly need_install_host_python $SYSTEM $VERSION 462e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly done 463e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnellydone 464e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly 465e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnellyif [ "$PACKAGE_DIR" ]; then 466e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly for SYSTEM in $BH_HOST_SYSTEMS; do 467e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly bh_setup_build_for_host $SYSTEM 468c6798d0201775cd96ae85b67b7653bdc406f2599Lai Wei-Chih if [ $AUTO_BUILD != "yes" -o $SYSTEM != $BH_BUILD_TAG ]; then 469c6798d0201775cd96ae85b67b7653bdc406f2599Lai Wei-Chih for VERSION in $PYTHON_VERSION; do 470877fc9f59b0fb37fadeecfe8cc7327641b750870Ray Donnelly need_package_host_python $SYSTEM $VERSION 471c6798d0201775cd96ae85b67b7653bdc406f2599Lai Wei-Chih done 472c6798d0201775cd96ae85b67b7653bdc406f2599Lai Wei-Chih fi 473e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnelly done 474e534e36be95815bdfa09756fa040acb2321a09c2Ray Donnellyfi 475