From 6272f36080bd440a5825b526f4c06223c5bb9fbb Mon Sep 17 00:00:00 2001
From: Alistair Francis <alistair.francis@wdc.com>
Date: Mon, 18 Mar 2019 16:30:45 -0700
Subject: [PATCH 1/5] Remove python venv

Remove the python venv requirements and instead just use the native
python and pip pacakges.

Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
Upstream-Status: Inappropriate [embedded specific]
---
 dev_setup.sh     | 36 ------------------------------------
 start-mycroft.sh | 13 -------------
 venv-activate.sh | 44 +-------------------------------------------
 3 files changed, 1 insertion(+), 92 deletions(-)

diff --git a/dev_setup.sh b/dev_setup.sh
index e0b07bf25cf..aed54b2167a 100755
--- a/dev_setup.sh
+++ b/dev_setup.sh
@@ -310,18 +310,6 @@ function install_deps() {
     fi
 }
 
-VIRTUALENV_ROOT=${VIRTUALENV_ROOT:-"${TOP}/.venv"}
-
-function install_venv() {
-    ${opt_python} -m venv "${VIRTUALENV_ROOT}/" --without-pip
-    # Force version of pip for reproducability, but there is nothing special
-    # about this version.  Update whenever a new version is released and
-    # verified functional.
-    curl https://bootstrap.pypa.io/3.3/get-pip.py | "${VIRTUALENV_ROOT}/bin/python" - 'pip==18.0.0'
-    # Function status depending on if pip exists
-    [ -x "${VIRTUALENV_ROOT}/bin/pip" ]
-}
-
 install_deps
 
 # Configure to use the standard commit template for
@@ -355,15 +343,7 @@ else
     fi
 fi
 
-if [ ! -x "${VIRTUALENV_ROOT}/bin/activate" ] ; then
-    if ! install_venv ; then
-        echo "Failed to set up virtualenv for mycroft, exiting setup."
-        exit 1
-    fi
-fi
-
 # Start the virtual environment
-source "${VIRTUALENV_ROOT}/bin/activate"
 cd "${TOP}"
 
 # Install pep8 pre-commit hook
@@ -380,22 +360,6 @@ fi
 
 PYTHON=$( python -c "import sys;print('python{}.{}'.format(sys.version_info[0], sys.version_info[1]))" )
 
-# Add mycroft-core to the virtualenv path
-# (This is equivalent to typing 'add2virtualenv $TOP', except
-# you can't invoke that shell function from inside a script)
-VENV_PATH_FILE="${VIRTUALENV_ROOT}/lib/$PYTHON/site-packages/_virtualenv_path_extensions.pth"
-if [ ! -f "$VENV_PATH_FILE" ] ; then
-    echo "import sys; sys.__plen = len(sys.path)" > "$VENV_PATH_FILE" || return 1
-    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
-fi
-
-if ! grep -q "$TOP" $VENV_PATH_FILE ; then
-    echo "Adding mycroft-core to virtualenv path"
-    sed -i.tmp '1 a\
-'"$TOP"'
-' "${VENV_PATH_FILE}"
-fi
-
 # install required python modules
 if ! pip install -r requirements.txt ; then
     echo "Warning: Failed to install all requirements. Continue? y/N"
diff --git a/start-mycroft.sh b/start-mycroft.sh
index b9514a61ba5..64e0216a62f 100755
--- a/start-mycroft.sh
+++ b/start-mycroft.sh
@@ -20,7 +20,6 @@ script=${0}
 script=${script##*/}
 cd -P "$( dirname "$SOURCE" )"
 DIR="$( pwd )"
-VIRTUALENV_ROOT=${VIRTUALENV_ROOT:-"${DIR}/.venv"}
 
 function help() {
     echo "${script}:  Mycroft command/service launcher"
@@ -76,19 +75,11 @@ function name-to-script-path() {
     esac
 }
 
-function source-venv() {
-    # Enter Python virtual environment, unless under Docker
-    if [ ! -f "/.dockerenv" ] ; then
-        source ${VIRTUALENV_ROOT}/bin/activate
-    fi
-}
-
 first_time=true
 function init-once() {
     if ($first_time) ; then
         echo "Initializing..."
         "${DIR}/scripts/prepare-msm.sh"
-        source-venv
         first_time=false
     fi
 }
@@ -225,15 +216,12 @@ case ${_opt} in
     #    launch-background ${_opt}
     #    ;;
     "unittest")
-        source-venv
         pytest test/unittests/ --cov=mycroft "$@"
         ;;
     "singleunittest")
-        source-venv
         pytest "$@"
         ;;
     "skillstest")
-        source-venv
         pytest test/integrationtests/skills/discover_tests.py "$@"
         ;;
     "audiotest")
@@ -243,7 +231,6 @@ case ${_opt} in
         launch-process ${_opt}
         ;;
     "sdkdoc")
-        source-venv
         cd doc
         make ${opt}
         cd ..
diff --git a/venv-activate.sh b/venv-activate.sh
index d1e7bcb44e7..10b46d4de3b 100644
--- a/venv-activate.sh
+++ b/venv-activate.sh
@@ -22,49 +22,7 @@
 
 # wrap in function to allow local variables, since this file will be source'd
 function main() { 
-    local quiet=0
-
-    for arg in "$@"
-    do
-        case $arg in
-            "-q"|"--quiet" )
-               quiet=1
-               ;;
-
-            "-h"|"--help" )
-               echo "venv-activate.sh:  Enter the Mycroft virtual environment"
-               echo "Usage:"
-               echo "   source venv-activate.sh"
-               echo "or"
-               echo "   . venv-activate.sh"
-               echo ""
-               echo "Options:"
-               echo "   -q | --quiet    Don't show instructions."
-               echo "   -h | --help    Show help."
-               return 0
-               ;;
-
-            *)
-               echo "ERROR:  Unrecognized option: $@"
-               return 1
-               ;;
-       esac
-    done
-
-    if [ "$0" == "$BASH_SOURCE" ] ; then
-        # Prevent running in script then exiting immediately
-        echo "ERROR: Invoke with 'source venv-activate.sh' or '. venv-activate.sh'"
-    else
-        local SRC_DIR="$( builtin cd "$( dirname "${BASH_SOURCE}" )" ; pwd -P )"
-        source ${SRC_DIR}/.venv/bin/activate
-        
-        # Provide an easier to find "mycroft-" prefixed command.
-        unalias mycroft-venv-activate 2>/dev/null
-        alias mycroft-venv-deactivate="deactivate && unalias mycroft-venv-deactivate 2>/dev/null && alias mycroft-venv-activate=\"source '${SRC_DIR}/venv-activate.sh'\""
-        if [ $quiet -eq 0 ] ; then
-            echo "Entering Mycroft virtual environment.  Run 'mycroft-venv-deactivate' to exit"
-        fi
-    fi
+   echo "Not entering Python VENV"
 }
 
 main $@
-- 
2.21.0

