1
1
mirror of https://github.com/OpenVoiceOS/OpenVoiceOS synced 2025-03-06 12:37:54 +01:00

Merge remote-tracking branch 'origin/develop' into feature/wifi-setup

This commit is contained in:
j1nx 2019-09-16 13:57:24 +02:00
commit bf24e48ffc
272 changed files with 3394 additions and 764 deletions

2
.gitmodules vendored
View File

@ -1,4 +1,4 @@
[submodule "buildroot"]
path = buildroot
url = https://github.com/buildroot/buildroot.git
branch = 2018.08.x
branch = 2019.05.x

View File

@ -1,4 +1,4 @@
# <img src='https://rawgithub.com/FortAwesome/Font-Awesome/master/advanced-options/raw-svg/solid/cogs.svg' card_color='#22a7f0' width='50' height='50' style='vertical-align:bottom'/> MycroftOS
# <img src='https://camo.githubusercontent.com/48b782bbddb51b97cf2971fda5817080075f7799/68747470733a2f2f7261772e6769746861636b2e636f6d2f466f7274417765736f6d652f466f6e742d417765736f6d652f6d61737465722f737667732f736f6c69642f636f67732e737667' width='50' height='50' style='vertical-align:bottom'/> MycroftOS
MycroftOS is a bare minimal linux OS based on Buildroot to run the Mycroft A.I. software stack on embedded devices.
The software stack of Mycroft creates a hackable open source voice assistant.
@ -7,7 +7,7 @@ More information about the Mycroft A.I. software stack at https://mycroft.ai
## System.
- Linux kernel 4.14 (LT)
- Buildroot 2018.08.x
- Buildroot 2019.05.x
- Mycroft 18.08.x
- Raspberry Pi 3B (initial development hardware)
@ -27,27 +27,13 @@ More information about the Mycroft A.I. software stack at https://mycroft.ai
At this moment development is in very early stages and focussed on the Raspberry Pi 3B. As soon as an initial first workable version
is created, other hardware might be added.
### Getting the code.
First, get the code on your system! The simplest method is via git.
- cd ~/
- git clone --recurse-submodules https://github.com/j1nx/MycroftOS.git
- cd MycroftOS
If this is the very first time you are going to build an image, you need to execute the following command once;
- ./scripts/br-patches.sh
### Building the code.
Then we can build the image(s) by running the following command;
- ./scripts/build.sh
(At this moment only one image get's build. Namely the one for RPi3B. Later on in time this section will get expanded with other hardware such as, the other Raspberry Pi's, perhaps Mark-1 and/or Mark-2 and further down the road for the new Rockchip RK3399Pro SoC with RK1808 NPU
... More building instructions will follow soon ...
## Documentation.
More information and instructions can be found within the "documentation" folder.
## Credits
Mycroft AI (@MycroftAI)
Mycroft AI (@MycroftAI)<br>
Buildroot (@buildroot)
Inspired by;
HassOS (@home-assistant)
### Inspired by;
HassOS (@home-assistant)<br>
Recalbox (Gitlab - @recalbox)

@ -1 +1 @@
Subproject commit 507020139190aaf44793c3c901321d23ba476c13
Subproject commit 93d8af974346d95e66f5582e420dd0fb35d32916

View File

@ -1,3 +1,7 @@
menu "Mycroft A.I. Personal Assistant"
source "$BR2_EXTERNAL_MYCROFTOS_PATH/package/python-mycroft/Config.in"
source "$BR2_EXTERNAL_MYCROFTOS_PATH/package/mycroft-service/Config.in"
source "$BR2_EXTERNAL_MYCROFTOS_PATH/package/mycroft-splash/Config.in"
menu "Additional drivers, libraries and/or applications"
source "$BR2_EXTERNAL_MYCROFTOS_PATH/package/fann/Config.in"
source "$BR2_EXTERNAL_MYCROFTOS_PATH/package/nodogsplash/Config.in"
@ -5,9 +9,11 @@ menu "Additional drivers, libraries and/or applications"
endmenu
menu "Additional external python modules"
source "$BR2_EXTERNAL_MYCROFTOS_PATH/package/python-adapt-parser/Config.in"
source "$BR2_EXTERNAL_MYCROFTOS_PATH/package/python-appdirs/Config.in"
source "$BR2_EXTERNAL_MYCROFTOS_PATH/package/python-bs4/Config.in"
source "$BR2_EXTERNAL_MYCROFTOS_PATH/package/python-cachetools/Config.in"
source "$BR2_EXTERNAL_MYCROFTOS_PATH/package/python-casttube/Config.in"
source "$BR2_EXTERNAL_MYCROFTOS_PATH/package/python-colorzero/Config.in"
source "$BR2_EXTERNAL_MYCROFTOS_PATH/package/python-coverage/Config.in"
source "$BR2_EXTERNAL_MYCROFTOS_PATH/package/python-coveralls/Config.in"
source "$BR2_EXTERNAL_MYCROFTOS_PATH/package/python-deprecated/Config.in"
@ -19,43 +25,40 @@ menu "Additional external python modules"
source "$BR2_EXTERNAL_MYCROFTOS_PATH/package/python-google-api-python-client/Config.in"
source "$BR2_EXTERNAL_MYCROFTOS_PATH/package/python-google-auth-httplib2/Config.in"
source "$BR2_EXTERNAL_MYCROFTOS_PATH/package/python-google-auth/Config.in"
source "$BR2_EXTERNAL_MYCROFTOS_PATH/package/python-gpiozero/Config.in"
source "$BR2_EXTERNAL_MYCROFTOS_PATH/package/python-gtts/Config.in"
source "$BR2_EXTERNAL_MYCROFTOS_PATH/package/python-gtts_token/Config.in"
source "$BR2_EXTERNAL_MYCROFTOS_PATH/package/python-humanhash3/Config.in"
source "$BR2_EXTERNAL_MYCROFTOS_PATH/package/python-ifaddr/Config.in"
source "$BR2_EXTERNAL_MYCROFTOS_PATH/package/python-inflection/Config.in"
source "$BR2_EXTERNAL_MYCROFTOS_PATH/package/python-lazy/Config.in"
source "$BR2_EXTERNAL_MYCROFTOS_PATH/package/python-monotonic/Config.in"
source "$BR2_EXTERNAL_MYCROFTOS_PATH/package/python-msk/Config.in"
source "$BR2_EXTERNAL_MYCROFTOS_PATH/package/python-msm/Config.in"
source "$BR2_EXTERNAL_MYCROFTOS_PATH/package/python-mycroft/Config.in"
source "$BR2_EXTERNAL_MYCROFTOS_PATH/package/python-oauth2client/Config.in"
source "$BR2_EXTERNAL_MYCROFTOS_PATH/package/python-olefile/Config.in"
source "$BR2_EXTERNAL_MYCROFTOS_PATH/package/python-padaos/Config.in"
source "$BR2_EXTERNAL_MYCROFTOS_PATH/package/python-padatious/Config.in"
source "$BR2_EXTERNAL_MYCROFTOS_PATH/package/python-pako/Config.in"
source "$BR2_EXTERNAL_MYCROFTOS_PATH/package/python-pep8/Config.in"
source "$BR2_EXTERNAL_MYCROFTOS_PATH/package/python-petact/Config.in"
source "$BR2_EXTERNAL_MYCROFTOS_PATH/package/python-pip/Config.in"
source "$BR2_EXTERNAL_MYCROFTOS_PATH/package/python-pocketsphinx/Config.in"
source "$BR2_EXTERNAL_MYCROFTOS_PATH/package/python-precise-runner/Config.in"
source "$BR2_EXTERNAL_MYCROFTOS_PATH/package/python-pulsectl/Config.in"
source "$BR2_EXTERNAL_MYCROFTOS_PATH/package/python-pyasn1-modules/Config.in"
source "$BR2_EXTERNAL_MYCROFTOS_PATH/package/python-pyasn1/Config.in"
source "$BR2_EXTERNAL_MYCROFTOS_PATH/package/python-pyaudio/Config.in"
source "$BR2_EXTERNAL_MYCROFTOS_PATH/package/python-pychromecast/Config.in"
source "$BR2_EXTERNAL_MYCROFTOS_PATH/package/python-pyee/Config.in"
source "$BR2_EXTERNAL_MYCROFTOS_PATH/package/python-pygithub/Config.in"
source "$BR2_EXTERNAL_MYCROFTOS_PATH/package/python-pyjwt/Config.in"
source "$BR2_EXTERNAL_MYCROFTOS_PATH/package/python-pymplayer/Config.in"
source "$BR2_EXTERNAL_MYCROFTOS_PATH/package/python-requests-futures/Config.in"
source "$BR2_EXTERNAL_MYCROFTOS_PATH/package/python-rsa/Config.in"
source "$BR2_EXTERNAL_MYCROFTOS_PATH/package/python-sgmllib3k/Config.in"
source "$BR2_EXTERNAL_MYCROFTOS_PATH/package/python-smmap2/Config.in"
source "$BR2_EXTERNAL_MYCROFTOS_PATH/package/python-source/Config.in"
source "$BR2_EXTERNAL_MYCROFTOS_PATH/package/python-speechrecognition/Config.in"
source "$BR2_EXTERNAL_MYCROFTOS_PATH/package/python-typing/Config.in"
source "$BR2_EXTERNAL_MYCROFTOS_PATH/package/python-uritemplate/Config.in"
source "$BR2_EXTERNAL_MYCROFTOS_PATH/package/python-vlc/Config.in"
source "$BR2_EXTERNAL_MYCROFTOS_PATH/package/python-wrapt/Config.in"
source "$BR2_EXTERNAL_MYCROFTOS_PATH/package/python-xmlrunner/Config.in"
source "$BR2_EXTERNAL_MYCROFTOS_PATH/package/python-xxhash/Config.in"
source "$BR2_EXTERNAL_MYCROFTOS_PATH/package/python-zeroconf/Config.in"
endmenu
endmenu

View File

@ -1 +1 @@
root=/dev/mmcblk0p2 console=tty3 consoleblank=0 loglevel=0 vt.global_cursor_default=0 logo.nologo rootwait noswap quiet
root=/dev/mmcblk0p2 console=ttyAMA0,115200 consoleblank=0 loglevel=0 vt.global_cursor_default=0 logo.nologo rootwait noswap quiet

View File

@ -34,3 +34,4 @@ disable_splash=1
dtparam=i2c_arm=on
dtoverlay=i2s-mmap
dtparam=i2s=on
dtparam=spi=on

View File

@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
# Busybox version: 1.29.2
# Sun Nov 4 13:10:23 2018
# Wed Nov 21 16:27:40 2018
#
CONFIG_HAVE_DOT_CONFIG=y
@ -106,15 +106,15 @@ CONFIG_FEATURE_EDITING_WINCH=y
# CONFIG_FEATURE_EDITING_ASK_TERMINAL is not set
CONFIG_LOCALE_SUPPORT=y
CONFIG_UNICODE_SUPPORT=y
# CONFIG_UNICODE_USING_LOCALE is not set
CONFIG_FEATURE_CHECK_UNICODE_IN_ENV=y
CONFIG_UNICODE_USING_LOCALE=y
# CONFIG_FEATURE_CHECK_UNICODE_IN_ENV is not set
CONFIG_SUBST_WCHAR=63
CONFIG_LAST_SUPPORTED_WCHAR=767
CONFIG_UNICODE_COMBINING_WCHARS=y
CONFIG_UNICODE_WIDE_WCHARS=y
# CONFIG_UNICODE_BIDI_SUPPORT is not set
# CONFIG_UNICODE_NEUTRAL_TABLE is not set
# CONFIG_UNICODE_PRESERVE_BROKEN is not set
CONFIG_UNICODE_PRESERVE_BROKEN=y
CONFIG_FEATURE_NON_POSIX_CP=y
# CONFIG_FEATURE_VERBOSE_CP_MESSAGE is not set
CONFIG_FEATURE_USE_SENDFILE=y

View File

@ -4,34 +4,33 @@ BR2_ARM_FPU_NEON_VFPV4=y
BR2_DL_DIR="../downloads"
BR2_CCACHE=y
BR2_CCACHE_DIR="../ccache"
BR2_OPTIMIZE_FAST=y
BR2_GLOBAL_PATCH_DIR="../buildroot-patches"
BR2_TOOLCHAIN_BUILDROOT_GLIBC=y
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_14=y
BR2_TOOLCHAIN_BUILDROOT_LOCALE=y
BR2_TOOLCHAIN_BUILDROOT_CXX=y
BR2_TOOLCHAIN_GLIBC_GCONV_LIBS_COPY=y
BR2_TARGET_GENERIC_HOSTNAME="MycroftOS"
BR2_TARGET_GENERIC_ISSUE="Welcome to MycroftOS"
BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV=y
BR2_INIT_SYSTEMD=y
BR2_TARGET_GENERIC_ROOT_PASSWD="mycroft"
BR2_SYSTEM_BIN_SH_BASH=y
# BR2_TARGET_GENERIC_GETTY is not set
BR2_SYSTEM_DHCP="eth0"
BR2_ENABLE_LOCALE_WHITELIST="C en_US en_US.UTF8"
BR2_GENERATE_LOCALE="en_US en_US.UTF-8"
BR2_TARGET_TZ_INFO=y
BR2_ROOTFS_OVERLAY="../buildroot-external/rootfs-overlay"
BR2_ROOTFS_POST_BUILD_SCRIPT="../buildroot-external/board/raspberrypi3/post-build.sh"
BR2_ROOTFS_POST_IMAGE_SCRIPT="../buildroot-external/board/raspberrypi3/post-image.sh"
# BR2_ENABLE_LOCALE_PURGE is not set
BR2_GENERATE_LOCALE="en_US.UTF-8"
BR2_ROOTFS_USERS_TABLES="$(BR2_EXTERNAL)/user_table.txt"
BR2_ROOTFS_OVERLAY="$(BR2_EXTERNAL)/rootfs-overlay"
BR2_ROOTFS_POST_BUILD_SCRIPT="$(BR2_EXTERNAL)/board/raspberrypi3/post-build.sh"
BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL)/board/raspberrypi3/post-image.sh"
BR2_ROOTFS_POST_SCRIPT_ARGS="--add-pi3-miniuart-bt-overlay"
BR2_LINUX_KERNEL=y
BR2_LINUX_KERNEL_CUSTOM_GIT=y
BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/raspberrypi/linux.git"
BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="8ec2a2d27dd3e3e32113445592f44ea974b21732"
BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="7688b39276ff9952df381d79de63b258e73971ce"
BR2_LINUX_KERNEL_DEFCONFIG="bcm2709"
BR2_LINUX_KERNEL_DTS_SUPPORT=y
BR2_LINUX_KERNEL_INTREE_DTS_NAME="bcm2710-rpi-3-b bcm2710-rpi-3-b-plus bcm2710-rpi-cm3"
BR2_PACKAGE_BUSYBOX_CONFIG="../buildroot-external/busybox.config"
BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y
BR2_PACKAGE_BUSYBOX_CONFIG="$(BR2_EXTERNAL)/busybox.config"
BR2_PACKAGE_BUSYBOX_INDIVIDUAL_BINARIES=y
BR2_PACKAGE_ALSA_UTILS=y
BR2_PACKAGE_ALSA_UTILS_ALSACONF=y
@ -58,6 +57,7 @@ BR2_PACKAGE_MIMIC_AUDIO_BACKEND_ALSA=y
BR2_PACKAGE_MPG123=y
BR2_PACKAGE_MPV=y
BR2_PACKAGE_PULSEAUDIO=y
BR2_PACKAGE_PULSEAUDIO_DAEMON=y
BR2_PACKAGE_VLC=y
BR2_PACKAGE_GZIP=y
BR2_PACKAGE_LZ4=y
@ -87,9 +87,9 @@ BR2_PACKAGE_RPI_WIFI_FIRMWARE=y
BR2_PACKAGE_DBUS_PYTHON=y
BR2_PACKAGE_KBD=y
BR2_PACKAGE_PARTED=y
BR2_PACKAGE_RPI_USERLAND=y
BR2_PACKAGE_SPI_TOOLS=y
BR2_PACKAGE_PYTHON3=y
BR2_PACKAGE_PYTHON3_PY_ONLY=y
BR2_PACKAGE_PYTHON3_PY_PYC=y
BR2_PACKAGE_PYTHON3_BZIP2=y
BR2_PACKAGE_PYTHON3_CODECSCJK=y
BR2_PACKAGE_PYTHON3_CURSES=y
@ -99,24 +99,28 @@ BR2_PACKAGE_PYTHON3_SQLITE=y
BR2_PACKAGE_PYTHON3_XZ=y
BR2_PACKAGE_PYTHON_ALSAAUDIO=y
BR2_PACKAGE_PYTHON_ARROW=y
BR2_PACKAGE_PYTHON_CFFI=y
BR2_PACKAGE_PYTHON_CONFIGSHELL_FB=y
BR2_PACKAGE_PYTHON_CRYPTOGRAPHY=y
BR2_PACKAGE_PYTHON_DAEMONIZE=y
BR2_PACKAGE_PYTHON_GOBJECT=y
BR2_PACKAGE_PYTHON_LXML=y
BR2_PACKAGE_PYTHON_NETADDR=y
BR2_PACKAGE_PYTHON_NETIFACES=y
BR2_PACKAGE_PYTHON_OAUTHLIB=y
BR2_PACKAGE_PYTHON_PILLOW=y
BR2_PACKAGE_PYTHON_PIP=y
BR2_PACKAGE_PYTHON_PSUTIL=y
BR2_PACKAGE_PYTHON_PYCLI=y
BR2_PACKAGE_PYTHON_PYCRYPTO=y
BR2_PACKAGE_PYTHON_PYJWT=y
BR2_PACKAGE_PYTHON_PYTZ=y
BR2_PACKAGE_PYTHON_PYUSB=y
BR2_PACKAGE_PYTHON_PYYAML=y
BR2_PACKAGE_PYTHON_SERIAL=y
BR2_PACKAGE_PYTHON_SPIDEV=y
BR2_PACKAGE_PYTHON_TEXTTABLE=y
BR2_PACKAGE_PYTHON_TORNADO=y
BR2_PACKAGE_PYTHON_WEBSOCKET_CLIENT=y
BR2_PACKAGE_PYTHON_WRAPT=y
BR2_PACKAGE_PORTAUDIO=y
BR2_PACKAGE_PORTAUDIO_OSS=y
BR2_PACKAGE_SPEEXDSP=y
@ -139,6 +143,7 @@ BR2_PACKAGE_LIBMPEG2_BINS=y
BR2_PACKAGE_LIBTHEORA=y
BR2_PACKAGE_LIBCURL=y
BR2_PACKAGE_CURL=y
BR2_PACKAGE_LIBTIRPC=y
BR2_PACKAGE_LIBFRIBIDI=y
BR2_PACKAGE_LIBUNISTRING=y
BR2_PACKAGE_NCURSES_WCHAR=y
@ -161,16 +166,15 @@ BR2_PACKAGE_WPA_SUPPLICANT_PASSPHRASE=y
BR2_PACKAGE_BASH_COMPLETION=y
BR2_PACKAGE_FILE=y
BR2_PACKAGE_SCREEN=y
BR2_PACKAGE_SUDO=y
BR2_PACKAGE_TIME=y
BR2_PACKAGE_WHICH=y
BR2_PACKAGE_HTOP=y
BR2_PACKAGE_START_STOP_DAEMON=y
BR2_PACKAGE_TAR=y
BR2_PACKAGE_UTIL_LINUX_FSCK=y
BR2_PACKAGE_UTIL_LINUX_HWCLOCK=y
BR2_PACKAGE_UTIL_LINUX_KILL=y
BR2_PACKAGE_UTIL_LINUX_MORE=y
BR2_PACKAGE_UTIL_LINUX_MOUNT=y
BR2_PACKAGE_NANO=y
BR2_PACKAGE_VIM=y
# BR2_PACKAGE_VIM_RUNTIME is not set
@ -181,35 +185,43 @@ BR2_TARGET_ROOTFS_EXT2_SIZE="1024M"
BR2_PACKAGE_HOST_DOSFSTOOLS=y
BR2_PACKAGE_HOST_GENIMAGE=y
BR2_PACKAGE_HOST_MTOOLS=y
BR2_PACKAGE_HOST_PYTHON_CYTHON=y
BR2_PACKAGE_HOST_PYTHON_LXML=y
BR2_PACKAGE_HOST_PYTHON_SIX=y
BR2_PACKAGE_HOST_PYTHON_XLRD=y
BR2_PACKAGE_PYTHON_MYCROFT=y
BR2_PACKAGE_MYCROFT_SERVICE=y
BR2_PACKAGE_MYCROFT_SPLASH=y
BR2_PACKAGE_FANN=y
BR2_PACKAGE_NODOGSPLASH=y
BR2_PACKAGE_RESPEAKER=y
BR2_PACKAGE_PYTHON_ADAPT_PARSER=y
BR2_PACKAGE_PYTHON_COLORZERO=y
BR2_PACKAGE_PYTHON_COVERALLS=y
BR2_PACKAGE_PYTHON_DEPRECATED=y
BR2_PACKAGE_PYTHON_FASTENERS=y
BR2_PACKAGE_PYTHON_FEEDPARSER=y
BR2_PACKAGE_PYTHON_GOOGLE_API_PYTHON_CLIENT=y
BR2_PACKAGE_PYTHON_GPIOZERO=y
BR2_PACKAGE_PYTHON_GTTS=y
BR2_PACKAGE_PYTHON_HUMANHASH3=y
BR2_PACKAGE_PYTHON_INFLECTION=y
BR2_PACKAGE_PYTHON_LAZY=y
BR2_PACKAGE_PYTHON_MSK=y
BR2_PACKAGE_PYTHON_MYCROFT=y
BR2_PACKAGE_PYTHON_OAUTH2CLIENT=y
BR2_PACKAGE_PYTHON_OLEFILE=y
BR2_PACKAGE_PYTHON_PADATIOUS=y
BR2_PACKAGE_PYTHON_PAKO=y
BR2_PACKAGE_PYTHON_PEP8=y
BR2_PACKAGE_PYTHON_PETACT=y
BR2_PACKAGE_PYTHON_PIP=y
BR2_PACKAGE_PYTHON_POCKETSPHINX=y
BR2_PACKAGE_PYTHON_PRECISE_RUNNER=y
BR2_PACKAGE_PYTHON_PULSECTL=y
BR2_PACKAGE_PYTHON_PYCHROMECAST=y
BR2_PACKAGE_PYTHON_PYJWT=y
BR2_PACKAGE_PYTHON_PYMPLAYER=y
BR2_PACKAGE_PYTHON_REQUESTS_FUTURES=y
BR2_PACKAGE_PYTHON_SGMLLIB3K=y
BR2_PACKAGE_PYTHON_SOURCE=y
BR2_PACKAGE_PYTHON_SPEECHRECOGNITION=y
BR2_PACKAGE_PYTHON_VLC=y
BR2_PACKAGE_PYTHON_WRAPT=y
BR2_PACKAGE_PYTHON_XMLRUNNER=y

