diff options
author | M0Rf30 | 2019-10-14 02:13:31 +0200 |
---|---|---|
committer | M0Rf30 | 2019-10-14 02:13:31 +0200 |
commit | 605d8b4b79e9bd4490d1144d78fe20aa3b5f505d (patch) | |
tree | bcf2373fc43567bb3618693197a5af30137a25f8 | |
parent | f888feb609bfeee6fa22b9ebbf8dec2cdd9c8ca0 (diff) | |
download | aur-605d8b4b79e9bd4490d1144d78fe20aa3b5f505d.tar.gz |
mycroft-core: 19.8.1 reworked packaging
-rw-r--r-- | .SRCINFO | 26 | ||||
-rw-r--r-- | PKGBUILD | 94 | ||||
-rw-r--r-- | mycroft-core.install | 60 | ||||
-rw-r--r-- | mycroft.service | 3 | ||||
-rw-r--r-- | mycroft.sysusers | 2 | ||||
-rw-r--r-- | mycroft.tmpfiles | 4 | ||||
-rwxr-xr-x | venv_init | 39 |
7 files changed, 93 insertions, 135 deletions
@@ -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 @@ -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 |