You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
146 lines
3.6 KiB
146 lines
3.6 KiB
#! /bin/bash
|
|
#
|
|
# Script to setup virtual environment to run GD cert tests and devlop using IDE
|
|
#
|
|
# Usage
|
|
# 1. cd system/bt/gd
|
|
# 2. source cert/set_up_virtualenv.sh
|
|
# 4. [run tests, do development, hack] using vevn/bin/python
|
|
#
|
|
# Note: Just use the virtualized Python binary, no need to activate
|
|
|
|
## Android build main build setup script relative to top level android source root
|
|
BUILD_SETUP=./build/envsetup.sh
|
|
|
|
function UsageAndroidTree {
|
|
cat<<EOF
|
|
Ensure invoked from within the android source tree
|
|
EOF
|
|
}
|
|
|
|
function UsageSourcedNotExecuted {
|
|
cat<<EOF
|
|
Ensure script is SOURCED and not executed to persist the build setup
|
|
e.g.
|
|
source $0
|
|
EOF
|
|
}
|
|
|
|
function UpFind {
|
|
while [[ $PWD != / ]] ; do
|
|
rc=$(find "$PWD" -maxdepth 1 "$@")
|
|
if [ -n "$rc" ]; then
|
|
echo $(dirname "$rc")
|
|
return
|
|
fi
|
|
cd ..
|
|
done
|
|
}
|
|
|
|
function SetUpAndroidBuild {
|
|
pushd .
|
|
android_root=$(UpFind -name out -type d)
|
|
if [[ -z $android_root ]] ; then
|
|
UsageAndroidTree
|
|
return
|
|
fi
|
|
echo "Found android root $android_root"
|
|
cd $android_root && . $BUILD_SETUP
|
|
echo "Sourced build setup rules"
|
|
cd $android_root && lunch
|
|
popd
|
|
}
|
|
|
|
function SetupPython38 {
|
|
echo "Setting up python3.8"
|
|
sudo apt-get install python3.8-dev
|
|
}
|
|
|
|
function SetupPip3 {
|
|
echo "Setting up pip3"
|
|
sudo apt-get install python3-pip
|
|
}
|
|
|
|
# Deactivate existing virtual environment, if any, ignore errors
|
|
deactivate > /dev/null 2>&1
|
|
|
|
if [[ "${BASH_SOURCE[0]}" == "${0}" ]] ; then
|
|
UsageSourcedNotExecuted
|
|
return 1
|
|
fi
|
|
|
|
## Check python3.8 is installed properly
|
|
## Need Python 3.8 because bluetooth_packets_python3 is compiled against
|
|
## Python 3.8 headers
|
|
dpkg -l python3.8-dev > /dev/null 2>&1
|
|
if [[ $? -ne 0 ]] ; then
|
|
SetupPython38
|
|
fi
|
|
|
|
## Check pip3 is installed properly
|
|
## Need pip3 for Python 3 support
|
|
dpkg -l python3-pip > /dev/null 2>&1
|
|
if [[ $? -ne 0 ]] ; then
|
|
SetupPip3
|
|
fi
|
|
|
|
# Install and upgrade virtualenv to latest version
|
|
pip3 install --user --upgrade virtualenv > /dev/null 2>&1
|
|
if [[ $? -ne 0 ]] ; then
|
|
echo "Error install and upgrade virtualenv"
|
|
return 1
|
|
fi
|
|
|
|
# Set-up Android environment variables
|
|
if [[ -z "$ANDROID_BUILD_TOP" ]] ; then
|
|
SetUpAndroidBuild
|
|
fi
|
|
|
|
## Compile and unzip test artifacts
|
|
echo "Compiling bluetooth_stack_with_facade ..."
|
|
$ANDROID_BUILD_TOP/build/soong/soong_ui.bash --build-mode --"all-modules" --dir="$(pwd)" dist bluetooth_stack_with_facade
|
|
if [[ $? -ne 0 ]] ; then
|
|
echo "Failed to compile bluetooth_stack_with_facade"
|
|
return 1
|
|
fi
|
|
if [[ ! -f "$ANDROID_BUILD_TOP/out/dist/bluetooth_cert_tests.zip" ]]; then
|
|
echo "Cannot find bluetooth_cert_tests.zip after compilation"
|
|
return 1
|
|
fi
|
|
|
|
CERT_TEST_VENV=$ANDROID_BUILD_TOP/out/dist/bluetooth_venv
|
|
|
|
rm -rf $CERT_TEST_VENV
|
|
|
|
python3.8 -m virtualenv --python `which python3.8` $CERT_TEST_VENV
|
|
if [[ $? -ne 0 ]] ; then
|
|
echo "Error setting up virtualenv"
|
|
return 1
|
|
fi
|
|
|
|
unzip -o -q $ANDROID_BUILD_TOP/out/dist/bluetooth_cert_tests.zip -d $CERT_TEST_VENV/acts
|
|
if [[ $? -ne 0 ]] ; then
|
|
echo "Error unzipping bluetooth_cert_tests.zip"
|
|
return 1
|
|
fi
|
|
|
|
$CERT_TEST_VENV/bin/python $CERT_TEST_VENV/acts/setup.py install
|
|
if [[ $? -ne 0 ]] ; then
|
|
echo "Error installing GD libraries"
|
|
return 1
|
|
fi
|
|
|
|
$CERT_TEST_VENV/bin/python -c "
|
|
import bluetooth_packets_python3 as bp3
|
|
bp3.BaseStruct
|
|
"
|
|
if [[ $? -ne 0 ]] ; then
|
|
echo "Setup failed as bluetooth_packets_python3 cannot be imported"
|
|
return 1
|
|
fi
|
|
|
|
echo ""
|
|
echo "Please mark GD root directory as \"Project Sources and Headers\" in IDE"
|
|
echo "If still seeing errors, invalidate cached and restart"
|
|
echo "virtualenv setup complete"
|