summaryrefslogtreecommitdiff
path: root/pcr/qemu-riscv-git
diff options
context:
space:
mode:
Diffstat (limited to 'pcr/qemu-riscv-git')
-rw-r--r--pcr/qemu-riscv-git/65-kvm.rules2
-rw-r--r--pcr/qemu-riscv-git/PKGBUILD248
-rw-r--r--pcr/qemu-riscv-git/qemu-ga.service8
-rw-r--r--pcr/qemu-riscv-git/qemu.install8
4 files changed, 266 insertions, 0 deletions
diff --git a/pcr/qemu-riscv-git/65-kvm.rules b/pcr/qemu-riscv-git/65-kvm.rules
new file mode 100644
index 000000000..569ded9f9
--- /dev/null
+++ b/pcr/qemu-riscv-git/65-kvm.rules
@@ -0,0 +1,2 @@
+KERNEL=="kvm", GROUP="kvm", MODE="0660"
+KERNEL=="vhost-net", GROUP="kvm", MODE="0660", TAG+="uaccess", OPTIONS+="static_node=vhost-net"
diff --git a/pcr/qemu-riscv-git/PKGBUILD b/pcr/qemu-riscv-git/PKGBUILD
new file mode 100644
index 000000000..fedbb0ae9
--- /dev/null
+++ b/pcr/qemu-riscv-git/PKGBUILD
@@ -0,0 +1,248 @@
+# Maintainer (AUR): Frederic Bezies <fredbezies@gmail.com>
+# Contributor (AUR): ajs124 < aur at ajs124 dot de>
+# Contributor (AUR): Devin Cofer <ranguvar{AT]archlinux[DOT}us>
+# Contributor (AUR): Tobias Powalowski <tpowa@archlinux.org>
+# Contributor (AUR): Sébastien "Seblu" Luttringer <seblu@seblu.net>
+
+# parabola changes and rationale:
+# - apdapted from qemu-git on the AUR
+# - changed to build riscv/riscv-qemu on github
+# - checking out submodules in prepare
+
+pkgbase=qemu-riscv-git
+_gitname=riscv-qemu
+pkgname=(qemu-riscv-git qemu-riscv-headless-git qemu-riscv-arch-extra-git qemu-riscv-headless-arch-extra-git qemu-riscv-block-{iscsi-git,rbd-git,gluster-git} qemu-riscv-guest-agent-git)
+pkgdesc="A generic and open source machine emulator and virtualizer. Git version."
+pkgver=2.11.50.r57991.713f2c1164
+pkgrel=1
+arch=(x86_64)
+license=(GPL2 LGPL2.1)
+url="https://github.com/riscv/riscv-qemu"
+_headlessdeps=(seabios gnutls libpng libaio numactl jemalloc xfsprogs libnfs lzo snappy curl vde2 libcap-ng spice libcacard usbredir)
+depends=(dtc virglrenderer sdl2 vte3 libpulse "${_headlessdeps[@]}")
+makedepends=(spice-protocol python2 ceph libiscsi glusterfs git)
+source=(git+https://github.com/riscv/riscv-qemu.git
+ qemu-ga.service
+ 65-kvm.rules)
+sha256sums=('SKIP'
+ '0b4f3283973bb3bc876735f051d8eaab68f0065502a3a5012141fad193538ea1'
+ '60dcde5002c7c0b983952746e6fb2cf06d6c5b425d64f340f819356e561e7fc7')
+
+case $CARCH in
+ i?86) _corearch=i386 ;;
+ x86_64) _corearch=x86_64 ;;
+esac
+
+pkgver() {
+ cd "${srcdir}/${_gitname}"
+
+ printf "%s.r%s.%s" "$(cat VERSION)" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)"
+}
+
+prepare() {
+ cd "${srcdir}/${_gitname}"
+ mkdir build-{full,headless}
+ mkdir -p extra-arch-{full,headless}/usr/{bin,share/qemu}
+
+ #cd "${srcdir}/${_gitname}"
+ sed -i 's/vte-2\.90/vte-2.91/g' configure
+
+ # update git submodules
+ scripts/git-submodule.sh update ui/keycodemapdb capstone
+}
+
+build() {
+ _build full \
+ --audio-drv-list="pa alsa sdl" \
+ --disable-git-update
+
+ _build headless \
+ --audio-drv-list= \
+ --disable-bluez \
+ --disable-sdl \
+ --disable-gtk \
+ --disable-vte \
+ --disable-opengl \
+ --disable-virglrenderer \
+ --disable-git-update
+}
+
+_build() (
+ cd ${srcdir}/${_gitname}/build-$1
+
+ # qemu vs. make 4 == bad
+ export ARFLAGS=rv
+
+ # http://permalink.gmane.org/gmane.comp.emulators.qemu/238740
+ export CFLAGS+=" -fPIC"
+
+ ../configure \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --localstatedir=/var \
+ --libexecdir=/usr/lib/qemu \
+ --python=/usr/bin/python2 \
+ --smbd=/usr/bin/smbd \
+ --with-gtkabi=3.0 \
+ --with-sdlabi=2.0 \
+ --enable-modules \
+ --enable-jemalloc \
+ --disable-werror \
+ "${@:2}"
+
+ make
+)
+
+package_qemu-riscv-git() {
+ optdepends=('qemu-arch-extra-git: extra architectures support')
+ conflicts=('qemu-headless' 'qemu' 'kvm' 'kvm-git' 'qemu-spice')
+ provides=('qemu-headless' 'qemu' 'qemu-kvm' 'qemu-spice')
+ replaces=(qemu-kvm)
+
+ _package full
+}
+
+package_qemu-riscv-headless-git() {
+ pkgdesc="QEMU without GUI. Git version."
+ depends=("${_headlessdeps[@]}")
+ optdepends=('qemu-headless-arch-extra-git: extra architectures support')
+ conflicts=('qemu-headless')
+
+ _package headless
+}
+
+_package() {
+ optdepends+=('ovmf: Tianocore UEFI firmware for qemu'
+ 'samba: SMB/CIFS server support'
+ 'qemu-block-iscsi-git: iSCSI block support'
+ 'qemu-block-rbd-git: RBD block support'
+ 'qemu-block-gluster-git: glusterfs block support')
+ install=qemu.install
+ options=(!strip)
+
+ make -C ${srcdir}/${_gitname}/build-$1 DESTDIR="$pkgdir" install "${@:2}"
+
+ # systemd stuff
+ install -Dm644 65-kvm.rules "$pkgdir/usr/lib/udev/rules.d/65-kvm.rules"
+
+ # remove conflicting /var/run directory
+ cd "$pkgdir"
+ rm -r var
+
+ cd usr/lib
+ tidy_strip
+
+ # bridge_helper needs suid
+ # https://bugs.archlinux.org/task/32565
+ chmod u+s qemu/qemu-bridge-helper
+
+ # remove split block modules
+ rm qemu/block-{iscsi,rbd,gluster}.so
+
+ cd ../bin
+ tidy_strip
+
+ # remove extra arch
+ for _bin in qemu-*; do
+ [[ -f $_bin ]] || continue
+
+ case ${_bin#qemu-} in
+ # guest agent
+ ga) rm "$_bin"; continue ;;
+
+ # tools
+ img|io|nbd) continue ;;
+
+ # core emu
+ system-${_corearch}) continue ;;
+ esac
+
+ mv "$_bin" "$srcdir/$_gitname/extra-arch-$1/usr/bin"
+ done
+
+ cd ../share/qemu
+ for _blob in *; do
+ [[ -f $_blob ]] || continue
+
+ case $_blob in
+ # provided by seabios package
+ bios.bin|acpi-dsdt.aml|bios-256k.bin|vgabios-cirrus.bin|vgabios-qxl.bin|\
+ vgabios-stdvga.bin|vgabios-vmware.bin) rm "$_blob"; continue ;;
+
+
+ # iPXE ROMs
+ efi-*|pxe-*) continue ;;
+
+ # core blobs
+ kvmvapic.bin|linuxboot*|multiboot.bin|sgabios.bin|vgabios*) continue ;;
+
+ # Trace events definitions
+ trace-events*) continue ;;
+
+ # Logos
+ *.bmp|*.svg) continue ;;
+ esac
+
+ mv "$_blob" "$srcdir/$_gitname/extra-arch-$1/usr/share/qemu"
+ done
+}
+
+package_qemu-riscv-arch-extra-git() {
+ pkgdesc="QEMU for foreign architectures. Git version."
+ depends=(qemu)
+ provides=(qemu-arch-extra)
+ conflicts=(qemu-arch-extra)
+ options=(!strip)
+
+ mv $srcdir/$_gitname/extra-arch-full/usr "$pkgdir"
+}
+
+package_qemu-riscv-headless-arch-extra-git() {
+ pkgdesc="QEMU without GUI, for foreign architectures. Git version."
+ depends=(qemu-headless)
+ options=(!strip)
+ conflicts=(qemu-headless-arch-extra)
+ provides=(qemu-headless-arch-extra)
+
+ mv $srcdir/$_gitname/extra-arch-headless/usr "$pkgdir"
+}
+
+package_qemu-riscv-block-iscsi-git() {
+ pkgdesc="QEMU iSCSI block module. Git version."
+ depends=(glib2 libiscsi jemalloc)
+ conflicts=(qemu-block-iscsi)
+ provides=(qemu-block-iscsi)
+
+ install -D $srcdir/$_gitname/build-full/block-iscsi.so "$pkgdir/usr/lib/qemu/block-iscsi.so"
+}
+
+package_qemu-riscv-block-rbd-git() {
+ pkgdesc="QEMU RBD block module. Git version."
+ depends=(glib2 ceph)
+ conflicts=(qemu-block-rbd)
+ provides=(qemu-block-rbd)
+
+ install -D $srcdir/$_gitname/build-full/block-rbd.so "$pkgdir/usr/lib/qemu/block-rbd.so"
+}
+
+package_qemu-riscv-block-gluster-git() {
+ pkgdesc="QEMU GlusterFS block module. Git version."
+ depends=(glib2 glusterfs)
+ conflicts=(qemu-block-gluster)
+ provides=(qemu-block-gluster)
+
+ install -D $srcdir/$_gitname/build-full/block-gluster.so "$pkgdir/usr/lib/qemu/block-gluster.so"
+}
+
+package_qemu-riscv-guest-agent-git() {
+ pkgdesc="QEMU Guest Agent. Git version."
+ depends=(gcc-libs glib2)
+ conflicts=(qemu-guest-agent)
+ provides=(qemu-guest-agent)
+
+ install -D $srcdir/$_gitname/build-full/qemu-ga "$pkgdir/usr/bin/qemu-ga"
+ install -Dm644 $srcdir/qemu-ga.service "$pkgdir/usr/lib/systemd/system/qemu-ga.service"
+ install -Dm755 "$srcdir/$_gitname/scripts/qemu-guest-agent/fsfreeze-hook" "$pkgdir/etc/qemu/fsfreeze-hook"
+}
+
+# vim:set ts=2 sw=2 et:
diff --git a/pcr/qemu-riscv-git/qemu-ga.service b/pcr/qemu-riscv-git/qemu-ga.service
new file mode 100644
index 000000000..e5eb469f9
--- /dev/null
+++ b/pcr/qemu-riscv-git/qemu-ga.service
@@ -0,0 +1,8 @@
+[Unit]
+Description=QEMU Guest Agent
+
+[Service]
+ExecStart=/usr/bin/qemu-ga
+
+[Install]
+WantedBy=multi-user.target
diff --git a/pcr/qemu-riscv-git/qemu.install b/pcr/qemu-riscv-git/qemu.install
new file mode 100644
index 000000000..9fe850d4e
--- /dev/null
+++ b/pcr/qemu-riscv-git/qemu.install
@@ -0,0 +1,8 @@
+# Arg 1: the new package version
+post_install() {
+ # trigger events on modules files when already loaded
+ for _f in /sys/devices/virtual/misc/{kvm,vhost-net}; do
+ [[ -e "$_f" ]] && udevadm trigger "$_f"
+ done
+ :
+}