[arch-commits] Commit in qemu/trunk (PKGBUILD)

Jan Steffens heftig at archlinux.org
Thu Jun 23 20:44:12 UTC 2016


    Date: Thursday, June 23, 2016 @ 20:44:12
  Author: heftig
Revision: 270539

Overhaul, add headless fork

Modified:
  qemu/trunk/PKGBUILD

----------+
 PKGBUILD |  242 +++++++++++++++++++++++++++++++++++--------------------------
 1 file changed, 141 insertions(+), 101 deletions(-)

Modified: PKGBUILD
===================================================================
--- PKGBUILD	2016-06-23 19:39:12 UTC (rev 270538)
+++ PKGBUILD	2016-06-23 20:44:12 UTC (rev 270539)
@@ -3,26 +3,19 @@
 # Contributor: Sébastien "Seblu" Luttringer <seblu at seblu.net>
 
 pkgbase=qemu
-pkgname=('qemu'
-         'qemu-arch-extra'
-         'qemu-block-iscsi'
-         'qemu-block-rbd'
-         'qemu-block-gluster'
-         'qemu-guest-agent')
-pkgdesc='A generic and open source processor emulator which achieves a good emulation speed by using dynamic translation'
+pkgname=(qemu qemu-headless qemu-arch-extra
+         qemu-block-{iscsi,rbd,gluster} qemu-guest-agent)
+pkgdesc="A generic and open source machine emulator and virtualizer"
 pkgver=2.6.0
-pkgrel=1
-arch=('i686' 'x86_64')
-license=('GPL2' 'LGPL2.1')
-url='http://wiki.qemu.org/'
-depends=('pixman' 'libjpeg' 'libpng' 'sdl2' 'alsa-lib' 'nss' 'glib2'
-         'gnutls' 'bluez-libs' 'vde2' 'util-linux' 'libsasl' 'libgl'
-         'seabios' 'libcap' 'libcap-ng' 'libaio' 'libseccomp' 'libcacard'
-         'spice' 'usbredir' 'lzo' 'snappy' 'gcc-libs' 'zlib' 'bzip2' 'nspr'
-         'ncurses' 'libx11' 'libusb' 'libpulse' 'libssh2' 'curl' 'vte3'
-         'virglrenderer' 'jemalloc')
-makedepends=('curl' 'libiscsi' 'spice-protocol' 'python2' 'ceph' 'glusterfs')
-source=(http://wiki.qemu.org/download/${pkgname}-${pkgver}.tar.bz2
+pkgrel=2
+arch=(i686 x86_64)
+license=(GPL2 LGPL2.1)
+url="http://wiki.qemu.org/"
+_headlessdeps=(seabios gnutls libpng libaio numactl jemalloc xfsprogs libnfs
+               lzo snappy curl vde2 libcap-ng spice usbredir)
+depends=(virglrenderer sdl2 vte3 brltty "${_headlessdeps[@]}")
+makedepends=(spice-protocol python2 ceph libiscsi glusterfs)
+source=("$url/download/${pkgname}-${pkgver}.tar.bz2"
         qemu.sysusers
         qemu-ga.service
         65-kvm.rules)
@@ -31,138 +24,185 @@
          '44ee242d758f9318c6a1ea1dae96aa3a'
          '33ab286a20242dda7743a900f369d68a')
 
-_extra_arches=(aarch64 alpha arm armeb cris lm32 m68k microblaze microblazeel mips
-mips64 mips64el mipsel mipsn32 mipsn32el or32 ppc ppc64 ppc64abi32 ppc64le s390x
-sh4 sh4eb sparc sparc32plus sparc64 moxie ppcemb tricore unicore32 xtensa xtensaeb)
-_extra_blob=(QEMU,cgthree.bin QEMU,tcx.bin bamboo.dtb openbios-ppc
-openbios-sparc32 openbios-sparc64 palcode-clipper petalogix-ml605.dtb
-petalogix-s3adsp1800.dtb ppc_rom.bin s390-ccw.img slof.bin
-spapr-rtas.bin u-boot.e500)
+case $CARCH in
+  i?86) _corearch=i386 ;;
+  x86_64) _corearch=x86_64 ;;
+esac
 
 prepare() {
-  for _p in *.patch; do
-    [[ -e "$_p" ]] || continue
-    msg2 "Patching $_p"
-    patch -p1 -d ${pkgname}-${pkgver} < "$_p"
-  done
-  sed -i 's/vte-2\.90/vte-2.91/g' ${pkgname}-${pkgver}/configure
+  mkdir build-{full,headless}
+  mkdir -p extra-arch-{full,headless}/usr/{bin,share/qemu}
+
+  cd ${pkgname}-${pkgver}
+  sed -i 's/vte-2\.90/vte-2.91/g' configure
 }
 
