summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorM0Rf302019-10-14 02:13:31 +0200
committerM0Rf302019-10-14 02:13:31 +0200
commit605d8b4b79e9bd4490d1144d78fe20aa3b5f505d (patch)
treebcf2373fc43567bb3618693197a5af30137a25f8
parentf888feb609bfeee6fa22b9ebbf8dec2cdd9c8ca0 (diff)
downloadaur-605d8b4b79e9bd4490d1144d78fe20aa3b5f505d.tar.gz
mycroft-core: 19.8.1 reworked packaging
-rw-r--r--.SRCINFO26
-rw-r--r--PKGBUILD94
-rw-r--r--mycroft-core.install60
-rw-r--r--mycroft.service3
-rw-r--r--mycroft.sysusers2
-rw-r--r--mycroft.tmpfiles4
-rwxr-xr-xvenv_init39
7 files changed, 93 insertions, 135 deletions
diff --git a/.SRCINFO b/.SRCINFO
index fb1321e5202b..0cf16145c0e3 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -1,20 +1,20 @@
pkgbase = mycroft-core
pkgdesc = The Mycroft Artificial Intelligence platform.
- pkgver = 19.2.10
+ pkgver = 19.8.1
pkgrel = 1
url = https://github.com/MycroftAI/mycroft-core
install = mycroft-core.install
arch = i686
arch = x86_64
license = Apache
+ makedepends = git
+ makedepends = sudo
+ makedepends = python-pip
+ makedepends = python-setuptools
+ makedepends = python-virtualenv
makedepends = sudo
- depends = git
depends = python
- depends = python-pip
- depends = python-setuptools
- depends = python-virtualenv
depends = python-gobject
- depends = python-virtualenvwrapper
depends = libffi
depends = swig
depends = portaudio
@@ -29,14 +29,14 @@ pkgbase = mycroft-core
depends = pulseaudio
depends = pulseaudio-alsa
depends = fann
- source = https://github.com/MycroftAI/mycroft-core/archive/release/v19.2.10.tar.gz
- source = mycroft-core.install
- source = venv_init
+ source = https://github.com/MycroftAI/mycroft-core/archive/release/v19.8.1.tar.gz
+ source = mycroft.tmpfiles
+ source = mycroft.sysusers
source = mycroft.service
- sha512sums = 920390f82c602e583f26deb899c9866f3807babb2cd2263e467f233065e8efe4bfa68c582f1ce814c265197b6cd18cf8b23fc7624b28b501587d6fb1da7868c9
- sha512sums = 52ccb4c1b78ca4b739d3c100bef05d76a718d07a0d81645248e1775c755170f8b3aef07034ab0890c3a77ce370c4fc8730ac1abb14cb7ff7823bef3897b13141
- sha512sums = 7eebe31724a9e6a36bec709353a90d4e41e915291750cff8a255a2fec10a9ab67c1daba83eed70b9d29f1b58d4cb6c68d68f483da99db047ac73ae1d97869277
- sha512sums = 67c228fb4a25d1ce529d1689e81703284015ab2721cecdac8264a94e1a41e629e6b6cb82566d41744ebce0d84b7e5c54156cc62c447f7b10b41e012682d0e146
+ md5sums = 04ec4428ad8ee3787e798bcd5a7ed23a
+ md5sums = e9a8f1095bb32a05946650e2993bdb37
+ md5sums = 7c2f6981ea856fc10c64eab60d69569c
+ md5sums = a587888fcaf792ab9ceb6c698bb03ac3
pkgname = mycroft-core
diff --git a/PKGBUILD b/PKGBUILD
index db52f71543d0..93d83318faca 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -1,65 +1,67 @@
# Maintainer: Thorben Guenther <echo YWRtaW5AeGVucm94Lm5ldAo= | base64 -d>
pkgname=mycroft-core
-pkgver=19.2.10
+pkgver=19.8.1
pkgrel=1
pkgdesc="The Mycroft Artificial Intelligence platform."
arch=('i686' 'x86_64')
url='https://github.com/MycroftAI/mycroft-core'
license=('Apache')
-depends=('git'
- 'python'
- 'python-pip'
- 'python-setuptools'
- 'python-virtualenv'
- 'python-gobject'
- 'python-virtualenvwrapper'
- 'libffi'
- 'swig'
- 'portaudio'
- 'mimic'
- 'mpg123'
- 'screen'
- 'flac'
- 'curl'
- 'icu'
- 'libjpeg-turbo'
- 'jq'
- 'pulseaudio'
- 'pulseaudio-alsa'
- 'fann')
-makedepends=('sudo')
-optdepends=()
-conflicts=()
+depends=('python'
+ 'python-gobject'
+ 'libffi'
+ 'swig'
+ 'portaudio'
+ 'mimic'
+ 'mpg123'
+ 'screen'
+ 'flac'
+ 'curl'
+ 'icu'
+ 'libjpeg-turbo'
+ 'jq'
+ 'pulseaudio'
+ 'pulseaudio-alsa'
+'fann')
+makedepends=('git' 'sudo' 'python-pip' 'python-setuptools' 'python-virtualenv' 'sudo')
install=mycroft-core.install
-# changelog=ChangeLog
source=("https://github.com/MycroftAI/mycroft-core/archive/release/v${pkgver}.tar.gz"
- "mycroft-core.install"
- "venv_init"
- "mycroft.service")
-sha512sums=('920390f82c602e583f26deb899c9866f3807babb2cd2263e467f233065e8efe4bfa68c582f1ce814c265197b6cd18cf8b23fc7624b28b501587d6fb1da7868c9'
- '52ccb4c1b78ca4b739d3c100bef05d76a718d07a0d81645248e1775c755170f8b3aef07034ab0890c3a77ce370c4fc8730ac1abb14cb7ff7823bef3897b13141'
- '7eebe31724a9e6a36bec709353a90d4e41e915291750cff8a255a2fec10a9ab67c1daba83eed70b9d29f1b58d4cb6c68d68f483da99db047ac73ae1d97869277'
- '67c228fb4a25d1ce529d1689e81703284015ab2721cecdac8264a94e1a41e629e6b6cb82566d41744ebce0d84b7e5c54156cc62c447f7b10b41e012682d0e146')
+ "mycroft.tmpfiles"
+ "mycroft.sysusers"
+"mycroft.service")
prepare() {
- cd $srcdir/$pkgname-release-v$pkgver
- sed -i 's/^check-dependencies$/#check-dependencies/g' start-mycroft.sh
- sed -i 's/change_ownership$/:/g' scripts/prepare-msm.sh
+ cd $srcdir/$pkgname-release-v$pkgver
+ sed -i 's/^check-dependencies$/#check-dependencies/g' start-mycroft.sh
+ sed -i 's/change_ownership$/:/g' scripts/prepare-msm.sh
}
package() {
- mkdir -p ${pkgdir}/usr/share/
- cp -R mycroft-core-release-v${pkgver} ${pkgdir}/usr/share/mycroft-core
- cp venv_init ${pkgdir}/usr/share/mycroft-core
+ mkdir -p ${pkgdir}/usr/share/
+ cp -R mycroft-core-release-v${pkgver} ${pkgdir}/usr/share/mycroft-core
- # Place a link to mimic where mycroft is expecting it
- mkdir -p ${pkgdir}/usr/share/mycroft-core/mimic/bin
- ln -s /usr/bin/mimic ${pkgdir}/usr/share/mycroft-core/mimic/bin/mimic
+ # Place a link to mimic where mycroft is expecting it
+ mkdir -p ${pkgdir}/usr/share/mycroft-core/mimic/bin
+ ln -s /usr/bin/mimic ${pkgdir}/usr/share/mycroft-core/mimic/bin/mimic
- # Set permissions
- chmod -R g+w ${pkgdir}/usr/share/mycroft-core
+ # Set permissions
+ chmod -R g+w ${pkgdir}/usr/share/mycroft-core
- # Symtemd unit
- install -D -m644 "${srcdir}/mycroft.service" "${pkgdir}/usr/lib/systemd/user/mycroft.service"
+ # systemd
+ install -D -m644 "${srcdir}/mycroft.service" -t "${pkgdir}/usr/lib/systemd/system"
+ install -D -m644 "${srcdir}/mycroft.sysusers" "${pkgdir}/usr/lib/sysusers.d/mycroft.conf"
+ install -D -m644 "${srcdir}/mycroft.tmpfiles" "${pkgdir}/usr/lib/tmpfiles.d/mycroft.conf"
+
+ # venv
+ cd $pkgdir/usr/share/mycroft-core
+ virtualenv .venv
+ source .venv/bin/activate
+ pip install -r requirements.txt
+ pip install py_mplayer
+ sed -i 's/^VIRTUAL_ENV=.*/VIRTUAL_ENV="\/usr\/share\/mycroft-core\/.venv"/g' .venv/bin/activate
}
+
+md5sums=('04ec4428ad8ee3787e798bcd5a7ed23a'
+ 'e9a8f1095bb32a05946650e2993bdb37'
+ '7c2f6981ea856fc10c64eab60d69569c'
+'a587888fcaf792ab9ceb6c698bb03ac3')
diff --git a/mycroft-core.install b/mycroft-core.install
index e7815539548f..af66b7303f23 100644
--- a/mycroft-core.install
+++ b/mycroft-core.install
@@ -1,46 +1,32 @@
-pre_install() {
- useradd -r mycroft-core -b /usr/share
-}
+usr=mycroft
+home=/var/lib/mycroft
+data=/usr/share/mycroft-core
post_install() {
- chown -R mycroft-core:mycroft-core /usr/share/mycroft-core
-
- sudo -Hu mycroft-core bash -c '/usr/share/mycroft-core/venv_init'
-
- # Create skill folder
- mkdir -p /opt/mycroft/skills
- chown -R mycroft-core:mycroft-core /opt/mycroft
- chmod -R g+w /opt/mycroft
-
- # Create Log files
- mkdir -p /var/log/mycroft
- chown -R mycroft-core:mycroft-core /var/log/mycroft
- chmod g+w /var/log/mycroft
+ _mkuser
+ _chown
+}
- echo "*** ATTENTION ***"
- echo ""
- echo "* The users who will use Mycroft need to be part of the mycroft-core group"
- echo ""
- echo "* You can configure your Mycroft instance preferences systemwide at:"
- echo " /usr/share/mycroft-core/mycroft/configuration/mycroft.conf"
- echo ""
- echo "* The systemd unit is"
- echo " - mycroft.service"
- echo ""
- echo "* This is a USER unit which you can start issuing:"
- echo " systemctl --user start mycroft.service"
- echo " More information at: https://wiki.archlinux.org/index.php/Systemd/User"
+post_upgrade() {
+ post_install $1
+}
+pre_remove() {
+ userdel $usr &> /dev/null
+ groupdel $usr &> /dev/null || true
+ rm -rf /var/log/$usr/ &> /dev/null || true
}
-post_upgrade() {
- chown -R mycroft-core:mycroft-core /usr/share/mycroft-core
+_chown() {
+ chown -R $usr:$usr $home
+ chown -R $usr:$usr $data
}
-post_remove() {
- userdel mycroft-core
- groupdel mycroft-core
- rm -rf /usr/share/mycroft-core
- rm -rf /opt/mycroft
- rm -rf /var/log/mycroft
+_mkuser() {
+ getent passwd $usr &>/dev/null || {
+ echo -n "Creating $usr user... "
+ grep -E "^$usr:" /etc/group >/dev/null || groupadd $usr
+ useradd -m -d $home -g $usr -G audio -s /usr/bin/nologin $usr 2>/dev/null
+ echo "done"
+ }
}
diff --git a/mycroft.service b/mycroft.service
index efbf9e7f217a..864113d875b6 100644
--- a/mycroft.service
+++ b/mycroft.service
@@ -3,6 +3,9 @@ Description=Mycroft main service
After=network.target local-fs.target remote-fs.target
[Service]
+User=mycroft
+Group=mycroft
+SyslogIdentifier=mycroft-core
Type=forking
RemainAfterExit=no
ExecStart=/usr/share/mycroft-core/start-mycroft.sh all
diff --git a/mycroft.sysusers b/mycroft.sysusers
new file mode 100644
index 000000000000..fcbe359ddb8d
--- /dev/null
+++ b/mycroft.sysusers
@@ -0,0 +1,2 @@
+u mycroft - -
+g mycroft - -
diff --git a/mycroft.tmpfiles b/mycroft.tmpfiles
new file mode 100644
index 000000000000..30a77737090a
--- /dev/null
+++ b/mycroft.tmpfiles
@@ -0,0 +1,4 @@
+d /var/lib/mycroft 0755 mycroft mycroft
+d /var/log/mycroft 0755 mycroft mycroft
+d /opt/mycroft/ 0755 mycroft mycroft
+d /tmp/mycroft/ 0755 mycroft mycroft
diff --git a/venv_init b/venv_init
deleted file mode 100755
index ef6cda698be3..000000000000
--- a/venv_init
+++ /dev/null
@@ -1,39 +0,0 @@
-#!/usr/bin/env bash
-# Virtualenv initialization
-TOP=/usr/share/mycroft-core
-VIRTUALENV_ROOT=${VIRTUALENV_ROOT:-"${TOP}/.venv"}
-install_venv() {
- /usr/bin/python -m venv "${VIRTUALENV_ROOT}/" --without-pip
- curl https://bootstrap.pypa.io/3.3/get-pip.py | "${VIRTUALENV_ROOT}/bin/python" - 'pip==18.0.0'
-}
-
-if [ ! -x "${VIRTUALENV_ROOT}/bin/activate" ]; then
- install_venv
-fi
-
-source "${VIRTUALENV_ROOT}/bin/activate"
-PYTHON=$( python -c "import sys;print('python{}.{}'.format(sys.version_info[0], sys.version_info[1]))" )
-VENV_PATH_FILE="${VIRTUALENV_ROOT}/lib/$PYTHON/site-packages/_virtualenv_path_extensions.pth"
-if [ ! -f "$VENV_PATH_FILE" ] ; then
- echo "import sys; sys.__plen = len(sys.path)" > "$VENV_PATH_FILE" || return 1
- echo "import sys; new=sys.path[sys.__plen:]; del sys.path[sys.__plen:]; p=getattr(sys,'__egginsert',0); sys.path[p:p]=new; sys.__egginsert = p+len(new)" >> "$VENV_PATH_FILE" || return 1
-fi
-if ! grep -q "$TOP" $VENV_PATH_FILE; then
- echo "Adding mycroft-core to virtualenv path"
- sed -i.tmp '1 a\
-'"$TOP"'
-' "${VENV_PATH_FILE}"
-fi
-
-# install required python modules
-if ! pip install -r /usr/share/mycroft-core/requirements.txt; then
- echo "Warning: Failed to install all requirements. Continue? y/N"
- read -n1 continue
- if [[ "$continue" != "y" ]] ; then
- exit 1
- fi
-fi
-
-if ! pip install -r /usr/share/mycroft-core/test-requirements.txt; then
- echo "Warning test requirements wasn't installed, Note: normal operation should still work fine..."
-fi