#!/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