-build ()
-{
-  cd ${pkgname}-${pkgver}
+build() {
+  _build full \
+    --audio-drv-list="pa alsa sdl"
+
+  _build headless \
+    --target-list=${_corearch}-softmmu \
+    --audio-drv-list= \
+    --disable-bluez \
+    --disable-sdl \
+    --disable-gtk \
+    --disable-vte \
+    --disable-opengl \
+    --disable-virglrenderer \
+    --disable-brlapi
+}
+
+_build() (
+  cd build-$1
+
   # qemu vs. make 4 == bad
-  export ARFLAGS="rv"
+  export ARFLAGS=rv
+
   # http://permalink.gmane.org/gmane.comp.emulators.qemu/238740
-  export CFLAGS+=' -fPIC'
-  # gtk gui breaks keymappings at the moment
-  ./configure --prefix=/usr --sysconfdir=/etc --audio-drv-list='pa alsa sdl' \
-              --python=/usr/bin/python2 --smbd=/usr/bin/smbd \
-              --enable-docs --libexecdir=/usr/lib/qemu \
-              --enable-gtk --enable-linux-aio --enable-seccomp \
-              --enable-spice --localstatedir=/var \
-              --with-gtkabi=3.0 --with-sdlabi=2.0 --enable-vte \
-              --enable-tpm --enable-jemalloc --enable-opengl \
-              --enable-modules --enable-{rbd,glusterfs,libiscsi,curl}
-  make V=99
+  export CFLAGS+=" -fPIC"
+
+  ../${pkgname}-${pkgver}/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 \
+    "${@:2}"
+
+  make
+)
+
+package_qemu() {
+  provides=(qemu-headless)
+  replaces=(qemu-kvm)
+
+  _package full
 }
 
-package_qemu() {
-  replaces=('qemu-kvm')
+package_qemu-headless() {
+  pkgdesc="QEMU without graphical user interface"
+  depends=("${_headlessdeps[@]}")
+
+  _package headless
+}
+
+_package() {
   optdepends=('samba: SMB/CIFS server support'
               'qemu-arch-extra: extra architectures support'
               'qemu-block-iscsi: iSCSI block support'
               'qemu-block-rbd: RBD block support'
               'qemu-block-gluster: glusterfs block support')
+  install=qemu.install
   options=(!strip)
-  install=qemu.install
 
-  make -C ${pkgname}-${pkgver} DESTDIR="${pkgdir}" libexecdir="/usr/lib/qemu" install
+  make -C build-$1 DESTDIR="$pkgdir" install "${@:2}"
 
-  cd "${pkgdir}"
+  # systemd stuff
+  install -Dm644 65-kvm.rules "$pkgdir/usr/lib/udev/rules.d/65-kvm.rules"
+  install -Dm644 qemu.sysusers "$pkgdir/usr/lib/sysusers.d/qemu.conf"
 
-  # provided by seabios package
-  rm usr/share/qemu/bios.bin
-  rm usr/share/qemu/acpi-dsdt.aml
-  rm usr/share/qemu/bios-256k.bin
-  rm usr/share/qemu/vgabios-cirrus.bin
-  rm usr/share/qemu/vgabios-qxl.bin
-  rm usr/share/qemu/vgabios-stdvga.bin
-  rm usr/share/qemu/vgabios-vmware.bin
-
   # remove conflicting /var/run directory
+  cd "$pkgdir"
   rm -r var
 
-  # systemd stuff
-  install -D -m644 "${srcdir}/65-kvm.rules" usr/lib/udev/rules.d/65-kvm.rules
-  install -D -m644 "${srcdir}/qemu.sysusers" usr/lib/sysusers.d/qemu.conf
+  cd usr/lib
+  tidy_strip
 
   # bridge_helper needs suid
   # https://bugs.archlinux.org/task/32565
-  chmod u+s usr/lib/qemu/qemu-bridge-helper
+  chmod u+s qemu/qemu-bridge-helper
 
-  # remove splitted block modules
-  rm usr/lib/qemu/block-{iscsi,rbd,gluster}.so
+  # remove split block modules
+  rm qemu/block-{iscsi,rbd,gluster}.so
 
-  # remove guest agent
-  rm usr/bin/qemu-ga
+  cd ../bin
+  tidy_strip
 
   # remove extra arch
-  for _arch in "${_extra_arches[@]}"; do
-    rm -f usr/bin/qemu-${_arch} usr/bin/qemu-system-${_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/extra-arch-$1/usr/bin"
   done
-  for _blob in "${_extra_blob[@]}"; do
-    rm usr/share/qemu/${_blob}
+
+  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.bin|multiboot.bin|sgabios.bin|vgabios*) continue ;;
+
+      # Trace events definitions
+      trace-events) continue ;;
+
+      # Logos
+      *.bmp|*.svg) continue ;;
+    esac
+
+    mv "$_blob" "$srcdir/extra-arch-$1/usr/share/qemu"
   done
 }
 
 package_qemu-arch-extra() {
-  pkgdesc='QEMU with full support for non x86 architectures'
-  depends=('qemu')
+  pkgdesc="QEMU for foreign architectures"
+  depends=(qemu)
   options=(!strip)
 
-  cd qemu-${pkgver}
-  install -dm755 "${pkgdir}"/usr/bin
-  for _arch in "${_extra_arches[@]}"; do
-    install -m755 ${_arch}-*/qemu-*${_arch} "${pkgdir}"/usr/bin
-  done
-
-  cd pc-bios
-  for _blob in "${_extra_blob[@]}"; do
-    install -Dm644 ${_blob} "${pkgdir}"/usr/share/qemu/${_blob}
-  done
-
-  # manually stripping
-  find "${pkgdir}"/usr/bin -type f -exec strip {} \;
+  mv extra-arch-full/usr "$pkgdir"
 }
 
 package_qemu-block-iscsi() {
-  pkgdesc='QEMU iSCSI block module'
-  depends=('glib2' 'libiscsi' 'jemalloc')
+  pkgdesc="QEMU iSCSI block module"
+  depends=(glib2 libiscsi jemalloc)
 
-  install -D qemu-${pkgver}/block-iscsi.so "${pkgdir}"/usr/lib/qemu/block-iscsi.so
+  install -D build-full/block-iscsi.so "$pkgdir/usr/lib/qemu/block-iscsi.so"
 }
 
 package_qemu-block-rbd() {
-  pkgdesc='QEMU RBD block module'
-  depends=('glib2' 'ceph')
+  pkgdesc="QEMU RBD block module"
+  depends=(glib2 ceph)
 
-  install -D qemu-${pkgver}/block-rbd.so "${pkgdir}"/usr/lib/qemu/block-rbd.so
+  install -D build-full/block-rbd.so "$pkgdir/usr/lib/qemu/block-rbd.so"
 }
 
 package_qemu-block-gluster() {
-  pkgdesc='QEMU GlusterFS block module'
-  depends=('glib2' 'glusterfs')
+  pkgdesc="QEMU GlusterFS block module"
+  depends=(glib2 glusterfs)
 
-  install -D qemu-${pkgver}/block-gluster.so "${pkgdir}"/usr/lib/qemu/block-gluster.so
+  install -D build-full/block-gluster.so "$pkgdir/usr/lib/qemu/block-gluster.so"
 }
 
 package_qemu-guest-agent() {
-  pkgdesc='QEMU Guest Agent'
-  depends=('gcc-libs' 'glib2')
+  pkgdesc="QEMU Guest Agent"
+  depends=(gcc-libs glib2)
 
-  install -D qemu-${pkgver}/qemu-ga "${pkgdir}"/usr/bin/qemu-ga
-  install -Dm644 qemu-ga.service "${pkgdir}"/usr/lib/systemd/system/qemu-ga.service
+  install -D build-full/qemu-ga "$pkgdir/usr/bin/qemu-ga"
+  install -Dm644 qemu-ga.service "$pkgdir/usr/lib/systemd/system/qemu-ga.service"
 }
 
 # vim:set ts=2 sw=2 et:



More information about the arch-commits mailing list