summarylogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.SRCINFO20
-rw-r--r--PKGBUILD46
-rw-r--r--kvm2
-rw-r--r--minimega.install31
-rw-r--r--minimega.service31
-rw-r--r--miniweb.service14
-rw-r--r--mm2
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:
diff --git a/kvm b/kvm
new file mode 100644
index 000000000000..43c0b24cbd5c
--- /dev/null
+++ b/kvm
@@ -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
diff --git a/mm b/mm
new file mode 100644
index 000000000000..58eb04e513de
--- /dev/null
+++ b/mm
@@ -0,0 +1,2 @@
+#!/bin/sh
+exec /opt/minimega/bin/minimega -e "$@"