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