View File

@ -0,0 +1,6 @@
config BR2_PACKAGE_MYCROFT_SERVICE
bool "mycroft-service"
help
Start the Mycroft A.I. software as service.
https://mycroft.ai/

View File

@ -0,0 +1,23 @@
################################################################################
#
# mycroft-service
#
################################################################################
MYCROFT_SERVICE_VERSION = 0.1.0
MYCROFT_SERVICE_SITE = $(BR2_EXTERNAL_MYCROFTOS_PATH)/package/mycroft-service
MYCROFT_SERVICE_SITE_METHOD = local
MYCROFT_SERVICE_LICENSE = Apache License 2.0
MYCROFT_SERVICE_LICENSE_FILES = LICENSE
define MYCROFT_SERVICE_INSTALL_TARGET_CMDS
$(INSTALL) -m 0755 $(@D)/start-mycroft.sh $(TARGET_DIR)/usr/bin/
$(INSTALL) -m 0755 $(@D)/stop-mycroft.sh $(TARGET_DIR)/usr/bin/
$(INSTALL) -D -m 644 $(@D)/mycroft.service \
$(TARGET_DIR)/usr/lib/systemd/system/mycroft.service
mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants
ln -fs ../../../../usr/lib/systemd/system/mycroft.service \
$(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/mycroft.service
endef
$(eval $(generic-package))

View File

@ -0,0 +1,15 @@
[Unit]
Description=Mycroft AI
After=pulseaudio.service
[Service]
User=mycroft
WorkingDirectory=/home/mycroft
ExecStart=start-mycroft.sh all
ExecStop=stop-mycroft.sh all
Type=forking
Restart=always
RestartSec=3
[Install]
WantedBy=multi-user.target

View File

@ -23,31 +23,34 @@ DIR="$( pwd )"
function help() {
echo "${script}: Mycroft command/service launcher"
echo "usage: ${script} [command] [params]"
echo "usage: ${script} [COMMAND] [restart] [params]"
echo
echo "Services:"
echo "Services COMMANDs:"
echo " all runs core services: bus, audio, skills, voice"
echo " debug runs core services, then starts the CLI"
echo
echo "Services:"
echo " audio the audio playback service"
echo " bus the messagebus service"
echo " skills the skill service"
echo " voice voice capture service"
# echo " wifi wifi setup service"
echo " enclosure mark_1 enclosure service"
echo
echo "Tools:"
echo "Tool COMMANDs:"
echo " cli the Command Line Interface"
echo " unittest run mycroft-core unit tests (requires pytest)"
echo " skillstest run the skill autotests for all skills (requires pytest)"
echo
echo "Utils:"
echo "Util COMMANDs:"
echo " audiotest attempt simple audio validation"
echo " audioaccuracytest more complex audio validation"
echo " sdkdoc generate sdk documentation"
echo
echo "Options:"
echo " restart (optional) Force the service to restart if running"
echo
echo "Examples:"
echo " ${script} all"
echo " ${script} all restart"
echo " ${script} cli"
echo " ${script} unittest"
@ -72,7 +75,33 @@ function name-to-script-path() {
esac
}
first_time=true
# set the right locale / language settings
export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8
export LANGUAGE=en_US.UTF-8
function init-once() {
sudo fbv -f -d 1 /opt/mycroft/splash/logo.png > /dev/null 2>&1
if ($first_time) ; then
echo "Initializing..."
# Check if Mycroft log folders are present and if not
# create those logging folders
if [[ ! -w /var/log/mycroft/ ]] ; then
# Creating needed folders
printf "Creating /var/log/mycroft/ directory"
if [[ ! -d /var/log/mycroft/ ]] ; then
mkdir /var/log/mycroft/
fi
fi
first_time=false
fi
}
function launch-process() {
init-once
name-to-script-path ${1}
# Launch process in foreground
@ -80,12 +109,28 @@ function launch-process() {
python3 -m ${_module} $_params
}
function require-process() {
# Launch process if not found
name-to-script-path ${1}
if ! pgrep -f "python3 -m ${_module}" > /dev/null ; then
# Start required process
launch-background ${1}
fi
}
function launch-background() {
init-once
# Check if given module is running and start (or restart if running)
name-to-script-path ${1}
if pgrep -f "python3 -m ${_module}" > /dev/null ; then
echo "Restarting: ${1}"
"${DIR}/stop-mycroft.sh" ${1}
if ($_force_restart) ; then
echo "Restarting: ${1}"
"${DIR}/stop-mycroft.sh" ${1}
else
# Already running, no need to restart
return
fi
else
echo "Starting background service $1"
fi
@ -107,25 +152,27 @@ function launch-all() {
launch-background skills
launch-background audio
launch-background voice
# Determine platform type
if [[ -r /etc/mycroft/mycroft.conf ]] ; then
mycroft_platform=$( jq -r ".enclosure.platform" < /etc/mycroft/mycroft.conf )
if [[ $mycroft_platform = "mycroft_mark_1" ]] ; then
# running on a Mark 1, start enclosure service
launch-background enclosure
fi
fi
launch-background enclosure
}
_opt=$1
_force_restart=false
shift
if [[ "${1}" == "restart" ]] || [[ "${_opt}" == "restart" ]] ; then
_force_restart=true
if [[ "${_opt}" == "restart" ]] ; then
# Support "start-mycroft.sh restart all" as well as "start-mycroft.sh all restart"
_opt=$1
fi
shift
fi
_params=$@
case ${_opt} in
"all")
launch-all
;;
"bus")
launch-background ${_opt}
;;
@ -138,24 +185,47 @@ case ${_opt} in
"voice")
launch-background ${_opt}
;;
"debug")
launch-all
launch-process cli
;;
"cli")
require-process bus
require-process skills
launch-process ${_opt}
;;
# TODO: Restore support for Wifi Setup on a Picroft, etc.
# "wifi")
# launch-background ${_opt}
# ;;
"unittest")
pytest test/unittests/ --cov=mycroft "$@"
;;
"singleunittest")
pytest "$@"
;;
"skillstest")
pytest test/integrationtests/skills/discover_tests.py "$@"
;;
"audiotest")
launch-process ${_opt}
;;
"audioaccuracytest")
launch-process ${_opt}
;;
"sdkdoc")
cd doc
make ${opt}
cd ..
;;
"enclosure")
launch-background ${_opt}
;;
*)
help
;;
esac

