summaryrefslogtreecommitdiffstats
path: root/external/meta-openembedded/meta-multimedia/recipes-multimedia/mycroft
diff options
context:
space:
mode:
Diffstat (limited to 'external/meta-openembedded/meta-multimedia/recipes-multimedia/mycroft')
-rw-r--r--external/meta-openembedded/meta-multimedia/recipes-multimedia/mycroft/files/0001-Remove-python-venv.patch194
-rw-r--r--external/meta-openembedded/meta-multimedia/recipes-multimedia/mycroft/files/0002-dev_setup.sh-Remove-the-git-dependency.patch48
-rw-r--r--external/meta-openembedded/meta-multimedia/recipes-multimedia/mycroft/files/0003-dev_setup.sh-Remove-the-TERM-dependency.patch37
-rw-r--r--external/meta-openembedded/meta-multimedia/recipes-multimedia/mycroft/files/0004-dev_setup.sh-Ignore-missing-package-manager.patch31
-rw-r--r--external/meta-openembedded/meta-multimedia/recipes-multimedia/mycroft/files/0005-pip-requirements-Don-t-install-requirements-with-pip.patch103
-rw-r--r--external/meta-openembedded/meta-multimedia/recipes-multimedia/mycroft/files/0006-Use-python3-and-pip3-instead-of-python-and-pip.patch121
-rw-r--r--external/meta-openembedded/meta-multimedia/recipes-multimedia/mycroft/files/0007-mycroft.conf-Use-pocketsphinx-by-default.patch30
-rw-r--r--external/meta-openembedded/meta-multimedia/recipes-multimedia/mycroft/files/dev_opts.json1
-rw-r--r--external/meta-openembedded/meta-multimedia/recipes-multimedia/mycroft/files/mycroft-setup.service12
-rw-r--r--external/meta-openembedded/meta-multimedia/recipes-multimedia/mycroft/files/mycroft.service14
-rw-r--r--external/meta-openembedded/meta-multimedia/recipes-multimedia/mycroft/mycroft_19.8.1.bb87
11 files changed, 678 insertions, 0 deletions
diff --git a/external/meta-openembedded/meta-multimedia/recipes-multimedia/mycroft/files/0001-Remove-python-venv.patch b/external/meta-openembedded/meta-multimedia/recipes-multimedia/mycroft/files/0001-Remove-python-venv.patch
new file mode 100644
index 00000000..245785c8
--- /dev/null
+++ b/external/meta-openembedded/meta-multimedia/recipes-multimedia/mycroft/files/0001-Remove-python-venv.patch
@@ -0,0 +1,194 @@
+From 07fce2101d83b5334de78e661ba0361c2874ebdf 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/7] 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 | 39 ---------------------------------------
+ start-mycroft.sh | 13 -------------
+ venv-activate.sh | 44 +-------------------------------------------
+ 3 files changed, 1 insertion(+), 95 deletions(-)
+
+diff --git a/dev_setup.sh b/dev_setup.sh
+index cf81ed25f0f..99a44bfd8a7 100755
+--- a/dev_setup.sh
++++ b/dev_setup.sh
+@@ -338,18 +338,6 @@ ${YELLOW}Make sure to manually install:$BLUE git python3 python-setuptools pytho
+ 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
+@@ -383,17 +371,6 @@ 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
+ HOOK_FILE='./.git/hooks/pre-commit'
+ if [[ -n $INSTALL_PRECOMMIT_HOOK ]] || grep -q 'MYCROFT DEV SETUP' $HOOK_FILE; then
+@@ -408,22 +385,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 0f88430982e..3aed2f189d4 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 ${_params}
+ 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.23.0
+
diff --git a/external/meta-openembedded/meta-multimedia/recipes-multimedia/mycroft/files/0002-dev_setup.sh-Remove-the-git-dependency.patch b/external/meta-openembedded/meta-multimedia/recipes-multimedia/mycroft/files/0002-dev_setup.sh-Remove-the-git-dependency.patch
new file mode 100644
index 00000000..637854fd
--- /dev/null
+++ b/external/meta-openembedded/meta-multimedia/recipes-multimedia/mycroft/files/0002-dev_setup.sh-Remove-the-git-dependency.patch
@@ -0,0 +1,48 @@
+From 88696037af52d6a7f57bc0fb82598de1a25365cc Mon Sep 17 00:00:00 2001
+From: Alistair Francis <alistair.francis@wdc.com>
+Date: Fri, 29 Mar 2019 16:09:57 -0700
+Subject: [PATCH 2/7] dev_setup.sh: Remove the git dependency
+
+Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
+Upstream-Status: Inappropriate [embedded specific]
+---
+ dev_setup.sh | 16 ----------------
+ 1 file changed, 16 deletions(-)
+
+diff --git a/dev_setup.sh b/dev_setup.sh
+index 99a44bfd8a7..672b27080c2 100755
+--- a/dev_setup.sh
++++ b/dev_setup.sh
+@@ -340,10 +340,6 @@ ${YELLOW}Make sure to manually install:$BLUE git python3 python-setuptools pytho
+
+ install_deps
+
+-# Configure to use the standard commit template for
+-# this repo only.
+-git config commit.template .gitmessage
+-
+ # Check whether to build mimic (it takes a really long time!)
+ build_mimic='n'
+ if [[ $opt_forcemimicbuild == true ]] ; then
+@@ -371,18 +367,6 @@ else
+ fi
+ fi
+
+-# Install pep8 pre-commit hook
+-HOOK_FILE='./.git/hooks/pre-commit'
+-if [[ -n $INSTALL_PRECOMMIT_HOOK ]] || grep -q 'MYCROFT DEV SETUP' $HOOK_FILE; then
+- if [[ ! -f $HOOK_FILE ]] || grep -q 'MYCROFT DEV SETUP' $HOOK_FILE; then
+- echo 'Installing PEP8 check as precommit-hook'
+- echo "#! $(which python)" > $HOOK_FILE
+- echo '# MYCROFT DEV SETUP' >> $HOOK_FILE
+- cat ./scripts/pre-commit >> $HOOK_FILE
+- chmod +x $HOOK_FILE
+- fi
+-fi
+-
+ PYTHON=$(python -c "import sys;print('python{}.{}'.format(sys.version_info[0], sys.version_info[1]))")
+
+ # install required python modules
+--
+2.23.0
+
diff --git a/external/meta-openembedded/meta-multimedia/recipes-multimedia/mycroft/files/0003-dev_setup.sh-Remove-the-TERM-dependency.patch b/external/meta-openembedded/meta-multimedia/recipes-multimedia/mycroft/files/0003-dev_setup.sh-Remove-the-TERM-dependency.patch
new file mode 100644
index 00000000..d803f526
--- /dev/null
+++ b/external/meta-openembedded/meta-multimedia/recipes-multimedia/mycroft/files/0003-dev_setup.sh-Remove-the-TERM-dependency.patch
@@ -0,0 +1,37 @@
+From 5ef52cdea278a1dff966a912549cb6708f2cb699 Mon Sep 17 00:00:00 2001
+From: Alistair Francis <alistair.francis@wdc.com>
+Date: Tue, 17 Sep 2019 11:31:47 -0700
+Subject: [PATCH 3/7] dev_setup.sh: Remove the TERM dependency
+
+Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
+Upstream-Status: Inappropriate [embedded specific]
+---
+ dev_setup.sh | 12 ------------
+ 1 file changed, 12 deletions(-)
+
+diff --git a/dev_setup.sh b/dev_setup.sh
+index 672b27080c2..72f734f36bf 100755
+--- a/dev_setup.sh
++++ b/dev_setup.sh
+@@ -115,18 +115,6 @@ function get_YN() {
+ done
+ }
+
+-# If tput is available and can handle multiple colors
+-if found_exe tput ; then
+- if [[ $(tput colors) != "-1" ]]; then
+- GREEN=$(tput setaf 2)
+- BLUE=$(tput setaf 4)
+- CYAN=$(tput setaf 6)
+- YELLOW=$(tput setaf 3)
+- RESET=$(tput sgr0)
+- HIGHLIGHT=$YELLOW
+- fi
+-fi
+-
+ # Run a setup wizard the very first time that guides the user through some decisions
+ if [[ ! -f .dev_opts.json && -z $CI ]] ; then
+ echo "
+--
+2.23.0
+
diff --git a/external/meta-openembedded/meta-multimedia/recipes-multimedia/mycroft/files/0004-dev_setup.sh-Ignore-missing-package-manager.patch b/external/meta-openembedded/meta-multimedia/recipes-multimedia/mycroft/files/0004-dev_setup.sh-Ignore-missing-package-manager.patch
new file mode 100644
index 00000000..d2dc179c
--- /dev/null
+++ b/external/meta-openembedded/meta-multimedia/recipes-multimedia/mycroft/files/0004-dev_setup.sh-Ignore-missing-package-manager.patch
@@ -0,0 +1,31 @@
+From e3b6ca995caca22e65d012a54bc2aeb08eb7e9d4 Mon Sep 17 00:00:00 2001
+From: Alistair Francis <alistair.francis@wdc.com>
+Date: Tue, 15 Oct 2019 17:09:06 -0700
+Subject: [PATCH 4/7] dev_setup.sh: Ignore missing package manager
+
+Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
+Upstream-Status: Inappropriate [embedded specific]
+---
+ dev_setup.sh | 6 ------
+ 1 file changed, 6 deletions(-)
+
+diff --git a/dev_setup.sh b/dev_setup.sh
+index 72f734f36bf..0c8e11b8170 100755
+--- a/dev_setup.sh
++++ b/dev_setup.sh
+@@ -317,12 +317,6 @@ Please review the following package changes carefully."
+ echo -e "${YELLOW}Could not find package manager
+ ${YELLOW}Make sure to manually install:$BLUE git python3 python-setuptools python-venv pygobject libtool libffi libjpg openssl autoconf bison swig glib2.0 portaudio19 mpg123 flac curl fann g++ jq\n$RESET"
+
+- echo 'Warning: Failed to install all dependencies. Continue? y/N'
+- read -n1 continue
+- if [[ $continue != 'y' ]] ; then
+- exit 1
+- fi
+-
+ fi
+ }
+
+--
+2.23.0
+
diff --git a/external/meta-openembedded/meta-multimedia/recipes-multimedia/mycroft/files/0005-pip-requirements-Don-t-install-requirements-with-pip.patch b/external/meta-openembedded/meta-multimedia/recipes-multimedia/mycroft/files/0005-pip-requirements-Don-t-install-requirements-with-pip.patch
new file mode 100644
index 00000000..7f63ea13
--- /dev/null
+++ b/external/meta-openembedded/meta-multimedia/recipes-multimedia/mycroft/files/0005-pip-requirements-Don-t-install-requirements-with-pip.patch
@@ -0,0 +1,103 @@
+From 04b14c4569309f1a433d955773aeb8a3607a1360 Mon Sep 17 00:00:00 2001
+From: Alistair Francis <alistair.francis@wdc.com>
+Date: Tue, 19 Mar 2019 13:32:54 -0700
+Subject: [PATCH 5/7] pip requirements: Don't install requirements with pip
+
+Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
+Upstream-Status: Inappropriate [embedded specific]
+---
+ dev_setup.sh | 15 +--------------
+ requirements.txt | 36 ------------------------------------
+ test-requirements.txt | 7 -------
+ 3 files changed, 1 insertion(+), 57 deletions(-)
+ delete mode 100644 requirements.txt
+ delete mode 100644 test-requirements.txt
+
+diff --git a/dev_setup.sh b/dev_setup.sh
+index 0c8e11b8170..be4a19de0c3 100755
+--- a/dev_setup.sh
++++ b/dev_setup.sh
+@@ -351,19 +351,6 @@ fi
+
+ PYTHON=$(python -c "import sys;print('python{}.{}'.format(sys.version_info[0], sys.version_info[1]))")
+
+-# install required python modules
+-if ! pip install -r requirements.txt ; then
+- echo 'Warning: Failed to install all requirements. Continue? y/N'
+- read -n1 continue
+- if [[ $continue != 'y' ]] ; then
+- exit 1
+- fi
+-fi
+-
+-if ! pip install -r test-requirements.txt ; then
+- echo "Warning test requirements wasn't installed, Note: normal operation should still work fine..."
+-fi
+-
+ SYSMEM=$(free | awk '/^Mem:/ { print $2 }')
+ MAXCORES=$(($SYSMEM / 512000))
+ MINCORES=1
+@@ -420,4 +407,4 @@ if [[ ! -w /var/log/mycroft/ ]] ; then
+ fi
+
+ #Store a fingerprint of setup
+-md5sum requirements.txt test-requirements.txt dev_setup.sh > .installed
++md5sum dev_setup.sh > .installed
+diff --git a/requirements.txt b/requirements.txt
+deleted file mode 100644
+index 0140d5465dc..00000000000
+--- a/requirements.txt
++++ /dev/null
+@@ -1,36 +0,0 @@
+-six==1.10.0
+-cryptography==2.6.1
+-requests==2.20.0
+-gTTS==2.0.3
+-gTTS-token==1.1.3
+-PyAudio==0.2.11
+-pyee==5.0.0
+-SpeechRecognition==3.8.1
+-tornado==4.5.3
+-websocket-client==0.54.0
+-requests-futures==0.9.5
+-pyalsaaudio==0.8.2
+-xmlrunner==1.7.7
+-pyserial==3.0
+-psutil==5.2.1
+-pocketsphinx==0.1.0
+-inflection==0.3.1
+-pillow==4.1.1
+-python-dateutil==2.6.0
+-pychromecast==3.2.2
+-python-vlc==1.1.2
+-google-api-python-client==1.6.4
+-fasteners==0.14.1
+-PyYAML==3.13
+-
+-msm==0.8.3
+-msk==0.3.13
+-adapt-parser==0.3.3
+-padatious==0.4.6
+-fann2==1.0.7
+-padaos==0.1.9
+-precise-runner==0.2.1
+-petact==0.1.2
+-
+-# dev setup tools
+-pep8==1.7.0
+diff --git a/test-requirements.txt b/test-requirements.txt
+deleted file mode 100644
+index fd129e3f66d..00000000000
+--- a/test-requirements.txt
++++ /dev/null
+@@ -1,7 +0,0 @@
+-pycodestyle===2.5.0
+-coveralls==1.5.0
+-pytest==3.5.0
+-pytest-cov==2.5.1
+-cov-core==1.15.0
+-sphinx==1.8.2
+-sphinx-rtd-theme==0.4.2
+--
+2.23.0
+
diff --git a/external/meta-openembedded/meta-multimedia/recipes-multimedia/mycroft/files/0006-Use-python3-and-pip3-instead-of-python-and-pip.patch b/external/meta-openembedded/meta-multimedia/recipes-multimedia/mycroft/files/0006-Use-python3-and-pip3-instead-of-python-and-pip.patch
new file mode 100644
index 00000000..6f1f6f78
--- /dev/null
+++ b/external/meta-openembedded/meta-multimedia/recipes-multimedia/mycroft/files/0006-Use-python3-and-pip3-instead-of-python-and-pip.patch
@@ -0,0 +1,121 @@
+From 86a1d18d96f827baa0c1029c85a53fc89d436e17 Mon Sep 17 00:00:00 2001
+From: Alistair Francis <alistair.francis@wdc.com>
+Date: Tue, 19 Mar 2019 13:38:44 -0700
+Subject: [PATCH 6/7] Use python3 and pip3 instead of python and pip
+
+Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
+Upstream-Status: Inappropriate [embedded specific]
+---
+ bin/mycroft-cli-client | 2 +-
+ bin/mycroft-pip | 2 +-
+ bin/mycroft-say-to | 2 +-
+ bin/mycroft-skill-testrunner | 4 ++--
+ bin/mycroft-speak | 2 +-
+ dev_setup.sh | 6 +++---
+ scripts/install-pocketsphinx.sh | 2 +-
+ 7 files changed, 10 insertions(+), 10 deletions(-)
+
+diff --git a/bin/mycroft-cli-client b/bin/mycroft-cli-client
+index f40a316e3f6..de2040d9e67 100755
+--- a/bin/mycroft-cli-client
++++ b/bin/mycroft-cli-client
+@@ -21,4 +21,4 @@ DIR="$( dirname "$SOURCE" )"
+ source "$DIR/../venv-activate.sh" -q
+
+ # Invoke the Command Line Interface
+-python -m mycroft.client.text $@
++python3 -m mycroft.client.text $@
+diff --git a/bin/mycroft-pip b/bin/mycroft-pip
+index a42b16b847a..81bd5bfb3cf 100755
+--- a/bin/mycroft-pip
++++ b/bin/mycroft-pip
+@@ -21,4 +21,4 @@ DIR="$( dirname "$SOURCE" )"
+ source "$DIR/../venv-activate.sh" -q
+
+ # Install pip packages within the Mycroft venv
+-pip $@
+\ No newline at end of file
++pip3 $@
+\ No newline at end of file
+diff --git a/bin/mycroft-say-to b/bin/mycroft-say-to
+index 4ae597f3062..8bb4039996d 100755
+--- a/bin/mycroft-say-to
++++ b/bin/mycroft-say-to
+@@ -26,4 +26,4 @@ set -- "${1:-$(</dev/stdin)}" "${@:2}"
+
+ # Send a message to be spoken
+ data="$@"
+-output=$(python -m mycroft.messagebus.send "recognizer_loop:utterance" "{\"utterances\": [\"$data\"], \"lang\": \"en-us\"}")
++output=$(python3 -m mycroft.messagebus.send "recognizer_loop:utterance" "{\"utterances\": [\"$data\"], \"lang\": \"en-us\"}")
+diff --git a/bin/mycroft-skill-testrunner b/bin/mycroft-skill-testrunner
+index 9699a4d138f..282f5ca65b0 100755
+--- a/bin/mycroft-skill-testrunner
++++ b/bin/mycroft-skill-testrunner
+@@ -22,7 +22,7 @@ source "$DIR/../venv-activate.sh" -q
+
+ # Invoke the individual skill tester
+ if [ "$#" -eq 0 ] ; then
+- python -m test.integrationtests.skills.runner .
++ python3 -m test.integrationtests.skills.runner .
+ else
+- python -m test.integrationtests.skills.runner $@
++ python3 -m test.integrationtests.skills.runner $@
+ fi
+\ No newline at end of file
+diff --git a/bin/mycroft-speak b/bin/mycroft-speak
+index d80f0e75b13..9448ea3400f 100755
+--- a/bin/mycroft-speak
++++ b/bin/mycroft-speak
+@@ -24,4 +24,4 @@ source "$DIR/../venv-activate.sh" -q
+
+ # Send a message to be spoken
+ data="$@"
+-output=$(python -m mycroft.messagebus.send "speak" "{\"utterance\": \"$data\"}")
++output=$(python3 -m mycroft.messagebus.send "speak" "{\"utterance\": \"$data\"}")
+diff --git a/dev_setup.sh b/dev_setup.sh
+index be4a19de0c3..2d9e17ddfd6 100755
+--- a/dev_setup.sh
++++ b/dev_setup.sh
+@@ -48,7 +48,7 @@ param=''
+
+ for var in "$@" ; do
+ # Check if parameter should be read
+- if [[ $param == 'python' ]] ; then
++ if [[ $param == 'python3' ]] ; then
+ opt_python=$var
+ param=""
+ continue
+@@ -75,7 +75,7 @@ for var in "$@" ; do
+ opt_skipmimicbuild=true
+ fi
+ if [[ $var == '-p' || $var == '--python' ]] ; then
+- param='python'
++ param='python3'
+ fi
+ done
+
+@@ -349,7 +349,7 @@ else
+ fi
+ fi
+
+-PYTHON=$(python -c "import sys;print('python{}.{}'.format(sys.version_info[0], sys.version_info[1]))")
++PYTHON=$(python3 -c "import sys;print('python{}.{}'.format(sys.version_info[0], sys.version_info[1]))")
+
+ SYSMEM=$(free | awk '/^Mem:/ { print $2 }')
+ MAXCORES=$(($SYSMEM / 512000))
+diff --git a/scripts/install-pocketsphinx.sh b/scripts/install-pocketsphinx.sh
+index 44d329b7985..d45f5c22747 100755
+--- a/scripts/install-pocketsphinx.sh
++++ b/scripts/install-pocketsphinx.sh
+@@ -47,7 +47,7 @@ function install_pocketsphinx() {
+
+ # build and install pocketsphinx python bindings
+ cd ${TOP}/pocketsphinx-python
+- python setup.py install
++ python3 setup.py install
+ }
+
+ if [ "$1" = "-q" ] ; then
+--
+2.23.0
+
diff --git a/external/meta-openembedded/meta-multimedia/recipes-multimedia/mycroft/files/0007-mycroft.conf-Use-pocketsphinx-by-default.patch b/external/meta-openembedded/meta-multimedia/recipes-multimedia/mycroft/files/0007-mycroft.conf-Use-pocketsphinx-by-default.patch
new file mode 100644
index 00000000..574bda14
--- /dev/null
+++ b/external/meta-openembedded/meta-multimedia/recipes-multimedia/mycroft/files/0007-mycroft.conf-Use-pocketsphinx-by-default.patch
@@ -0,0 +1,30 @@
+From b48b3d240cb0fa5e76aa5daf578e51bb8126431d Mon Sep 17 00:00:00 2001
+From: Alistair Francis <alistair.francis@wdc.com>
+Date: Wed, 16 Oct 2019 09:18:39 -0700
+Subject: [PATCH 7/7] mycroft.conf: Use pocketsphinx by default
+
+precise only works on certain architectures, to make Mycroft more
+versitle use pocketsphinx as it is architecture independent.
+
+Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
+Upstream-Status: Inappropriate [embedded specific]
+---
+ mycroft/configuration/mycroft.conf | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/mycroft/configuration/mycroft.conf b/mycroft/configuration/mycroft.conf
+index 1d0be0dcd2b..d2dc75dac44 100644
+--- a/mycroft/configuration/mycroft.conf
++++ b/mycroft/configuration/mycroft.conf
+@@ -196,7 +196,7 @@
+ // Hotword configurations
+ "hotwords": {
+ "hey mycroft": {
+- "module": "precise",
++ "module": "pocketsphinx",
+ "phonemes": "HH EY . M AY K R AO F T",
+ "threshold": 1e-90,
+ "lang": "en-us"
+--
+2.23.0
+
diff --git a/external/meta-openembedded/meta-multimedia/recipes-multimedia/mycroft/files/dev_opts.json b/external/meta-openembedded/meta-multimedia/recipes-multimedia/mycroft/files/dev_opts.json
new file mode 100644
index 00000000..5ed85faf
--- /dev/null
+++ b/external/meta-openembedded/meta-multimedia/recipes-multimedia/mycroft/files/dev_opts.json
@@ -0,0 +1 @@
+{"use_branch": "dev", "auto_update": false} \ No newline at end of file
diff --git a/external/meta-openembedded/meta-multimedia/recipes-multimedia/mycroft/files/mycroft-setup.service b/external/meta-openembedded/meta-multimedia/recipes-multimedia/mycroft/files/mycroft-setup.service
new file mode 100644
index 00000000..4b4bcdd7
--- /dev/null
+++ b/external/meta-openembedded/meta-multimedia/recipes-multimedia/mycroft/files/mycroft-setup.service
@@ -0,0 +1,12 @@
+[Unit]
+Description=Mycroft Setup
+DefaultDependencies=no
+After=systemd-user-sessions.service
+
+[Service]
+Type=oneshot
+ExecStart=cp -rf @LIBDIR@/mycroft /var/
+ExecStart=/var/mycroft/dev_setup.sh --allow-root
+
+[Install]
+WantedBy=multi-user.target
diff --git a/external/meta-openembedded/meta-multimedia/recipes-multimedia/mycroft/files/mycroft.service b/external/meta-openembedded/meta-multimedia/recipes-multimedia/mycroft/files/mycroft.service
new file mode 100644
index 00000000..c7f477f1
--- /dev/null
+++ b/external/meta-openembedded/meta-multimedia/recipes-multimedia/mycroft/files/mycroft.service
@@ -0,0 +1,14 @@
+[Unit]
+Description=Mycroft
+RequiresMountsFor=/var
+After=mycroft-setup.service
+
+[Service]
+Type=forking
+WorkingDirectory=/var/mycroft
+ExecStartPre=mkdir -p /var/log/mycroft
+ExecStart=/var/mycroft/start-mycroft.sh all
+ExecStop=/var/mycroft/stop-mycroft.sh all
+
+[Install]
+WantedBy=multi-user.target
diff --git a/external/meta-openembedded/meta-multimedia/recipes-multimedia/mycroft/mycroft_19.8.1.bb b/external/meta-openembedded/meta-multimedia/recipes-multimedia/mycroft/mycroft_19.8.1.bb
new file mode 100644
index 00000000..62d1ad7f
--- /dev/null
+++ b/external/meta-openembedded/meta-multimedia/recipes-multimedia/mycroft/mycroft_19.8.1.bb
@@ -0,0 +1,87 @@
+SUMMARY = "Mycroft is a hackable open source voice assistant."
+DESCRIPTION = "Mycroft is the world’s first open source assistant. "
+HOMEPAGE = "https://mycroft.ai/"
+SECTION = "multimedia"
+
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE.md;md5=79aa497b11564d1d419ee889e7b498f6"
+
+SRCREV = "913f29d3d550637934f9abf43a097eb2c30d76fc"
+SRC_URI = "git://github.com/MycroftAI/mycroft-core.git;branch=master \
+ file://0001-Remove-python-venv.patch \
+ file://0002-dev_setup.sh-Remove-the-git-dependency.patch \
+ file://0003-dev_setup.sh-Remove-the-TERM-dependency.patch \
+ file://0004-dev_setup.sh-Ignore-missing-package-manager.patch \
+ file://0005-pip-requirements-Don-t-install-requirements-with-pip.patch \
+ file://0006-Use-python3-and-pip3-instead-of-python-and-pip.patch \
+ file://0007-mycroft.conf-Use-pocketsphinx-by-default.patch \
+ file://dev_opts.json \
+ file://mycroft-setup.service \
+ file://mycroft.service \
+ "
+
+S = "${WORKDIR}/git"
+
+inherit systemd
+
+# Mycroft installs itself on the host
+# Just copy the setup files to the rootfs
+# The mycroft-setup service will copy the files to /var/ where we run them from
+do_install() {
+ install -d ${D}${libdir}/
+ cp -r ${B} ${D}${libdir}/mycroft
+ rm -r ${D}${libdir}/mycroft/.git
+
+ # Install the dev opts so it doesn't ask us on initial setup.
+ install -m 644 ${WORKDIR}/dev_opts.json ${D}${libdir}/mycroft/.dev_opts.json
+
+ if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then
+ install -d ${D}${systemd_unitdir}/system
+ install -m 644 ${WORKDIR}/mycroft-setup.service ${D}${systemd_unitdir}/system
+ sed -i -e 's,@LIBDIR@,${libdir},g' ${D}${systemd_unitdir}/system/mycroft-setup.service
+ fi
+
+ if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then
+ install -d ${D}${systemd_unitdir}/system
+ install -m 644 ${WORKDIR}/mycroft.service ${D}${systemd_unitdir}/system
+ sed -i -e 's,@LIBDIR@,${libdir},g' ${D}${systemd_unitdir}/system/mycroft.service
+ fi
+}
+
+FILES_${PN} += "${libdir}/mycroft"
+
+RDEPENDS_${PN} = "python3"
+
+RDEPENDS_${PN} += "python3-requests python3-pillow \
+ python3-tornado python3-pyyaml \
+ python3-pyalsaaudio python3-inflection \
+ python3-pyserial python3-psutil \
+ python3-pyaudio python3-fann2 \
+ python3-pocketsphinx \
+ python3-xxhash python3-pako \
+ python3-six python3-cryptography \
+ python3-requests-futures \
+ python3-xmlrunner python3-fasteners \
+ python3-python-vlc \
+ python3-padatious python3-padaos \
+ python3-petact python3-precise-runner \
+ python3-pulsectl python3-pychromecast \
+ python3-msm python3-msk \
+ python3-websocket-client \
+ python3-google-api-python-client \
+ "
+
+# These packages need to be installed on the target
+# python3-speechrecognition python3-pyee==5.0.0 python3-six==1.10.0
+# python3-websocket-client==0.54.0 python3-gtts python3-gtts-token
+# python3-python-dateutil python3-adapt-parser python3-lazy
+
+# Mycroft uses Alsa, PulseAudio and Flac
+RDEPENDS_${PN} += "alsa-utils alsa-plugins alsa-tools"
+RDEPENDS_${PN} += "pulseaudio pulseaudio-misc pulseaudio-server"
+RDEPENDS_${PN} += "flac mpg123"
+
+# Mycroft can do this itself on the target, but it's quicker to do it here
+RDEPENDS_${PN} += "mimic"
+
+SYSTEMD_SERVICE_${PN} = "mycroft-setup.service mycroft.service"