archrelease: copy trunk to extra-x86_64
[arch-packages.git] / qemu / trunk / PKGBUILD
blob2b305a1845615a0ff52d9f0fbcfc9b25af78b8a8
1 # Maintainer: Tobias Powalowski <tpowa@archlinux.org>
2 # Contributor: David Runge <dvzrv@archlinux.org>
3 # Contributor: Sébastien "Seblu" Luttringer <seblu@seblu.net>
5 pkgbase=qemu
6 pkgname=(
7   qemu
8   qemu-headless
9   qemu-arch-extra
10   qemu-headless-arch-extra
11   qemu-block-{iscsi,rbd,gluster}
12   qemu-guest-agent
14 pkgdesc="A generic and open source machine emulator and virtualizer"
15 pkgver=6.1.0
16 pkgrel=5
17 arch=(x86_64)
18 license=(GPL2 LGPL2.1)
19 url="https://wiki.qemu.org/"
20 # TODO: consider providing rdma-core
21 # TODO: consider providing lzfse
22 makedepends=(
23   alsa-lib
24   brltty
25   bzip2
26   cairo
27   ceph
28   curl
29   cdrtools
30   dtc
31   fuse3
32   gcc-libs
33   gdk-pixbuf2
34   glib2
35   glusterfs
36   gnutls
37   gtk3
38   jack
39   libaio
40   libbpf
41   libcacard
42   libcap-ng
43   libepoxy
44   libiscsi
45   libnfs
46   libpng
47   libpulse
48   libsasl
49   libseccomp
50   libslirp
51   libssh
52   liburing
53   libusb
54   libx11
55   libxkbcommon
56   lzo
57   mesa
58   meson
59   ncurses
60   ndctl
61   numactl
62   pam
63   python
64   python-sphinx
65   python-sphinx_rtd_theme
66   sdl2
67   sdl2_image
68   seabios
69   snappy
70   spice-protocol
71   spice
72   systemd
73   usbredir
74   vde2
75   virglrenderer
76   vte3
77   xfsprogs
78   zlib
79   zstd
81 source=(https://download.qemu.org/qemu-$pkgver.tar.xz{,.sig}
82         fix_unix_sockets.diff::https://gitlab.com/qemu-project/qemu/-/commit/118d527f2e4baec5fe8060b22a6212468b8e4d3f.diff
83         qemu-guest-agent.service
84         65-kvm.rules)
85 sha512sums=('3378ae21c75b77ee6a759827f1fcf7b2a50a0fef07e3b0e89117108022a8d8655fa977e4d65596f4f24f7c735c6594d44b0c6f69732ea4465e88a7406b1d5d3c'
86             'SKIP'
87             'a87b0da1d49b4d17e9128544c2b0f00f1ac5242adc7fd9e8c9efd24ab6791ed702b2a0866383d31c1bff3259c281c95a60a96453ad998256a8b133cfd7107a59'
88             '269c0f0bacbd06a3d817fde02dce26c99d9f55c9e3b74bb710bd7e5cdde7a66b904d2eb794c8a605bf9305e4e3dee261a6e7d4ec9d9134144754914039f176e4'
89             'bdf05f99407491e27a03aaf845b7cc8acfa2e0e59968236f10ffc905e5e3d5e8569df496fd71c887da2b5b8d1902494520c7da2d3a8258f7fd93a881dd610c99')
90 validpgpkeys=('CEACC9E15534EBABB82D3FA03353C9CEF108B584') # Michael Roth <flukshun@gmail.com>
92 case $CARCH in
93   i?86) _corearch=i386 ;;
94   x86_64) _corearch=x86_64 ;;
95 esac
97 prepare() {
98   mkdir build-{full,headless}
99   mkdir -p extra-arch-{full,headless}/usr/{bin,share/qemu}
101   cd ${pkgname}-${pkgver}
102   patch -p1 < ../fix_unix_sockets.diff  # FS#72115
105 build() {
106   _build full \
107     --audio-drv-list="pa alsa sdl jack"
109   _build headless \
110     --audio-drv-list= \
111     --disable-sdl \
112     --disable-gtk \
113     --disable-vte \
114     --disable-brlapi \
115     --disable-opengl \
116     --disable-virglrenderer
119 _build() (
120   cd build-$1
122   ../${pkgname}-${pkgver}/configure \
123     --prefix=/usr \
124     --sysconfdir=/etc \
125     --localstatedir=/var \
126     --libexecdir=/usr/lib/qemu \
127     --smbd=/usr/bin/smbd \
128     --enable-modules \
129     --enable-sdl \
130     --enable-slirp=system \
131     --enable-xfsctl \
132     "${@:2}"
134   ninja
137 package_qemu() {
138   depends=(
139     alsa-lib libasound.so
140     bzip2 libbz2.so
141     cairo
142     curl libcurl.so
143     dtc
144     fuse3
145     gcc-libs
146     gdk-pixbuf2 libgdk_pixbuf-2.0.so
147     glib2 libgio-2.0.so libglib-2.0.so libgmodule-2.0.so libgobject-2.0.so
148     gnutls
149     gtk3 libgdk-3.so libgtk-3.so
150     jack libjack.so
151     libaio
152     libbpf libbpf.so
153     libcacard
154     libcap-ng libcap-ng.so
155     libepoxy
156     libjpeg libjpeg.so
157     libnfs
158     libpng
159     libpulse libpulse.so
160     libsasl
161     libseccomp libseccomp.so
162     libslirp libslirp.so
163     libssh libssh.so
164     libusb libusb-1.0.so
165     liburing liburing.so
166     libx11
167     libxkbcommon libxkbcommon.so
168     lzo
169     mesa
170     ncurses libncursesw.so
171     ndctl
172     numactl libnuma.so
173     pam libpam.so
174     pixman libpixman-1.so
175     seabios
176     sdl2
177     sdl2_image
178     snappy
179     spice libspice-server.so
180     systemd-libs libudev.so
181     usbredir
182     virglrenderer
183     vde2
184     vte3 libvte-2.91.so
185     zlib
186     zstd libzstd.so
187   )
188   optdepends=(
189     'brltty: for braille device support'
190     'qemu-arch-extra: extra architectures support'
191   )
192   provides=(qemu-headless)
193   conflicts=(qemu-headless)
194   replaces=(qemu-kvm)
196   _package full
199 package_qemu-headless() {
200   pkgdesc="QEMU without GUI"
201   depends=(
202     bzip2 libbz2.so
203     curl libcurl.so
204     dtc
205     fuse3
206     gcc-libs
207     glib2 libgio-2.0.so libglib-2.0.so libgmodule-2.0.so libgobject-2.0.so
208     gnutls
209     libaio
210     libbpf libbpf.so
211     libcacard
212     libcap-ng libcap-ng.so
213     libjpeg libjpeg.so
214     libnfs
215     libpng
216     libsasl
217     libseccomp libseccomp.so
218     libslirp libslirp.so
219     libssh libssh.so
220     libusb libusb-1.0.so
221     liburing liburing.so
222     libxkbcommon libxkbcommon.so
223     lzo
224     ndctl
225     numactl libnuma.so
226     ncurses libncursesw.so
227     pam libpam.so
228     pixman libpixman-1.so
229     seabios
230     snappy
231     spice libspice-server.so
232     systemd-libs libudev.so
233     usbredir
234     vde2
235     zlib
236     zstd libzstd.so
237   )
238   optdepends=('qemu-headless-arch-extra: extra architectures support')
240   _package headless
243 _package() {
244   optdepends+=('samba: SMB/CIFS server support'
245                'qemu-block-iscsi: iSCSI block support'
246                'qemu-block-rbd: RBD block support'
247                'qemu-block-gluster: glusterfs block support')
248   install=qemu.install
249   options=(!strip !emptydirs)
251   DESTDIR="$pkgdir" ninja -C build-$1 install "${@:2}"
253   # systemd stuff
254   install -Dm644 65-kvm.rules "$pkgdir/usr/lib/udev/rules.d/65-kvm.rules"
256   # remove conflicting /var/run directory
257   cd "$pkgdir"
258   rm -r var
260   cd usr/lib
262   # bridge_helper needs suid
263   # https://bugs.archlinux.org/task/32565
264   chmod u+s qemu/qemu-bridge-helper
266   # remove split block modules
267   rm qemu/block-{iscsi,rbd,gluster}.so
269   cd ../bin
271   # remove extra arch
272   for _bin in qemu-*; do
273     [[ -f $_bin ]] || continue
275     case ${_bin#qemu-} in
276       # guest agent
277       ga) rm "$_bin"; continue ;;
279       # tools
280       edid|img|io|keymap|nbd|pr-helper|storage-daemon) continue ;;
282       # core emu
283       system-${_corearch}) continue ;;
284     esac
286     mv "$_bin" "$srcdir/extra-arch-$1/usr/bin"
287   done
289   cd ../share/qemu
290   for _blob in *; do
291     [[ -f $_blob ]] || continue
293     case $_blob in
294       # provided by seabios package
295       bios.bin|bios-256k.bin|vgabios-cirrus.bin|vgabios-qxl.bin|\
296       vgabios-stdvga.bin|vgabios-vmware.bin|vgabios-virtio.bin|vgabios-bochs-display.bin|\
297       vgabios-ramfb.bin) rm "$_blob"; continue ;;
299       # provided by edk2-ovmf package
300       edk2-*) rm "$_blob"; continue ;;
302       # iPXE ROMs
303       efi-*|pxe-*) continue ;;
305       # core blobs
306       bios-microvm.bin|kvmvapic.bin|linuxboot*|multiboot.bin|sgabios.bin|vgabios*) continue ;;
308       # Trace events definitions
309       trace-events*) continue ;;
310     esac
312     mv "$_blob" "$srcdir/extra-arch-$1/usr/share/qemu"
313   done
315   # provided by edk2-ovmf package
316   rm -r firmware
318   cd ..
319   if [ "$1" = headless ]; then rm -r {applications,icons}; fi
322 package_qemu-arch-extra() {
323   pkgdesc="QEMU for foreign architectures"
324   depends=(
325     dtc
326     fuse3
327     gcc-libs
328     gnutls
329     libaio
330     libbpf libbpf.so
331     glib2 libgio-2.0.so libglib-2.0.so libgobject-2.0.so libgmodule-2.0.so
332     libjpeg libjpeg.so
333     libpng
334     libsasl
335     libseccomp libseccomp.so
336     libslirp libslirp.so
337     liburing liburing.so
338     lzo
339     ndctl
340     numactl libnuma.so
341     pam libpam.so
342     pixman libpixman-1.so
343     snappy
344     systemd-libs
345     libudev.so
346     qemu
347     vde2
348     zlib
349     zstd
350     libzstd.so
351   )
352   optdepends=(
353     'edk2-armvirt: for aarch64 UEFI support'
354     'edk2-ovmf: for ia32 and x64 UEFI support'
355   )
356   provides=(qemu-headless-arch-extra)
357   conflicts=(qemu-headless-arch-extra)
358   options=(!strip)
360   mv -v extra-arch-full/usr "$pkgdir"
363 package_qemu-headless-arch-extra() {
364   pkgdesc="QEMU without GUI, for foreign architectures"
365   depends=(
366     dtc
367     fuse3
368     gcc-libs
369     gnutls
370     libaio
371     libbpf libbpf.so
372     glib2 libgio-2.0.so libglib-2.0.so libgobject-2.0.so libgmodule-2.0.so
373     libjpeg libjpeg.so
374     libpng
375     libsasl
376     libseccomp libseccomp.so
377     libslirp libslirp.so
378     liburing liburing.so
379     lzo
380     ndctl
381     numactl libnuma.so
382     pam libpam.so
383     pixman libpixman-1.so
384     snappy
385     qemu-headless
386     systemd-libs libudev.so
387     vde2
388     zlib
389     zstd libzstd.so
390   )
391   optdepends=(
392     'edk2-armvirt: for aarch64 UEFI support'
393     'edk2-ovmf: for ia32 and x64 UEFI support'
394   )
395   options=(!strip)
397   mv -v extra-arch-headless/usr "$pkgdir"
400 package_qemu-block-iscsi() {
401   pkgdesc="QEMU iSCSI block module"
402   depends=(glibc libiscsi)
404   install -vDm 755 build-full/block-iscsi.so -t "$pkgdir/usr/lib/qemu/"
407 package_qemu-block-rbd() {
408   pkgdesc="QEMU RBD block module"
409   depends=(glibc ceph-libs)
411   install -vDm 755 build-full/block-rbd.so -t "$pkgdir/usr/lib/qemu/"
414 package_qemu-block-gluster() {
415   pkgdesc="QEMU GlusterFS block module"
416   depends=(glibc glusterfs)
418   install -vDm 755 build-full/block-gluster.so -t "$pkgdir/usr/lib/qemu/"
421 package_qemu-guest-agent() {
422   pkgdesc="QEMU Guest Agent"
423   depends=(gcc-libs glib2 libudev.so liburing)
424   install=qemu-guest-agent.install
426   install -vDm 755 build-full/qga/qemu-ga -t "$pkgdir/usr/bin/"
427   install -vDm 644 qemu-guest-agent.service -t "$pkgdir/usr/lib/systemd/system/"
428   install -vDm 755 "$srcdir/qemu-$pkgver/scripts/qemu-guest-agent/fsfreeze-hook" -t "$pkgdir/etc/qemu/"
431 # vim:set ts=2 sw=2 et: