xref: /aosp_15_r20/tools/netsim/testing/netsim-grpc/configure.sh (revision cf78ab8cffb8fc9207af348f23af247fb04370a6)
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