diff options
Diffstat (limited to 'community/qemu/APKBUILD')
-rw-r--r-- | community/qemu/APKBUILD | 409 |
1 files changed, 409 insertions, 0 deletions
diff --git a/community/qemu/APKBUILD b/community/qemu/APKBUILD new file mode 100644 index 0000000000..699786488d --- /dev/null +++ b/community/qemu/APKBUILD @@ -0,0 +1,409 @@ +# Contributor: Sergei Lukin <sergej.lukin@gmail.com> +# Contributor: Valery Kartel <valery.kartel@gmail.com> +# Contributor: Jakub Jirutka <jakub@jirutka.cz> +# Maintainer: Natanael Copa <ncopa@alpinelinux.org> +pkgname=qemu +pkgver=4.1.1 +pkgrel=2 +pkgdesc="QEMU is a generic machine emulator and virtualizer" +url="https://qemu.org/" +arch="all" +license="GPL-2.0 LGPL-2" +makedepends=" + alsa-lib-dev + bison + curl-dev + flex + glib-dev + glib-static + gnutls-dev + gtk+3.0-dev + libaio-dev + libcap-dev + libcap-ng-dev + libjpeg-turbo-dev + libnfs-dev + libpng-dev + libseccomp-dev + libssh-dev + libusb-dev + libxml2-dev + linux-headers + lzo-dev + ncurses-dev + paxmark + perl + python3 + py3-sphinx + sdl2-dev + snappy-dev + spice-dev + texinfo + usbredir-dev + util-linux-dev + vde2-dev + virglrenderer-dev + vte3-dev + xfsprogs-dev + zlib-dev + zlib-static + " +pkggroups="qemu" +install="$pkgname.pre-install $pkgname.post-install" +# suid needed for qemu-bridge-helper +# strip fails on .img files +# some tests does not run on our builders +options="suid !strip !check" +subpackages="$pkgname-doc $pkgname-lang $pkgname-guest-agent:guest + ivshmem-tools:_ivshmem" + +_subsystems=" + aarch64 + aarch64_be + alpha + arm + armeb + cris + hppa + i386 + m68k + microblaze + microblazeel + mips + mips64 + mips64el + mipsel + mipsn32 + mipsn32el + nios2 + or1k + ppc + ppc64 + ppc64abi32 + ppc64le + riscv32 + riscv64 + s390x + sh4 + sh4eb + sparc + sparc32plus + sparc64 + system-aarch64 + system-alpha + system-arm + system-cris + system-hppa + system-i386 + system-lm32 + system-m68k + system-microblaze + system-microblazeel + system-mips + system-mips64 + system-mips64el + system-mipsel + system-moxie + system-nios2 + system-or1k + system-ppc + system-ppc64 + system-riscv32 + system-riscv64 + system-s390x + system-sh4 + system-sh4eb + system-sparc + system-sparc64 + system-tricore + system-unicore32 + system-x86_64 + system-xtensa + system-xtensaeb + tilegx + x86_64 + xtensa + xtensaeb + " +for _sub in $_subsystems; do + subpackages="$subpackages $pkgname-$_sub:_subsys" +done + +_modules=" + audio-alsa + audio-oss + audio-sdl + block-curl + block-dmg-bz2 + block-nfs + block-ssh + ui-curses + ui-gtk + ui-sdl + " +for _mod in $_modules; do + subpackages="$subpackages $pkgname-$_mod:_module" +done +subpackages="$subpackages qemu-modules:_all_modules" + +subpackages="$subpackages $pkgname-img" # -img must be declared the last + +source="https://wiki.qemu-project.org/download/$pkgname-$pkgver.tar.xz + 0001-elfload-load-PIE-executables-to-right-address.patch + 0006-linux-user-signal.c-define-__SIGRTMIN-MAX-for-non-GN.patch + 0001-linux-user-fix-build-with-musl-on-aarch64.patch + musl-F_SHLCK-and-F_EXLCK.patch + fix-sigevent-and-sigval_t.patch + xattr_size_max.patch + ncurses.patch + ignore-signals-33-and-64-to-allow-golang-emulation.patch + 0001-linux-user-fix-build-with-musl-on-ppc64le.patch + MAP_SYNC-fix.patch + fix-sockios-header.patch + test-crypto-ivgen-skip-essiv.patch + guest-agent-shutdown.patch + fix-statx-translation.patch + + $pkgname-guest-agent.confd + $pkgname-guest-agent.initd + 80-kvm.rules + bridge.conf + " +builddir="$srcdir/$pkgname-$pkgver" + +# secfixes: +# 2.8.1-r1: +# - CVE-2016-7994 +# - CVE-2016-7995 +# - CVE-2016-8576 +# - CVE-2016-8577 +# - CVE-2016-8578 +# - CVE-2016-8668 +# - CVE-2016-8909 +# - CVE-2016-8910 +# - CVE-2016-9101 +# - CVE-2016-9102 +# - CVE-2016-9103 +# - CVE-2016-9104 +# - CVE-2016-9105 +# - CVE-2016-9106 +# - CVE-2017-2615 +# - CVE-2017-2620 +# - CVE-2017-5525 +# - CVE-2017-5552 +# - CVE-2017-5578 +# - CVE-2017-5579 +# - CVE-2017-5667 +# - CVE-2017-5856 +# - CVE-2017-5857 +# - CVE-2017-5898 +# - CVE-2017-5931 + +prepare() { + default_prepare # apply patches + + sed -i 's/^VL_LDFLAGS=$/VL_LDFLAGS=-Wl,-z,execheap/' \ + Makefile.target +} + +_compile_common() { + CFLAGS="${CFLAGS/-Os/-O2}" "$builddir"/configure \ + --prefix=/usr \ + --localstatedir=/var \ + --sysconfdir=/etc \ + --libexecdir=/usr/lib/qemu \ + --python=/usr/bin/python3 \ + --disable-glusterfs \ + --disable-debug-info \ + --disable-bsd-user \ + --disable-werror \ + --disable-xen \ + --enable-kvm \ + --enable-seccomp \ + --cc="${CC:-gcc}" \ + "$@" + make ARFLAGS="rc" +} + +build() { + mkdir -p "$builddir"/build \ + "$builddir"/build-static + + cd "$builddir"/build-static + _compile_common \ + --enable-linux-user \ + --disable-system \ + --static \ + --disable-sdl \ + --disable-gtk \ + --disable-spice \ + --disable-tools \ + --disable-guest-agent \ + --disable-guest-agent-msi \ + --disable-curses \ + --disable-curl \ + --disable-gnutls \ + --disable-gcrypt \ + --disable-nettle \ + --disable-cap-ng \ + --disable-brlapi \ + --disable-mpath \ + --disable-libnfs \ + --disable-capstone + + cd "$builddir"/build + _compile_common \ + --disable-linux-user \ + --audio-drv-list=oss,alsa,sdl \ + --enable-cap-ng \ + --enable-curl \ + --enable-curses \ + --enable-docs \ + --enable-gtk \ + --enable-guest-agent \ + --enable-libnfs \ + --enable-libssh \ + --enable-linux-aio \ + --enable-lzo \ + --enable-modules \ + --enable-pie \ + --enable-sdl \ + --enable-snappy \ + --enable-spice \ + --enable-tpm \ + --enable-usb-redir \ + --enable-vde \ + --enable-vhost-net \ + --enable-virglrenderer \ + --enable-virtfs \ + --enable-vnc \ + --enable-vnc-jpeg \ + --enable-vnc-png \ + --tls-priority=@QEMU,SYSTEM +} + +check() { + cd "$builddir"/build + + # XXX: ESSIV crypto tests are disabled, see test-crypto-ivgen-skip-essiv.patch. + make check V=1 +} + +package() { + cd "$builddir"/build-static + make DESTDIR="$pkgdir" install + + cd "$builddir"/build + make DESTDIR="$pkgdir" install + paxmark -m "$pkgdir"/usr/bin/qemu-system-* + + install -Dm640 -g qemu "$srcdir"/bridge.conf \ + "$pkgdir"/etc/qemu/bridge.conf + + install -Dm644 "$srcdir"/80-kvm.rules \ + "$pkgdir"/lib/udev/rules.d/80-kvm.rules + + # qemu-bridge-helper needs suid to create tunX devices; + # allow only users in the qemu group to run it. + chmod 04710 "$pkgdir"/usr/lib/qemu/qemu-bridge-helper + chgrp qemu "$pkgdir"/usr/lib/qemu/qemu-bridge-helper + + # Do not install HTML docs. + rm "$pkgdir"/usr/share/doc/qemu/*.html +} + +_subsys() { + local name=${1:-"${subpkgname#$pkgname-}"} + pkgdesc="Qemu ${name/-/ } emulator" + options="" + depends="" + case "$name" in + system*) depends="qemu";; + esac + + mkdir -p "$subpkgdir"/usr/bin + mv "$pkgdir"/usr/bin/qemu-$name "$subpkgdir"/usr/bin/ +} + +_ivshmem() { + pkgdesc="Client and server for QEMU ivshmem device" + mkdir -p "$subpkgdir"/usr/bin + mv "$pkgdir"/usr/bin/ivshmem-* "$subpkgdir"/usr/bin/ +} + +img() { + pkgdesc="QEMU command line tool for manipulating disk images" + depends="" + options="" + + mkdir -p "$subpkgdir"/usr/bin + mv "$pkgdir"/usr/bin/qemu-img \ + "$pkgdir"/usr/bin/qemu-io \ + "$pkgdir"/usr/bin/qemu-nbd \ + "$subpkgdir"/usr/bin/ + + # We exploit the fact that -img subpackage are created last + # and check that we done have new systems that belongs in + # subpackage. + local path= retval=0 + for path in "$pkgdir"/usr/bin/qemu-system-* "$pkgdir"/usr/lib/qemu/*.so; do + if [ -r "$path" ]; then + error "Please create a subpackage for ${path##*/}" + retval=1 + fi + done + return $retval +} + +guest() { + pkgdesc="QEMU guest agent" + depends="" + options="" + + mkdir -p "$subpkgdir"/usr/bin + mv "$pkgdir"/usr/bin/qemu-ga "$subpkgdir"/usr/bin/ + + install -Dm755 "$srcdir"/$pkgname-guest-agent.initd \ + "$subpkgdir"/etc/init.d/$pkgname-guest-agent + install -Dm644 "$srcdir"/$pkgname-guest-agent.confd \ + "$subpkgdir"/etc/conf.d/$pkgname-guest-agent +} + +_module() { + local _mod=${subpkgname#qemu-} + local _class=${_mod%%-*} + local _m=${_mod#*-} + pkgdesc="Qemu $_m $_class module" + mkdir -p "$subpkgdir"/usr/lib/qemu + mv "$pkgdir"/usr/lib/qemu/$_mod.so \ + "$subpkgdir"/usr/lib/qemu/ +} + +_all_modules() { + pkgdesc="Meta package for all qemu modules" + local _i + for _i in $_modules; do + depends="$depends qemu-$_i" + done + mkdir -p "$subpkgdir" +} + +sha512sums="13c8420f74fd7f043f2dd0774b88262327d22864b3fc7b5d5e7e651fb163de03ac51483abec703cd9914511049b125165875c27566bebfd9b6482d8d2c2ff108 qemu-4.1.1.tar.xz +405008589cad1c8b609eca004d520bf944366e8525f85a19fc6e283c95b84b6c2429822ba064675823ab69f1406a57377266a65021623d1cd581e7db000134fd 0001-elfload-load-PIE-executables-to-right-address.patch +98db5e23397cfad4a7210f9f7e1c5fa5c48f065785439521c5b39325c429f2dc367c40925adff6aa8677b3192a1a98a30e93d5b9c879df523deb019c40edd9d9 0006-linux-user-signal.c-define-__SIGRTMIN-MAX-for-non-GN.patch +1ac043312864309e19f839a699ab2485bca51bbf3d5fdb39f1a87b87e3cbdd8cbda1a56e6b5c9ffccd65a8ac2f600da9ceb8713f4dbba26f245bc52bcd8a1c56 0001-linux-user-fix-build-with-musl-on-aarch64.patch +224f5b44da749921e8a821359478c5238d8b6e24a9c0b4c5738c34e82f3062ec4639d495b8b5883d304af4a0d567e38aa6623aac1aa3a7164a5757c036528ac0 musl-F_SHLCK-and-F_EXLCK.patch +5da8114b9bd2e62f0f1f0f73f393fdbd738c5dea827ea60cedffd6f6edd0f5a97489c7148d37a8ec5a148d4e65d75cbefe9353714ee6b6f51a600200133fc914 fix-sigevent-and-sigval_t.patch +4b1e26ba4d53f9f762cbd5cea8ef6f8062d827ae3ae07bc36c5b0c0be4e94fc1856ad2477e8e791b074b8a25d51ed6d0ddd75e605e54600e5dd0799143793ce4 xattr_size_max.patch +b6ed02aaf95a9bb30a5f107d35371207967edca058f3ca11348b0b629ea7a9c4baa618db68a3df72199eea6d86d14ced74a5a229d17604cc3f0adedcfeae7a73 ncurses.patch +fd178f2913639a0c33199b3880cb17536961f2b3ff171c12b27f4be6bca032d6b88fd16302d09c692bb34883346babef5c44407a6804b20a39a465bb2bc85136 ignore-signals-33-and-64-to-allow-golang-emulation.patch +d8933df9484158c2b4888254e62117d78f8ed7c18527b249419f39c2b2ab1afa148010884b40661f8965f1ef3105580fceffdfddbb2c9221dc1c62066722ba65 0001-linux-user-fix-build-with-musl-on-ppc64le.patch +d7de79ea74e36702cac4a59e472564a55f0a663be7e63c3755e32b4b5dfbc04b390ee79f09f43f6ae706ee2aec9e005eade3c0fd4a202db60d11f436874a17d7 MAP_SYNC-fix.patch +39590476a4ebd7c1e79a4f0451b24c75b1817a2a83abaa1f71bb60b225d772152f0af8f3e51ff65645e378c536ffa6ff551dade52884d03a14b7c6a19c5c97d4 fix-sockios-header.patch +8b8db136f78bd26b5da171effa9e11016ec2bc3e2fc8107228b5543b47aa370978ed883794aa4f917f334e284a5b49e82070e1da2d31d49301195b6713a48eff test-crypto-ivgen-skip-essiv.patch +b8e58bcc409f25cc6ff59967ed68f4de0a8656ec4db71ab663cc77761f8210b3f85c475fceb32dec934dc02a5c4f679a8313edbcf84e149692a81764c8904f67 guest-agent-shutdown.patch +41a33719e1d5cfc0d5554cd13d8177ebaa3be7986ce8a2f8641e0cf2922eeadeced5aa780f156861af2cceed5f4d9a4d996344816dfbebe071033ba51bb81d3c fix-statx-translation.patch +d90c034cae3f9097466854ed1a9f32ab4b02089fcdf7320e8f4da13b2b1ff65067233f48809911485e4431d7ec1a22448b934121bc9522a2dc489009e87e2b1f qemu-guest-agent.confd +1cd24c2444c5935a763c501af2b0da31635aad9cf62e55416d6477fcec153cddbe7de205d99616def11b085e0dd366ba22463d2270f831d884edbc307c7864a6 qemu-guest-agent.initd +9b7a89b20fcf737832cb7b4d5dc7d8301dd88169cbe5339eda69fbb51c2e537d8cb9ec7cf37600899e734209e63410d50d0821bce97e401421db39c294d97be2 80-kvm.rules +749efa2e764006555b4fd3a8e2f6d1118ad2ea4d45acf99104a41a93cfe66dc9685f72027c17d8211e5716246c2a52322c962cf4b73b27541b69393cd57f53bb bridge.conf" |