1*4882a593SmuzhiyunFrom 07fce2101d83b5334de78e661ba0361c2874ebdf Mon Sep 17 00:00:00 2001 2*4882a593SmuzhiyunFrom: Alistair Francis <alistair.francis@wdc.com> 3*4882a593SmuzhiyunDate: Mon, 18 Mar 2019 16:30:45 -0700 4*4882a593SmuzhiyunSubject: [PATCH 1/7] Remove python venv 5*4882a593Smuzhiyun 6*4882a593SmuzhiyunRemove the python venv requirements and instead just use the native 7*4882a593Smuzhiyunpython and pip pacakges. 8*4882a593Smuzhiyun 9*4882a593SmuzhiyunSigned-off-by: Alistair Francis <alistair.francis@wdc.com> 10*4882a593SmuzhiyunUpstream-Status: Inappropriate [embedded specific] 11*4882a593Smuzhiyun--- 12*4882a593Smuzhiyun dev_setup.sh | 39 --------------------------------------- 13*4882a593Smuzhiyun start-mycroft.sh | 13 ------------- 14*4882a593Smuzhiyun venv-activate.sh | 44 +------------------------------------------- 15*4882a593Smuzhiyun 3 files changed, 1 insertion(+), 95 deletions(-) 16*4882a593Smuzhiyun 17*4882a593Smuzhiyundiff --git a/dev_setup.sh b/dev_setup.sh 18*4882a593Smuzhiyunindex cf81ed25f0f..99a44bfd8a7 100755 19*4882a593Smuzhiyun--- a/dev_setup.sh 20*4882a593Smuzhiyun+++ b/dev_setup.sh 21*4882a593Smuzhiyun@@ -338,18 +338,6 @@ ${YELLOW}Make sure to manually install:$BLUE git python3 python-setuptools pytho 22*4882a593Smuzhiyun fi 23*4882a593Smuzhiyun } 24*4882a593Smuzhiyun 25*4882a593Smuzhiyun-VIRTUALENV_ROOT=${VIRTUALENV_ROOT:-"${TOP}/.venv"} 26*4882a593Smuzhiyun- 27*4882a593Smuzhiyun-function install_venv() { 28*4882a593Smuzhiyun- $opt_python -m venv "${VIRTUALENV_ROOT}/" --without-pip 29*4882a593Smuzhiyun- # Force version of pip for reproducability, but there is nothing special 30*4882a593Smuzhiyun- # about this version. Update whenever a new version is released and 31*4882a593Smuzhiyun- # verified functional. 32*4882a593Smuzhiyun- curl https://bootstrap.pypa.io/3.3/get-pip.py | "${VIRTUALENV_ROOT}/bin/python" - 'pip==18.0.0' 33*4882a593Smuzhiyun- # Function status depending on if pip exists 34*4882a593Smuzhiyun- [[ -x ${VIRTUALENV_ROOT}/bin/pip ]] 35*4882a593Smuzhiyun-} 36*4882a593Smuzhiyun- 37*4882a593Smuzhiyun install_deps 38*4882a593Smuzhiyun 39*4882a593Smuzhiyun # Configure to use the standard commit template for 40*4882a593Smuzhiyun@@ -383,17 +371,6 @@ else 41*4882a593Smuzhiyun fi 42*4882a593Smuzhiyun fi 43*4882a593Smuzhiyun 44*4882a593Smuzhiyun-if [[ ! -x ${VIRTUALENV_ROOT}/bin/activate ]] ; then 45*4882a593Smuzhiyun- if ! install_venv ; then 46*4882a593Smuzhiyun- echo 'Failed to set up virtualenv for mycroft, exiting setup.' 47*4882a593Smuzhiyun- exit 1 48*4882a593Smuzhiyun- fi 49*4882a593Smuzhiyun-fi 50*4882a593Smuzhiyun- 51*4882a593Smuzhiyun-# Start the virtual environment 52*4882a593Smuzhiyun-source "${VIRTUALENV_ROOT}/bin/activate" 53*4882a593Smuzhiyun-cd "$TOP" 54*4882a593Smuzhiyun- 55*4882a593Smuzhiyun # Install pep8 pre-commit hook 56*4882a593Smuzhiyun HOOK_FILE='./.git/hooks/pre-commit' 57*4882a593Smuzhiyun if [[ -n $INSTALL_PRECOMMIT_HOOK ]] || grep -q 'MYCROFT DEV SETUP' $HOOK_FILE; then 58*4882a593Smuzhiyun@@ -408,22 +385,6 @@ fi 59*4882a593Smuzhiyun 60*4882a593Smuzhiyun PYTHON=$(python -c "import sys;print('python{}.{}'.format(sys.version_info[0], sys.version_info[1]))") 61*4882a593Smuzhiyun 62*4882a593Smuzhiyun-# Add mycroft-core to the virtualenv path 63*4882a593Smuzhiyun-# (This is equivalent to typing 'add2virtualenv $TOP', except 64*4882a593Smuzhiyun-# you can't invoke that shell function from inside a script) 65*4882a593Smuzhiyun-VENV_PATH_FILE="${VIRTUALENV_ROOT}/lib/$PYTHON/site-packages/_virtualenv_path_extensions.pth" 66*4882a593Smuzhiyun-if [[ ! -f $VENV_PATH_FILE ]] ; then 67*4882a593Smuzhiyun- echo 'import sys; sys.__plen = len(sys.path)' > "$VENV_PATH_FILE" || return 1 68*4882a593Smuzhiyun- echo "import sys; new=sys.path[sys.__plen:]; del sys.path[sys.__plen:]; p=getattr(sys,'__egginsert',0); sys.path[p:p]=new; sys.__egginsert = p+len(new)" >> "$VENV_PATH_FILE" || return 1 69*4882a593Smuzhiyun-fi 70*4882a593Smuzhiyun- 71*4882a593Smuzhiyun-if ! grep -q "$TOP" $VENV_PATH_FILE ; then 72*4882a593Smuzhiyun- echo 'Adding mycroft-core to virtualenv path' 73*4882a593Smuzhiyun- sed -i.tmp '1 a\ 74*4882a593Smuzhiyun-'"$TOP"' 75*4882a593Smuzhiyun-' "$VENV_PATH_FILE" 76*4882a593Smuzhiyun-fi 77*4882a593Smuzhiyun- 78*4882a593Smuzhiyun # install required python modules 79*4882a593Smuzhiyun if ! pip install -r requirements.txt ; then 80*4882a593Smuzhiyun echo 'Warning: Failed to install all requirements. Continue? y/N' 81*4882a593Smuzhiyundiff --git a/start-mycroft.sh b/start-mycroft.sh 82*4882a593Smuzhiyunindex 0f88430982e..3aed2f189d4 100755 83*4882a593Smuzhiyun--- a/start-mycroft.sh 84*4882a593Smuzhiyun+++ b/start-mycroft.sh 85*4882a593Smuzhiyun@@ -20,7 +20,6 @@ script=${0} 86*4882a593Smuzhiyun script=${script##*/} 87*4882a593Smuzhiyun cd -P "$( dirname "$SOURCE" )" 88*4882a593Smuzhiyun DIR="$( pwd )" 89*4882a593Smuzhiyun-VIRTUALENV_ROOT=${VIRTUALENV_ROOT:-"${DIR}/.venv"} 90*4882a593Smuzhiyun 91*4882a593Smuzhiyun function help() { 92*4882a593Smuzhiyun echo "${script}: Mycroft command/service launcher" 93*4882a593Smuzhiyun@@ -76,19 +75,11 @@ function name-to-script-path() { 94*4882a593Smuzhiyun esac 95*4882a593Smuzhiyun } 96*4882a593Smuzhiyun 97*4882a593Smuzhiyun-function source-venv() { 98*4882a593Smuzhiyun- # Enter Python virtual environment, unless under Docker 99*4882a593Smuzhiyun- if [ ! -f "/.dockerenv" ] ; then 100*4882a593Smuzhiyun- source ${VIRTUALENV_ROOT}/bin/activate 101*4882a593Smuzhiyun- fi 102*4882a593Smuzhiyun-} 103*4882a593Smuzhiyun- 104*4882a593Smuzhiyun first_time=true 105*4882a593Smuzhiyun function init-once() { 106*4882a593Smuzhiyun if ($first_time) ; then 107*4882a593Smuzhiyun echo "Initializing..." 108*4882a593Smuzhiyun "${DIR}/scripts/prepare-msm.sh" 109*4882a593Smuzhiyun- source-venv 110*4882a593Smuzhiyun first_time=false 111*4882a593Smuzhiyun fi 112*4882a593Smuzhiyun } 113*4882a593Smuzhiyun@@ -225,15 +216,12 @@ case ${_opt} in 114*4882a593Smuzhiyun # launch-background ${_opt} 115*4882a593Smuzhiyun # ;; 116*4882a593Smuzhiyun "unittest") 117*4882a593Smuzhiyun- source-venv 118*4882a593Smuzhiyun pytest test/unittests/ --cov=mycroft "$@" 119*4882a593Smuzhiyun ;; 120*4882a593Smuzhiyun "singleunittest") 121*4882a593Smuzhiyun- source-venv 122*4882a593Smuzhiyun pytest "$@" 123*4882a593Smuzhiyun ;; 124*4882a593Smuzhiyun "skillstest") 125*4882a593Smuzhiyun- source-venv 126*4882a593Smuzhiyun pytest test/integrationtests/skills/discover_tests.py "$@" 127*4882a593Smuzhiyun ;; 128*4882a593Smuzhiyun "audiotest") 129*4882a593Smuzhiyun@@ -243,7 +231,6 @@ case ${_opt} in 130*4882a593Smuzhiyun launch-process ${_opt} 131*4882a593Smuzhiyun ;; 132*4882a593Smuzhiyun "sdkdoc") 133*4882a593Smuzhiyun- source-venv 134*4882a593Smuzhiyun cd doc 135*4882a593Smuzhiyun make ${_params} 136*4882a593Smuzhiyun cd .. 137*4882a593Smuzhiyundiff --git a/venv-activate.sh b/venv-activate.sh 138*4882a593Smuzhiyunindex d1e7bcb44e7..10b46d4de3b 100644 139*4882a593Smuzhiyun--- a/venv-activate.sh 140*4882a593Smuzhiyun+++ b/venv-activate.sh 141*4882a593Smuzhiyun@@ -22,49 +22,7 @@ 142*4882a593Smuzhiyun 143*4882a593Smuzhiyun # wrap in function to allow local variables, since this file will be source'd 144*4882a593Smuzhiyun function main() { 145*4882a593Smuzhiyun- local quiet=0 146*4882a593Smuzhiyun- 147*4882a593Smuzhiyun- for arg in "$@" 148*4882a593Smuzhiyun- do 149*4882a593Smuzhiyun- case $arg in 150*4882a593Smuzhiyun- "-q"|"--quiet" ) 151*4882a593Smuzhiyun- quiet=1 152*4882a593Smuzhiyun- ;; 153*4882a593Smuzhiyun- 154*4882a593Smuzhiyun- "-h"|"--help" ) 155*4882a593Smuzhiyun- echo "venv-activate.sh: Enter the Mycroft virtual environment" 156*4882a593Smuzhiyun- echo "Usage:" 157*4882a593Smuzhiyun- echo " source venv-activate.sh" 158*4882a593Smuzhiyun- echo "or" 159*4882a593Smuzhiyun- echo " . venv-activate.sh" 160*4882a593Smuzhiyun- echo "" 161*4882a593Smuzhiyun- echo "Options:" 162*4882a593Smuzhiyun- echo " -q | --quiet Don't show instructions." 163*4882a593Smuzhiyun- echo " -h | --help Show help." 164*4882a593Smuzhiyun- return 0 165*4882a593Smuzhiyun- ;; 166*4882a593Smuzhiyun- 167*4882a593Smuzhiyun- *) 168*4882a593Smuzhiyun- echo "ERROR: Unrecognized option: $@" 169*4882a593Smuzhiyun- return 1 170*4882a593Smuzhiyun- ;; 171*4882a593Smuzhiyun- esac 172*4882a593Smuzhiyun- done 173*4882a593Smuzhiyun- 174*4882a593Smuzhiyun- if [ "$0" == "$BASH_SOURCE" ] ; then 175*4882a593Smuzhiyun- # Prevent running in script then exiting immediately 176*4882a593Smuzhiyun- echo "ERROR: Invoke with 'source venv-activate.sh' or '. venv-activate.sh'" 177*4882a593Smuzhiyun- else 178*4882a593Smuzhiyun- local SRC_DIR="$( builtin cd "$( dirname "${BASH_SOURCE}" )" ; pwd -P )" 179*4882a593Smuzhiyun- source ${SRC_DIR}/.venv/bin/activate 180*4882a593Smuzhiyun- 181*4882a593Smuzhiyun- # Provide an easier to find "mycroft-" prefixed command. 182*4882a593Smuzhiyun- unalias mycroft-venv-activate 2>/dev/null 183*4882a593Smuzhiyun- alias mycroft-venv-deactivate="deactivate && unalias mycroft-venv-deactivate 2>/dev/null && alias mycroft-venv-activate=\"source '${SRC_DIR}/venv-activate.sh'\"" 184*4882a593Smuzhiyun- if [ $quiet -eq 0 ] ; then 185*4882a593Smuzhiyun- echo "Entering Mycroft virtual environment. Run 'mycroft-venv-deactivate' to exit" 186*4882a593Smuzhiyun- fi 187*4882a593Smuzhiyun- fi 188*4882a593Smuzhiyun+ echo "Not entering Python VENV" 189*4882a593Smuzhiyun } 190*4882a593Smuzhiyun 191*4882a593Smuzhiyun main $@ 192*4882a593Smuzhiyun-- 193*4882a593Smuzhiyun2.23.0 194*4882a593Smuzhiyun 195