1*cf78ab8cSAndroid Build Coastguard Worker#!/bin/sh 2*cf78ab8cSAndroid Build Coastguard Worker# Copyright 2020 The Android Open Source Project 3*cf78ab8cSAndroid Build Coastguard Worker# 4*cf78ab8cSAndroid Build Coastguard Worker# Licensed under the Apache License, Version 2.0 (the "License"); 5*cf78ab8cSAndroid Build Coastguard Worker# you may not use this file except in compliance with the License. 6*cf78ab8cSAndroid Build Coastguard Worker# You may obtain a copy of the License at 7*cf78ab8cSAndroid Build Coastguard Worker# 8*cf78ab8cSAndroid Build Coastguard Worker# http://www.apache.org/licenses/LICENSE-2.0 9*cf78ab8cSAndroid Build Coastguard Worker# 10*cf78ab8cSAndroid Build Coastguard Worker# Unless required by applicable law or agreed to in writing, software 11*cf78ab8cSAndroid Build Coastguard Worker# distributed under the License is distributed on an "AS IS" BASIS, 12*cf78ab8cSAndroid Build Coastguard Worker# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13*cf78ab8cSAndroid Build Coastguard Worker# See the License for the specific language governing permissions and 14*cf78ab8cSAndroid Build Coastguard Worker# limitations under the License. 15*cf78ab8cSAndroid Build Coastguard Workerif [ "${BASH_SOURCE-}" = "$0" ]; then 16*cf78ab8cSAndroid Build Coastguard Worker echo "You must source this script: \$ source $0" >&2 17*cf78ab8cSAndroid Build Coastguard Worker echo "It will create a virtual environment in which emu-docker will be installed." 18*cf78ab8cSAndroid Build Coastguard Worker exit 33 19*cf78ab8cSAndroid Build Coastguard Workerfi 20*cf78ab8cSAndroid Build Coastguard Worker 21*cf78ab8cSAndroid Build Coastguard Workerpanic() { 22*cf78ab8cSAndroid Build Coastguard Worker echo "ERROR: $@" >&2 23*cf78ab8cSAndroid Build Coastguard Worker exit 1 24*cf78ab8cSAndroid Build Coastguard Worker} 25*cf78ab8cSAndroid Build Coastguard Worker 26*cf78ab8cSAndroid Build Coastguard Worker# Return the build machine's operating system tag. 27*cf78ab8cSAndroid Build Coastguard Worker# Valid return values are: 28*cf78ab8cSAndroid Build Coastguard Worker# linux 29*cf78ab8cSAndroid Build Coastguard Worker# darwin 30*cf78ab8cSAndroid Build Coastguard Worker# freebsd 31*cf78ab8cSAndroid Build Coastguard Worker# windows (really MSys) 32*cf78ab8cSAndroid Build Coastguard Worker# cygwin 33*cf78ab8cSAndroid Build Coastguard Workerget_build_os() { 34*cf78ab8cSAndroid Build Coastguard Worker if [ -z "$_SHU_BUILD_OS" ]; then 35*cf78ab8cSAndroid Build Coastguard Worker _SHU_BUILD_OS=$(uname -s) 36*cf78ab8cSAndroid Build Coastguard Worker case $_SHU_BUILD_OS in 37*cf78ab8cSAndroid Build Coastguard Worker Darwin) 38*cf78ab8cSAndroid Build Coastguard Worker _SHU_BUILD_OS=darwin 39*cf78ab8cSAndroid Build Coastguard Worker ;; 40*cf78ab8cSAndroid Build Coastguard Worker FreeBSD) # note: this is not tested 41*cf78ab8cSAndroid Build Coastguard Worker _SHU_BUILD_OS=freebsd 42*cf78ab8cSAndroid Build Coastguard Worker ;; 43*cf78ab8cSAndroid Build Coastguard Worker Linux) 44*cf78ab8cSAndroid Build Coastguard Worker # note that building 32-bit binaries on x86_64 is handled later 45*cf78ab8cSAndroid Build Coastguard Worker _SHU_BUILD_OS=linux 46*cf78ab8cSAndroid Build Coastguard Worker ;; 47*cf78ab8cSAndroid Build Coastguard Worker CYGWIN* | *_NT-*) 48*cf78ab8cSAndroid Build Coastguard Worker _SHU_BUILD_OS=windows 49*cf78ab8cSAndroid Build Coastguard Worker if [ "x$OSTYPE" = xcygwin ]; then 50*cf78ab8cSAndroid Build Coastguard Worker _SHU_BUILD_OS=cygwin 51*cf78ab8cSAndroid Build Coastguard Worker fi 52*cf78ab8cSAndroid Build Coastguard Worker ;; 53*cf78ab8cSAndroid Build Coastguard Worker esac 54*cf78ab8cSAndroid Build Coastguard Worker fi 55*cf78ab8cSAndroid Build Coastguard Worker echo "$_SHU_BUILD_OS" 56*cf78ab8cSAndroid Build Coastguard Worker} 57*cf78ab8cSAndroid Build Coastguard Worker 58*cf78ab8cSAndroid Build Coastguard Workeraosp_find_python() { 59*cf78ab8cSAndroid Build Coastguard Worker local AOSP_PREBUILTS_DIR=$AOSP_DIR/prebuilts 60*cf78ab8cSAndroid Build Coastguard Worker local OS_NAME=$(get_build_os) 61*cf78ab8cSAndroid Build Coastguard Worker local PYTHON=$AOSP_PREBUILTS_DIR/python/$OS_NAME-x86/bin/python3 62*cf78ab8cSAndroid Build Coastguard Worker $PYTHON --version >/dev/null || panic "Unable to get python version from $PYTHON" 63*cf78ab8cSAndroid Build Coastguard Worker printf "$PYTHON" 64*cf78ab8cSAndroid Build Coastguard Worker} 65*cf78ab8cSAndroid Build Coastguard Worker 66*cf78ab8cSAndroid Build Coastguard Workeraosp_find_python_include() { 67*cf78ab8cSAndroid Build Coastguard Worker local AOSP_PREBUILTS_DIR=$AOSP_DIR/prebuilts 68*cf78ab8cSAndroid Build Coastguard Worker local OS_NAME=$(get_build_os) 69*cf78ab8cSAndroid Build Coastguard Worker local PYTHON_H=$(find $AOSP_PREBUILTS_DIR/python/$OS_NAME-x86/include -name 'Python.h') 70*cf78ab8cSAndroid Build Coastguard Worker local PYTHON_INCLUDE=$(dirname $PYTHON_H) 71*cf78ab8cSAndroid Build Coastguard Worker printf "$PYTHON_INCLUDE" 72*cf78ab8cSAndroid Build Coastguard Worker} 73*cf78ab8cSAndroid Build Coastguard Worker 74*cf78ab8cSAndroid Build Coastguard WorkerAOSP_DIR=$( 75*cf78ab8cSAndroid Build Coastguard Worker cd ../../../.. 76*cf78ab8cSAndroid Build Coastguard Worker pwd 77*cf78ab8cSAndroid Build Coastguard Worker) 78*cf78ab8cSAndroid Build Coastguard Worker 79*cf78ab8cSAndroid Build Coastguard WorkerHERE=$AOSP_DIR/tools/netsim/testing/netsim-grpc 80*cf78ab8cSAndroid Build Coastguard WorkerPYTHON=$(aosp_find_python) 81*cf78ab8cSAndroid Build Coastguard WorkerPY_VER=$($PYTHON --version) 82*cf78ab8cSAndroid Build Coastguard Worker 83*cf78ab8cSAndroid Build Coastguard Worker 84*cf78ab8cSAndroid Build Coastguard Workerdevpi_dir() { 85*cf78ab8cSAndroid Build Coastguard Worker DEVPI_DIR=$( 86*cf78ab8cSAndroid Build Coastguard Worker cd $AOSP_DIR/external/adt-infra/devpi 87*cf78ab8cSAndroid Build Coastguard Worker pwd 88*cf78ab8cSAndroid Build Coastguard Worker ) 89*cf78ab8cSAndroid Build Coastguard Worker printf "$DEVPI_DIR" 90*cf78ab8cSAndroid Build Coastguard Worker} 91*cf78ab8cSAndroid Build Coastguard Worker 92*cf78ab8cSAndroid Build Coastguard Workersetup_virtual_env() { 93*cf78ab8cSAndroid Build Coastguard Worker # We need a virtual environment, so we can set up the proper include directories 94*cf78ab8cSAndroid Build Coastguard Worker # as, well, it seem that our python release does not report the proper include 95*cf78ab8cSAndroid Build Coastguard Worker # directory 96*cf78ab8cSAndroid Build Coastguard Worker local PYTHON=$(aosp_find_python) 97*cf78ab8cSAndroid Build Coastguard Worker local PYTHON_INCLUDE=$(aosp_find_python_include) 98*cf78ab8cSAndroid Build Coastguard Worker local WHEEL_DIR=$(devpi_dir)/repo/simple 99*cf78ab8cSAndroid Build Coastguard Worker 100*cf78ab8cSAndroid Build Coastguard Worker $PYTHON -m venv $VIRTUAL_ENV_DEST 101*cf78ab8cSAndroid Build Coastguard Worker rm -r $VIRTUAL_ENV_DEST/include 102*cf78ab8cSAndroid Build Coastguard Worker ln -sf $PYTHON_INCLUDE $VIRTUAL_ENV_DEST/include 103*cf78ab8cSAndroid Build Coastguard Worker 104*cf78ab8cSAndroid Build Coastguard Worker # Activate and setup a pip conf that points to our local devpi server 105*cf78ab8cSAndroid Build Coastguard Worker # This will make sure all our packages are from the local file system. 106*cf78ab8cSAndroid Build Coastguard Worker . $VIRTUAL_ENV_DEST/bin/activate 107*cf78ab8cSAndroid Build Coastguard Worker cat $HERE/cfg/pip.conf | sed "s,REPO_DIR,$WHEEL_DIR,g" >$VIRTUAL_ENV_DEST/pip.conf 108*cf78ab8cSAndroid Build Coastguard Worker cp $HERE/cfg/pypirc $VIRTUAL_ENV_DEST/pypirc 109*cf78ab8cSAndroid Build Coastguard Worker pip install --upgrade pip wheel setuptools 110*cf78ab8cSAndroid Build Coastguard Worker pip install wheel 111*cf78ab8cSAndroid Build Coastguard Worker} 112*cf78ab8cSAndroid Build Coastguard Worker 113*cf78ab8cSAndroid Build Coastguard WorkerVIRTUAL_ENV_DEST=./.venv 114*cf78ab8cSAndroid Build Coastguard Workerif [ -e $VIRTUAL_ENV_DEST/bin/activate ]; then 115*cf78ab8cSAndroid Build Coastguard Worker . $VIRTUAL_ENV_DEST/bin/activate 116*cf78ab8cSAndroid Build Coastguard Worker pip install -e . 117*cf78ab8cSAndroid Build Coastguard Workerelse 118*cf78ab8cSAndroid Build Coastguard Worker setup_virtual_env 119*cf78ab8cSAndroid Build Coastguard Worker pip install -e . 120*cf78ab8cSAndroid Build Coastguard Workerfi