blob: 89fb0c8c1bc113308289108af9d5665d79261101 [file] [log] [blame]
#!/bin/sh
# Copyright 2020 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
if [ "${BASH_SOURCE-}" = "$0" ]; then
echo "You must source this script: \$ source $0" >&2
echo "It will create a virtual environment in which emu-docker will be installed."
exit 33
fi
panic() {
echo "ERROR: $@" >&2
exit 1
}
# Return the build machine's operating system tag.
# Valid return values are:
# linux
# darwin
# freebsd
# windows (really MSys)
# cygwin
get_build_os() {
if [ -z "$_SHU_BUILD_OS" ]; then
_SHU_BUILD_OS=$(uname -s)
case $_SHU_BUILD_OS in
Darwin)
_SHU_BUILD_OS=darwin
;;
FreeBSD) # note: this is not tested
_SHU_BUILD_OS=freebsd
;;
Linux)
# note that building 32-bit binaries on x86_64 is handled later
_SHU_BUILD_OS=linux
;;
CYGWIN* | *_NT-*)
_SHU_BUILD_OS=windows
if [ "x$OSTYPE" = xcygwin ]; then
_SHU_BUILD_OS=cygwin
fi
;;
esac
fi
echo "$_SHU_BUILD_OS"
}
aosp_find_python() {
local AOSP_PREBUILTS_DIR=$AOSP_DIR/prebuilts
local OS_NAME=$(get_build_os)
local PYTHON=$AOSP_PREBUILTS_DIR/python/$OS_NAME-x86/bin/python3
$PYTHON --version >/dev/null || panic "Unable to get python version from $PYTHON"
printf "$PYTHON"
}
aosp_find_python_include() {
local AOSP_PREBUILTS_DIR=$AOSP_DIR/prebuilts
local OS_NAME=$(get_build_os)
local PYTHON_H=$(find $AOSP_PREBUILTS_DIR/python/$OS_NAME-x86/include -name 'Python.h')
local PYTHON_INCLUDE=$(dirname $PYTHON_H)
printf "$PYTHON_INCLUDE"
}
AOSP_DIR=$(
cd ../../../..
pwd
)
HERE=$AOSP_DIR/tools/netsim/testing/netsim-grpc
PYTHON=$(aosp_find_python)
PY_VER=$($PYTHON --version)
devpi_dir() {
DEVPI_DIR=$(
cd $AOSP_DIR/external/adt-infra/devpi
pwd
)
printf "$DEVPI_DIR"
}
setup_virtual_env() {
# We need a virtual environment, so we can set up the proper include directories
# as, well, it seem that our python release does not report the proper include
# directory
local PYTHON=$(aosp_find_python)
local PYTHON_INCLUDE=$(aosp_find_python_include)
local WHEEL_DIR=$(devpi_dir)/repo/simple
$PYTHON -m venv $VIRTUAL_ENV_DEST
rm -r $VIRTUAL_ENV_DEST/include
ln -sf $PYTHON_INCLUDE $VIRTUAL_ENV_DEST/include
# Activate and setup a pip conf that points to our local devpi server
# This will make sure all our packages are from the local file system.
. $VIRTUAL_ENV_DEST/bin/activate
cat $HERE/cfg/pip.conf | sed "s,REPO_DIR,$WHEEL_DIR,g" >$VIRTUAL_ENV_DEST/pip.conf
cp $HERE/cfg/pypirc $VIRTUAL_ENV_DEST/pypirc
pip install --upgrade pip wheel setuptools
pip install wheel
}
VIRTUAL_ENV_DEST=./.venv
if [ -e $VIRTUAL_ENV_DEST/bin/activate ]; then
. $VIRTUAL_ENV_DEST/bin/activate
pip install -e .
else
setup_virtual_env
pip install -e .
fi