diff --git a/.gitmodules b/.gitmodules index 40bf1db4..421d6f6d 100644 --- a/.gitmodules +++ b/.gitmodules @@ -2,28 +2,3 @@ path = buildroot url = https://github.com/buildroot/buildroot.git branch = 2020.11.x - -[submodule "skill-ovos-mycroftgui"] - path = buildroot-external/rootfs-overlay/opt/mycroft/skills/skill-ovos-mycroftgui - url = https://github.com/OpenVoiceOS/skill-ovos-mycroftgui.git - branch = master - -[submodule "skill-ovos-enclosure"] - path = buildroot-external/rootfs-overlay/opt/mycroft/skills/skill-ovos-enclosure - url = https://github.com/OpenVoiceOS/skill-ovos-enclosure.git - branch = master - -[submodule "skill-balena-wifi-setup"] - path = buildroot-external/rootfs-overlay/opt/mycroft/skills/skill-balena-wifi-setup - url = https://github.com/OpenVoiceOS/skill-balena-wifi-setup.git - branch = master - -[submodule "skill-ovos-pairing"] - path = buildroot-external/rootfs-overlay/opt/mycroft/skills/skill-ovos-pairing - url = https://github.com/OpenVoiceOS/skill-ovos-pairing.git - branch = master - -[submodule "mycroft-skills"] - path = buildroot-external/rootfs-overlay/opt/mycroft/.skills-repo - url = https://github.com/MycroftAI/mycroft-skills.git - branch = 20.08 diff --git a/buildroot-external/Config.in b/buildroot-external/Config.in index ef42a283..ceaac787 100644 --- a/buildroot-external/Config.in +++ b/buildroot-external/Config.in @@ -92,15 +92,19 @@ endmenu menu "Additional external python modules" source "$BR2_EXTERNAL_OPENVOICEOS_PATH/package/python-adapt-parser/Config.in" source "$BR2_EXTERNAL_OPENVOICEOS_PATH/package/python-appdirs/Config.in" + source "$BR2_EXTERNAL_OPENVOICEOS_PATH/package/python-astral/Config.in" source "$BR2_EXTERNAL_OPENVOICEOS_PATH/package/python-bs4/Config.in" source "$BR2_EXTERNAL_OPENVOICEOS_PATH/package/python-cachetools/Config.in" source "$BR2_EXTERNAL_OPENVOICEOS_PATH/package/python-casttube/Config.in" + source "$BR2_EXTERNAL_OPENVOICEOS_PATH/package/python-colour/Config.in" + source "$BR2_EXTERNAL_OPENVOICEOS_PATH/package/python-convertdate/Config.in" source "$BR2_EXTERNAL_OPENVOICEOS_PATH/package/python-coverage/Config.in" source "$BR2_EXTERNAL_OPENVOICEOS_PATH/package/python-coveralls/Config.in" source "$BR2_EXTERNAL_OPENVOICEOS_PATH/package/python-deprecated/Config.in" source "$BR2_EXTERNAL_OPENVOICEOS_PATH/package/python-fann2/Config.in" source "$BR2_EXTERNAL_OPENVOICEOS_PATH/package/python-fasteners/Config.in" source "$BR2_EXTERNAL_OPENVOICEOS_PATH/package/python-feedparser/Config.in" + source "$BR2_EXTERNAL_OPENVOICEOS_PATH/package/python-geocoder/Config.in" source "$BR2_EXTERNAL_OPENVOICEOS_PATH/package/python-gitdb/Config.in" source "$BR2_EXTERNAL_OPENVOICEOS_PATH/package/python-gitpython/Config.in" source "$BR2_EXTERNAL_OPENVOICEOS_PATH/package/python-google-api-python-client/Config.in" @@ -108,20 +112,25 @@ menu "Additional external python modules" source "$BR2_EXTERNAL_OPENVOICEOS_PATH/package/python-google-auth/Config.in" source "$BR2_EXTERNAL_OPENVOICEOS_PATH/package/python-gtts/Config.in" source "$BR2_EXTERNAL_OPENVOICEOS_PATH/package/python-gtts_token/Config.in" + source "$BR2_EXTERNAL_OPENVOICEOS_PATH/package/python-holidays/Config.in" source "$BR2_EXTERNAL_OPENVOICEOS_PATH/package/python-humanhash3/Config.in" + source "$BR2_EXTERNAL_OPENVOICEOS_PATH/package/python-korean-lunar-calendar/Config.in" source "$BR2_EXTERNAL_OPENVOICEOS_PATH/package/python-lazy/Config.in" source "$BR2_EXTERNAL_OPENVOICEOS_PATH/package/python-levenshtein/Config.in" source "$BR2_EXTERNAL_OPENVOICEOS_PATH/package/python-lingua-franca/Config.in" source "$BR2_EXTERNAL_OPENVOICEOS_PATH/package/python-monotonic/Config.in" source "$BR2_EXTERNAL_OPENVOICEOS_PATH/package/python-msk/Config.in" source "$BR2_EXTERNAL_OPENVOICEOS_PATH/package/python-msm/Config.in" + source "$BR2_EXTERNAL_OPENVOICEOS_PATH/package/python-mycroft-messagebus-client/Config.in" source "$BR2_EXTERNAL_OPENVOICEOS_PATH/package/python-oauth2client/Config.in" source "$BR2_EXTERNAL_OPENVOICEOS_PATH/package/python-olefile/Config.in" + source "$BR2_EXTERNAL_OPENVOICEOS_PATH/package/python-ovos-utils/Config.in" source "$BR2_EXTERNAL_OPENVOICEOS_PATH/package/python-padaos/Config.in" source "$BR2_EXTERNAL_OPENVOICEOS_PATH/package/python-padatious/Config.in" source "$BR2_EXTERNAL_OPENVOICEOS_PATH/package/python-pako/Config.in" source "$BR2_EXTERNAL_OPENVOICEOS_PATH/package/python-pep8/Config.in" source "$BR2_EXTERNAL_OPENVOICEOS_PATH/package/python-petact/Config.in" + source "$BR2_EXTERNAL_OPENVOICEOS_PATH/package/python-phoneme-guesser/Config.in" source "$BR2_EXTERNAL_OPENVOICEOS_PATH/package/python-pocketsphinx/Config.in" source "$BR2_EXTERNAL_OPENVOICEOS_PATH/package/python-precise-runner/Config.in" source "$BR2_EXTERNAL_OPENVOICEOS_PATH/package/python-pulsectl/Config.in" @@ -129,14 +138,19 @@ menu "Additional external python modules" source "$BR2_EXTERNAL_OPENVOICEOS_PATH/package/python-pychromecast/Config.in" source "$BR2_EXTERNAL_OPENVOICEOS_PATH/package/python-pyee/Config.in" source "$BR2_EXTERNAL_OPENVOICEOS_PATH/package/python-pygithub/Config.in" + source "$BR2_EXTERNAL_OPENVOICEOS_PATH/package/python-pymeeus/Config.in" source "$BR2_EXTERNAL_OPENVOICEOS_PATH/package/python-pymplayer/Config.in" source "$BR2_EXTERNAL_OPENVOICEOS_PATH/package/python-pyxdg/Config.in" + source "$BR2_EXTERNAL_OPENVOICEOS_PATH/package/python-ratelim/Config.in" source "$BR2_EXTERNAL_OPENVOICEOS_PATH/package/python-requests-futures/Config.in" source "$BR2_EXTERNAL_OPENVOICEOS_PATH/package/python-rsa/Config.in" source "$BR2_EXTERNAL_OPENVOICEOS_PATH/package/python-sgmllib3k/Config.in" source "$BR2_EXTERNAL_OPENVOICEOS_PATH/package/python-smmap/Config.in" source "$BR2_EXTERNAL_OPENVOICEOS_PATH/package/python-source/Config.in" source "$BR2_EXTERNAL_OPENVOICEOS_PATH/package/python-speechrecognition/Config.in" + source "$BR2_EXTERNAL_OPENVOICEOS_PATH/package/python-timezonefinder/Config.in" + source "$BR2_EXTERNAL_OPENVOICEOS_PATH/package/python-tzlocal/Config.in" + source "$BR2_EXTERNAL_OPENVOICEOS_PATH/package/python-unidecode/Config.in" source "$BR2_EXTERNAL_OPENVOICEOS_PATH/package/python-uritemplate/Config.in" source "$BR2_EXTERNAL_OPENVOICEOS_PATH/package/python-vlc/Config.in" source "$BR2_EXTERNAL_OPENVOICEOS_PATH/package/python-xmlrunner/Config.in" diff --git a/buildroot-external/board/raspberrypi/cmdline.txt b/buildroot-external/board/raspberrypi/cmdline.txt index 658df72c..4c78a28b 100644 --- a/buildroot-external/board/raspberrypi/cmdline.txt +++ b/buildroot-external/board/raspberrypi/cmdline.txt @@ -1 +1 @@ -cma=64M@64M dwc_otg.lpm_enable=0 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes console=ttyAMA0,115200 consoleblank=0 loglevel=0 vt.global_cursor_default=0 logo.nologo systemd.show_status=0 rootwait quiet splash +dwc_otg.lpm_enable=0 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes console=ttyAMA0,115200 consoleblank=0 loglevel=0 vt.global_cursor_default=0 logo.nologo systemd.show_status=0 rootwait quiet splash diff --git a/buildroot-external/board/raspberrypi/config.txt b/buildroot-external/board/raspberrypi/config.txt index a0cf932f..3c08832f 100644 --- a/buildroot-external/board/raspberrypi/config.txt +++ b/buildroot-external/board/raspberrypi/config.txt @@ -27,10 +27,10 @@ max_framebuffers=2 # How much memory in MB to assign to the GPU on Pi models having # 256, 512 or 1024 MB total memory -gpu_mem=64 -gpu_mem_256=64 -gpu_mem_512=64 -gpu_mem_1024=64 +gpu_mem=256 +gpu_mem_256=128 +gpu_mem_512=128 +gpu_mem_1024=128 # Enable the onboard soundcard dtparam=audio=on diff --git a/buildroot-external/board/raspberrypi4-64/post-build.sh b/buildroot-external/board/raspberrypi4-64/post-build.sh index b68908bf..24eb932a 100755 --- a/buildroot-external/board/raspberrypi4-64/post-build.sh +++ b/buildroot-external/board/raspberrypi4-64/post-build.sh @@ -37,3 +37,4 @@ cp -fr ../buildroot-external/rootfs-overlay/opt/mycroft/skills/skill-balena-wifi cp -fr ../buildroot-external/rootfs-overlay/opt/mycroft/skills/skill-ovos-enclosure/.git* ${TARGET_DIR}/opt/mycroft/skills/skill-ovos-enclosure/ cp -fr ../buildroot-external/rootfs-overlay/opt/mycroft/skills/skill-ovos-mycroftgui/.git* ${TARGET_DIR}/opt/mycroft/skills/skill-ovos-mycroftgui/ cp -fr ../buildroot-external/rootfs-overlay/opt/mycroft/skills/skill-ovos-pairing/.git* ${TARGET_DIR}/opt/mycroft/skills/skill-ovos-pairing/ +cp -fr ../buildroot-external/rootfs-overlay/opt/mycroft/skills/skill-ovos-homescreen/.git* ${TARGET_DIR}/opt/mycroft/skills/skill-ovos-homescreen/ diff --git a/buildroot-external/configs/rpi4_64-gui_defconfig b/buildroot-external/configs/rpi4_64-gui_defconfig index 07844e60..5a07be85 100644 --- a/buildroot-external/configs/rpi4_64-gui_defconfig +++ b/buildroot-external/configs/rpi4_64-gui_defconfig @@ -518,23 +518,30 @@ BR2_PACKAGE_USERLAND_TOOLS=y BR2_PACKAGE_VIRTUAL_TOUCH=y BR2_PACKAGE_WIFI_CONNECT=y BR2_PACKAGE_PYTHON_ADAPT_PARSER=y +BR2_PACKAGE_PYTHON_ASTRAL=y +BR2_PACKAGE_PYTHON_COLOUR=y BR2_PACKAGE_PYTHON_COVERALLS=y BR2_PACKAGE_PYTHON_DEPRECATED=y BR2_PACKAGE_PYTHON_FASTENERS=y BR2_PACKAGE_PYTHON_FEEDPARSER=y +BR2_PACKAGE_PYTHON_GEOCODER=y BR2_PACKAGE_PYTHON_GOOGLE_API_PYTHON_CLIENT=y BR2_PACKAGE_PYTHON_GTTS=y +BR2_PACKAGE_PYTHON_HOLIDAYS=y BR2_PACKAGE_PYTHON_HUMANHASH3=y BR2_PACKAGE_PYTHON_LAZY=y BR2_PACKAGE_PYTHON_LEVENSHTEIN=y BR2_PACKAGE_PYTHON_LINGUA_FRANCA=y BR2_PACKAGE_PYTHON_MSK=y +BR2_PACKAGE_PYTHON_MYCROFT_MESSAGEBUS_CLIENT=y BR2_PACKAGE_PYTHON_OAUTH2CLIENT=y BR2_PACKAGE_PYTHON_OLEFILE=y +BR2_PACKAGE_PYTHON_OVOS_UTILS=y BR2_PACKAGE_PYTHON_PADATIOUS=y BR2_PACKAGE_PYTHON_PAKO=y BR2_PACKAGE_PYTHON_PEP8=y BR2_PACKAGE_PYTHON_PETACT=y +BR2_PACKAGE_PYTHON_PHONEME_GUESSER=y BR2_PACKAGE_PYTHON_POCKETSPHINX=y BR2_PACKAGE_PYTHON_PRECISE_RUNNER=y BR2_PACKAGE_PYTHON_PYCHROMECAST=y @@ -545,6 +552,8 @@ BR2_PACKAGE_PYTHON_SGMLLIB3K=y BR2_PACKAGE_PYTHON_SMMAP=y BR2_PACKAGE_PYTHON_SOURCE=y BR2_PACKAGE_PYTHON_SPEECHRECOGNITION=y +BR2_PACKAGE_PYTHON_TIMEZONEFINDER=y +BR2_PACKAGE_PYTHON_TZLOCAL=y BR2_PACKAGE_PYTHON_VLC=y BR2_PACKAGE_PYTHON_XMLRUNNER=y BR2_PACKAGE_PYTHON_MYCROFT=y diff --git a/buildroot-external/package/firstboot-service/gitstash b/buildroot-external/package/firstboot-service/gitstash index 788c9e76..c9eef08c 100755 --- a/buildroot-external/package/firstboot-service/gitstash +++ b/buildroot-external/package/firstboot-service/gitstash @@ -7,6 +7,8 @@ cd /opt/mycroft/skills/skill-balena-wifi-setup && git stash cd /opt/mycroft/skills/skill-ovos-enclosure && git stash cd /opt/mycroft/skills/skill-ovos-mycroftgui && git stash cd /opt/mycroft/skills/skill-ovos-pairing && git stash +cd /opt/mycroft/skills/skill-ovos-homescreen && git stash +cd /opt/mycroft/skills/skill-date-time.mycroftai && git stash chown -R mycroft.mycroft /opt/mycroft echo "[OK]" diff --git a/buildroot-external/package/mycroft-gui/StatusIndicator.qml b/buildroot-external/package/mycroft-gui/StatusIndicator.qml new file mode 100644 index 00000000..742877b4 --- /dev/null +++ b/buildroot-external/package/mycroft-gui/StatusIndicator.qml @@ -0,0 +1,340 @@ +/* + * Copyright 2018 by Marco Martin + * Copyright 2018 David Edmundson + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +import QtQuick 2.9 +import QtGraphicalEffects 1.0 +import org.kde.kirigami 2.5 as Kirigami +import Mycroft 1.0 as Mycroft + +Item { + id: root + implicitWidth: Kirigami.Units.gridUnit * 5 + implicitHeight: width + property var circleBackgroundColor: "#F5F5F5" + property var circleInnerColor: "#CD5C5C" + + property bool hasShadow: true + + state: "idle" + states: [ + State { + name: "idle" + PropertyChanges { + target: innerCircle + graphicsColor: circleInnerColor + backgroundColor: circleBackgroundColor + } + PropertyChanges { + target: root + opacity: 0 + } + StateChangeScript { + script: { + innerCircleRotation.running = false; + innerCircleRotation.to = 0; + innerCircleRotation.loops = 1; + innerCircleRotation.running = true; + + outerCircleRotation.loops = 1; + outerCircleRotation.restart(); + + fadeTimer.running = false; + } + } + }, + State { + name: "waiting" + PropertyChanges { + target: innerCircle + graphicsColor: circleInnerColor + backgroundColor: circleBackgroundColor + } + PropertyChanges { + target: root + opacity: 1 + } + StateChangeScript { + script: { + innerCircleRotation.running = false; + innerCircleRotation.to = -360; + innerCircleRotation.loops = 1; + innerCircleRotation.running = true; + + outerCircleRotation.loops = 1; + outerCircleRotation.restart(); + + fadeTimer.running = false; + } + } + }, + State { + name: "loading" + PropertyChanges { + target: innerCircle + targetRotation: 0 + graphicsColor: circleInnerColor + backgroundColor: circleBackgroundColor + } + PropertyChanges { + target: root + opacity: 1 + } + + StateChangeScript { + script: { + innerCircleRotation.running = false; + innerCircleRotation.to = innerCircle.rotation - 360; + innerCircleRotation.loops = Animation.Infinite; + innerCircleRotation.running = true; + + outerCircleRotation.loops = Animation.Infinite; + outerCircleRotation.restart(); + + fadeTimer.running = false; + } + } + }, + State { + name: "ok" + PropertyChanges { + target: innerCircle + explicit: true + targetRotation: -90 + graphicsColor: Kirigami.Theme.positiveTextColor + backgroundColor: Qt.tint(Kirigami.Theme.backgroundColor, Qt.rgba(Kirigami.Theme.positiveTextColor.r, Kirigami.Theme.positiveTextColor.g, Kirigami.Theme.positiveTextColor.b, 0.4)) + } + PropertyChanges { + target: root + opacity: 1 + } + StateChangeScript { + script: { + innerCircleRotation.running = false; + innerCircleRotation.to = -90; + innerCircleRotation.loops = 1; + innerCircleRotation.running = true; + + outerCircleRotation.loops = 1; + outerCircleRotation.restart(); + + fadeTimer.restart(); + } + } + }, + State { + name: "error" + PropertyChanges { + target: innerCircle + explicit: true + graphicsColor: "white" + backgroundColor: Qt.tint(Kirigami.Theme.backgroundColor, Qt.rgba(Kirigami.Theme.negativeTextColor.r, Kirigami.Theme.negativeTextColor.g, Kirigami.Theme.negativeTextColor.b, 0.4)) + } + PropertyChanges { + target: root + opacity: 1 + } + StateChangeScript { + script: { + innerCircleRotation.running = false; + innerCircleRotation.to = 90; + innerCircleRotation.loops = 1; + innerCircleRotation.running = true; + + outerCircleRotation.loops = 1; + outerCircleRotation.restart(); + + fadeTimer.restart(); + } + } + } + ] + + Connections { + target: Mycroft.MycroftController + onListeningChanged: { + if (Mycroft.MycroftController.listening) { + root.state = "waiting"; + } else { + fadeTimer.restart(); + } + } + onNotUnderstood: { + root.state = "idle" + root.state = "error"; + } + onFallbackTextRecieved: { + if (skill.length > 0) { + root.state = "ok"; + } + } + onServerReadyChanged: { + if (Mycroft.MycroftController.serverReady) { + root.state = "ok"; + } + } + onStatusChanged: { + switch (Mycroft.MycroftController.status) { + case Mycroft.MycroftController.Open: + root.state = Mycroft.MycroftController.serverReady ? "ok" : "loading"; + break; + case Mycroft.MycroftController.Connecting: + root.state = "loading"; + break; + case Mycroft.MycroftController.Error: + default: + root.state = "error"; + break; + } + } + onCurrentIntentChanged: { + if (Mycroft.MycroftController.currentIntent.length == 0) { + if (root.state == "loading") { + root.state = "idle"; + } + } else { + root.state = "loading"; + } + } + } + + Rectangle { + id: background + anchors.centerIn: parent + width: Math.min(parent.width, parent.height) + height: width + color: innerCircle.backgroundColor + radius: height + layer.enabled: hasShadow + layer.effect: DropShadow { + cached: true + transparentBorder: true + horizontalOffset: 0 + verticalOffset: 2 + } + } + Behavior on opacity { + OpacityAnimator { + duration: innerCircle.animationLength + easing.type: Easing.InOutCubic + } + } + + Rectangle { + id: innerCircleGraphics + anchors { + fill: outerCircle + margins: innerCircle.unit * 5 + } + visible: false + + color: innerCircle.graphicsColor + radius: width + } + Item { + id: innerCircleMask + visible: false + anchors.fill: innerCircleGraphics + + Rectangle { + anchors { + left: parent.left + right: parent.horizontalCenter + top: parent.top + bottom: parent.bottom + } + color: "white" + } + } + OpacityMask { + id: innerCircle + property int unit: Math.max(1, background.width/20) + property color graphicsColor + property color backgroundColor + property int animationLength: 1000 + property int targetRotation: 0 + Behavior on graphicsColor { + ColorAnimation { + duration: innerCircle.animationLength + easing.type: Easing.InOutCubic + } + } + Behavior on backgroundColor { + ColorAnimation { + duration: innerCircle.animationLength + easing.type: Easing.InOutCubic + } + } + anchors.fill: innerCircleGraphics + source: innerCircleGraphics + maskSource: innerCircleMask + + RotationAnimator { + id: innerCircleRotation + target: innerCircle + from: innerCircle.rotation + to: 0 + direction: RotationAnimator.Counterclockwise + duration: innerCircle.animationLength + easing.type: Easing.InOutCubic + } + } + + Item { + id: outerCircle + + anchors { + fill: background + margins: innerCircle.unit * 3 + } + + // the little dot + Rectangle { + width: innerCircle.unit * 2 + height: width + radius: width + color: innerCircle.graphicsColor + anchors.horizontalCenter : parent.horizontalCenter + } + //the circle + Rectangle { + anchors { + fill: parent + margins: innerCircle.unit * 3 + } + radius: width + color: "transparent" + border.width: innerCircle.unit + border.color: innerCircle.graphicsColor + } + RotationAnimator { + id: outerCircleRotation + target: outerCircle + from: outerCircle.rotation + to: outerCircle.rotation + 360 - (outerCircle.rotation + 360) % 360 + direction: RotationAnimator.Clockwise + duration: innerCircle.animationLength + easing.type: Easing.InOutCubic + } + } + Timer { + id: fadeTimer + interval: 3000 + repeat: false + onTriggered: root.state = "idle" + } +} diff --git a/buildroot-external/package/mycroft-gui/mycroft-gui.mk b/buildroot-external/package/mycroft-gui/mycroft-gui.mk index ee2298bf..ac22ce8e 100644 --- a/buildroot-external/package/mycroft-gui/mycroft-gui.mk +++ b/buildroot-external/package/mycroft-gui/mycroft-gui.mk @@ -17,6 +17,12 @@ define MYCROFT_GUI_CHANGE_IMAGE $(@D)/application/ endef +define MYCROFT_GUI_CHANGE_STATUS + cp $(BR2_EXTERNAL_OPENVOICEOS_PATH)/package/mycroft-gui/StatusIndicator.qml \ + $(@D)/import/qml/ +endef + MYCROFT_GUI_PRE_CONFIGURE_HOOKS += MYCROFT_GUI_CHANGE_IMAGE +MYCROFT_GUI_PRE_CONFIGURE_HOOKS += MYCROFT_GUI_CHANGE_STATUS $(eval $(cmake-package)) diff --git a/buildroot-external/package/python-astral/Config.in b/buildroot-external/package/python-astral/Config.in new file mode 100644 index 00000000..e09dabdb --- /dev/null +++ b/buildroot-external/package/python-astral/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_PYTHON_ASTRAL + bool "python-astral" + help + This is ‘astral’ a Python module which calculates + - Times for various positions of the sun: dawn, + sunrise, solar noon, sunset, dusk, solar elevation, + solar azimuth and rahukaalam. + - The phase of the moon. + + https://github.com/sffjunkie/astral diff --git a/buildroot-external/package/python-astral/python-astral.hash b/buildroot-external/package/python-astral/python-astral.hash new file mode 100644 index 00000000..9822a58d --- /dev/null +++ b/buildroot-external/package/python-astral/python-astral.hash @@ -0,0 +1,2 @@ +# md5, sha256 from https://pypi.org/pypi/ +sha256 e7f2c825ac101c0953812e0f4c617ca48bd9dd5f4ebf450f7ce9086ed8f5a1fe astral-1.4.zip diff --git a/buildroot-external/package/python-astral/python-astral.mk b/buildroot-external/package/python-astral/python-astral.mk new file mode 100644 index 00000000..4adc3700 --- /dev/null +++ b/buildroot-external/package/python-astral/python-astral.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# python-astral +# +################################################################################ + +PYTHON_ASTRAL_VERSION = 1.4 +PYTHON_ASTRAL_SOURCE = astral-$(PYTHON_ASTRAL_VERSION).zip +PYTHON_ASTRAL_SITE = https://files.pythonhosted.org/packages/a4/d6/c309f266677372964c6002a56a7bec2a90875338a71325e20b24d6d1e187 +PYTHON_ASTRAL_DEPENDENCIES = host-python-pytz +PYTHON_ASTRAL_SETUP_TYPE = setuptools +PYTHON_ASTRAL_LICENSE = Apache-2.0 +PYTHON_ASTRAL_LICENSE_FILES = LICENSE + +define PYTHON_ASTRAL_EXTRACT_CMDS + $(UNZIP) -d $(@D) $(DL_DIR)/python-astral/$(PYTHON_ASTRAL_SOURCE) + mv $(@D)/astral-$(PYTHON_ASTRAL_VERSION)/* $(@D) + $(RM) -r $(@D)/astral-$(PYTHON_ASTRAL_VERSION) +endef + +$(eval $(python-package)) diff --git a/buildroot-external/package/python-colour/0001-Update-version-info.patch.bu b/buildroot-external/package/python-colour/0001-Update-version-info.patch.bu new file mode 100644 index 00000000..fa66ac06 --- /dev/null +++ b/buildroot-external/package/python-colour/0001-Update-version-info.patch.bu @@ -0,0 +1,68 @@ +From 7aaece5945a8cb942c29b2d51d82123ff39aed85 Mon Sep 17 00:00:00 2001 +From: j1nx +Date: Thu, 7 Jan 2021 14:05:19 +0100 +Subject: [PATCH 1/1] Update version info + +--- + CHANGELOG.rst | 0 + setup.cfg | 14 +++++++------- + setup.py | 2 +- + 3 files changed, 8 insertions(+), 8 deletions(-) + create mode 100644 CHANGELOG.rst + +diff --git a/CHANGELOG.rst b/CHANGELOG.rst +new file mode 100644 +index 0000000..e69de29 +diff --git a/setup.cfg b/setup.cfg +index a6616d0..284dfa1 100644 +--- a/setup.cfg ++++ b/setup.cfg +@@ -1,7 +1,7 @@ + [metadata] +-name = %%name%% +-version = %%version%% +-summary = %%description%% ++name = colour ++version = 0.1.5 ++summary = converts and manipulates various color representation (HSL, RVB, web, X11, ...) + description-file = + README.rst + CHANGELOG.rst +@@ -10,9 +10,9 @@ license_file = LICENSE + requires-dist = + + ## sdist info +-author = %%author%% +-author_email = %%email%% +-home_page = http://github.com/vaab/%%name%% ++author = Valentin LAB ++author_email = valentin.lab@kalysto.org ++home_page = http://github.com/vaab/colour + license = BSD 3-Clause License + classifier = + Programming Language :: Python +@@ -30,7 +30,7 @@ classifier = + + + [files] +-modules = %%name%% ++modules = colour + extra_files = + README.rst + CHANGELOG.rst +diff --git a/setup.py b/setup.py +index 47038f9..92c38b7 100644 +--- a/setup.py ++++ b/setup.py +@@ -20,7 +20,7 @@ except ImportError: + ## Ensure that ``./autogen.sh`` is run prior to using ``setup.py`` + ## + +-if "%%short-version%%".startswith("%%"): ++if "0.1.5".startswith("%%"): + import os.path + import sys + WIN32 = sys.platform == 'win32' +-- +2.20.1 + diff --git a/buildroot-external/package/python-colour/Config.in b/buildroot-external/package/python-colour/Config.in new file mode 100644 index 00000000..0da0995f --- /dev/null +++ b/buildroot-external/package/python-colour/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_COLOUR + bool "python-colour" + help + Converts and manipulates common color + representation (RGB, HSL, web, …) + + https://github.com/vaab/colour diff --git a/buildroot-external/package/python-colour/python-colour.hash b/buildroot-external/package/python-colour/python-colour.hash new file mode 100644 index 00000000..0d6caddb --- /dev/null +++ b/buildroot-external/package/python-colour/python-colour.hash @@ -0,0 +1,2 @@ +# md5, sha256 from https://pypi.org/pypi +sha256 af20120fefd2afede8b001fbef2ea9da70ad7d49fafdb6489025dae8745c3aee colour-0.1.5.tar.gz diff --git a/buildroot-external/package/python-colour/python-colour.mk b/buildroot-external/package/python-colour/python-colour.mk new file mode 100644 index 00000000..178961b6 --- /dev/null +++ b/buildroot-external/package/python-colour/python-colour.mk @@ -0,0 +1,12 @@ +################################################################################ +# +# python-colour +# +################################################################################ + +PYTHON_COLOUR_VERSION = 0.1.5 +PYTHON_COLOUR_SOURCE = colour-$(PYTHON_COLOUR_VERSION).tar.gz +PYTHON_COLOUR_SITE = https://files.pythonhosted.org/packages/a0/d4/5911a7618acddc3f594ddf144ecd8a03c29074a540f4494670ad8f153efe +PYTHON_COLOUR_SETUP_TYPE = setuptools + +$(eval $(python-package)) diff --git a/buildroot-external/package/python-convertdate/Config.in b/buildroot-external/package/python-convertdate/Config.in new file mode 100644 index 00000000..c7260414 --- /dev/null +++ b/buildroot-external/package/python-convertdate/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_PYTHON_CONVERTDATE + bool "python-convertdate" + select BR2_PACKAGE_PYTHON_PYMEEUS # runtime + select BR2_PACKAGE_PYTHON_PYTZ # runtime + help + Converts between Gregorian dates and other calendar + systems.Calendars included: Baha'i, French Republican, + Hebrew, Indian Civil, Islamic, ISO, Julian, Mayan and + Persian. + + https://github.com/fitnr/convertdate diff --git a/buildroot-external/package/python-convertdate/python-convertdate.hash b/buildroot-external/package/python-convertdate/python-convertdate.hash new file mode 100644 index 00000000..e38040bb --- /dev/null +++ b/buildroot-external/package/python-convertdate/python-convertdate.hash @@ -0,0 +1,4 @@ +# md5, sha256 from https://pypi.org/pypi/convertdate/json +sha256 9d2b0cd8d5382d2458d4cfa59665abba398a9e9bfd3a01c6f61b7b47768d28bf convertdate-2.2.0.tar.gz +# Locally computed sha256 checksums +sha256 9ba9629594544da774effccbc0d1e7c9ebe17438e860db8a1bf11cf8081aef9f LICENSE diff --git a/buildroot-external/package/python-convertdate/python-convertdate.mk b/buildroot-external/package/python-convertdate/python-convertdate.mk new file mode 100644 index 00000000..7b448f1a --- /dev/null +++ b/buildroot-external/package/python-convertdate/python-convertdate.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-convertdate +# +################################################################################ + +PYTHON_CONVERTDATE_VERSION = 2.2.0 +PYTHON_CONVERTDATE_SOURCE = convertdate-$(PYTHON_CONVERTDATE_VERSION).tar.gz +PYTHON_CONVERTDATE_SITE = https://files.pythonhosted.org/packages/92/c1/1125eba52ce9bccf783f0640eaad39ffa6e4271dcf37d19438c2ef115233 +PYTHON_CONVERTDATE_SETUP_TYPE = setuptools +PYTHON_CONVERTDATE_LICENSE = MIT +PYTHON_CONVERTDATE_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/buildroot-external/package/python-feedparser/python-feedparser.hash b/buildroot-external/package/python-feedparser/python-feedparser.hash index 35b3fa1a..16a97186 100644 --- a/buildroot-external/package/python-feedparser/python-feedparser.hash +++ b/buildroot-external/package/python-feedparser/python-feedparser.hash @@ -1,6 +1,6 @@ # md5, sha256 from https://pypi.org/pypi/feedparser/json md5 ee8bd99535a4261b8e26976984dd6b26 feedparser-5.2.1.tar.bz2 -sha256 ce875495c90ebd74b179855449040003a1beb40cd13d5f037a0654251e260b02 feedparser-5.2.1.tar.bz2 +sha256 1b00a105425f492f3954fd346e5b524ca9cef3a4bbf95b8809470e9857aa1074 feedparser-6.0.2.tar.gz # Locally computed sha256 checksums sha256 3adcffa23e565106bd6af3aacc5d03cf7948073791c842037181683c61f4163f LICENSE sha256 961b8d49c0f06d3569d787a8bf8b885faa0837e89d2dd6011cb8c70347aafee3 docs/license.rst diff --git a/buildroot-external/package/python-feedparser/python-feedparser.mk b/buildroot-external/package/python-feedparser/python-feedparser.mk index 3336eb23..79a1c2b7 100644 --- a/buildroot-external/package/python-feedparser/python-feedparser.mk +++ b/buildroot-external/package/python-feedparser/python-feedparser.mk @@ -4,9 +4,9 @@ # ################################################################################ -PYTHON_FEEDPARSER_VERSION = 5.2.1 -PYTHON_FEEDPARSER_SOURCE = feedparser-$(PYTHON_FEEDPARSER_VERSION).tar.bz2 -PYTHON_FEEDPARSER_SITE = https://files.pythonhosted.org/packages/91/d8/7d37fec71ff7c9dbcdd80d2b48bcdd86d6af502156fc93846fb0102cb2c4 +PYTHON_FEEDPARSER_VERSION = 6.0.2 +PYTHON_FEEDPARSER_SOURCE = feedparser-$(PYTHON_FEEDPARSER_VERSION).tar.gz +PYTHON_FEEDPARSER_SITE = https://files.pythonhosted.org/packages/1b/84/934fc369d2e36d7fd9a196a72e68035cabc672c46bf7aa2661838e4d0ca9 PYTHON_FEEDPARSER_SETUP_TYPE = setuptools PYTHON_FEEDPARSER_LICENSE = BSD-2-Clause PYTHON_FEEDPARSER_LICENSE_FILES = LICENSE docs/license.rst diff --git a/buildroot-external/package/python-geocoder/Config.in b/buildroot-external/package/python-geocoder/Config.in new file mode 100644 index 00000000..833bcbc1 --- /dev/null +++ b/buildroot-external/package/python-geocoder/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_PYTHON_GEOCODER + bool "python-geocoder" + select BR2_PACKAGE_PYTHON_CLICK # runtime + select BR2_PACKAGE_PYTHON_FUTURE # runtime + select BR2_PACKAGE_PYTHON_RATELIM # runtime + select BR2_PACKAGE_PYTHON_REQUESTS # runtime + select BR2_PACKAGE_PYTHON_SIX # runtime + help + Geocoder is a simple and consistent geocoding library. + + https://github.com/DenisCarriere/geocoder diff --git a/buildroot-external/package/python-geocoder/python-geocoder.hash b/buildroot-external/package/python-geocoder/python-geocoder.hash new file mode 100644 index 00000000..006b4fb5 --- /dev/null +++ b/buildroot-external/package/python-geocoder/python-geocoder.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/geocoder/json +md5 360f693a51f7ea4b4078f9ef96222ee8 geocoder-1.38.1.tar.gz +sha256 c9925374c961577d0aee403b09e6f8ea1971d913f011f00ca70c76beaf7a77e7 geocoder-1.38.1.tar.gz +# Locally computed sha256 checksums +sha256 bba08f43391d2c055c1c30db4c8409f345359b03b6c276295db14f1d99de7993 LICENSE diff --git a/buildroot-external/package/python-geocoder/python-geocoder.mk b/buildroot-external/package/python-geocoder/python-geocoder.mk new file mode 100644 index 00000000..153d209b --- /dev/null +++ b/buildroot-external/package/python-geocoder/python-geocoder.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-geocoder +# +################################################################################ + +PYTHON_GEOCODER_VERSION = 1.38.1 +PYTHON_GEOCODER_SOURCE = geocoder-$(PYTHON_GEOCODER_VERSION).tar.gz +PYTHON_GEOCODER_SITE = https://files.pythonhosted.org/packages/ea/0b/2ea440270c1efb7ac73450cb704344c8127f45dabff0bea48711dc9dd93a +PYTHON_GEOCODER_SETUP_TYPE = setuptools +PYTHON_GEOCODER_LICENSE = MIT +PYTHON_GEOCODER_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/buildroot-external/package/python-holidays/Config.in b/buildroot-external/package/python-holidays/Config.in new file mode 100644 index 00000000..9c8dc6d1 --- /dev/null +++ b/buildroot-external/package/python-holidays/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_PYTHON_HOLIDAYS + bool "python-holidays" + select BR2_PACKAGE_PYTHON_CONVERTDATE # runtime + select BR2_PACKAGE_PYTHON_DATEUTIL # runtime + select BR2_PACKAGE_PYTHON_KOREAN_LUNAR_CALENDAR # runtime + select BR2_PACKAGE_PYTHON_SIX # runtime + help + Generate and work with holidays in Python. + + https://github.com/dr-prodigy/python-holidays diff --git a/buildroot-external/package/python-holidays/python-holidays.hash b/buildroot-external/package/python-holidays/python-holidays.hash new file mode 100644 index 00000000..b748f66a --- /dev/null +++ b/buildroot-external/package/python-holidays/python-holidays.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/holidays/json +md5 9326c201d11ea0b174b43312c14876b7 holidays-0.10.4.tar.gz +sha256 72378e7c00139ab157adf5155c0ec7af62489b7cae8d66dfc53a9a02ddcb1cab holidays-0.10.4.tar.gz +# Locally computed sha256 checksums +sha256 24c74ea476883dbe660246063bf533c7f56515b0b97e7613d72b746e3eb9c38f LICENSE diff --git a/buildroot-external/package/python-holidays/python-holidays.mk b/buildroot-external/package/python-holidays/python-holidays.mk new file mode 100644 index 00000000..35e1a041 --- /dev/null +++ b/buildroot-external/package/python-holidays/python-holidays.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-holidays +# +################################################################################ + +PYTHON_HOLIDAYS_VERSION = 0.10.4 +PYTHON_HOLIDAYS_SOURCE = holidays-$(PYTHON_HOLIDAYS_VERSION).tar.gz +PYTHON_HOLIDAYS_SITE = https://files.pythonhosted.org/packages/cc/14/a8a30bae14091984acd262526a258b1890c3ada0e5ae0da747e2b8f2b77d +PYTHON_HOLIDAYS_SETUP_TYPE = setuptools +PYTHON_HOLIDAYS_LICENSE = MIT +PYTHON_HOLIDAYS_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/buildroot-external/package/python-korean-lunar-calendar/Config.in b/buildroot-external/package/python-korean-lunar-calendar/Config.in new file mode 100644 index 00000000..9ce04a4e --- /dev/null +++ b/buildroot-external/package/python-korean-lunar-calendar/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_KOREAN_LUNAR_CALENDAR + bool "python-korean-lunar-calendar" + help + Korean Lunar Calendar. + + https://github.com/usingsky/korean_lunar_calendar_py diff --git a/buildroot-external/package/python-korean-lunar-calendar/python-korean-lunar-calendar.hash b/buildroot-external/package/python-korean-lunar-calendar/python-korean-lunar-calendar.hash new file mode 100644 index 00000000..e20463ab --- /dev/null +++ b/buildroot-external/package/python-korean-lunar-calendar/python-korean-lunar-calendar.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/korean_lunar_calendar/json +md5 1fda622625f7b0d6843eb0465a128fca korean_lunar_calendar-0.2.1.tar.gz +sha256 12ce54b1392ed45a82dc6cea85ee5f7e33630556e82488f57e37a22482c8275d korean_lunar_calendar-0.2.1.tar.gz +# Locally computed sha256 checksums +sha256 0ba0b32231bea04f4b037b9b138d83e78dc0781a3f568668b921e95dc6ca09f5 LICENSE diff --git a/buildroot-external/package/python-korean-lunar-calendar/python-korean-lunar-calendar.mk b/buildroot-external/package/python-korean-lunar-calendar/python-korean-lunar-calendar.mk new file mode 100644 index 00000000..c151f2ba --- /dev/null +++ b/buildroot-external/package/python-korean-lunar-calendar/python-korean-lunar-calendar.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-korean-lunar-calendar +# +################################################################################ + +PYTHON_KOREAN_LUNAR_CALENDAR_VERSION = 0.2.1 +PYTHON_KOREAN_LUNAR_CALENDAR_SOURCE = korean_lunar_calendar-$(PYTHON_KOREAN_LUNAR_CALENDAR_VERSION).tar.gz +PYTHON_KOREAN_LUNAR_CALENDAR_SITE = https://files.pythonhosted.org/packages/fa/c4/2f0f2329098ee24f629c3ad4dcb210fbedb52e51fa6348ebdcbd7af2151b +PYTHON_KOREAN_LUNAR_CALENDAR_SETUP_TYPE = setuptools +PYTHON_KOREAN_LUNAR_CALENDAR_LICENSE = MIT +PYTHON_KOREAN_LUNAR_CALENDAR_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/buildroot-external/package/python-msm/0002-Fix-package-warning.patch b/buildroot-external/package/python-msm/0002-Fix-package-warning.patch new file mode 100644 index 00000000..c9c4ede6 --- /dev/null +++ b/buildroot-external/package/python-msm/0002-Fix-package-warning.patch @@ -0,0 +1,168 @@ +From ed8c1bae5f26f7327090ac56a6522c78a914e78c Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?=C3=85ke=20Forslund?= +Date: Mon, 28 Sep 2020 17:53:40 +0200 +Subject: [PATCH 1/2] Only show the pako warning if it's used + +--- + msm/skill_entry.py | 44 ++++++++++++++++++++++++-------------------- + 1 file changed, 24 insertions(+), 20 deletions(-) + +diff --git a/msm/skill_entry.py b/msm/skill_entry.py +index 3170656..c64e666 100644 +--- a/msm/skill_entry.py ++++ b/msm/skill_entry.py +@@ -327,6 +327,7 @@ def run_pip(self, constraints=None): + return True + + def install_system_deps(self): ++ success = True + self.run_requirements_sh() + system_packages = { + exe: (packages or '').split() +@@ -334,26 +335,29 @@ def install_system_deps(self): + } + LOG.info('Installing system requirements...') + all_deps = system_packages.pop('all', []) +- try: +- manager = PakoManager() +- success = manager.install(all_deps, overrides=system_packages) +- except RuntimeError as e: +- LOG.warning('Failed to launch package manager: {}'.format(e)) +- success = False +- missing_exes = [ +- exe for exe in self.dependencies.get('exes') or [] +- if not shutil.which(exe) +- ] +- if missing_exes: +- if not success: +- LOG.warning('Failed to install dependencies.') +- if all_deps: +- LOG.warning('Please install manually: {}'.format( +- ' '.join(all_deps) +- )) +- raise SkillRequirementsException('Could not find exes: {}'.format( +- ', '.join(missing_exes) +- )) ++ use_pako = bool(all_deps) ++ if use_pako: # Only try to install if there are packages to install ++ try: ++ manager = PakoManager() ++ success = manager.install(all_deps, overrides=system_packages) ++ except RuntimeError as e: ++ LOG.warning('Failed to launch package manager: {}'.format(e)) ++ success = False ++ missing_exes = [ ++ exe for exe in self.dependencies.get('exes') or [] ++ if not shutil.which(exe) ++ ] ++ if missing_exes: ++ if use_pako: ++ # Pako was used and apparently failed. ++ LOG.warning('Failed to install dependencies.') ++ if all_deps: ++ LOG.warning('Please install manually: {}'.format( ++ ' '.join(all_deps) ++ )) ++ raise SkillRequirementsException( ++ 'Could not find exes: {}'.format(', '.join(missing_exes)) ++ ) + return success + + def run_requirements_sh(self): + +From d1cdbb40ed09f067f9fa9295ab6fca654f5f0fe1 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?=C3=85ke=20Forslund?= +Date: Tue, 29 Sep 2020 19:57:35 +0200 +Subject: [PATCH 2/2] Move pako handling into function + +--- + msm/skill_entry.py | 63 ++++++++++++++++++++++++++++------------------ + 1 file changed, 38 insertions(+), 25 deletions(-) + +diff --git a/msm/skill_entry.py b/msm/skill_entry.py +index c64e666..9268d41 100644 +--- a/msm/skill_entry.py ++++ b/msm/skill_entry.py +@@ -57,6 +57,23 @@ + FIVE_MINUTES = 300 + + ++def _perform_pako_install(packages): ++ """Install the list of packagess using Pako. ++ ++ Arguments: ++ packages (list): list of packages to install. ++ Returns: ++ (bool) True if install completed successfully, else False ++ """ ++ try: ++ manager = PakoManager() ++ success = manager.install(packages, overrides=system_packages) ++ except RuntimeError as e: ++ LOG.warning('Failed to launch package manager: {}'.format(e)) ++ success = False ++ return success ++ ++ + @contextmanager + def work_dir(directory): + old_dir = os.getcwd() +@@ -327,37 +344,33 @@ def run_pip(self, constraints=None): + return True + + def install_system_deps(self): +- success = True + self.run_requirements_sh() + system_packages = { + exe: (packages or '').split() + for exe, packages in self.dependent_system_packages.items() + } + LOG.info('Installing system requirements...') +- all_deps = system_packages.pop('all', []) +- use_pako = bool(all_deps) +- if use_pako: # Only try to install if there are packages to install +- try: +- manager = PakoManager() +- success = manager.install(all_deps, overrides=system_packages) +- except RuntimeError as e: +- LOG.warning('Failed to launch package manager: {}'.format(e)) +- success = False +- missing_exes = [ +- exe for exe in self.dependencies.get('exes') or [] +- if not shutil.which(exe) +- ] +- if missing_exes: +- if use_pako: +- # Pako was used and apparently failed. +- LOG.warning('Failed to install dependencies.') +- if all_deps: +- LOG.warning('Please install manually: {}'.format( +- ' '.join(all_deps) +- )) +- raise SkillRequirementsException( +- 'Could not find exes: {}'.format(', '.join(missing_exes)) +- ) ++ packages = system_packages.pop('all', []) ++ if packages: # Only try to install if there are packages to install ++ success = _perform_pako_install(packages) ++ else: ++ success = True # No packages to install ++ ++ missing_exes = [ ++ exe for exe in self.dependencies.get('exes') or [] ++ if not shutil.which(exe) ++ ] ++ # If executables are missing on the system inform of the issue. ++ if missing_exes: ++ # Pako was used and apparently failed. ++ LOG.warning('Failed to install dependencies.') ++ if packages: ++ LOG.warning('Please install manually: {}'.format( ++ ' '.join(all_deps) ++ )) ++ raise SkillRequirementsException( ++ 'Could not find exes: {}'.format(', '.join(missing_exes)) ++ ) + return success + + def run_requirements_sh(self): diff --git a/buildroot-external/package/python-msm/0003-Remove-sudo-pip-logic-and-change-to-user-by-default.patch.bu b/buildroot-external/package/python-msm/0003-Remove-sudo-pip-logic-and-change-to-user-by-default.patch.bu new file mode 100644 index 00000000..ac709afb --- /dev/null +++ b/buildroot-external/package/python-msm/0003-Remove-sudo-pip-logic-and-change-to-user-by-default.patch.bu @@ -0,0 +1,32 @@ +From 89782d56ed0fa1b63fef350520abea59c79bf283 Mon Sep 17 00:00:00 2001 +From: j1nx +Date: Mon, 14 Sep 2020 16:38:58 +0200 +Subject: [PATCH 1/1] Remove "sudo" pip logic and change to --user by default + +--- + msm/skill_entry.py | 6 +----- + 1 file changed, 1 insertion(+), 5 deletions(-) + +diff --git a/msm/skill_entry.py b/msm/skill_entry.py +index 3170656..ec78609 100644 +--- a/msm/skill_entry.py ++++ b/msm/skill_entry.py +@@ -295,14 +295,10 @@ class SkillEntry(object): + constraints = DEFAULT_CONSTRAINTS + + LOG.info('Installing requirements.txt for ' + self.name) +- can_pip = os.access(dirname(sys.executable), os.W_OK | os.X_OK) +- pip_args = [sys.executable, '-m', 'pip', 'install'] ++ pip_args = [sys.executable, '-m', 'pip', 'install', '--user'] + if constraints: + pip_args += ['-c', constraints] + +- if not can_pip: +- pip_args = ['sudo', '-n'] + pip_args +- + with self.pip_lock: + """ + Iterate over the individual Python packages and +-- +2.20.1 + diff --git a/buildroot-external/package/python-mycroft-messagebus-client/Config.in b/buildroot-external/package/python-mycroft-messagebus-client/Config.in new file mode 100644 index 00000000..10a040fb --- /dev/null +++ b/buildroot-external/package/python-mycroft-messagebus-client/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_PYTHON_MYCROFT_MESSAGEBUS_CLIENT + bool "python-mycroft-messagebus-client" + help + This module is a simple interface for the mycroft + messagebus and can be used to connect to mycroft, + send messages and react to messages sent by the + Mycroft system. + + https://github.com/MycroftAI/mycroft-messagebus-client diff --git a/buildroot-external/package/python-mycroft-messagebus-client/python-mycroft-messagebus-client.hash b/buildroot-external/package/python-mycroft-messagebus-client/python-mycroft-messagebus-client.hash new file mode 100644 index 00000000..e7f0c968 --- /dev/null +++ b/buildroot-external/package/python-mycroft-messagebus-client/python-mycroft-messagebus-client.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/msm/json +md5 fe54a2aecd6751bef66fdcd27ffd3cdc msm-0.5.19.tar.gz +sha256 4a3d2325407b95f4a13871e1f45a7041014699201531e452b63efa8fdd7ef48d mycroft-messagebus-client-0.8.4.tar.gz +# Locally computed sha256 checksums +sha256 a6cba85bc92e0cff7a450b1d873c0eaa2e9fc96bf472df0247a26bec77bf3ff9 LICENSE diff --git a/buildroot-external/package/python-mycroft-messagebus-client/python-mycroft-messagebus-client.mk b/buildroot-external/package/python-mycroft-messagebus-client/python-mycroft-messagebus-client.mk new file mode 100644 index 00000000..ae1b1bcd --- /dev/null +++ b/buildroot-external/package/python-mycroft-messagebus-client/python-mycroft-messagebus-client.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-mycroft-messagebus-client +# +################################################################################ + +PYTHON_MYCROFT_MESSAGEBUS_CLIENT_VERSION = 0.8.4 +PYTHON_MYCROFT_MESSAGEBUS_CLIENT_SOURCE = mycroft-messagebus-client-$(PYTHON_MYCROFT_MESSAGEBUS_CLIENT_VERSION).tar.gz +PYTHON_MYCROFT_MESSAGEBUS_CLIENT_SITE = https://files.pythonhosted.org/packages/06/15/881da04555710caa2b5fd0d582aa21ed6ecaf88fc5c2343f46caa1b84ccf +PYTHON_MYCROFT_MESSAGEBUS_CLIENT_SETUP_TYPE = setuptools +PYTHON_MYCROFT_MESSAGEBUS_CLIENT_LICENSE = Apache-2.0 +PYTHON_MYCROFT_MESSAGEBUS_CLIENT_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/buildroot-external/package/python-ovos-utils/Config.in b/buildroot-external/package/python-ovos-utils/Config.in new file mode 100644 index 00000000..63e0b7e6 --- /dev/null +++ b/buildroot-external/package/python-ovos-utils/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_OVOS_UTILS + bool "python-ovos-utils" + help + collection of simple utilities for use + across the mycroft ecosystem + + https://github.com/OpenVoiceOS/ovos_utils diff --git a/buildroot-external/package/python-ovos-utils/python-ovos-utils.hash b/buildroot-external/package/python-ovos-utils/python-ovos-utils.hash new file mode 100644 index 00000000..5d5070c7 --- /dev/null +++ b/buildroot-external/package/python-ovos-utils/python-ovos-utils.hash @@ -0,0 +1 @@ +sha256 51de8154a8b07f2b9058f1cdf4c6b4e68db46d5cefd2cfe67597c90ec4520e91 python-ovos-utils-fb04a83594705aabbefc3534bc7c3b18580aee6f.tar.gz diff --git a/buildroot-external/package/python-ovos-utils/python-ovos-utils.mk b/buildroot-external/package/python-ovos-utils/python-ovos-utils.mk new file mode 100644 index 00000000..0850f533 --- /dev/null +++ b/buildroot-external/package/python-ovos-utils/python-ovos-utils.mk @@ -0,0 +1,12 @@ +################################################################################ +# +# python-ovos-utils +# +################################################################################ + +PYTHON_OVOS_UTILS_VERSION = fb04a83594705aabbefc3534bc7c3b18580aee6f +PYTHON_OVOS_UTILS_SITE = $(call github,OpenVoiceOS,ovos_utils,$(PYTHON_OVOS_UTILS_VERSION)) +PYTHON_OVOS_UTILS_SETUP_TYPE = setuptools +PYTHON_OVOS_UTILS_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/buildroot-external/package/python-phoneme-guesser/Config.in b/buildroot-external/package/python-phoneme-guesser/Config.in new file mode 100644 index 00000000..eeaf1d63 --- /dev/null +++ b/buildroot-external/package/python-phoneme-guesser/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_PHONEME_GUESSER + bool "python-phoneme-guesser" + select BR2_PACKAGE_PYTHON_UNIDECODE # runtime + help + phonemes from text. + + https://github.com/OpenJarbas/phoneme_guesser diff --git a/buildroot-external/package/python-phoneme-guesser/python-phoneme-guesser.hash b/buildroot-external/package/python-phoneme-guesser/python-phoneme-guesser.hash new file mode 100644 index 00000000..cf13159b --- /dev/null +++ b/buildroot-external/package/python-phoneme-guesser/python-phoneme-guesser.hash @@ -0,0 +1,3 @@ +# md5, sha256 from https://pypi.org/pypi/phoneme_guesser/json +md5 a7d51cccf538c6440c0eadf8b4da704f phoneme_guesser-0.1.0.tar.gz +sha256 4f3b593563593fac668c94de34503a66fd9c307d4fad2a33c92c6db03f7f9eef phoneme_guesser-0.1.0.tar.gz diff --git a/buildroot-external/package/python-phoneme-guesser/python-phoneme-guesser.mk b/buildroot-external/package/python-phoneme-guesser/python-phoneme-guesser.mk new file mode 100644 index 00000000..7a0da238 --- /dev/null +++ b/buildroot-external/package/python-phoneme-guesser/python-phoneme-guesser.mk @@ -0,0 +1,12 @@ +################################################################################ +# +# python-phoneme-guesser +# +################################################################################ + +PYTHON_PHONEME_GUESSER_VERSION = 0.1.0 +PYTHON_PHONEME_GUESSER_SOURCE = phoneme_guesser-$(PYTHON_PHONEME_GUESSER_VERSION).tar.gz +PYTHON_PHONEME_GUESSER_SITE = https://files.pythonhosted.org/packages/c7/ea/c5b389b6d593212935412e5f314978d860bc59c393a8c1029ada3992f4bd +PYTHON_PHONEME_GUESSER_SETUP_TYPE = setuptools + +$(eval $(python-package)) diff --git a/buildroot-external/package/python-pymeeus/Config.in b/buildroot-external/package/python-pymeeus/Config.in new file mode 100644 index 00000000..9bf716cc --- /dev/null +++ b/buildroot-external/package/python-pymeeus/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_PYMEEUS + bool "python-pymeeus" + help + Python implementation of Jean Meeus astronomical routines. + + https://github.com/architest/pymeeus diff --git a/buildroot-external/package/python-pymeeus/python-pymeeus.hash b/buildroot-external/package/python-pymeeus/python-pymeeus.hash new file mode 100644 index 00000000..399f8f66 --- /dev/null +++ b/buildroot-external/package/python-pymeeus/python-pymeeus.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/pymeeus/json +md5 47dd9b52aa30a096bf25029e087fb793 PyMeeus-0.3.7.tar.gz +sha256 56430209e6f9a039f1ba73f107ab0b23121548e2a67ed2855f2416c3749a5662 PyMeeus-0.3.7.tar.gz +# Locally computed sha256 checksums +sha256 e79e9c8a0c85d735ff98185918ec94ed7d175efc377012787aebcf3b80f0d90b LICENSE.txt diff --git a/buildroot-external/package/python-pymeeus/python-pymeeus.mk b/buildroot-external/package/python-pymeeus/python-pymeeus.mk new file mode 100644 index 00000000..0f34fa5e --- /dev/null +++ b/buildroot-external/package/python-pymeeus/python-pymeeus.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-pymeeus +# +################################################################################ + +PYTHON_PYMEEUS_VERSION = 0.3.7 +PYTHON_PYMEEUS_SOURCE = PyMeeus-$(PYTHON_PYMEEUS_VERSION).tar.gz +PYTHON_PYMEEUS_SITE = https://files.pythonhosted.org/packages/2c/30/47957d487fff94083bdd17247734c165f12b5ac39a3abd1aa476a93eea6e +PYTHON_PYMEEUS_SETUP_TYPE = setuptools +PYTHON_PYMEEUS_LICENSE = GPL-3.0 +PYTHON_PYMEEUS_LICENSE_FILES = LICENSE.txt + +$(eval $(python-package)) diff --git a/buildroot-external/package/python-ratelim/Config.in b/buildroot-external/package/python-ratelim/Config.in new file mode 100644 index 00000000..1c3d5781 --- /dev/null +++ b/buildroot-external/package/python-ratelim/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_RATELIM + bool "python-ratelim" + select BR2_PACKAGE_PYTHON_DECORATOR # runtime + help + Makes it easy to respect rate limits. + + http://github.com/themiurgo/ratelim diff --git a/buildroot-external/package/python-ratelim/python-ratelim.hash b/buildroot-external/package/python-ratelim/python-ratelim.hash new file mode 100644 index 00000000..d6e02051 --- /dev/null +++ b/buildroot-external/package/python-ratelim/python-ratelim.hash @@ -0,0 +1,3 @@ +# md5, sha256 from https://pypi.org/pypi/ratelim/json +md5 91063fcac413e9faba01c9046c5134dc ratelim-0.1.6.tar.gz +sha256 826d32177e11f9a12831901c9fda6679fd5bbea3605910820167088f5acbb11d ratelim-0.1.6.tar.gz diff --git a/buildroot-external/package/python-ratelim/python-ratelim.mk b/buildroot-external/package/python-ratelim/python-ratelim.mk new file mode 100644 index 00000000..8922a2b0 --- /dev/null +++ b/buildroot-external/package/python-ratelim/python-ratelim.mk @@ -0,0 +1,12 @@ +################################################################################ +# +# python-ratelim +# +################################################################################ + +PYTHON_RATELIM_VERSION = 0.1.6 +PYTHON_RATELIM_SOURCE = ratelim-$(PYTHON_RATELIM_VERSION).tar.gz +PYTHON_RATELIM_SITE = https://files.pythonhosted.org/packages/c5/5a/e1440017bccb14523bb76356e6f3a5468386b8a9192bd901e98babd1a1ea +PYTHON_RATELIM_SETUP_TYPE = setuptools + +$(eval $(python-package)) diff --git a/buildroot-external/package/python-timezonefinder/0001-No-package-name-variables.patch b/buildroot-external/package/python-timezonefinder/0001-No-package-name-variables.patch new file mode 100644 index 00000000..84192dee --- /dev/null +++ b/buildroot-external/package/python-timezonefinder/0001-No-package-name-variables.patch @@ -0,0 +1,38 @@ +From aabf33f93a95b4ccbd900dfee2b7508227ee9ac7 Mon Sep 17 00:00:00 2001 +From: j1nx +Date: Thu, 7 Jan 2021 19:21:24 +0100 +Subject: [PATCH 1/1] No package name variables + +--- + setup.py | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +diff --git a/setup.py b/setup.py +index d2afc06..0cfac34 100755 +--- a/setup.py ++++ b/setup.py +@@ -11,15 +11,15 @@ setup( + # version: in VERSION file https://packaging.python.org/guides/single-sourcing-package-version/ + # With this approach you must make sure that the VERSION file is included in all your source + # and binary distributions (e.g. add include VERSION to your MANIFEST.in). +- author='Jannik Michelfeit', ++ author='J. Michelfeit', + author_email='python@michelfe.it', + license='MIT licence', +- url=f'https://github.com/MrMinimal64/{PACKAGE_NAME}', # use the URL to the github repo ++ url='https://github.com/MrMinimal64/timezonefinder', # use the URL to the github repo + project_urls={ +- "Source Code": f"https://github.com/MrMinimal64/{PACKAGE_NAME}", +- "Documentation": f"https://{PACKAGE_NAME}.readthedocs.io/en/latest/", +- "Changelog": f"https://github.com/MrMinimal64/{PACKAGE_NAME}/blob/master/CHANGELOG.rst", +- "License": f"https://github.com/MrMinimal64/{PACKAGE_NAME}/blob/master/LICENSE", ++ "Source Code": "https://github.com/MrMinimal64/timezonefinder", ++ "Documentation": "https://timezonefinder.readthedocs.io/en/latest/", ++ "Changelog": "https://github.com/MrMinimal64/timezonefinder/blob/master/CHANGELOG.rst", ++ "License": "https://github.com/MrMinimal64/timezonefinder/blob/master/LICENSE", + }, + keywords='timezone coordinates latitude longitude location pytzwhere tzwhere', + classifiers=[ +-- +2.20.1 + diff --git a/buildroot-external/package/python-timezonefinder/Config.in b/buildroot-external/package/python-timezonefinder/Config.in new file mode 100644 index 00000000..fbe31be4 --- /dev/null +++ b/buildroot-external/package/python-timezonefinder/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_PYTHON_TIMEZONEFINDER + bool "python-timezonefinder" + help + This is a fast and lightweight python + package for looking up the corresponding + timezone for given coordinates on earth + entirely offline. + + https://github.com/MrMinimal64/timezonefinder diff --git a/buildroot-external/package/python-timezonefinder/python-timezonefinder.hash b/buildroot-external/package/python-timezonefinder/python-timezonefinder.hash new file mode 100644 index 00000000..0391ad8c --- /dev/null +++ b/buildroot-external/package/python-timezonefinder/python-timezonefinder.hash @@ -0,0 +1,2 @@ +# md5, sha256 from https://pypi.org/pypi/ +sha256 d8a05c207aab92d6f01b426dc4bcef08118ec31cf4504bd4011c7551f3160694 timezonefinder-5.0.0.tar.gz diff --git a/buildroot-external/package/python-timezonefinder/python-timezonefinder.mk b/buildroot-external/package/python-timezonefinder/python-timezonefinder.mk new file mode 100644 index 00000000..4a802d7f --- /dev/null +++ b/buildroot-external/package/python-timezonefinder/python-timezonefinder.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# python-timezonefinder +# +################################################################################ + +PYTHON_TIMEZONEFINDER_VERSION = 5.0.0 +PYTHON_TIMEZONEFINDER_SOURCE = timezonefinder-$(PYTHON_TIMEZONEFINDER_VERSION).tar.gz +PYTHON_TIMEZONEFINDER_SITE = https://files.pythonhosted.org/packages/74/d2/e6cc8edf6a6da56c5311776334b4bd2a271757573dd020592a8540512b88 +PYTHON_TIMEZONEFINDER_SETUP_TYPE = setuptools +PYTHON_TIMEZONEFINDER_DEPENDENCIES = host-python-numpy + +$(eval $(python-package)) diff --git a/buildroot-external/package/python-tzlocal/Config.in b/buildroot-external/package/python-tzlocal/Config.in new file mode 100644 index 00000000..a6f8e9d8 --- /dev/null +++ b/buildroot-external/package/python-tzlocal/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_TZLOCAL + bool "python-tzlocal" + help + This Python module returns a tzinfo object + with the local timezone information + + https://github.com/regebro/tzlocal diff --git a/buildroot-external/package/python-tzlocal/python-tzlocal.hash b/buildroot-external/package/python-tzlocal/python-tzlocal.hash new file mode 100644 index 00000000..8a4a63bd --- /dev/null +++ b/buildroot-external/package/python-tzlocal/python-tzlocal.hash @@ -0,0 +1,2 @@ +# md5, sha256 from https://pypi.org/pypi/ +sha256 d160c2ce4f8b1831dabfe766bd844cf9012f766539cf84139c2faac5201882ce tzlocal-1.3.tar.gz diff --git a/buildroot-external/package/python-tzlocal/python-tzlocal.mk b/buildroot-external/package/python-tzlocal/python-tzlocal.mk new file mode 100644 index 00000000..fa5ae185 --- /dev/null +++ b/buildroot-external/package/python-tzlocal/python-tzlocal.mk @@ -0,0 +1,12 @@ +################################################################################ +# +# python-tzlocal +# +################################################################################ + +PYTHON_TZLOCAL_VERSION = 1.3 +PYTHON_TZLOCAL_SOURCE = tzlocal-$(PYTHON_TZLOCAL_VERSION).tar.gz +PYTHON_TZLOCAL_SITE = https://files.pythonhosted.org/packages/d3/64/e4b18738496213f82b88b31c431a0e4ece143801fb6771dddd1c2bf0101b +PYTHON_TZLOCAL_SETUP_TYPE = setuptools + +$(eval $(python-package)) diff --git a/buildroot-external/package/python-unidecode/Config.in b/buildroot-external/package/python-unidecode/Config.in new file mode 100644 index 00000000..ca7acb2d --- /dev/null +++ b/buildroot-external/package/python-unidecode/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_UNIDECODE + bool "python-unidecode" + help + ASCII transliterations of Unicode text. + + diff --git a/buildroot-external/package/python-unidecode/python-unidecode.hash b/buildroot-external/package/python-unidecode/python-unidecode.hash new file mode 100644 index 00000000..19ed33aa --- /dev/null +++ b/buildroot-external/package/python-unidecode/python-unidecode.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/unidecode/json +md5 5d36d06fe14172657e944ac208e9d213 Unidecode-1.1.2.tar.gz +sha256 a039f89014245e0cad8858976293e23501accc9ff5a7bdbc739a14a2b7b85cdc Unidecode-1.1.2.tar.gz +# Locally computed sha256 checksums +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 LICENSE diff --git a/buildroot-external/package/python-unidecode/python-unidecode.mk b/buildroot-external/package/python-unidecode/python-unidecode.mk new file mode 100644 index 00000000..8161c5ad --- /dev/null +++ b/buildroot-external/package/python-unidecode/python-unidecode.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-unidecode +# +################################################################################ + +PYTHON_UNIDECODE_VERSION = 1.1.2 +PYTHON_UNIDECODE_SOURCE = Unidecode-$(PYTHON_UNIDECODE_VERSION).tar.gz +PYTHON_UNIDECODE_SITE = https://files.pythonhosted.org/packages/45/dd/544c34ddf9ab0ead3746110ad6fbdac26ca5f4a1666db22dc8aaf447d0c9 +PYTHON_UNIDECODE_SETUP_TYPE = setuptools +PYTHON_UNIDECODE_LICENSE = GPL-2.0 +PYTHON_UNIDECODE_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/buildroot-external/rootfs-overlay/etc/mycroft/mycroft.conf b/buildroot-external/rootfs-overlay/etc/mycroft/mycroft.conf index 687298c6..479f0dbb 100644 --- a/buildroot-external/rootfs-overlay/etc/mycroft/mycroft.conf +++ b/buildroot-external/rootfs-overlay/etc/mycroft/mycroft.conf @@ -20,8 +20,8 @@ "pulse_duck": true }, "skills": { - "blacklisted_skills": ["mycroft-pairing.mycroftai"], - "priority_skills": ["skill-ovos-enclosure", "skill-ovos-mycroftgui", "skill-balena-wifi-setup", "skill-ovos-pairing"] + "blacklisted_skills": ["mycroft-pairing.mycroftai", "mycroft-mark-2.mycroftai"], + "priority_skills": ["skill-ovos-enclosure", "skill-ovos-mycroftgui", "skill-balena-wifi-setup", "skill-ovos-pairing", "skill-ovos-homescreen"] }, "log_level": "INFO" } diff --git a/buildroot-external/rootfs-overlay/opt/mycroft/preloaded_cache/Mimic2/8456b6e166ab479cb606b3d6c2ccda5f.wav b/buildroot-external/rootfs-overlay/opt/mycroft/preloaded_cache/Mimic2/8456b6e166ab479cb606b3d6c2ccda5f.wav new file mode 100644 index 00000000..fb0a1cd8 Binary files /dev/null and b/buildroot-external/rootfs-overlay/opt/mycroft/preloaded_cache/Mimic2/8456b6e166ab479cb606b3d6c2ccda5f.wav differ diff --git a/buildroot-external/rootfs-overlay/opt/mycroft/preloaded_cache/Mimic2/950a5b22a8b64d13a634204eb2033a47.wav b/buildroot-external/rootfs-overlay/opt/mycroft/preloaded_cache/Mimic2/950a5b22a8b64d13a634204eb2033a47.wav new file mode 100644 index 00000000..0c4f9340 Binary files /dev/null and b/buildroot-external/rootfs-overlay/opt/mycroft/preloaded_cache/Mimic2/950a5b22a8b64d13a634204eb2033a47.wav differ diff --git a/buildroot-external/rootfs-overlay/opt/mycroft/skills/skill-balena-wifi-setup/__init__.py b/buildroot-external/rootfs-overlay/opt/mycroft/skills/skill-balena-wifi-setup/__init__.py old mode 100644 new mode 100755 index 8f622615..963e80a0 --- a/buildroot-external/rootfs-overlay/opt/mycroft/skills/skill-balena-wifi-setup/__init__.py +++ b/buildroot-external/rootfs-overlay/opt/mycroft/skills/skill-balena-wifi-setup/__init__.py @@ -1,6 +1,8 @@ from mycroft import MycroftSkill, intent_handler from mycroft.util import create_daemon, connected from mycroft.configuration import LocalConf, USER_CONFIG +from mycroft.api import is_paired +from mycroft.messagebus.message import Message import subprocess import pexpect from time import sleep @@ -70,7 +72,6 @@ class WifiConnect(MycroftSkill): self.log.info("Wifi watchdog started") output = subprocess.check_output("nmcli connection show", shell=True).decode("utf-8") - self.log.warning(output) if "wifi" in output: self.log.info("Detected previously configured wifi, starting " "grace period to allow it to connect") @@ -222,10 +223,10 @@ class WifiConnect(MycroftSkill): """Provide instructions for setting up wifi.""" self.gui.remove_page("status.qml") self.gui["phone_image"] = "1_phone_connect-to-ap.png" - self.gui["prompt"] = "Connect to the \nWifi network" + self.gui["prompt"] = "Connect to the Wi-Fi network" self.gui["highlight"] = self.ssid self.gui["color"] = self.settings["color"] - self.gui.show_page("prompt.qml") + self.gui.show_page("prompt.qml", override_idle=True, override_animations=True) # allow GUI to linger around for a bit, will block the wifi setup loop sleep(2) @@ -234,10 +235,10 @@ class WifiConnect(MycroftSkill): self.gui.remove_page("status.qml") self.gui.clear() self.gui["phone_image"] = "3_phone_choose-wifi.png" - self.gui["prompt"] = "Choose the \nWifi network to \nconnect your \ndevice" - self.gui["highlight"] = "" + self.gui["prompt"] = "Select local Wi-Fi network to connect" + self.gui["highlight"] = "OVOS Device" self.gui["color"] = self.settings["color"] - self.gui.show_page("prompt.qml") + self.gui.show_page("prompt.qml", override_idle=True, override_animations=True) # allow GUI to linger around for a bit, will block the wifi setup loop sleep(2) @@ -255,10 +256,14 @@ class WifiConnect(MycroftSkill): self.gui["label"] = "Connected" self.gui["bgColor"] = "#40DBB0" self.gui.remove_page("prompt.qml") - self.gui.show_page("status.qml") + self.gui.show_page("status.qml", override_idle=True, override_animations=True) # allow GUI to linger around for a bit, will block the wifi setup loop sleep(3) - self.gui.release() + if not is_paired(): + self.bus.emit(Message("mycroft.not.paired")) + else: + self.bus.emit(Message("show.not.ready")) + self.gui.release() def report_setup_failed(self, message=None): """Wifi setup failed""" @@ -268,7 +273,7 @@ class WifiConnect(MycroftSkill): self.gui["icon"] = "times-circle.svg" self.gui["label"] = "Connection Failed" self.gui["bgColor"] = "#FF0000" - self.gui.show_page("status.qml") + self.gui.show_page("status.qml", override_idle=True, override_animations=True) # allow GUI to linger around for a bit, will block the wifi setup loop sleep(2) diff --git a/buildroot-external/rootfs-overlay/opt/mycroft/skills/skill-balena-wifi-setup/ui/1_phone_connect-to-ap.png b/buildroot-external/rootfs-overlay/opt/mycroft/skills/skill-balena-wifi-setup/ui/1_phone_connect-to-ap.png index b267dd56..7fb51a21 100644 Binary files a/buildroot-external/rootfs-overlay/opt/mycroft/skills/skill-balena-wifi-setup/ui/1_phone_connect-to-ap.png and b/buildroot-external/rootfs-overlay/opt/mycroft/skills/skill-balena-wifi-setup/ui/1_phone_connect-to-ap.png differ diff --git a/buildroot-external/rootfs-overlay/opt/mycroft/skills/skill-balena-wifi-setup/ui/3_phone_choose-wifi.png b/buildroot-external/rootfs-overlay/opt/mycroft/skills/skill-balena-wifi-setup/ui/3_phone_choose-wifi.png index c09780c4..2fb21a2a 100644 Binary files a/buildroot-external/rootfs-overlay/opt/mycroft/skills/skill-balena-wifi-setup/ui/3_phone_choose-wifi.png and b/buildroot-external/rootfs-overlay/opt/mycroft/skills/skill-balena-wifi-setup/ui/3_phone_choose-wifi.png differ diff --git a/buildroot-external/rootfs-overlay/opt/mycroft/skills/skill-balena-wifi-setup/ui/prompt.qml b/buildroot-external/rootfs-overlay/opt/mycroft/skills/skill-balena-wifi-setup/ui/prompt.qml index 7efb05ba..95e4b699 100644 --- a/buildroot-external/rootfs-overlay/opt/mycroft/skills/skill-balena-wifi-setup/ui/prompt.qml +++ b/buildroot-external/rootfs-overlay/opt/mycroft/skills/skill-balena-wifi-setup/ui/prompt.qml @@ -19,60 +19,75 @@ import QtQuick.Layouts 1.4 import QtQuick 2.4 import QtQuick.Controls 2.0 import org.kde.kirigami 2.4 as Kirigami - import Mycroft 1.0 as Mycroft -Mycroft.ProportionalDelegate { +Mycroft.Delegate { id: root property var spacingUnit: 30 property var phone: sessionData.phone_image property var prompt: sessionData.prompt property var highlight: sessionData.highlight property var color: sessionData.color - - Row { - spacing: spacingUnit - Image { - id: img - source: Qt.resolvedUrl(phone) - Layout.fillHeight: true - height: root.height * 0.8 - fillMode: Image.PreserveAspectFit - verticalAlignment: Image.AlignBottom - anchors.bottom: parent.bottom - } - ColumnLayout { - Kirigami.Heading { - id: sentence + property bool horizontalMode: root.width > root.height ? 1 : 0 + + leftPadding: 0 + rightPadding: 0 + topPadding: 0 + bottomPadding: 0 + + Rectangle { + anchors.fill: parent + color: "#000000" + + GridLayout { + anchors.fill: parent + anchors.margins: Kirigami.Units.largeSpacing + columns: horizontalMode ? 2 : 1 + + ColumnLayout { Layout.fillWidth: true - Layout.alignment: Qt.AlignLeft - Layout.leftMargin: spacingUnit - Layout.topMargin: 80 - horizontalAlignment: Text.AlignHLeft - wrapMode: Text.WordWrap - elide: Text.ElideRight - font.family: "Noto Sans" - font.bold: true - font.weight: Font.Bold - font.pixelSize: 38 - visible: !content.visible - text: prompt + Layout.fillHeight: true + + Kirigami.Heading { + id: sentence + Layout.fillWidth: true + Layout.alignment: horizontalMode ? Qt.AlignLeft : Qt.AlignHCenter | Qt.AlignVCenter + Layout.leftMargin: horizontalMode ? spacingUnit : 0 + horizontalAlignment: horizontalMode ? Text.AlignLeft : Text.AlignHCenter + verticalAlignment: horizontalMode ? Text.AlignVCenter : Text.AlignTop + wrapMode: Text.WordWrap + elide: Text.ElideRight + font.family: "Noto Sans" + font.bold: true + font.weight: Font.Bold + font.pixelSize: horizontalMode ? root.width * 0.065 : root.height * 0.075 + text: prompt + } + Kirigami.Heading { + id: url + Layout.fillWidth: true + Layout.leftMargin: horizontalMode ? spacingUnit : 0 + Layout.alignment: horizontalMode ? Qt.AlignLeft : Qt.AlignHCenter | Qt.AlignTop + horizontalAlignment: horizontalMode ? Text.AlignLeft : Text.AlignHCenter + verticalAlignment: horizontalMode ? Text.AlignVCenter : Text.AlignTop + wrapMode: Text.WordWrap + elide: Text.ElideRight + font.family: "Noto Sans" + font.bold: true + font.weight: Font.Bold + font.pixelSize: horizontalMode ? root.width * 0.065 : root.height * 0.075 + color: root.color + text: highlight + } } - Kirigami.Heading { - id: url - Layout.fillWidth: true - Layout.alignment: Qt.AlignLeft - Layout.leftMargin: spacingUnit - horizontalAlignment: Text.AlignHLeft - wrapMode: Text.WordWrap - elide: Text.ElideRight - font.family: "Noto Sans" - font.bold: true - font.weight: Font.Bold - font.pixelSize: 36 - visible: !content.visible - color: root.color - text: highlight + + Image { + id: img + source: Qt.resolvedUrl(phone) + Layout.preferredWidth: horizontalMode ? parent.width / 2 : parent.width + Layout.preferredHeight: horizontalMode ? parent.height * 0.9 : parent.height / 2 + Layout.alignment: Qt.AlignBottom + fillMode: Image.PreserveAspectFit } } } diff --git a/buildroot-external/rootfs-overlay/opt/mycroft/skills/skill-date-time.mycroftai b/buildroot-external/rootfs-overlay/opt/mycroft/skills/skill-date-time.mycroftai new file mode 160000 index 00000000..b5b7ded3 --- /dev/null +++ b/buildroot-external/rootfs-overlay/opt/mycroft/skills/skill-date-time.mycroftai @@ -0,0 +1 @@ +Subproject commit b5b7ded3149c1929b46c2e294fc6980325416cf6 diff --git a/buildroot-external/rootfs-overlay/opt/mycroft/skills/skill-ovos-homescreen b/buildroot-external/rootfs-overlay/opt/mycroft/skills/skill-ovos-homescreen new file mode 160000 index 00000000..6affba69 --- /dev/null +++ b/buildroot-external/rootfs-overlay/opt/mycroft/skills/skill-ovos-homescreen @@ -0,0 +1 @@ +Subproject commit 6affba69d1bc42d93b29ad89a181c9402b226c35 diff --git a/buildroot-external/rootfs-overlay/opt/mycroft/skills/skill-ovos-mycroftgui b/buildroot-external/rootfs-overlay/opt/mycroft/skills/skill-ovos-mycroftgui index 28c5b09e..d98871d8 160000 --- a/buildroot-external/rootfs-overlay/opt/mycroft/skills/skill-ovos-mycroftgui +++ b/buildroot-external/rootfs-overlay/opt/mycroft/skills/skill-ovos-mycroftgui @@ -1 +1 @@ -Subproject commit 28c5b09ead07b1d4aab933ccb1ed207bff9c5371 +Subproject commit d98871d8cac30534f08a3ea846f26a413d8a23be diff --git a/buildroot-external/rootfs-overlay/opt/mycroft/skills/skill-ovos-pairing b/buildroot-external/rootfs-overlay/opt/mycroft/skills/skill-ovos-pairing index 2198b59e..ee7be958 160000 --- a/buildroot-external/rootfs-overlay/opt/mycroft/skills/skill-ovos-pairing +++ b/buildroot-external/rootfs-overlay/opt/mycroft/skills/skill-ovos-pairing @@ -1 +1 @@ -Subproject commit 2198b59e0b437bdb5aede5c38e33acb80f8da75e +Subproject commit ee7be95809963a4557d941f614fbb6bdb9093bd9 diff --git a/buildroot-patches/0007-Downgrade-python-arrow-to-0.12.0.patch b/buildroot-patches/0007-Downgrade-python-arrow-to-0.12.0.patch new file mode 100644 index 00000000..eef76e9c --- /dev/null +++ b/buildroot-patches/0007-Downgrade-python-arrow-to-0.12.0.patch @@ -0,0 +1,40 @@ +From 20473efe71d8d6aafb9b8604478c0dad88315368 Mon Sep 17 00:00:00 2001 +From: j1nx +Date: Thu, 7 Jan 2021 15:54:31 +0100 +Subject: [PATCH 1/1] Downgrade python-arrow to 0.12.0 + +--- + package/python-arrow/python-arrow.hash | 2 +- + package/python-arrow/python-arrow.mk | 4 ++-- + 2 files changed, 3 insertions(+), 3 deletions(-) + +diff --git a/package/python-arrow/python-arrow.hash b/package/python-arrow/python-arrow.hash +index 90e0533232..9d52c2623c 100644 +--- a/package/python-arrow/python-arrow.hash ++++ b/package/python-arrow/python-arrow.hash +@@ -1,5 +1,5 @@ + # md5, sha256 from https://pypi.org/pypi/arrow/json + md5 554f18b0e23182ee0e8cb2a882d2f607 arrow-0.15.2.tar.gz +-sha256 10257c5daba1a88db34afa284823382f4963feca7733b9107956bed041aff24f arrow-0.15.2.tar.gz ++sha256 a15ecfddf334316e3ac8695e48c15d1be0d6038603b33043930dcf0e675c86ee arrow-0.12.0.tar.gz + # Locally computed sha256 checksums + sha256 a4b7601be50569c2c96a9818fc809b0149410c84c99714d60c9d4fb0ae861fa2 LICENSE +diff --git a/package/python-arrow/python-arrow.mk b/package/python-arrow/python-arrow.mk +index f8326288b2..d945e76831 100644 +--- a/package/python-arrow/python-arrow.mk ++++ b/package/python-arrow/python-arrow.mk +@@ -4,9 +4,9 @@ + # + ################################################################################ + +-PYTHON_ARROW_VERSION = 0.15.2 ++PYTHON_ARROW_VERSION = 0.12.0 + PYTHON_ARROW_SOURCE = arrow-$(PYTHON_ARROW_VERSION).tar.gz +-PYTHON_ARROW_SITE = https://files.pythonhosted.org/packages/43/0e/47416c54ad7742981bf77fdfc405987551ab14b181a6140c8cd2a5823872 ++PYTHON_ARROW_SITE = https://files.pythonhosted.org/packages/90/48/7ecfce4f2830f59dfacbb2b5a31e3ff1112b731a413724be40f57faa4450 + PYTHON_ARROW_SETUP_TYPE = setuptools + PYTHON_ARROW_LICENSE = Apache-2.0 + PYTHON_ARROW_LICENSE_FILES = LICENSE +-- +2.20.1 + diff --git a/buildroot-patches/0012-Make-python-pytz-available-as-host-package.patch b/buildroot-patches/0012-Make-python-pytz-available-as-host-package.patch new file mode 100644 index 00000000..ad8d6223 --- /dev/null +++ b/buildroot-patches/0012-Make-python-pytz-available-as-host-package.patch @@ -0,0 +1,21 @@ +From b457885eba19f8be0be2da35f5dbfca423be651f Mon Sep 17 00:00:00 2001 +From: j1nx +Date: Thu, 7 Jan 2021 17:12:04 +0100 +Subject: [PATCH 1/1] Make python-pytz available as host package + +--- + package/python-pytz/python-pytz.mk | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/package/python-pytz/python-pytz.mk b/package/python-pytz/python-pytz.mk +index 888f3c4556..7a64656bef 100644 +--- a/package/python-pytz/python-pytz.mk ++++ b/package/python-pytz/python-pytz.mk +@@ -12,3 +12,4 @@ PYTHON_PYTZ_LICENSE = MIT + PYTHON_PYTZ_LICENSE_FILES = LICENSE.txt + + $(eval $(python-package)) ++$(eval $(host-python-package)) +-- +2.20.1 + diff --git a/buildroot-patches/0109-Return-rpi-fix-linking-patch.patch b/buildroot-patches/0109-Return-rpi-fix-linking-patch.patch deleted file mode 100644 index 6dc4e4f0..00000000 --- a/buildroot-patches/0109-Return-rpi-fix-linking-patch.patch +++ /dev/null @@ -1,104 +0,0 @@ -From 34fcaf17ecc1044aa8e2243dde4f84d9123c1d28 Mon Sep 17 00:00:00 2001 -From: j1nx -Date: Fri, 27 Mar 2020 11:26:38 +0100 -Subject: [PATCH 1/1] Return rpi fix linking patch - ---- - package/mpv/0003-rpi-fix-linking-errors.patch | 85 +++++++++++++++++++ - 1 file changed, 85 insertions(+) - create mode 100644 package/mpv/0003-rpi-fix-linking-errors.patch - -diff --git a/package/mpv/0003-rpi-fix-linking-errors.patch b/package/mpv/0003-rpi-fix-linking-errors.patch -new file mode 100644 -index 0000000000..7344da5724 ---- /dev/null -+++ b/package/mpv/0003-rpi-fix-linking-errors.patch -@@ -0,0 +1,85 @@ -+From 8a038f982a4621f4c62947ef3929c3beae7e7744 Mon Sep 17 00:00:00 2001 -+From: j1nx -+Date: Fri, 27 Mar 2020 10:47:27 +0100 -+Subject: [PATCH 1/1] rpi: fix linking errors -+ -+--- -+ waftools/checks/custom.py | 26 +++++++++++++++++++++++++- -+ wscript | 18 +----------------- -+ 2 files changed, 26 insertions(+), 18 deletions(-) -+ -+diff --git a/waftools/checks/custom.py b/waftools/checks/custom.py -+index 821bf9c46f..c2a600abe4 100644 -+--- a/waftools/checks/custom.py -++++ b/waftools/checks/custom.py -+@@ -4,7 +4,7 @@ from waflib import Utils -+ import os -+ -+ __all__ = ["check_pthreads", "check_iconv", "check_lua", -+- "check_cocoa", "check_wl_protocols", "check_swift"] -++ "check_cocoa", "check_wl_protocols", "check_swift", "check_rpi"] -+ -+ pthreads_program = load_fragment('pthreads.c') -+ -+@@ -120,3 +120,27 @@ def check_swift(ctx, dependency_identifier): -+ if major >= 3: -+ return True -+ return False -++ -++def check_rpi(ctx, dependency_identifier): -++ # We need MMAL/bcm_host/dispmanx APIs. -++ # Upstream keeps pkgconfig files in '/opt/vc/lib/pkgconfig'. -++ # See https://github.com/raspberrypi/userland/issues/245 -++ # PKG_CONFIG_SYSROOT_DIR helps with cross compilation. -++ prev_pkg_path = os.getenv('PKG_CONFIG_PATH', '') -++ os.environ['PKG_CONFIG_PATH'] = os.pathsep.join( -++ filter(None, [os.path.join(os.getenv('PKG_CONFIG_SYSROOT_DIR', '/'), -++ 'opt/vc/lib/pkgconfig'), -++ prev_pkg_path])) -++ -++ checks = [ -++ # We still need all OpenGL symbols, because the vo_opengl code is -++ # generic and supports anything from GLES2/OpenGL 2.1 to OpenGL 4 core. -++ check_pkg_config('bcm_host', uselib_store='bcm_host'), -++ check_pkg_config('egl'), -++ check_pkg_config('glesv2'), -++ check_cc(lib=['mmal_core', 'mmal_util', 'mmal_vc_client'], use=['bcm_host']), -++ ] -++ -++ ret = all((fn(ctx, dependency_identifier) for fn in checks)) -++ os.environ['PKG_CONFIG_PATH'] = prev_pkg_path -++ return ret -+diff --git a/wscript b/wscript -+index e9e0ab3672..49ed85a294 100644 -+--- a/wscript -++++ b/wscript -+@@ -753,25 +753,9 @@ video_output_features = [ -+ 'deps': 'win32-desktop && shaderc && crossc', -+ 'func': check_cc(header_name=['d3d11_1.h', 'dxgi1_2.h']), -+ }, { -+- # We need MMAL/bcm_host/dispmanx APIs. Also, most RPI distros require -+- # every project to hardcode the paths to the include directories. Also, -+- # these headers are so broken that they spam tons of warnings by merely -+- # including them (compensate with -isystem and -fgnu89-inline). -+ 'name': '--rpi', -+ 'desc': 'Raspberry Pi support', -+- 'func': compose_checks( -+- check_cc(cflags=["-isystem/opt/vc/include", -+- "-isystem/opt/vc/include/interface/vcos/pthreads", -+- "-isystem/opt/vc/include/interface/vmcs_host/linux", -+- "-fgnu89-inline"], -+- linkflags="-L/opt/vc/lib", -+- header_name="bcm_host.h", -+- lib=['mmal_core', 'mmal_util', 'mmal_vc_client', 'bcm_host']), -+- # We still need all OpenGL symbols, because the vo_gpu code is -+- # generic and supports anything from GLES2/OpenGL 2.1 to OpenGL 4 core. -+- check_cc(lib="EGL", linkflags="-lGLESv2"), -+- check_cc(lib="GLESv2"), -+- ), -++ 'func': check_rpi, -+ } , { -+ 'name': '--ios-gl', -+ 'desc': 'iOS OpenGL ES hardware decoding interop support', -+-- -+2.17.1 -+ --- -2.17.1 -