404 lines
10 KiB
Text
404 lines
10 KiB
Text
|
# Forked from Alpine, so we can build our qemu fork against jemalloc to
|
||
|
# work around a deadlock while compiling mesa (pmbootstrap#1715)
|
||
|
pkgname=qemu
|
||
|
pkgver=3.1.0
|
||
|
pkgrel=3
|
||
|
pkgdesc="QEMU is a generic machine emulator and virtualizer"
|
||
|
url="http://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
|
||
|
libssh2-dev
|
||
|
libusb-dev
|
||
|
libxml2-dev
|
||
|
linux-headers
|
||
|
lzo-dev
|
||
|
ncurses-dev
|
||
|
paxmark
|
||
|
python3
|
||
|
sdl2-dev
|
||
|
snappy-dev
|
||
|
spice-dev
|
||
|
texinfo
|
||
|
usbredir-dev
|
||
|
util-linux-dev
|
||
|
vde2-dev
|
||
|
virglrenderer-dev
|
||
|
vte3-dev
|
||
|
xfsprogs-dev
|
||
|
zlib-dev
|
||
|
"
|
||
|
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="http://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
|
||
|
fix-sockios-header.patch
|
||
|
test-crypto-ivgen-skip-essiv.patch
|
||
|
guest-agent-shutdown.patch
|
||
|
atomic-bswap.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-libssh2 \
|
||
|
--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 \
|
||
|
--with-sdlabi=2.0 \
|
||
|
--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="7e8dae823937cfac2f0c60406bd3bdcb89df40313dab2a4bed327d5198f7fcc68ac8b31e44692caa09299cc71256ee0b8c17e4f49f78ada8043d424f5daf82fe qemu-3.1.0.tar.xz
|
||
|
405008589cad1c8b609eca004d520bf944366e8525f85a19fc6e283c95b84b6c2429822ba064675823ab69f1406a57377266a65021623d1cd581e7db000134fd 0001-elfload-load-PIE-executables-to-right-address.patch
|
||
|
f52d9b3ccaa0e7613496ef3a6b820f4870d67fb89ad22c7aa3ffd6cb7c79c07f6206f060fe4e9b5b9b356b3dfee1fe2e19288497e7b8865411021eda31ca9f25 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
|
||
|
39590476a4ebd7c1e79a4f0451b24c75b1817a2a83abaa1f71bb60b225d772152f0af8f3e51ff65645e378c536ffa6ff551dade52884d03a14b7c6a19c5c97d4 fix-sockios-header.patch
|
||
|
8b8db136f78bd26b5da171effa9e11016ec2bc3e2fc8107228b5543b47aa370978ed883794aa4f917f334e284a5b49e82070e1da2d31d49301195b6713a48eff test-crypto-ivgen-skip-essiv.patch
|
||
|
b8e58bcc409f25cc6ff59967ed68f4de0a8656ec4db71ab663cc77761f8210b3f85c475fceb32dec934dc02a5c4f679a8313edbcf84e149692a81764c8904f67 guest-agent-shutdown.patch
|
||
|
9b7a3fd7878bf339cf54f824e3eb6bb5bd19d8108c3647d2022edb3c013db3fca7846437bee51326cd12fc054535d9b6ea425b5c7c4ca7ec310b6564f22f2c4d atomic-bswap.patch
|
||
|
d90c034cae3f9097466854ed1a9f32ab4b02089fcdf7320e8f4da13b2b1ff65067233f48809911485e4431d7ec1a22448b934121bc9522a2dc489009e87e2b1f qemu-guest-agent.confd
|
||
|
1cd24c2444c5935a763c501af2b0da31635aad9cf62e55416d6477fcec153cddbe7de205d99616def11b085e0dd366ba22463d2270f831d884edbc307c7864a6 qemu-guest-agent.initd
|
||
|
9b7a89b20fcf737832cb7b4d5dc7d8301dd88169cbe5339eda69fbb51c2e537d8cb9ec7cf37600899e734209e63410d50d0821bce97e401421db39c294d97be2 80-kvm.rules
|
||
|
749efa2e764006555b4fd3a8e2f6d1118ad2ea4d45acf99104a41a93cfe66dc9685f72027c17d8211e5716246c2a52322c962cf4b73b27541b69393cd57f53bb bridge.conf"
|