View File

@ -31,7 +31,7 @@ function help() {
echo " audio stop the audio playback service"
echo " skills stop the skill service"
echo " voice stop voice capture service"
echo " enclosure stop mark_1 enclosure service"
echo " enclosure stop enclosure (hardware/gui interface) service"
echo
echo "Examples:"
echo " ${script}"
@ -50,8 +50,9 @@ function process-running() {
function end-process() {
if process-running $1 ; then
echo -n "Stopping $1..."
pid=$( pgrep -f "python3 -m mycroft.*${1}" )
# Find the process by name, only returning the oldest if it has children
pid=$( pgrep -o -f "python3 -m mycroft.*${1}" )
echo -n "Stopping $1 (${pid})..."
kill -SIGINT ${pid}
# Wait up to 5 seconds (50 * 0.1) for process to stop
@ -67,7 +68,8 @@ function end-process() {
if process-running $1 ; then
echo "failed to stop."
echo -n " Killing $1..."
pid=$( pgrep -o -f "python3 -m mycroft.*${1}" )
echo -n " Killing $1 (${pid})..."
kill -9 ${pid}
echo "killed."
result=120
@ -80,8 +82,10 @@ function end-process() {
fi
}
result=0 # default, no change
OPT=$1
shift
@ -94,15 +98,8 @@ case ${OPT} in
end-process skills
end-process audio
end-process speech
# determine platform type
if [[ -r /etc/mycroft/mycroft.conf ]] ; then
mycroft_platform=$( jq -r ".enclosure.platform" < /etc/mycroft/mycroft.conf )
if [[ $mycroft_platform == "mycroft_mark_1" ]] ; then
# running on a Mark 1, stop enclosure service
end-process enclosure
fi
fi
end-process enclosure
sudo fbv -f -d 1 /opt/mycroft/splash/background.png > /dev/null 2>&1
;;
"bus")
end-process messagebus.service
@ -119,6 +116,7 @@ case ${OPT} in
"enclosure")
end-process enclosure
;;
*)
help
;;

View File

@ -0,0 +1,6 @@
config BR2_PACKAGE_MYCROFT_SPLASH
bool "mycroft-splash"
help
Show Mycroft A.I. branded splash screens on boot/halt.
https://mycroft.ai/ https://www.j1nx.nl

View File

@ -0,0 +1,8 @@
[Unit]
Description=Mycroft AI boot splash screen
[Service]
ExecStart=fbv -f -d 1 /opt/mycroft/splash/boot.png > /dev/null 2>&1
[Install]
WantedBy=basic.target

View File

@ -0,0 +1,11 @@
[Unit]
Description=Mycroft AI halt splash screen
DefaultDependencies=no
Before=halt.target
[Service]
ExecStart=fbv -f -d 1 /opt/mycroft/splash/down.png > /dev/null 2>&1
Type=oneshot
[Install]
WantedBy=halt.target poweroff.target

View File

@ -0,0 +1,36 @@
################################################################################
#
# mycroft-splash
#
################################################################################
MYCROFT_SPLASH_VERSION = 0.1.0
MYCROFT_SPLASH_SITE = $(BR2_EXTERNAL_MYCROFTOS_PATH)/package/mycroft-splash
MYCROFT_SPLASH_SITE_METHOD = local
MYCROFT_SPLASH_LICENSE = Apache License 2.0
MYCROFT_SPLASH_LICENSE_FILES = LICENSE
define MYCROFT_SPLASH_INSTALL_TARGET_CMDS
$(INSTALL) -D -m 644 $(@D)/boot-splashscreen.service \
$(TARGET_DIR)/usr/lib/systemd/system/boot-splashscreen.service
mkdir -p $(TARGET_DIR)/etc/systemd/system/basic.target.wants
ln -fs ../../../../usr/lib/systemd/system/boot-splashscreen.service \
$(TARGET_DIR)/etc/systemd/system/basic.target.wants/boot-splashscreen.service
$(INSTALL) -D -m 644 $(@D)/halt-splashscreen.service \
$(TARGET_DIR)/usr/lib/systemd/system/halt-splashscreen.service
mkdir -p $(TARGET_DIR)/etc/systemd/system/halt.target.wants
ln -fs ../../../../usr/lib/systemd/system/halt-splashscreen.service \
$(TARGET_DIR)/etc/systemd/system/halt.target.wants/halt-splashscreen.service
mkdir -p $(TARGET_DIR)/etc/systemd/system/poweroff.target.wants
ln -fs ../../../../usr/lib/systemd/system/halt-splashscreen.service \
$(TARGET_DIR)/etc/systemd/system/poweroff.target.wants/halt-splashscreen.service
$(INSTALL) -D -m 644 $(@D)/off-splashscreen.service \
$(TARGET_DIR)/usr/lib/systemd/system/off-splashscreen.service
mkdir -p $(TARGET_DIR)/etc/systemd/system/shutdown.target.wants
ln -fs ../../../../usr/lib/systemd/system/off-splashscreen.service \
$(TARGET_DIR)/etc/systemd/system/shutdown.target.wants/off-splashscreen.service
endef
$(eval $(generic-package))

View File

@ -0,0 +1,12 @@
[Unit]
Description=Mycroft AI safe power off splash screen
DefaultDependencies=no
After=umount.target
Before=final.target
[Service]
ExecStart=fbv -f -d 1 /opt/mycroft/splash/off.png > /dev/null 2>&1
Type=oneshot
[Install]
WantedBy=shutdown.target

View File

@ -1,3 +1,3 @@
# md5, sha256 from https://pypi.org/pypi/adapt-parser/json
md5 f415b363a15c3077a9624280a5bc2d37 adapt-parser-0.3.0.tar.gz
sha256 9445c9be4fcf3c519d1fbc605ea289349e11c2eb581db72242b61d12cc4d337f adapt-parser-0.3.0.tar.gz
sha256 028de80f603c62d4a8652549ea126423cc12695c9e578574b8932010ca32a33e adapt-parser-0.3.3.tar.gz

View File

@ -4,9 +4,9 @@
#
################################################################################
PYTHON_ADAPT_PARSER_VERSION = 0.3.0
PYTHON_ADAPT_PARSER_VERSION = 0.3.3
PYTHON_ADAPT_PARSER_SOURCE = adapt-parser-$(PYTHON_ADAPT_PARSER_VERSION).tar.gz
PYTHON_ADAPT_PARSER_SITE = https://files.pythonhosted.org/packages/36/a4/3ef82c754a8fb079a98d0adb66be1e3dc7a42d6faafdf1f106924a48c352
PYTHON_ADAPT_PARSER_SITE = https://files.pythonhosted.org/packages/d7/be/be6417e4b6c099dfdcfec8c512de1c1e11ba446e6c81f405bd313fc2d6b4
PYTHON_ADAPT_PARSER_SETUP_TYPE = setuptools
$(eval $(python-package))

View File

@ -0,0 +1,7 @@
config BR2_PACKAGE_PYTHON_APPDIRS
bool "python-appdirs"
help
A small Python module for determining appropriate platform-
specific dirs, e.g. a "user data dir".
http://github.com/ActiveState/appdirs

View File

@ -0,0 +1,5 @@
# md5, sha256 from https://pypi.org/pypi/appdirs/json
md5 44c679904082a2133f5566c8a0d3ab42 appdirs-1.4.3.tar.gz
sha256 9e5896d1372858f8dd3344faf4e5014d21849c756c8d5701f78f8a103b372d92 appdirs-1.4.3.tar.gz
# Locally computed sha256 checksums
sha256 36ddb4d0a745a93ab203203d7190814b1b89727d254caff48c7a7afbbd47000b LICENSE.txt

View File

@ -0,0 +1,14 @@
################################################################################
#
# python-appdirs
#
################################################################################
PYTHON_APPDIRS_VERSION = 1.4.3
PYTHON_APPDIRS_SOURCE = appdirs-$(PYTHON_APPDIRS_VERSION).tar.gz
PYTHON_APPDIRS_SITE = https://files.pythonhosted.org/packages/48/69/d87c60746b393309ca30761f8e2b49473d43450b150cb08f3c6df5c11be5
PYTHON_APPDIRS_SETUP_TYPE = setuptools
PYTHON_APPDIRS_LICENSE = MIT
PYTHON_APPDIRS_LICENSE_FILES = LICENSE.txt
$(eval $(python-package))

View File

@ -1,3 +1,3 @@
# md5, sha256 from https://pypi.org/pypi/casttube/json
md5 da6bc1693f9b343237e75760537b4c3c casttube-0.1.0.tar.gz
sha256 d3787a38eb3a2bb2c1dc82e9e26387ff056de214b26817cf0bbed2f2a83a5d5c casttube-0.1.0.tar.gz
sha256 f25b3c634efe702896233690f7590e8d6311590910f18dbb763b90419d9ef53c casttube-0.2.0.tar.gz

View File

@ -4,9 +4,9 @@
#
################################################################################
PYTHON_CASTTUBE_VERSION = 0.1.0
PYTHON_CASTTUBE_VERSION = 0.2.0
PYTHON_CASTTUBE_SOURCE = casttube-$(PYTHON_CASTTUBE_VERSION).tar.gz
PYTHON_CASTTUBE_SITE = https://files.pythonhosted.org/packages/a1/57/00f76daff3a80f3e84ec25ac25e982f1aca77df16174b900a1c2ec1d9af1
PYTHON_CASTTUBE_SITE = https://files.pythonhosted.org/packages/54/d1/8edc98ef2aa08eed8dd72e2ef31b6658ba222ea8d228a4c2c3e73a58991a
PYTHON_CASTTUBE_SETUP_TYPE = setuptools
$(eval $(python-package))

View File

@ -0,0 +1,6 @@
config BR2_PACKAGE_PYTHON_COLORZERO
bool "python-colorzero"
help
Yet another Python color library.
http://colorzero.readthedocs.io/

View File

@ -0,0 +1,5 @@
# md5, sha256 from https://pypi.org/pypi/colorzero/json
md5 7581c4b7fc5f52bf41422e4bbb29731a colorzero-1.1.tar.gz
sha256 acba47119b5d8555680d3cda9afe6ccc5481385ccc3c00084dd973f7aa184599 colorzero-1.1.tar.gz
# Locally computed sha256 checksums
sha256 47778d78e05bb6c39c022814e3712a0327c6418c7251757e72167ab8ff12bb4d LICENSE.txt

View File

@ -0,0 +1,14 @@
################################################################################
#
# python-colorzero
#
################################################################################
PYTHON_COLORZERO_VERSION = 1.1
PYTHON_COLORZERO_SOURCE = colorzero-$(PYTHON_COLORZERO_VERSION).tar.gz
PYTHON_COLORZERO_SITE = https://files.pythonhosted.org/packages/08/0e/826b882db4da2970f53331969d66efc2da2071ffd9a8824601d0feff513d
PYTHON_COLORZERO_SETUP_TYPE = setuptools
PYTHON_COLORZERO_LICENSE = BSD-3-Clause
PYTHON_COLORZERO_LICENSE_FILES = LICENSE.txt
$(eval $(python-package))

View File

@ -0,0 +1,6 @@
config BR2_PACKAGE_PYTHON_GPIOZERO
bool "python-gpiozero"
help
A simple interface to GPIO devices with Raspberry Pi..
https://github.com/RPi-Distro/python-gpiozero

View File

@ -0,0 +1,3 @@
# md5, sha256 from https://pypi.org/pypi/gpiozero/json
md5 1b138b727e71e976675773e2131a8297 gpiozero-1.4.1.tar.gz
sha256 b4b074e56dea12c21b05e6feef792719a392a245f5e685bc56be3dc2546f8609 gpiozero-1.4.1.tar.gz

View File

@ -0,0 +1,12 @@
################################################################################
#
# python-gpiozero
#
################################################################################
PYTHON_GPIOZERO_VERSION = 1.4.1
PYTHON_GPIOZERO_SOURCE = gpiozero-$(PYTHON_GPIOZERO_VERSION).tar.gz
PYTHON_GPIOZERO_SITE = https://files.pythonhosted.org/packages/3b/50/377575ff8fbdb672c27869ce536813cafdd94f5e14b5bf377edabb8a8097
PYTHON_GPIOZERO_SETUP_TYPE = setuptools
$(eval $(python-package))

View File

@ -1,6 +1,6 @@
# md5, sha256 from https://pypi.org/pypi/gTTS/json
md5 a74588d23840f07badb195bda8138b2d gTTS-2.0.1.tar.gz
sha256 c85ca77ad71181209068d7437275bd35182f38cfef5a2dd7b8fcd4ba1b78ec1a gTTS-2.0.1.tar.gz
sha256 a6d4cf039da2797de8af2da7c1f0ce700ac0b48601ce6c11a02b337fd6bdcf57 gTTS-2.0.3.tar.gz
sha256 124dfc447056cc622989319ebb553d56cfd5c197c345cee3397b675a6da84f58 gTTS-1.1.7.tar.gz
# Locally computed sha256 checksums
sha256 d762ddea99fa1eddb0a03d040a97e4e1404f432f7c70d4b49d391858230a22aa LICENSE

View File

@ -4,9 +4,9 @@
#
################################################################################
PYTHON_GTTS_VERSION = 1.1.7
PYTHON_GTTS_VERSION = 2.0.3
PYTHON_GTTS_SOURCE = gTTS-$(PYTHON_GTTS_VERSION).tar.gz
PYTHON_GTTS_SITE = https://files.pythonhosted.org/packages/9d/7d/ae1af3b5e4912a630d7aae23c43577799cf49cddd0f5a00a33791d414c2d
PYTHON_GTTS_SITE = https://files.pythonhosted.org/packages/e6/37/f55346a736278f0eb0ae9f7edee1a61028735ef0010db68a2e6fcd0ece56
PYTHON_GTTS_SETUP_TYPE = setuptools
PYTHON_GTTS_LICENSE = MIT
PYTHON_GTTS_LICENSE_FILES = LICENSE

View File

@ -2,3 +2,4 @@
md5 39f56680d81c3d553ccc663f013a48f8 gTTS-token-1.1.1.zip
sha256 74badf3ba37773d8ba4a462a09b64de76a0ebd4015d667a6fdb041c2219283ef gTTS-token-1.1.1.zip
sha256 a45d62dc3a4c5ea71ee1fc3349661394cf84cc801197748f408402b2041d6f32 gTTS-token-1.1.2.tar.gz
sha256 9d6819a85b813f235397ef931ad4b680f03d843c9b2a9e74dd95175a4bc012c5 gTTS-token-1.1.3.tar.gz

View File

@ -4,9 +4,9 @@
#
################################################################################
PYTHON_GTTS_TOKEN_VERSION = 1.1.2
PYTHON_GTTS_TOKEN_VERSION = 1.1.3
PYTHON_GTTS_TOKEN_SOURCE = gTTS-token-$(PYTHON_GTTS_TOKEN_VERSION).tar.gz
PYTHON_GTTS_TOKEN_SITE = https://files.pythonhosted.org/packages/5a/81/b54c771ee6a78bdb6aebc274d7a806ad1f8761462f3592f3781d5cd9046f
PYTHON_GTTS_TOKEN_SITE = https://files.pythonhosted.org/packages/e7/25/ca6e9cd3275bfc3097fe6b06cc31db6d3dfaf32e032e0f73fead9c9a03ce
PYTHON_GTTS_TOKEN_SETUP_TYPE = setuptools
PYTHON_GTTS_TOKEN_LICENSE = MIT

View File

@ -0,0 +1,6 @@
config BR2_PACKAGE_PYTHON_LAZY
bool "python-lazy"
help
Lazy attributes for Python objects.
https://github.com/stefanholek/lazy

View File

@ -0,0 +1,5 @@
# md5, sha256 from https://pypi.org/pypi/lazy/json
md5 f4e5a0a5d2add47352a7e10ee87f8211 lazy-1.4.zip
sha256 2c6d27a5ab130fb85435320651a47403adcb37ecbcc501b0c6606391f65f5b43 lazy-1.4.zip
# Locally computed sha256 checksums
sha256 8ba489d9fecfaabf369f6ee4394e689d21b313547531898e2942173f877bfee2 LICENSE

View File

@ -0,0 +1,20 @@
################################################################################
#
# python-lazy
#
################################################################################
PYTHON_LAZY_VERSION = 1.4
PYTHON_LAZY_SOURCE = lazy-$(PYTHON_LAZY_VERSION).zip
PYTHON_LAZY_SITE = https://files.pythonhosted.org/packages/ce/10/2c0cd8a601fff792f814b89233859e3fce2e266a5defd8af3bcadbe5c7ef
PYTHON_LAZY_SETUP_TYPE = setuptools
PYTHON_LAZY_LICENSE = BSD-2-Clause
PYTHON_LAZY_LICENSE_FILES = LICENSE
define PYTHON_LAZY_EXTRACT_CMDS
$(UNZIP) -d $(@D) $(DL_DIR)/python-lazy/$(PYTHON_LAZY_SOURCE)
mv $(@D)/lazy-$(PYTHON_LAZY_VERSION)/* $(@D)
$(RM) -r $(@D)/lazy-$(PYTHON_LAZY_VERSION)
endef
$(eval $(python-package))

View File

@ -1,3 +1,5 @@
# md5, sha256 from https://pypi.org/pypi/msk/json
md5 1460094aeffac634008ba1dd12348c3b msk-0.3.11.tar.gz
sha256 d5c157a60eecba4c3b07de89e43e85dec366b5ecdd3677f7e73c0c4cddf01b74 msk-0.3.11.tar.gz
sha256 8e5a1fb7afa22977a9d6ee0835ac52420b74324c1d2088286aacc485a521e573 msk-0.3.12.tar.gz
sha256 55be86ff2cd0087016759f2b15b40861cda2a8d8a8d0c669fdacdf32a77a10da msk-0.3.13.tar.gz

View File

@ -4,9 +4,9 @@
#
################################################################################
PYTHON_MSK_VERSION = 0.3.11
PYTHON_MSK_VERSION = 0.3.13
PYTHON_MSK_SOURCE = msk-$(PYTHON_MSK_VERSION).tar.gz
PYTHON_MSK_SITE = https://files.pythonhosted.org/packages/6d/2d/561d58e16d456ee5ca79d6dff3fb053f56da4ad62832eccce82b61a65789
PYTHON_MSK_SITE = https://files.pythonhosted.org/packages/28/51/8d2193b8f1471178149cdbcc1830b086e978f99598208cae2ba2741b2979
PYTHON_MSK_SETUP_TYPE = setuptools
$(eval $(python-package))

View File

@ -1,5 +1,6 @@
# md5, sha256 from https://pypi.org/pypi/msm/json
md5 fe54a2aecd6751bef66fdcd27ffd3cdc msm-0.5.19.tar.gz
sha256 0f67b73e277a73ff4c97ecdf0aa6e10b1202bc09d2666f69170f9aa20653c573 msm-0.5.19.tar.gz
sha256 955204cb293a83e9cc5d3af9a7d0db69d5bba9215e4bf4337d26bf4b635fd78a msm-0.7.9.tar.gz
# Locally computed sha256 checksums
sha256 a6cba85bc92e0cff7a450b1d873c0eaa2e9fc96bf472df0247a26bec77bf3ff9 LICENSE

View File

@ -4,9 +4,9 @@
#
################################################################################
PYTHON_MSM_VERSION = 0.5.19
PYTHON_MSM_VERSION = 0.7.9
PYTHON_MSM_SOURCE = msm-$(PYTHON_MSM_VERSION).tar.gz
PYTHON_MSM_SITE = https://files.pythonhosted.org/packages/ee/ee/8e1dd6ceefea93e2c7009ad7d9b2fb9fcfacad8321042611a4f1179f3e86
PYTHON_MSM_SITE = https://files.pythonhosted.org/packages/46/e7/cd1c3771ecf644d95ef7c3ce7b53eeccccac1ad57c3ca3211f70ad02be29
PYTHON_MSM_SETUP_TYPE = setuptools
PYTHON_MSM_LICENSE = Apache-2.0
PYTHON_MSM_LICENSE_FILES = LICENSE

View File

@ -0,0 +1,35 @@
From 6f5b4940d26bc3d3413cd750f3e7e17c5e9e5db7 Mon Sep 17 00:00:00 2001
From: Peter Steenbergen <info@j1nx.nl>
Date: Wed, 4 Sep 2019 16:01:39 +0200
Subject: [PATCH 1/1] Bump python-tornado and python-dateutil versions as
requirements
---
requirements.txt | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/requirements.txt b/requirements.txt
index 11f08860cc..661dfcbe03 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -6,7 +6,7 @@ gTTS-token==1.1.3
PyAudio==0.2.11
pyee==5.0.0
SpeechRecognition==3.8.1
-tornado==4.5.3
+tornado==5.1.1
websocket-client==0.54.0
requests-futures==0.9.5
pyalsaaudio==0.8.2
@@ -16,7 +16,7 @@ psutil==5.2.1
pocketsphinx==0.1.0
inflection==0.3.1
pillow==4.1.1
-python-dateutil==2.6.0
+python-dateutil==2.7.5
pychromecast==3.2.2
python-vlc==1.1.2
pulsectl==17.7.4
--
2.11.0

View File

@ -1,25 +0,0 @@
From 28a9ff65a9b71ad70b906d688b7b2f593ea108cc Mon Sep 17 00:00:00 2001
From: Peter Steenbergen <info@j1nx.nl>
Date: Fri, 5 Oct 2018 09:42:55 +0200
Subject: [PATCH 1/1] Enforce UTF8 encoding
---
mycroft/dialog/__init__.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/mycroft/dialog/__init__.py b/mycroft/dialog/__init__.py
index 59b4a44a0d..59c521b929 100644
--- a/mycroft/dialog/__init__.py
+++ b/mycroft/dialog/__init__.py
@@ -45,7 +45,7 @@ class MustacheDialogRenderer(object):
template_name (str): a unique identifier for a group of templates
filename (str): a fully qualified filename of a mustache template.
"""
- with open(filename, 'r') as f:
+ with open(filename, 'r', encoding='utf-8') as f:
for line in f:
template_text = line.strip()
if template_name not in self.templates:
--
2.11.0

View File

@ -1,5 +1 @@
sha256 90255931a864a4abe30f28c470009cf798dc72221cab16ba41712d80b19e28e4 python-mycroft-v18.8.1.tar.gz
sha256 af18bd9ee1c6e3bbc6b424af39b352179d05fc337d04573eadba37b01f7105f6 python-mycroft-v18.8.2.tar.gz
sha256 25c583e40e888a99ea6fb0817960952bc26dcf8facf87f77f3363ac0c3c3b9d9 python-mycroft-v18.8.3.tar.gz
sha256 42950284980d415d5cf75c91ad1e59080770cf82a12dc294f106b97fdf8c65c0 python-mycroft-v18.8.4.tar.gz
sha256 35d6c2d6155ea9b1887b296164a8ee7f1abf8e58b192a4829aaa59a7592909fa python-mycroft-v18.8.5.tar.gz
sha256 be610c54770cd3faaca2ec57f8b7a8078cf659b8c408c47c25157ba3607b10a8 python-mycroft-v19.2.14.tar.gz

View File

@ -4,9 +4,9 @@
#
################################################################################
PYTHON_MYCROFT_VERSION = v18.8.5
PYTHON_MYCROFT_VERSION = v19.2.14
PYTHON_MYCROFT_SITE = $(call github,MycroftAI,mycroft-core,release/$(PYTHON_MYCROFT_VERSION))
PYTHON_MYCROFT_SETUP_TYPE = setuptools
PYTHON_MYCROFT_LICENSE_FILES =
PYTHON_MYCROFT_LICENSE_FILES = LICENSE
$(eval $(python-package))

View File

@ -2,3 +2,5 @@
sha256 06fb231807f1c82d6fe8014e81d8a97124219fe6bcbccc020d445ca22d437146 padaos-0.1.6.tar.gz
md5 5dbb47982c859449f06decde6d240bd9 padaos-0.1.7.tar.gz
sha256 0703a5fec01a5b40038e90a32c39ac4c2c59b2a91b9bd1624408f017a2f61db3 padaos-0.1.7.tar.gz
sha256 287310c7299a1c3ea2d0f8193caf83944d297a30a131b298bc29379acc46714e padaos-0.1.8.tar.gz
sha256 47be66fed43f35b5347722aa45ee3c2df64ea1718cf805b2f1da81ed2c98ee83 padaos-0.1.9.tar.gz

View File

@ -4,9 +4,9 @@
#
################################################################################
PYTHON_PADAOS_VERSION = 0.1.7
PYTHON_PADAOS_VERSION = 0.1.9
PYTHON_PADAOS_SOURCE = padaos-$(PYTHON_PADAOS_VERSION).tar.gz
PYTHON_PADAOS_SITE = https://files.pythonhosted.org/packages/35/e0/ec50c08c5e8c5e049be9f841dae766c570e600c36730888be6cf1d317266
PYTHON_PADAOS_SITE = https://files.pythonhosted.org/packages/5d/d9/f1e366c164c551c79e988c43fa282aea6e671d7842e6f70164ae09ad6376
PYTHON_PADAOS_SETUP_TYPE = setuptools
$(eval $(python-package))

View File

@ -1,3 +1,3 @@
# md5, sha256 from https://pypi.org/pypi/padatious/json
md5 6e9d8b85814090a1c3c39774ef24124e padatious-0.4.5.tar.gz
sha256 81cefa5c3baf5fe8e3c6987216c1c438eff59f2026bce8ae6302871c7edbd69b padatious-0.4.5.tar.gz
md5 cf7bbc745f6689d53f0646d8747f744b padatious-0.4.6.tar.gz
sha256 03bebbe81ebf67526b7e7300cfb8fa5ad2f30ed0aa71e4e54e6e8ed292ff9883 padatious-0.4.6.tar.gz

View File

@ -4,9 +4,9 @@
#
################################################################################
PYTHON_PADATIOUS_VERSION = 0.4.5
PYTHON_PADATIOUS_VERSION = 0.4.6
PYTHON_PADATIOUS_SOURCE = padatious-$(PYTHON_PADATIOUS_VERSION).tar.gz
PYTHON_PADATIOUS_SITE = https://files.pythonhosted.org/packages/00/ca/5d2262ec5ca90afa94706b78c770de9f48298d3048cd65dc0ad79ffcfb10
PYTHON_PADATIOUS_SITE = https://files.pythonhosted.org/packages/1f/37/0022764d88b1aacb7f42a9e3ba5250b10212d8b6cf6223c58e639d669a6c
PYTHON_PADATIOUS_SETUP_TYPE = setuptools
$(eval $(python-package))

View File

@ -0,0 +1,7 @@
config BR2_PACKAGE_PYTHON_PAKO
bool "python-pako"
select BR2_PACKAGE_PYTHON_APPDIRS # runtime
help
The universal package manager library.
https://github.com/MycroftAI/pako

View File

@ -0,0 +1,5 @@
# md5, sha256 from https://pypi.org/pypi/pako/json
md5 8eb7077075091c50e4b8a9f939607277 pako-0.2.3.tar.gz
sha256 6be55fd8c5a2a6f02974f37438c1c47a3d9e764ce81c9d0a1a8c9a1815a59778 pako-0.2.3.tar.gz
# Locally computed sha256 checksums
sha256 a6cba85bc92e0cff7a450b1d873c0eaa2e9fc96bf472df0247a26bec77bf3ff9 LICENSE

View File

@ -0,0 +1,14 @@
################################################################################
#
# python-pako
#
################################################################################
PYTHON_PAKO_VERSION = 0.2.3
PYTHON_PAKO_SOURCE = pako-$(PYTHON_PAKO_VERSION).tar.gz
PYTHON_PAKO_SITE = https://files.pythonhosted.org/packages/96/91/bf16a2f64a6628dfbfd9218f0331fbf73655530608ddd2f8fb597fdb9458
PYTHON_PAKO_SETUP_TYPE = setuptools
PYTHON_PAKO_LICENSE = Apache-2.0
PYTHON_PAKO_LICENSE_FILES = LICENSE
$(eval $(python-package))

View File

@ -1,6 +0,0 @@
config BR2_PACKAGE_PYTHON_PIP
bool "python-pip"
help
The PyPA recommended tool for installing Python packages.
https://pip.pypa.io/

View File

@ -1,5 +0,0 @@
# md5, sha256 from https://pypi.org/pypi/pip/json
md5 52f75ceb21e96c258f289859a2996b60 pip-18.0.tar.gz
sha256 a0e11645ee37c90b40c46d607070c4fd583e2cd46231b1c06e389c5e814eed76 pip-18.0.tar.gz
# Locally computed sha256 checksums
sha256 391a8784e319dae5431477d4cc9bc504fc5d71fd9e89e1c80f1cd3855f5d7cfa LICENSE.txt

View File

@ -1,15 +0,0 @@
################################################################################
#
# python-pip
#
################################################################################
PYTHON_PIP_VERSION = 18.0
PYTHON_PIP_SOURCE = pip-$(PYTHON_PIP_VERSION).tar.gz
PYTHON_PIP_SITE = https://files.pythonhosted.org/packages/69/81/52b68d0a4de760a2f1979b0931ba7889202f302072cc7a0d614211bc7579
PYTHON_PIP_SETUP_TYPE = setuptools
PYTHON_PIP_LICENSE = MIT
PYTHON_PIP_LICENSE_FILES = LICENSE.txt
$(eval $(python-package))
$(eval $(host-python-package))

View File

@ -1,7 +0,0 @@
config BR2_PACKAGE_PYTHON_PYASN1_MODULES
bool "python-pyasn1-modules"
select BR2_PACKAGE_PYTHON_PYASN1 # runtime
help
A collection of ASN.1-based protocols modules.
https://github.com/etingof/pyasn1-modules

View File

@ -1,5 +0,0 @@
# md5, sha256 from https://pypi.org/pypi/pyasn1-modules/json
md5 65ce1ea1021679bffe96065baab232de pyasn1-modules-0.2.2.tar.gz
sha256 a0cf3e1842e7c60fde97cb22d275eb6f9524f5c5250489e292529de841417547 pyasn1-modules-0.2.2.tar.gz
# Locally computed sha256 checksums
sha256 f82128f64d567c333936a12b99a21d0e8cd66ce628d51ce0a7770cc38dc7fe43 LICENSE.txt

View File

@ -1,14 +0,0 @@
################################################################################
#
# python-pyasn1-modules
#
################################################################################
PYTHON_PYASN1_MODULES_VERSION = 0.2.2
PYTHON_PYASN1_MODULES_SOURCE = pyasn1-modules-$(PYTHON_PYASN1_MODULES_VERSION).tar.gz
PYTHON_PYASN1_MODULES_SITE = https://files.pythonhosted.org/packages/37/33/74ebdc52be534e683dc91faf263931bc00ae05c6073909fde53999088541
PYTHON_PYASN1_MODULES_SETUP_TYPE = setuptools
PYTHON_PYASN1_MODULES_LICENSE = BSD-2-Clause
PYTHON_PYASN1_MODULES_LICENSE_FILES = LICENSE.txt
$(eval $(python-package))

View File

@ -1,6 +0,0 @@
config BR2_PACKAGE_PYTHON_PYASN1
bool "python-pyasn1"
help
ASN.1 types and codecs.
https://github.com/etingof/pyasn1

View File

@ -1,6 +0,0 @@
# md5, sha256 from https://pypi.org/pypi/pyasn1/json
md5 0d182b71e1f72fe147d7957bc90be7f2 pyasn1-0.4.4.tar.gz
sha256 f58f2a3d12fd754aa123e9fa74fb7345333000a035f3921dbdaa08597aa53137 pyasn1-0.4.4.tar.gz
# Locally computed sha256 checksums
sha256 f82128f64d567c333936a12b99a21d0e8cd66ce628d51ce0a7770cc38dc7fe43 LICENSE.rst
sha256 2fd7257410c4d7d9c8d8d85cb7f9f4ef9eee34126a96a993245c71577997c345 docs/source/license.rst

View File

@ -1,14 +0,0 @@
################################################################################
#
# python-pyasn1
#
################################################################################
PYTHON_PYASN1_VERSION = 0.4.4
PYTHON_PYASN1_SOURCE = pyasn1-$(PYTHON_PYASN1_VERSION).tar.gz
PYTHON_PYASN1_SITE = https://files.pythonhosted.org/packages/10/46/059775dc8e50f722d205452bced4b3cc965d27e8c3389156acd3b1123ae3
PYTHON_PYASN1_SETUP_TYPE = setuptools
PYTHON_PYASN1_LICENSE = BSD-2-Clause
PYTHON_PYASN1_LICENSE_FILES = LICENSE.rst docs/source/license.rst
$(eval $(python-package))

View File

@ -1,5 +1,5 @@
# md5, sha256 from https://pypi.org/pypi/pychromecast/json
sha256 addc87ecb769c6883756081e0e775d6cac0b45b6698419d7419c589ff7f55244 PyChromecast-0.7.7.tar.gz
sha256 da8a5a5a0d6c1046e818b586b247dd41f556ffa2a2e80f09cff6497c2db5879e PyChromecast-3.2.2.tar.gz
md5 4449701d330e33b8694aa7582662958c PyChromecast-2.3.0.tar.gz
sha256 f385168e34d2ef47f976c8e41bad2f58f5ca004634c0ccb1a12623d8beb2fa38 PyChromecast-2.3.0.tar.gz
# Locally computed sha256 checksums

View File

@ -4,9 +4,9 @@
#
################################################################################
PYTHON_PYCHROMECAST_VERSION = 0.7.7
PYTHON_PYCHROMECAST_VERSION = 3.2.2
PYTHON_PYCHROMECAST_SOURCE = PyChromecast-$(PYTHON_PYCHROMECAST_VERSION).tar.gz
PYTHON_PYCHROMECAST_SITE = https://files.pythonhosted.org/packages/cf/07/9a95c424e080f4b4e3b0b58cc91e67b03ce67e7f1a4f204e886d2838665f
PYTHON_PYCHROMECAST_SITE = https://files.pythonhosted.org/packages/3d/56/21a75152eb64c16d9379639c408869ae15de553e25af18db3c3bbcfc4bfa
PYTHON_PYCHROMECAST_SETUP_TYPE = setuptools
PYTHON_PYCHROMECAST_LICENSE = MIT
PYTHON_PYCHROMECAST_LICENSE_FILES = LICENSE

View File

@ -4,9 +4,9 @@
#
################################################################################
PYTHON_PYEE_VERSION = 1.0.1
PYTHON_PYEE_VERSION = 5.0.0
PYTHON_PYEE_SOURCE = pyee-$(PYTHON_PYEE_VERSION).tar.gz
PYTHON_PYEE_SITE = https://files.pythonhosted.org/packages/0b/94/6820b8b1a21ce4d6a1c807342ac35cf4d5fd89b94b3f12e10de3c34d5507
PYTHON_PYEE_SITE = https://files.pythonhosted.org/packages/c6/35/b37e4ffbf46063c883675e028e38e2a24b67433fd587f188e2a5005d9329
PYTHON_PYEE_SETUP_TYPE = distutils
PYTHON_PYEE_LICENSE = MIT

View File

@ -1,6 +0,0 @@
config BR2_PACKAGE_PYTHON_PYJWT
bool "python-pyjwt"
help
JSON Web Token implementation in Python.
http://github.com/jpadilla/pyjwt

View File

@ -1,5 +0,0 @@
# md5, sha256 from https://pypi.org/pypi/pyjwt/json
md5 2731c6b66b67b95d1944f072f5fa35a9 PyJWT-1.6.4.tar.gz
sha256 4ee413b357d53fd3fb44704577afac88e72e878716116270d722723d65b42176 PyJWT-1.6.4.tar.gz
# Locally computed sha256 checksums
sha256 ec82af815b5f9da8685afb300cc5beb7949e1c22b79b6c1c054796cefdf6cac6 LICENSE

View File

@ -1,14 +0,0 @@
################################################################################
#
# python-pyjwt
#
################################################################################
PYTHON_PYJWT_VERSION = 1.6.4
PYTHON_PYJWT_SOURCE = PyJWT-$(PYTHON_PYJWT_VERSION).tar.gz
PYTHON_PYJWT_SITE = https://files.pythonhosted.org/packages/00/5e/b358c9bb24421e6155799d995b4aa3aa3307ffc7ecae4ad9d29fd7e07a73
PYTHON_PYJWT_SETUP_TYPE = setuptools
PYTHON_PYJWT_LICENSE = MIT
PYTHON_PYJWT_LICENSE_FILES = LICENSE
$(eval $(python-package))

View File

@ -0,0 +1,6 @@
config BR2_PACKAGE_PYTHON_PYMPLAYER
bool "python-pymplayer"
help
mplayer python api.
https://github.com/JarbasAl/py_mplayer

View File

@ -0,0 +1,2 @@
# sha256 from https://pypi.org
sha256 f4048a6e882a093affc52469889fbbfa0514fec2e4b01b39446f9d795ab44333 python-pymplayer-eaa0a1dbfc60cb0f4f1b3e495d665714c089474a.tar.gz

View File

@ -0,0 +1,12 @@
################################################################################
#
# python-pymplayer
#
################################################################################
PYTHON_PYMPLAYER_VERSION = eaa0a1dbfc60cb0f4f1b3e495d665714c089474a
PYTHON_PYMPLAYER_SITE = git://github.com/JarbasAl/py_mplayer.git
PYTHON_PYMPLAYER_SETUP_TYPE = distutils
PYTHON_PYMPLAYER_LICENSE = MIT
$(eval $(python-package))

View File

@ -1,6 +0,0 @@
config BR2_PACKAGE_PYTHON_TYPING
bool "python-typing"
help
Type Hints for Python.
https://docs.python.org/3/library/typing.html

View File

@ -1,5 +0,0 @@
# md5, sha256 from https://pypi.org/pypi/typing/json
md5 64614206b4bdc0864fc0e0bccd69efc9 typing-3.6.6.tar.gz
sha256 4027c5f6127a6267a435201981ba156de91ad0d1d98e9ddc2aa173453453492d typing-3.6.6.tar.gz
# Locally computed sha256 checksums
sha256 ff17ce94e102024deb68773eb1cc74ca76da4e658f373531f0ac22d68a6bb1ad LICENSE

View File

@ -1,13 +0,0 @@
################################################################################
#
# python-typing
#
################################################################################
PYTHON_TYPING_VERSION = 3.6.6
PYTHON_TYPING_SOURCE = typing-$(PYTHON_TYPING_VERSION).tar.gz
PYTHON_TYPING_SITE = https://files.pythonhosted.org/packages/bf/9b/2bf84e841575b633d8d91ad923e198a415e3901f228715524689495b4317
PYTHON_TYPING_SETUP_TYPE = setuptools
PYTHON_TYPING_LICENSE_FILES = LICENSE
$(eval $(python-package))

View File

@ -1,6 +0,0 @@
config BR2_PACKAGE_PYTHON_WRAPT
bool "python-wrapt"
help
Module for decorators, wrappers and monkey patching.
https://github.com/GrahamDumpleton/wrapt

View File

@ -1,5 +0,0 @@
# md5, sha256 from https://pypi.org/pypi/wrapt/json
md5 e1346f31782d50401f81c2345b037076 wrapt-1.10.11.tar.gz
sha256 d4d560d479f2c21e1b5443bbd15fe7ec4b37fe7e53d335d3b9b0a7b1226fe3c6 wrapt-1.10.11.tar.gz
# Locally computed sha256 checksums
sha256 b6d2e5d228202a11bc5e5988661fc5d8acc1ba4f27256c37e19029131a30b1f2 LICENSE

View File

@ -1,14 +0,0 @@
################################################################################
#
# python-wrapt
#
################################################################################
PYTHON_WRAPT_VERSION = 1.10.11
PYTHON_WRAPT_SOURCE = wrapt-$(PYTHON_WRAPT_VERSION).tar.gz
PYTHON_WRAPT_SITE = https://files.pythonhosted.org/packages/a0/47/66897906448185fcb77fc3c2b1bc20ed0ecca81a0f2f88eda3fc5a34fc3d
PYTHON_WRAPT_SETUP_TYPE = distutils
PYTHON_WRAPT_LICENSE = BSD-2-Clause
PYTHON_WRAPT_LICENSE_FILES = LICENSE
$(eval $(python-package))

View File

@ -1,9 +0,0 @@
config BR2_PACKAGE_PYTHON_ZEROCONF
bool "python-zeroconf"
select BR2_PACKAGE_PYTHON_IFADDR # runtime
select BR2_PACKAGE_PYTHON_TYPING # runtime
help
Pure Python Multicast DNS Service Discovery Library
(Bonjour/Avahi compatible).
https://github.com/jstasiak/python-zeroconf

View File

@ -1,5 +0,0 @@
# md5, sha256 from https://pypi.org/pypi/zeroconf/json
md5 c853680c933a1d0791a763ceade674fa zeroconf-0.21.1.tar.gz
sha256 2e2fde39a3062f89f32a3c4badcd3ba38eb58480961e16540674200a91fec6f9 zeroconf-0.21.1.tar.gz
# Locally computed sha256 checksums
sha256 bb117c0fbd7f57f64170b690285d7df07c2371b578e3b3cd3aa2e1155ef461a0 COPYING

View File

@ -1,14 +0,0 @@
################################################################################
#
# python-zeroconf
#
################################################################################
PYTHON_ZEROCONF_VERSION = 0.21.1
PYTHON_ZEROCONF_SOURCE = zeroconf-$(PYTHON_ZEROCONF_VERSION).tar.gz
PYTHON_ZEROCONF_SITE = https://files.pythonhosted.org/packages/44/94/459e1fc9b5bfec4dfd7a48c563c47b5961153c78c2f145bb5bb73e722ba0
PYTHON_ZEROCONF_SETUP_TYPE = setuptools
PYTHON_ZEROCONF_LICENSE = LGPL-2.1
PYTHON_ZEROCONF_LICENSE_FILES = COPYING
$(eval $(python-package))

View File

@ -1,8 +0,0 @@
#!/bin/sh
#
# Load seeed-voicecard modules....
#
modprobe snd-soc-seeed-voicecard
modprobe snd-soc-ac108
modprobe snd-soc-wm8960

View File

@ -1,11 +0,0 @@
#!/bin/sh
#
# Configure seeed-voicecard....
#
echo "Starting seeed-voicecard..."
mount -t configfs none /sys/kernel/config
mkdir -p /boot
mount -t vfat /dev/mmcblk0p1 /boot
/usr/bin/seeed-voicecard
touch /var/lock/seeed-voicecard

View File

@ -0,0 +1,3 @@
snd-soc-seeed-voicecard
snd-soc-ac108
snd-soc-wm8960

View File

@ -1,2 +1,3 @@
# Locally computed
sha256 9f38d832acbfc7f07a58f15222d2fdcc0a9215ede488ccafb5c89a3e8223883d respeaker-be0812c70be29b0666a89f22a9d403cfb4c48fca.tar.gz
sha256 b68fb60cc173dc18e15bfc8eff97b57c3ef3085f2738c463ca9fa52d13d13896 respeaker-6c6b9ab7deb607aa985048ea170428729afc07a9.tar.gz

View File

@ -4,7 +4,7 @@
#
################################################################################
RESPEAKER_VERSION = be0812c70be29b0666a89f22a9d403cfb4c48fca
RESPEAKER_VERSION = 6c6b9ab7deb607aa985048ea170428729afc07a9
RESPEAKER_SITE = $(call github,respeaker,seeed-voicecard,$(RESPEAKER_VERSION))
RESPEAKER_LICENSE = GNU General Public License v3.0
RESPEAKER_DEPENDENCIES = rpi-firmware rpi-userland dtc
@ -12,20 +12,43 @@ RESPEAKER_DEPENDENCIES = rpi-firmware rpi-userland dtc
$(eval $(kernel-module))
define RESPEAKER_INSTALL_TARGET_CMDS
$(INSTALL) -D -m 0755 $(BR2_EXTERNAL_MYCROFTOS_PATH)/package/respeaker/S16respeaker_modules \
$(TARGET_DIR)/etc/init.d/S16respeaker_modules
$(INSTALL) -D -m 0755 $(BR2_EXTERNAL_MYCROFTOS_PATH)/package/respeaker/S60seeed_voicecard \
$(TARGET_DIR)/etc/init.d/S60seeed_voicecard
$(INSTALL) -D -m 0644 $(BR2_EXTERNAL_MYCROFTOS_PATH)/package/respeaker/seeed-voicecard.service \
$(TARGET_DIR)/usr/lib/systemd/system/seeed-voicecard.service
mkdir -p $(TARGET_DIR)/etc/systemd/system/sysinit.target.wants
ln -fs ../../../../usr/lib/systemd/system/seeed-voicecard.service \
$(TARGET_DIR)/etc/systemd/system/sysinit.target.wants/seeed-voicecard.service
$(INSTALL) -D -m 0644 $(BR2_EXTERNAL_MYCROFTOS_PATH)/package/respeaker/respeaker.conf \
$(TARGET_DIR)/etc/modules-load.d/respeaker.conf
mkdir -p $(TARGET_DIR)/etc/voicecard
rm $(@D)/dkms.conf
$(INSTALL) -D -m 0644 $(@D)/*.conf $(TARGET_DIR)/etc/voicecard
$(INSTALL) -D -m 0644 $(@D)/*.state $(TARGET_DIR)/etc/voicecard
$(INSTALL) -D -m 0755 $(@D)/seeed-voicecard $(TARGET_DIR)/usr/bin
$(INSTALL) -D -m 0755 $(BR2_EXTERNAL_MYCROFTOS_PATH)/package/respeaker/seeed-voicecard \
$(TARGET_DIR)/usr/bin
$(INSTALL) -D -m 0644 $(@D)/seeed-2mic-voicecard.dtbo $(BINARIES_DIR)/rpi-firmware/overlays/
$(INSTALL) -D -m 0644 $(@D)/seeed-4mic-voicecard.dtbo $(BINARIES_DIR)/rpi-firmware/overlays/
$(INSTALL) -D -m 0644 $(@D)/seeed-8mic-voicecard.dtbo $(BINARIES_DIR)/rpi-firmware/overlays/
mkdir -p $(TARGET_DIR)/usr/share/pulseaudio/alsa-mixer/profile-sets/
$(INSTALL) -D -m 0644 $(@D)/pulseaudio/pulse_config_4mic/seeed-voicecard.conf \
$(TARGET_DIR)/usr/share/pulseaudio/alsa-mixer/profile-sets/seeed-voicecard-4mic.conf
$(INSTALL) -D -m 0644 $(@D)/pulseaudio/pulse_config_6mic/seeed-voicecard.conf \
$(TARGET_DIR)/usr/share/pulseaudio/alsa-mixer/profile-sets/seeed-voicecard-8mic.conf
$(INSTALL) -D -m 0644 $(@D)/pulseaudio/91-seeedvoicecard.rules \
$(TARGET_DIR)/etc/udev/rules.d/91-seeedvoicecard.rules
$(INSTALL) -D -m 0644 $(@D)/pulseaudio/pulse_config_4mic/default.pa \
$(TARGET_DIR)/etc/pulse/seeed-voicecard-4mic-default.pa
$(INSTALL) -D -m 0644 $(@D)/pulseaudio/pulse_config_4mic/daemon.conf \
$(TARGET_DIR)/etc/pulse/seeed-voicecard-4mic-daemon.conf
$(INSTALL) -D -m 0644 $(@D)/pulseaudio/pulse_config_6mic/default.pa \
$(TARGET_DIR)/etc/pulse/seeed-voicecard-8mic-default.pa
$(INSTALL) -D -m 0644 $(@D)/pulseaudio/pulse_config_6mic/daemon.conf \
$(TARGET_DIR)/etc/pulse/seeed-voicecard-8mic-daemon.conf
endef
$(eval $(generic-package))

View File

@ -0,0 +1,160 @@
#!/bin/bash
#
# Copyright (c) 2018 Baozhu Zuo <zuobaozhu@gmail.com>
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
set -x
exec 1>/var/log/$(basename $0).log 2>&1
mkdir -p /boot
mount -t vfat /dev/mmcblk0p1 /boot
#enable i2c interface
dtparam i2c_arm=on
modprobe i2c-dev
#enable spi interface
dtparam spi=on
_VER_RUN=
function get_kernel_version() {
local ZIMAGE IMG_OFFSET
_VER_RUN=""
[ -z "$_VER_RUN" ] && {
ZIMAGE=/boot/kernel.img
IMG_OFFSET=$(LC_ALL=C grep -abo $'\x1f\x8b\x08\x00' $ZIMAGE | head -n 1 | cut -d ':' -f 1)
_VER_RUN=$(dd if=$ZIMAGE obs=64K ibs=4 skip=$(( IMG_OFFSET / 4)) | zcat | grep -a -m1 "Linux version" | strings | awk '{ print $3; }')
}
echo "$_VER_RUN"
return 0
}
CONFIG=/boot/config.txt
get_overlay() {
ov=$1
if grep -q -E "^dtoverlay=$ov" $CONFIG; then
echo 0
else
echo 1
fi
}
do_overlay() {
ov=$1
RET=$2
DEFAULT=--defaultno
CURRENT=0
if [ $(get_overlay $ov) -eq 0 ]; then
DEFAULT=
CURRENT=1
fi
if [ $RET -eq $CURRENT ]; then
ASK_TO_REBOOT=1
fi
if [ $RET -eq 0 ]; then
sed $CONFIG -i -e "s/^#dtoverlay=$ov/dtoverlay=$ov/"
if ! grep -q -E "^dtoverlay=$ov" $CONFIG; then
printf "dtoverlay=$ov\n" >> $CONFIG
fi
STATUS=enabled
elif [ $RET -eq 1 ]; then
sed $CONFIG -i -e "s/^dtoverlay=$ov/#dtoverlay=$ov/"
STATUS=disabled
else
return $RET
fi
}
is_1a=$(i2cdetect -y 1 0x1a 0x1a | egrep "(1a|UU)" | awk '{print $2}')
is_35=$(i2cdetect -y 1 0x35 0x35 | egrep "(35|UU)" | awk '{print $2}')
is_3b=$(i2cdetect -y 1 0x3b 0x3b | egrep "(3b|UU)" | awk '{print $2}')
RPI_HATS="seeed-2mic-voicecard seeed-4mic-voicecard seeed-8mic-voicecard"
overlay=""
if [ "x${is_1a}" != "x" ] && [ "x${is_35}" == "x" ] ; then
echo "install 2mic"
overlay=seeed-2mic-voicecard
asound_conf=/etc/voicecard/asound_2mic.conf
asound_state=/etc/voicecard/wm8960_asound.state
fi
if [ "x${is_3b}" != "x" ] && [ "x${is_35}" == "x" ] ; then
echo "install 4mic"
overlay=seeed-4mic-voicecard
asound_conf=/etc/voicecard/asound_4mic.conf
asound_state=/etc/voicecard/ac108_asound.state
pulse_default=/etc/pulse/seeed-voicecard-4mic-default.pa
pulse_daemon=/etc/pulse/seeed-voicecard-4mic-daemon.conf
fi
if [ "x${is_3b}" != "x" ] && [ "x${is_35}" != "x" ] ; then
echo "install 6mic"
overlay=seeed-8mic-voicecard
asound_conf=/etc/voicecard/asound_6mic.conf
asound_state=/etc/voicecard/ac108_6mic.state
pulse_default=/etc/pulse/seeed-voicecard-8mic-default.pa
pulse_daemon=/etc/pulse/seeed-voicecard-8mic-daemon.conf
fi
if [ "$overlay" ]; then
echo Install $overlay ...
# Remove old configuration
rm /etc/asound.conf
rm /var/lib/alsa/asound.state
rm /etc/pulse/default.pa
rm /etc/pulse/daemon.conf
kernel_ver=$(get_kernel_version)
# echo kernel_ver=$kernel_ver
# TODO: dynamic dtoverlay Bug of v4.19.x
# no DT node phandle inserted.
if [[ "$kernel_ver" =~ ^4\.19.*$ ]]; then
for i in $RPI_HATS; do
if [ "$i" == "$overlay" ]; then
do_overlay $overlay 0
else
echo Uninstall $i ...
do_overlay $i 1
fi
done
fi
#make sure the driver loads correctly
dtoverlay $overlay || true
echo "create $overlay asound configure file"
ln -s $asound_conf /etc/asound.conf
echo "create $overlay asound status file"
ln -s $asound_state /var/lib/alsa/asound.state
echo "create $overlay pulse default file"
ln -s $pulse_default /etc/pulse/default.pa
echo "create $overlay pulse daemon file"
ln -s $pulse_daemon /etc/pulse/daemon.conf
fi
alsactl restore
#Fore 3.5mm ('headphone') jack
amixer cset numid=3 1
touch /var/lock/seeed-voicecard

View File

@ -0,0 +1,12 @@
[Unit]
Description=Seeed Voicecard service
After=alsa-restore.service
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/usr/bin/seeed-voicecard
User=root
[Install]
WantedBy=sysinit.target

View File

@ -1,22 +0,0 @@
#!/bin/sh
#
# Loading boot splash
#
start() {
printf "Loading boot splash ..."
cat /dev/zero 1> /dev/fb0 2>/dev/null
fbv -f -d 1 /opt/mycroft/splash/boot.png > /dev/null 2>&1
echo "[OK]"
}
case "$1" in
start)
start
;;
*)
echo "Usage: $0 {start}"
exit 1
esac
exit $?

View File

@ -1,25 +0,0 @@
#!/bin/sh
#
# Resize SD card
#
start() {
printf "Resize data partition ..."
parted /dev/mmcblk0 unit % resizepart 2 yes 100% &&
partprobe /dev/mmcblk0 &&
sync &&
resize2fs /dev/mmcblk0p2 &&
chmod -x /etc/init.d/S00resize_sdcard &&
echo "[OK]"
}
case "$1" in
start)
start
;;
*)
echo "Usage: $0 {start}"
exit 1
esac
exit $?

View File

@ -1,2 +0,0 @@
modprobe snd-bcm2835
#modprobe snd-usb-audio

View File

@ -1,4 +0,0 @@
alsactl init
amixer cset numid=3 1
amixer sset PCM 95%

View File

@ -1,47 +0,0 @@
#!/bin/sh
#
# Prepare Mycroft software stack.
#
start() {
# set the right locale / language settings
export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8
export LANGUAGE=en_US.UTF-8
# Check if Mycroft log folders are present and if not
# create those logging folders
if [[ ! -w /var/log/mycroft/ ]] ; then
# Creating needed folders
printf "Creating /var/log/mycroft/ directory"
if [[ ! -d /var/log/mycroft/ ]] ; then
mkdir /var/log/mycroft/
fi
fi
# Check for internet connectivity
if ping -q -c 1 -W 1 1.1.1.1 >/dev/null 2>&1 ; then
return 0
fi
# Check if /.mycroft exist already and if not
# create a symbolic link to /root/.mycroft
if [[ ! -w /.mycroft/ ]] ; then
# Creating .mycroft symlink
printf "Creating /.mycroft/ symlink"
if [[ ! -d /.mycroft/ ]] ; then
ln -s /root/.mycroft /.mycroft
fi
fi
}
case "$1" in
start)
start
;;
*)
echo "Usage: $0 {start}"
exit 1
esac
exit $?

View File

@ -1,37 +0,0 @@
#!/bin/sh
#
# Starts Mycroft services.
#
start() {
printf "Starting Mycroft services: "
umask 077
bash /usr/bin/start-mycroft.sh all
echo "OK"
}
stop() {
printf "Stopping Mycroft services: "
bash /usr/bin/stop-mycroft.sh all
echo "OK"
}
restart() {
stop
start
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart|reload)
restart
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
esac
exit $?

View File

@ -1,7 +1,17 @@
{
"play_wav_cmdline": "aplay -Dhw:0,0 %1",
"play_mp3_cmdline": "mpg123 -a hw:0,0 %1",
"ipc_path": "/ramdisk/mycroft/ipc/",
"ignore_logs": ["enclosure.mouth.viseme", "enclosure.mouth.display"],
"log_level": "INFO"
"play_wav_cmdline": "aplay -Dhw:0,0 %1",
"play_mp3_cmdline": "mpg123 -a hw:0,0 %1",
"ipc_path": "/ramdisk/mycroft/ipc/",
"enclosure": {
"platform": "MycroftOS",
"platform_build": "0.1.0"
},
"listener": {
"mute_during_output": false
},
"skills": {
"priority_skills": ["mycroft-pairing", "mycroft-volume"]
},
"ignore_logs": ["enclosure.mouth.viseme", "enclosure.mouth.display"],
"log_level": "INFO"
}

View File

@ -0,0 +1,3 @@
[global]
only-binary=:all:
extra-index-url=https://www.piwheels.org/simple

View File

@ -29,10 +29,11 @@
# Authentication:
#LoginGraceTime 2m
PermitRootLogin yes
PermitRootLogin no
#StrictModes yes
#MaxAuthTries 6
#MaxSessions 10
AllowUsers *@*
#PubkeyAuthentication yes

View File

@ -0,0 +1,97 @@
## sudoers file.
##
## This file MUST be edited with the 'visudo' command as root.
## Failure to use 'visudo' may result in syntax or file permission errors
## that prevent sudo from running.
##
## See the sudoers man page for the details on how to write a sudoers file.
##
##
## Host alias specification
##
## Groups of machines. These may include host names (optionally with wildcards),
## IP addresses, network numbers or netgroups.
# Host_Alias WEBSERVERS = www1, www2, www3
##
## User alias specification
##
## Groups of users. These may consist of user names, uids, Unix groups,
## or netgroups.
# User_Alias ADMINS = millert, dowdy, mikef
##
## Cmnd alias specification
##
## Groups of commands. Often used to group related commands together.
# Cmnd_Alias PROCESSES = /usr/bin/nice, /bin/kill, /usr/bin/renice, \
# /usr/bin/pkill, /usr/bin/top
# Cmnd_Alias REBOOT = /sbin/halt, /sbin/reboot, /sbin/poweroff
##
## Defaults specification
##
## You may wish to keep some of the following environment variables
## when running commands via sudo.
##
## Locale settings
# Defaults env_keep += "LANG LANGUAGE LINGUAS LC_* _XKB_CHARSET"
##
## Run X applications through sudo; HOME is used to find the
## .Xauthority file. Note that other programs use HOME to find
## configuration files and this may lead to privilege escalation!
# Defaults env_keep += "HOME"
##
## X11 resource path settings
# Defaults env_keep += "XAPPLRESDIR XFILESEARCHPATH XUSERFILESEARCHPATH"
##
## Desktop path settings
# Defaults env_keep += "QTDIR KDEDIR"
##
## Allow sudo-run commands to inherit the callers' ConsoleKit session
# Defaults env_keep += "XDG_SESSION_COOKIE"
##
## Uncomment to enable special input methods. Care should be taken as
## this may allow users to subvert the command being run via sudo.
# Defaults env_keep += "XMODIFIERS GTK_IM_MODULE QT_IM_MODULE QT_IM_SWITCHER"
##
## Uncomment to use a hard-coded PATH instead of the user's to find commands
# Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
##
## Uncomment to send mail if the user does not enter the correct password.
# Defaults mail_badpass
##
## Uncomment to enable logging of a command's output, except for
## sudoreplay and reboot. Use sudoreplay to play back logged sessions.
# Defaults log_output
# Defaults!/usr/bin/sudoreplay !log_output
# Defaults!/usr/local/bin/sudoreplay !log_output
# Defaults!REBOOT !log_output
##
## Runas alias specification
##
##
## User privilege specification
##
root ALL=(ALL) ALL
## Uncomment to allow members of group wheel to execute any command
# %wheel ALL=(ALL) ALL
## Same thing without a password
# %wheel ALL=(ALL) NOPASSWD: ALL
## Uncomment to allow members of group sudo to execute any command
# %sudo ALL=(ALL) ALL
## Uncomment to allow any user to run sudo if they know the password
## of the user they are running the command as (root by default).
# Defaults targetpw # Ask for the password of the target user
# ALL ALL=(ALL) ALL # WARNING: only use this together with 'Defaults targetpw'
## Read drop-in files from /etc/sudoers.d
## (the '#' here does not indicate a comment)
#includedir /etc/sudoers.d

View File

@ -0,0 +1 @@
mycroft ALL=(ALL:ALL) NOPASSWD: ALL

View File

@ -0,0 +1,4 @@
d /var/log/mycroft 700 mycroft mycroft
d /opt/mycroft 755 mycroft mycroft
d /opt/mycroft/skills 755 mycroft mycroft
d /opt/mycroft/splash 755 mycroft mycroft

View File

@ -0,0 +1,3 @@
{
"max_allowed_core_version": 19.2
}

Some files were not shown because too many files have changed in this diff Show More