diff options
-rw-r--r-- | .SRCINFO | 20 | ||||
-rw-r--r-- | PKGBUILD | 46 | ||||
-rw-r--r-- | kvm | 2 | ||||
-rw-r--r-- | minimega.install | 31 | ||||
-rw-r--r-- | minimega.service | 31 | ||||
-rw-r--r-- | miniweb.service | 14 | ||||
-rw-r--r-- | mm | 2 |
7 files changed, 146 insertions, 0 deletions
diff --git a/.SRCINFO b/.SRCINFO new file mode 100644 index 000000000000..fbfc3352b984 --- /dev/null +++ b/.SRCINFO @@ -0,0 +1,20 @@ +pkgbase = minimega + pkgdesc = a distributed VM management tool + pkgver = 2.7.1 + pkgrel = 1 + url = https://minimega.org + install = minimega.install + arch = x86_64 + license = GPL3 + depends = qemu + depends = openvswitch + depends = ntfs-3g + depends = libpcap + depends = dosfstools + optdepends = dnsmasq + provides = minimega + source = https://github.com/activeshadow/minimega/archive/2.7.1.tar.gz + sha256sums = 9efa0d9d0b1e80ea5d4ec11ad292aacc88d8489277a667991407d9ca5e5fe3de + +pkgname = minimega + diff --git a/PKGBUILD b/PKGBUILD new file mode 100644 index 000000000000..b3893d52fea4 --- /dev/null +++ b/PKGBUILD @@ -0,0 +1,46 @@ +# Maintainer: Bryan Richardson <bryan at activeshadow dot com> +pkgname=minimega +pkgver=2.7.1 +pkgrel=1 +pkgdesc="a distributed VM management tool" +arch=('x86_64') +url="https://minimega.org" +license=('GPL3') +source=("https://github.com/activeshadow/minimega/archive/2.7.1.tar.gz") +sha256sums=('9efa0d9d0b1e80ea5d4ec11ad292aacc88d8489277a667991407d9ca5e5fe3de') +provides=("minimega") +depends=(qemu openvswitch ntfs-3g libpcap dosfstools) +optdepends=(dnsmasq) +install=minimega.install + +prepare() { + wget -O go.tgz https://golang.org/dl/go1.12.17.linux-amd64.tar.gz \ + && tar -xzf go.tgz && rm go.tgz + + export PATH=$srcdir/go/bin:$PATH +} + +build() { + cd "$srcdir/$pkgname-$pkgver" + ./build.bash +} + +package() { + mkdir -p "$pkgdir/opt/$pkgname" + mkdir -p "$pkgdir/opt/$pkgname" + + cp -a "$pkgname-$pkgver/bin" "$pkgdir/opt/$pkgname" + cp -a "$pkgname-$pkgver/misc" "$pkgdir/opt/$pkgname" + + install -Dm644 "$startdir/minimega.service" "$pkgdir/usr/lib/systemd/system/minimega.service" + install -Dm644 "$startdir/miniweb.service" "$pkgdir/usr/lib/systemd/system/miniweb.service" + + install -Dm644 "$pkgname-$pkgver/README" "$pkgdir/usr/share/doc/$pkgname/README" + install -Dm644 "$pkgname-$pkgver/LICENSE" "$pkgdir/usr/share/doc/$pkgname/LICENSE" + install -Dm644 "$pkgname-$pkgver/LICENSE" "$pkgdir/usr/share/licenses/$pkgname/LICENSE" + + install -Dm755 "$startdir/kvm" "$pkgdir/usr/bin/kvm" + install -Dm755 "$startdir/mm" "$pkgdir/usr/bin/mm" +} + +# vim:set ts=2 sw=2 et: @@ -0,0 +1,2 @@ +#!/bin/sh +exec qemu-system-x86_64 -enable-kvm "$@" diff --git a/minimega.install b/minimega.install new file mode 100644 index 000000000000..5daf37dd48f1 --- /dev/null +++ b/minimega.install @@ -0,0 +1,31 @@ +post_install() { + if [[ $(cat /proc/1/comm) == "systemd" ]]; then + systemctl daemon-reload &> /dev/null + fi + + if ! getent group minimega &> /dev/null ; then + echo "Adding minimega group." + groupadd --system minimega + else + echo "minimega group already exists." + fi + + chgrp -R minimega /opt/minimega + chgrp -R minimega /usr/share/doc/minimega +} + +pre_remove() { + if [[ $(cat /proc/1/comm) == "systemd" ]]; then + echo "Stopping minimega and miniweb services..." + + for unit in miniweb minimega; do + systemctl stop $unit 2>&1 + done + fi +} + +post_remove() { + if [[ $(cat /proc/1/comm) == "systemd" ]]; then + systemctl daemon-reload &> /dev/null + fi +} diff --git a/minimega.service b/minimega.service new file mode 100644 index 000000000000..22be751fa41b --- /dev/null +++ b/minimega.service @@ -0,0 +1,31 @@ +[Unit] +Description=minimega Service +After=multi-user.target + +[Service] +EnvironmentFile=-/etc/default/minimega +Environment="MM_BASE=/tmp/minimega" +Environment="MM_FILEPATH=/tmp/minimega/files" +Environment="MM_PORT=9000" +Environment="MM_DEGREE=2" +Environment="MM_CONTEXT=minimega" +Environment="MM_LOGLEVEL=info" +Environment="MM_LOGFILE=/var/log/minimega.log" +ExecStart=/opt/minimega/bin/minimega -nostdin \ + -base=${MM_BASE} \ + -filepath=${MM_FILEPATH} \ + -port=${MM_PORT} \ + -degree=${MM_DEGREE} \ + -context=${MM_CONTEXT} \ + -level=${MM_LOGLEVEL} \ + -logfile=${MM_LOGFILE} +ExecStartPost=/bin/sleep 1 +ExecStartPost=/bin/chgrp -R minimega ${MM_BASE} +ExecStartPost=/bin/chmod g+w ${MM_BASE}/minimega +ExecStop=/opt/minimega/bin/minimega -e quit +WorkingDirectory=/opt/minimega +Restart=always +RestartSec=3 + +[Install] +WantedBy=multi-user.target diff --git a/miniweb.service b/miniweb.service new file mode 100644 index 000000000000..9f3d5e4889cc --- /dev/null +++ b/miniweb.service @@ -0,0 +1,14 @@ +[Unit] +Description=miniweb Service +After=multi-user.target + +[Service] +EnvironmentFile=-/etc/default/minimega +Environment="MW_ADDR=0.0.0.0:9001" +ExecStart=/opt/minimega/bin/miniweb -root=/opt/minimega/misc/web -addr=${MW_ADDR} +WorkingDirectory=/opt/minimega +Restart=always +RestartSec=3 + +[Install] +WantedBy=multi-user.target @@ -0,0 +1,2 @@ +#!/bin/sh +exec /opt/minimega/bin/minimega -e "$@" |