summaryrefslogtreecommitdiff
path: root/pcr/xen/PKGBUILD
diff options
context:
space:
mode:
Diffstat (limited to 'pcr/xen/PKGBUILD')
-rw-r--r--pcr/xen/PKGBUILD764
1 files changed, 307 insertions, 457 deletions
diff --git a/pcr/xen/PKGBUILD b/pcr/xen/PKGBUILD
index 2e0dd94d8..ae6e2a6c6 100644
--- a/pcr/xen/PKGBUILD
+++ b/pcr/xen/PKGBUILD
@@ -1,497 +1,347 @@
-# current version adapted from https://gitlab.com/archlinux-packages-johnth/xen/tree/xen-4.10
-
-# Maintainer (AUR): John Thomson <aur.xen at j0aur.mm.st>
-# Contributor (Arch): David Sutton <kantras - gmail.com>
-# Contributor (Arch): Shanmu Thiagaraja <sthiagaraja+AUR@prshanmu.com>
-# Contributor (Arch): Limao Luo
-# Contributor (Arch): Luceo
-# Contributor (Arch): Revellion
-# Contributor: André Silva <emulatorman@hyperbola.info>
-# Contributor: Márcio Silva <coadde@hyperbola.info>
-# Contributor: Isaac David <isacdaavid@at@isacdaavid@dot@info>
-
-#linux-4.7 EFI boot panic issue (patch linux)
-#http://lkml.iu.edu/hypermail/linux/kernel/1608.2/03448.html
-
-_build_stubdom="${build_stubdom:-false}"
-_system_seabios="${system_seabios:-false}"
-_build_debug="${build_debug:-false}"
-_build_livepatch="${build_livepatch:-false}"
-
-## use _build_stubdom=true to build xen with stubdom
-## use _system_seabios=true to use system seabios
-## this bios file is slightly different to the xen seabios
-## /usr/share/qemu/bios-256k.bin uses CONFIG_ROM_SIZE=256, and newer seabios
-## can force use this file through vm.cfg bios_path_override='/usr/share/qemu/bios-256k.bin'
-## use _build_debug=true to compile Xen with debug options
-## use _build_livepatch=true to compile Xen with livepatch support
-
-#_build_stubdom=true
-#_system_seabios=true
-#_build_debug=true
-#_build_livepatch=true
+# Maintainer (aur): Sam Mulvey (Refutationalist) <archlinux@sammulvey.com>
+# Contributor: Filipe Laíns (FFY00) <lains@archlinux.org>
+# Contributor: Chris Chapman (cman) <chris.chapman@aggiemail.usu.edu>
+
+# Build Options
+_build_stubdom=${build_stubdom:-false}
+_build_qemu=${build_qemu:-true}
+_boot_dir=${boot_dir:-/boot}
+_efi_dir=${efi_dir:-/boot}
+_efi_mountpoint=${efi_mountpoint:-/boot}
+
+# Check http://xenbits.xen.org/xen-extfiles/ for updates
+_gmp=4.3.2
+_grub=0.97
+_lwip=1.3.0
+_newlib=1.16.0
+_pciutils=2.2.9
+_polarssl=1.1.4
+_tpm_emulator=0.7.4
+_zlib=1.2.3
pkgbase=xen
-pkgname=(xen{,-docs,-syms})
-_pkgname=xen
-pkgver=4.10.0
-_pkgver=${pkgver/rc/-rc}
-pkgrel=1
-pkgdesc='Virtual Machine Hypervisor & Tools (Parabola rebranded)'
-arch=(x86_64 armv7h)
-depends=(
- bridge-utils
- curl
- gnutls
- iproute2
- libaio
- libcacard
- libcap-ng
- libiscsi
- libnl
- libpng
- lzo
- pciutils
- python2
- sdl
- spice
- systemd
- usbredir
- yajl
- # seabios ovmf qemu
-)
-[[ "$CARCH" == 'x86_64' ]] && depends+=(
- lib32-glibc
-)
-[[ "$CARCH" == *'arm'* ]] && depends+=(
- dtc-overlay
-)
-[[ "$_system_seabios" == true ]] && depends+=(
- seabios
-)
-url='http://www.xenproject.org/'
+pkgname=("xen" "xen-docs")
+pkgver=4.16.0
+pkgrel=3
+pkgdesc='Type-1 or bare-metal hypervisor'
+arch=('x86_64')
+url='https://xenproject.org/'
license=('GPL2')
+options=(!buildflags)
+
makedepends=(
- cmake
- figlet
- git
- markdown
- nasm
- ocaml-findlib
- spice-protocol
- wget
+ 'zlib' 'python' 'ncurses' 'openssl' 'libx11' 'libuuid.so' 'yajl' 'libaio' 'glib2' 'pkgconf'
+ 'bridge-utils' 'iproute2' 'inetutils' 'acpica' 'lib32-glibc' 'gnutls'
+ 'vde2' 'lzo' 'pciutils' 'sdl2' 'systemd-libs'
+ 'systemd' 'wget' 'pandoc' 'valgrind' 'git' 'bin86' 'dev86' 'bison' 'gettext' 'flex' 'pixman' 'ocaml' 'ocaml-findlib' 'fig2dev'
+) # last line from namcap, these depends are the xen depends
+_stubdom_makedepends=('cmake')
+_qemu_makedepends=('ninja')
+
+_source=(
+ "https://downloads.xenproject.org/release/xen/$pkgver/$pkgname-$pkgver.tar.gz"{,.sig}
+ "efi-xen.cfg"
+ "xen.conf"
+ "tmpfiles.conf"
+ "xen-ucode-extract.sh"
+ "xen-intel-ucode.hook"
+ "xen-amd-ucode.hook"
)
-[[ "$CARCH" == 'x86_64' ]] && makedepends+=(
- bin86
- dev86
- gcc-multilib
- iasl
+
+validpgpkeys=('23E3222C145F4475FA8060A783FE14C957E82BD9') # Xen.org Xen tree code signing (signatures on the xen hypervisor and tools) <pgp@xen.org>
+
+
+# Follow the Xen securite mailing lists, and if a patch is applicable to our package
+# add the URL here.
+# Better yet, add the patch to abslibre :)
+_patches=(
+ "xsa393.patch"
+ "xsa394.patch"
+ "xsa395.patch"
+
)
-[[ "$CARCH" == 'i686' ]] && makedepends+=(
- bin86
- dev86
- iasl
+
+
+# Sources required for building stubdom
+_stubdom_source=(
+ "http://xenbits.xen.org/xen-extfiles/gmp-$_gmp.tar.bz2"
+ "http://xenbits.xen.org/xen-extfiles/grub-$_grub.tar.gz"
+ "http://xenbits.xen.org/xen-extfiles/lwip-$_lwip.tar.gz"
+ "http://xenbits.xen.org/xen-extfiles/newlib-$_newlib.tar.gz"
+ "http://xenbits.xen.org/xen-extfiles/pciutils-$_pciutils.tar.bz2"
+ "http://xenbits.xen.org/xen-extfiles/polarssl-$_polarssl-gpl.tgz"
+ "http://xenbits.xen.org/xen-extfiles/tpm_emulator-$_tpm_emulator.tar.gz"
+ "http://xenbits.xen.org/xen-extfiles/zlib-$_zlib.tar.gz"
)
-## For building Xen EFI boot file.
-## mingw-w64-binutils only needed if
-## binutils not built with --enable-targets=x86_64-pep
-_binutils_efi=false
-
-if [[ "$CARCH" == 'x86_64' ]]; then
- if which ld 2>&1 > /dev/null; then
- _binutils_emulations="$(ld -V)"
- if [[ "$_binutils_emulations" == *'i386pep'* ]]; then
- _binutils_efi=true
- msg '#ld has efi support'
- else
- makedepends+=(
- mingw-w64-binutils
- )
- msg '#ld does not have efi support, using mingw'
- fi
- else
- true
- fi
-fi
+# from cheap hack known as break_out_sums.sh
+_sha512sums=(
+ "2869ed90d1779c9754d7f2397f5fc67a655304d9c32953ac20655ef96cb154521d8fce9f23915ac0c91f984dc54f72c67e5e619e2da318b5997748f44cf21b87" # xen-4.16.0.tar.gz
+ "SKIP" # xen-4.16.0.tar.gz.sig
+ "1bbcbcd9fb8344a207409ec9f0064a45b726416f043f902ca587f5e4fa58497a759be4ffd584fa32318e960aa478864cc05ec026c444e8d27ca8e3248bd67420" # efi-xen.cfg
+ "ccaa2ff82e4203b11e5dec9aeccac2e165721d8067e0094603ecaa7a70b78c9eb9e2287a32687883d26b6ceae6f8d2ad7636ddf949eb658637b3ceaa6999711b" # xen.conf
+ "53ba61587cc2e84044e935531ed161e22c36d9e90b43cab7b8e63bcc531deeefacca301b5dff39ce89210f06f1d1e4f4f5cf49d658ed5d9038c707e3c95c66ef" # tmpfiles.conf
+ "a9230ec6ef9636ac3f3e4b72b1747ee8c4648a8bf4bd8dc3650365e34f1f67474429dbdd24996907d277b0ff5f235574643e781cb3ff37da954e899ddadbe0d6" # xen-ucode-extract.sh
+ "7a832de9b35f4b77ee80d33310b23886f4d48d1d42c3d6ef6f8e2b428bec7332a285336864b61cfa01d9a14c2023674015beb7527bd5849b069f2be88e6500cd" # xen-intel-ucode.hook
+ "99921b94a29fa7988c7fb5c17da8e598e777c972d6cae8c8643c991e5ff911a25525345ea8913945313d5c49fecf9da8cc3b83d47ab03928341e917b304370a9" # xen-amd-ucode.hook
+)
-options=(!buildflags !strip)
-changelog=ChangeLog
-##SeaBIOS & OVMF tags are in src/xen-*/tools/Config.mk
-##grep -rE '_(REVISION|VERSION|TAG)( \?| :){0,1}=' src/xen**/{Config.mk,stubdom/configure,tools/firmware/etherboot/Makefile}
-_git_tag_seabios='#tag=rel-1.10.2'
-_git_tag_ovmf='#tag=947f3737abf65fda63f3ffd97fddfa6986986868'
-_git_tag_ipxe='356f6c1b64d7a97746d1816cef8ca22bdd8d0b5d'
+_patch_sums=(
+ "32efed25f988579be8266a6bc80ed7c09c408519c6b6c5264b7e032849e3accc7ddea19c5879c06d7e7b27308d06e114f6e3ca4f814d53b9be9d239fb09c71f1" # xsa393.patch
+ "a0afa766e492a4dc921cd5c4c43c9ecbe87f79c07986504c8626ab7f06736147bdfa4637ea4c4abf17b9f1df31056bbcbb6c51a52e244e57467564c8ea06a52e" # xsa394.patch
+ "0aafb55b88a7feefeb0162b2722efc8ad43edcdfc7926492e1d49945eafb8dda900f7da37b2d49fd4dbc2d0c9a068ad6e47674a6df108a58842275695ed73540" # xsa395.patch
+)
-if [[ "$_build_stubdom" == true ]]; then
- if [[ "$CARCH" == *'arm'* ]]; then
- echo '####Compile settings error:'
- echo "#cannot build stubdom for $CARCH"
- _build_stubdom=false
- fi
-fi
-source=(
- "https://downloads.xenproject.org/release/$_pkgname/$_pkgver/$_pkgname-$_pkgver.tar.gz"{,.sig}
- "http://xenbits.xen.org/xen-extfiles/ipxe-git-$_git_tag_ipxe.tar.gz"
+_stub_sums=(
+ "2e0b0fd23e6f10742a5517981e5171c6e88b0a93c83da701b296f5c0861d72c19782daab589a7eac3f9032152a0fc7eff7f5362db8fccc4859564a9aa82329cf" # gmp-4.3.2.tar.bz2
+ "c2bc9ffc8583aeae71cee9ddcc4418969768d4e3764d47307da54f93981c0109fb07d84b061b3a3628bd00ba4d14a54742bc04848110eb3ae8ca25dbfbaabadb" # grub-0.97.tar.gz
+ "1465b58279af1647f909450e394fe002ca165f0ff4a0254bfa9fe0e64316f50facdde2729d79a4e632565b4500cf4d6c74192ac0dd3bc9fe09129bbd67ba089d" # lwip-1.3.0.tar.gz
+ "40eb96bbc6736a16b6399e0cdb73e853d0d90b685c967e77899183446664d64570277a633fdafdefc351b46ce210a99115769a1d9f47ac749d7e82837d4d1ac3" # newlib-1.16.0.tar.gz
+ "2b3d98d027e46d8c08037366dde6f0781ca03c610ef2b380984639e4ef39899ed8d8b8e4cd9c9dc54df101279b95879bd66bfd4d04ad07fef41e847ea7ae32b5" # pciutils-2.2.9.tar.bz2
+ "88da614e4d3f4409c4fd3bb3e44c7587ba051e3fed4e33d526069a67e8180212e1ea22da984656f50e290049f60ddca65383e5983c0f8884f648d71f698303ad" # polarssl-1.1.4-gpl.tgz
+ "4928b5b82f57645be9408362706ff2c4d9baa635b21b0d41b1c82930e8c60a759b1ea4fa74d7e6c7cae1b7692d006aa5cb72df0c3b88bf049779aa2b566f9d35" # tpm_emulator-0.7.4.tar.gz
+ "021b958fcd0d346c4ba761bcf0cc40f3522de6186cf5a0a6ea34a70504ce9622b1c2626fce40675bc8282cf5f5ade18473656abc38050f72f5d6480507a2106e" # zlib-1.2.3.tar.gz
+)
- 'seabios'::"git://xenbits.xen.org/seabios.git$_git_tag_seabios"
- 'ovmf'::"git://xenbits.xen.org/ovmf.git$_git_tag_ovmf"
- ##HTTP access
- #'seabios'::"git+http://xenbits.xen.org/git-http/seabios.git$_git_tag_seabios"
+# Simplify things for makepkg
+source=( "${_source[@]}" "${_patches[@]}" )
+sha512sums=( "${_sha512sums[@]}" "${_patch_sums[@]}" )
- ## Compile patches
- ati-passthrough.patch
- patch-ovmf-use-python2.patch
+for file in "${_patches[@]}"; do
+ noextract+=( $(basename ${file}) )
+done
- ## Files
- xen.install
- 21_linux_xen_multiboot_arch
- efi-xen.cfg
- "tmpfiles.d-$_pkgname.conf"
- ## XSA patches
- https://xenbits.xen.org/xsa/xsa253.patch
-)
-if [[ "$_build_stubdom" == true ]]; then
- msg '#building with stubdom'
- source+=(
- http://xenbits.xen.org/xen-extfiles/lwip-1.3.0.tar.gz
- http://xenbits.xen.org/xen-extfiles/zlib-1.2.3.tar.gz
- http://xenbits.xen.org/xen-extfiles/newlib-1.16.0.tar.gz
- http://xenbits.xen.org/xen-extfiles/pciutils-2.2.9.tar.bz2
- http://xenbits.xen.org/xen-extfiles/polarssl-1.1.4-gpl.tgz
- http://xenbits.xen.org/xen-extfiles/grub-0.97.tar.gz
- http://xenbits.xen.org/xen-extfiles/tpm_emulator-0.7.4.tar.gz
- http://xenbits.xen.org/xen-extfiles/gmp-4.3.2.tar.bz2
- http://caml.inria.fr/pub/distrib/ocaml-3.11/ocaml-3.11.0.tar.gz
- )
-fi
+# stubdom handling
+if [ "${_build_stubdom}" == "true" ]; then
+ source=("${source[@]}" "${_stubdom_source[@]}")
+ sha512sums=("${sha512sums[@]}" "${_stub_sums[@]}")
+ # Add in automagic dependency in order to build vtpm and vtpmmgr stubdoms
+ makedepends=( "${makedepends[@]}" "${_stubdom_makedepends[@]}" )
-noextract=(
- "ipxe-git-$_git_tag_ipxe.tar.gz"
-)
+ for file in "${_stubdom_source[@]}"; do
+ noextract+=( $(basename ${file}) )
+ done
-if [[ "$_build_stubdom" == true ]]; then
- noextract+=(
- lwip-1.3.0.tar.gz
- zlib-1.2.3.tar.gz
- newlib-1.16.0.tar.gz
- pciutils-2.2.9.tar.bz2
- polarssl-1.1.4-gpl.tgz
- grub-0.97.tar.gz
- tpm_emulator-0.7.4.tar.gz
- gmp-4.3.2.tar.bz2
- ocaml-3.11.0.tar.gz
- )
+ _config_stubdom='--enable-stubdom'
+
+ # make sure to build the stubdom package
+ pkgname+=("xen-stubdom")
+
+else
+ _config_stubdom='--disable-stubdom'
fi
-validpgpkeys=('23E3222C145F4475FA8060A783FE14C957E82BD9')
-#gpg --keyserver pgp.mit.edu --recv-key 23E3222C145F4475FA8060A783FE14C957E82BD9
-sha256sums=('0262a7023f8b12bcacfb0b25e69b2a63291f944f7683d54d8f33d4b2ca556844'
- 'SKIP'
- '251e5516d7de470c434ae5c393aacca2b61fb24d93770592a4a20add60b785c4'
- 'SKIP'
- 'SKIP'
- 'd93c2d5bcdf0c3e4c6e8efb357cb4b9d618209025361f5ccd9d03651a8acd7a3'
- '5fb65130f96d1728368a09042e55f622c14117572030ce2141bff4ae150e4a01'
- '55145ff9c1570257478842e4001b0dafe007d90f5b06db17231bc5bf20f3b23d'
- '8101316cfdf4b59e9c39b7372d4240a4552971c0fa53a4719bbb7a22f5622f4e'
- 'efb3c5713d556aa4890136ebf61502060cf90234fbd2e85701ad7a7ed2524fb1'
- '40e0760810a49f925f2ae9f986940b40eba477dc6d3e83a78baaae096513b3cf'
- 'bba1abb5e4368421de29385e37f8477bf3534d3ba3ff7e2aae9c9d3da53f1393')
-
-
-if [[ "$_build_stubdom" == true ]]; then
- sha256sums+=(
- #stubdom bits
- '772e4d550e07826665ed0528c071dd5404ef7dbe1825a38c8adbc2a00bca948f'
- '1795c7d067a43174113fdf03447532f373e1c6c57c08d61d9e4e9be5e244b05e'
- 'db426394965c48c1d29023e1cc6d965ea6b9a9035d8a849be2750ca4659a3d07'
- 'f60ae61cfbd5da1d849d0beaa21f593c38dac9359f0b3ddc612f447408265b24'
- '2d29fd04a0d0ba29dae6bd29fb418944c08d3916665dcca74afb297ef37584b6'
- '4e1d15d12dbd3e9208111d6b806ad5a9857ca8850c47877d36575b904559260b'
- '4e48ea0d83dd9441cc1af04ab18cd6c961b9fa54d5cbf2c2feee038988dea459'
- '936162c0312886c21581002b79932829aa048cfaf9937c6265aeaa14f1cd1775'
- 'ecdd4f8473ab0dee5d3acb5c0a31a4c1dd6aa12179895cf1903dd0f455c43a4f'
-
- #stubdom patches
- )
+if [ "${_build_qemu}" == "true" ]; then
+ _config_qemu=""
+ # qemu needs ninja to build as of 4.16.0
+ makedepends=( "${makedepends[@]}" "${_qemu_makedepends[@]}" )
+ pkgname+=("xen-qemu-builtin")
+else
+ _config_qemu="--with-system-qemu=/usr/bin/qemu-system-x86_64"
fi
-_xen_kconfig_debug=$(cat <<EOF
-CONFIG_DEBUG=y
-CONFIG_CRASH_DEBUG=y
-EOF
-)
-_xen_kconfig_livepatch=$(cat <<EOF
-CONFIG_LIVEPATCH=y
-EOF
+_common_make_flags=(
+ "BOOT_DIR=${_boot_dir}"
+ "EFI_DIR=${_efi_dir}"
+ "EFI_MOUNTPOINT=${_efi_mountpoint}"
+ "XEN_VENDORVERSION=-${pkgrel}-arch"
)
-_makevars=(
- LANG=C
- PYTHON=python2
-)
+# TODO: Setup users, dirs, etc.
prepare() {
- cd "$_pkgname-$_pkgver/"
-
- ### Copy git sourced tools/firmware
- # move seabios into place
- mv --force "$srcdir/seabios" tools/firmware/seabios-dir-remote
- # move ovmf into place
- mv --force "$srcdir/ovmf" tools/firmware/ovmf-dir-remote
-
- ### Patching
-
- # XSA Patches
- msg 'XSA patches'
- # Security Patches - Base
- patch -Np1 -i "$srcdir/xsa253.patch"
-
- # Security Patches - qemu-xen-traditional
- cd 'tools/qemu-xen-traditional/'
- cd '../../'
-
- # Security Patches - qemu-xen (upstream)
- cd 'tools/qemu-xen/'
- cd '../../'
-
-
- # Compile Patches
- msg 'Compile patches'
-
- # Build EFI binary with mingw
- if [[ "$_binutils_efi" != true ]]; then
- if $(stat /usr/x86_64-w64-mingw32/bin/ld >/dev/null 2>&1); then
- sed -i.bak '/ EFI_LD/s/LD/LD_EFI/' xen/arch/x86/Makefile
- sed -i.bak 's/LD/LD_EFI/' xen/arch/x86/efi/Makefile
- sed -i.bak '/EFI_MOUNTPOINT .*/aLD_EFI ?= $(LD)' xen/Makefile
- else
- echo '#Not capable of building xen.efi. Need either:'
- echo '#(preferred) binutils compiled with --enable-targets=x86_64-pep'
- echo '#or install mingw-w64-binutils'
- fi
- fi
-
- # OVMF Compile support (Pulls from GIT repo, so patching to patch after pull request)
- patch -Np1 -i "$srcdir/patch-ovmf-use-python2.patch"
- #mkdir -p tools/firmware/ovmf-patches
- #cp "$srcdir"/patch-inbuild-ovmf*.patch tools/firmware/ovmf-patches/
-
- # Uncomment line below if you want to enable ATI Passthrough support (some reported successes, untested with 4.4)
- #patch -Np1 -i "$srcdir/ati-passthrough.patch"
-
- ## Fix fixed rundir paths
- ## grep -Rl '\/var\/run\/xen' * 2> /dev/null
- _var_run_fixed_paths=(
- tools/hotplug/Linux/locking.sh
- tools/xenmon/xenbaked.c
- tools/xenmon/xenmon.py
- tools/pygrub/src/pygrub
- )
- sed -i 's:/var/run:/run:' ${_var_run_fixed_paths[@]}
-
- ## Fix python version in shebang
- msg 'Fix python shebang to python2'
- _python_files=( $(grep -Rlse '^#!/usr/bin/.*python$' || : ) )
- sed -Ei 's|(^#!.*/usr/bin/(env ){0,1})python$|\1python2|' ${_python_files[@]}
-
- ## Fix systemd-modules-load.d/xen.conf
- ## remove nonexistent modules
- find tools -iname 'configure*' -exec sed -i -E -e '
- /^LINUX_BACKEND_MODULES="$/,/^"$/ {
- #Address range where this variable is set
- /"/b; #Do noting if the line contains "
- /^xen-/!d; #Delete if does not start with xen
- s/scsibk/scsiback/; #Change scsibk to scsiback
- };' {} \;
-
- if [[ "$_build_stubdom" == true ]]; then
- # Copy supporting tarballs into place
- ln -s "$srcdir/lwip-1.3.0.tar.gz" stubdom/
- ln -s "$srcdir/zlib-1.2.3.tar.gz" stubdom/
- ln -s "$srcdir/newlib-1.16.0.tar.gz" stubdom/
- ln -s "$srcdir/pciutils-2.2.9.tar.bz2" stubdom/
- ln -s "$srcdir/polarssl-1.1.4-gpl.tgz" stubdom/
- ln -s "$srcdir/grub-0.97.tar.gz" stubdom/
- ln -s "$srcdir/tpm_emulator-0.7.4.tar.gz" stubdom/
- ln -s "$srcdir/gmp-4.3.2.tar.bz2" stubdom/
- ln -s "$srcdir/ocaml-3.11.0.tar.gz" stubdom/
-
- ## Stubdom patches
- cd 'extras/mini-os'
- cd '../../'
-
- #vtpm
- fi
-
- #etherboot
- ln -s "$srcdir/ipxe-git-$_git_tag_ipxe.tar.gz" tools/firmware/etherboot/ipxe.tar.gz
- #cp "$srcdir"/patch-inbuild-ipxe*.patch tools/firmware/etherboot/patches/
+
+ cd "${pkgbase}-${pkgver}"
+
+ if [ "${_build_stubdom}" == "true" ]; then
+
+ for file in "${_stubdom_source[@]}"; do
+ cp ../$(basename ${file}) stubdom/
+ done
+
+ fi
+
+
+ for patchurl in "${_patches[@]}"; do
+ patch=$(basename $patchurl)
+ echo "==> Applying security patch '${patch}'..."
+ patch -p1 < "../${patch}"
+ done
+
+ # Fix Install Paths.
+ sed 's,/var/run,/run,g' -i tools/hotplug/Linux/locking.sh
+ sed 's,/var/run,/run,g' -i tools/misc/xenpvnetboot
+ sed 's,/var/run,/run,g' -i tools/xenmon/xenbaked.c
+ sed 's,/var/run,/run,g' -i tools/xenmon/xenmon.py
+ sed 's,/var/run,/run,g' -i tools/pygrub/src/pygrub
}
build() {
- cd "$_pkgname-$_pkgver/"
- export LD_EFI='/usr/x86_64-w64-mingw32/bin/ld'
- ./autogen.sh
- if [[ "$_build_stubdom" == true ]]; then
- _config_stubdom=(--enable-stubdom)
- _config_stubdom+=(
- #--enable-ioemu-stubdom=no
- #--enable-c-stubdom=no
- #--enable-caml-stubdom=no
- #--enable-pv-grub=no
- #--enable-xenstore-stubdom=no
- #--enable-vtpm-stubdom=no
- #--enable-vtpmmgr-stubdom=no
- )
- else
- _config_stubdom=(--disable-stubdom)
- fi
- _config_seabios=()
- if [[ "$_system_seabios" == true ]]; then
- _config_seabios=(--with-system-seabios=/usr/share/qemu/bios-256k.bin)
- fi
- _config_xen_kconfig=''
- _config_debug=()
- if [[ "$_build_debug" == true ]]; then
- _config_debug=(--enable-debug --enable-debug-tcg --enable-debug-info)
- _config_xen_kconfig+="\n$_xen_kconfig_debug"
- _makevars+=(debug=y CONFIG_DEBUG=y)
- fi
- if [[ "$_build_livepatch" == true ]]; then
- _config_xen_kconfig+="\n$_xen_kconfig_livepatch"
- fi
- if [[ -n "$_config_xen_kconfig" ]]; then
- cd xen
- echo -e "$_config_xen_kconfig" > .config
- make "${_makevars[@]}" olddefconfig V=1
- cd ../
- fi
- ./configure PYTHON=/usr/bin/python2 --prefix=/usr --sbindir=/usr/bin --with-sysconfig-leaf-dir=conf.d --with-rundir=/run \
- --enable-systemd --enable-ovmf \
- "${_config_seabios[@]}" \
- "${_config_stubdom[@]}" \
- "${_config_debug[@]}" \
- --with-extra-qemuu-configure-args='--disable-bluez --disable-gtk --enable-spice --enable-usb-redir'
- #--with-system-qemu --with-system-seabios --with-system-ovmf
- #defaults --enable-qemu-traditional --enable-rombios \
- make "${_makevars[@]}" dist
- if [[ "$_build_livepatch" == true ]]; then
- make "${_makevars[@]}" build-tests
- fi
+ cd "${pkgbase}-${pkgver}"
+
+ if [ "${_build_stubdom}" == "true" ]; then
+ echo "NOTE: Xen build with stubdom support."
+ fi
+
+ if [ "${_build_qemu}" == "true" ]; then
+ echo "NOTE: Xen build with integrated QEMU."
+ fi
+
+
+ ./configure \
+ --prefix=/usr \
+ --sbindir=/usr/bin \
+ --libdir=/usr/lib \
+ --with-rundir=/run \
+ --enable-systemd \
+ --disable-qemu-traditional \
+ ${_config_stubdom} \
+ ${_config_qemu} \
+ --with-sysconfig-leaf-dir=conf.d \
+ --with-system-ovmf=/usr/share/ovmf/x64/OVMF.fd \
+ --with-system-seabios=/usr/share/qemu/bios-256k.bin
+
+ make "${_common_make_flags[@]}"
}
package_xen() {
- _makevars_package=("${_makevars[@]}" DESTDIR="$pkgdir")
- optdepends=(
- 'xen-docs: Official Xen documentation'
- 'openvswitch: Optional advanced networking support'
- 'urlgrabber: Required for xenpvnetboot'
- )
- conflicts=(xen-{git,rc,igvtg,4.{8,9}} xenstore)
- provides=(xenstore)
- replaces=(xen-{git,rc,4.{8,9}})
- backup=(
- etc/conf.d/xen{domains,commons}
- "etc/$_pkgname/grub.conf"
- "etc/$_pkgname/oxenstored.conf"
- "etc/$_pkgname/xl.conf"
- )
- install="$_pkgname.install"
-
- cd "$_pkgname-$_pkgver/"
-
- make "${_makevars_package[@]}" install-xen
- make "${_makevars_package[@]}" install-tools
- if [[ "$_build_stubdom" == true ]]; then
- make "${_makevars_package[@]}" install-stubdom
- fi
- if [[ "$_build_livepatch" == true ]]; then
- make "${_makevars_package[@]}" install-tests
- fi
-
- cd "$pkgdir"
-
- # Install files from Parabola package
- install -Dm644 "$srcdir/tmpfiles.d-$_pkgname.conf" "usr/lib/tmpfiles.d/$_pkgname.conf"
- install -Dm755 "$srcdir/21_linux_xen_multiboot_arch" etc/grub.d/21_linux_xen_multiboot_arch
- install -Dm644 "$srcdir/efi-xen.cfg" etc/xen/efi-xen.cfg
-
- mkdir -p var/log/xen/console
-
- # Sanitize library path (if lib64 exists)
- if [[ -d usr/lib64 ]]; then
- cd usr/
- mv lib64/* lib/
- rmdir lib64
- cd ../
- fi
-
- # If EFI binaries built, move to /boot
- if [[ -f usr/lib/efi/xen.efi ]]; then
- mv usr/lib/efi/*.efi boot/
- rmdir usr/lib/efi
- fi
-
- # Remove syms
- find usr/lib/debug -type f \( -name '*-syms*' -or -name '*\.map' \) -delete
- rmdir --ignore-fail-on-non-empty usr/lib/debug
-
- # Remove hypervisor boot symlinks
- rm -f boot/xen{,-4{,.8,.9}}{,.{gz,efi}}
-
- # Documentation cleanup ( see xen-docs package )
- #rm -rf usr/share/doc
- #rm -rf usr/share/man
-
- # Remove tempdirs
- rmdir run/xen{,stored}
- rmdir run
-
- # Remove unnecessary qemu ELF support files
- # qemuu
- rm -f usr/share/qemu-xen/qemu/{palcode,openbios,s390}-*
- rm -f usr/share/qemu-xen/qemu/u-boot.e500
- # qemut
- if [[ "$CARCH" == *'x86'* ]]; then
- rm -f usr/share/xen/qemu/openbios-*
- fi
-
- # adhere to Static Library Packaging Guidelines
- rm -rf usr/lib/*.a
-
- # Remove unneeded init.d files
- rm -rf etc/init.d
+ pkgdesc='Type-1 or baremetal hypervisor'
+
+ depends=(
+ 'zlib' 'python' 'ncurses' 'openssl' 'libx11' 'libuuid.so' 'yajl' 'libaio' 'glib2' 'pkgconf'
+ 'bridge-utils' 'iproute2' 'inetutils' 'acpica' 'lib32-glibc' 'gnutls'
+ 'vde2' 'lzo' 'pciutils' 'sdl2'
+ 'pixman' 'libseccomp' 'libpng' 'libjpeg-turbo' # inhereted depends because of build environment
+ )
+
+ optdepends=(
+ 'edk2-ovmf: UEFI support'
+ 'seabios: SeaBIOS payload support'
+ 'xen-docs: HTML documentation and man pages'
+ 'grub-xen-git: GRUB and pvgrub2 bootloader support'
+ 'linux-headers: extract bootable non-zstd kernel for recent kernels'
+ )
+
+ if [ "${_build_qemu}" == "false" ]; then
+ optdepends+=("qemu: HVM and PV support")
+ fi
+
+ install="xen.install"
+
+
+ backup=(
+ "etc/conf.d/xencommons"
+ "etc/conf.d/xendomains"
+ "etc/xen/efi-xen.cfg"
+ "etc/xen/cpupool"
+ "etc/xen/xl.conf"
+ )
+
+
+ cd "${pkgbase}-${pkgver}"
+
+ make "${_common_make_flags[@]}" DESTDIR="$pkgdir" install
+
+ rm -rf "$pkgdir"/var/run
+
+ # Symlinks to prior installed versions are not The Arch Way, leave only the bare EFI binary
+ (cd "${pkgdir}/${_efi_dir}" && mv "$(realpath xen.efi)" xen.efi)
+
+ [ -d "$pkgdir"/etc/xen/scripts ] && backup+=($(find "$pkgdir"/etc/xen/scripts/ -type f | sed "s|^$pkgdir/||g"))
+
+ mkdir -p "${pkgdir}/var/log/xen/console"
+
+ # Continued: Trim hypervisor symlinks.
+ (cd "${pkgdir}/${_boot_dir}" && mv "$(realpath xen.gz)" xen.gz)
+
+ # Do all symlink removals after the directories have had the real
+ # binaries moved overtop any symlinks. Note that dependening on
+ # configuratation _efi_dir and _boot_dir may be the same directory, so
+ # don't clean any of them until they've all been processed.
+ find "${pkgdir}/${_efi_dir}" -type l -delete
+ find "${pkgdir}/${_boot_dir}" -type l -delete
+
+ # Remove syms.
+ find "${pkgdir}/usr/lib/debug" -type f \( -name '*-syms*' -or -name '*\.map' \) -delete
+ rmdir "${pkgdir}/usr/lib/debug/usr/lib/xen/boot"
+ rmdir "${pkgdir}/usr/lib/debug/usr/lib/xen"
+ rmdir "${pkgdir}/usr/lib/debug/usr/lib"
+ rmdir "${pkgdir}/usr/lib/debug/usr"
+ rmdir "${pkgdir}/usr/lib/debug"
+
+ # Remove SysVinit files.
+ rm -r "${pkgdir}/etc/init.d"
+
+ # Install files for Arch Linux.
+ install -D -m 0644 "${srcdir}/efi-xen.cfg" "${pkgdir}/etc/xen/efi-xen.cfg"
+ install -D -m 0644 "${srcdir}/xen.conf" "${pkgdir}/usr/lib/modules-load.d/xen.conf"
+ install -D -m 0644 "${srcdir}/tmpfiles.conf" "${pkgdir}/usr/lib/tmpfiles.d/${pkgbase}.conf"
+
+ # microcode hooks
+ mkdir -p "${pkgdir}/usr/share/libalpm/scripts" "${pkgdir}/usr/share/libalpm/hooks"
+ install -m755 "${srcdir}/xen-ucode-extract.sh" "${pkgdir}/usr/share/libalpm/scripts"
+ install -m644 "${srcdir}/xen-intel-ucode.hook" "${pkgdir}/usr/share/libalpm/hooks"
+ install -m644 "${srcdir}/xen-amd-ucode.hook" "${pkgdir}/usr/share/libalpm/hooks"
+
+ # Remove documentation (included in separate xen-docs package).
+ rm -r "${pkgdir}/usr/share/doc"
+ rm -r "${pkgdir}/usr/share/man"
+
+ # remove potential stubdom files
+ rm -r "${pkgdir}/usr/lib/xen/boot"
+
+ # remove qemu
+ if [ "${_build_qemu}" == "true" ]; then
+
+ rm -r "${pkgdir}/usr/share/qemu-xen"
+ rm -r \
+ "${pkgdir}/usr/lib/xen/include/qemu-plugin.h" \
+ "${pkgdir}/usr/lib/xen/bin/qemu-pr-helper" \
+ "${pkgdir}/usr/lib/xen/bin/qemu-edid" \
+ "${pkgdir}/usr/lib/xen/bin/elf2dmp" \
+ "${pkgdir}/usr/lib/xen/bin/qemu-storage-daemon" \
+ "${pkgdir}/usr/lib/xen/bin/qemu-nbd" \
+ "${pkgdir}/usr/lib/xen/bin/qemu-io" \
+ "${pkgdir}/usr/lib/xen/bin/qemu-img" \
+ "${pkgdir}/usr/lib/xen/bin/qemu-system-i386" \
+ "${pkgdir}/usr/lib/xen/libexec/virtiofsd" \
+ "${pkgdir}/usr/lib/xen/libexec/qemu-bridge-helper" \
+ "${pkgdir}/usr/lib/xen/libexec/virtfs-proxy-helper"
+
+ fi
+
+
}
-package_xen-docs(){
- _makevars_package=("${_makevars[@]}" DESTDIR="$pkgdir")
- pkgdesc='Xen virtual machine hypervisor documentation'
- arch=('any')
- depends=()
- cd "$_pkgname-$_pkgver/"
- make "${_makevars_package[@]}" install-docs
+package_xen-docs() {
+ pkgdesc="Xen hypervisor documentation and man pages"
+ arch=("x86_64") # no reason to publish this package to 32-bit repos
+ cd "${pkgbase}-${pkgver}"
+ make "${_common_make_flags[@]}" DESTDIR="$pkgdir" install-docs
}
-package_xen-syms(){
- _makevars_package=("${_makevars[@]}" DESTDIR="$pkgdir")
- pkgdesc='Xen virtual machine hypervisor debugging symbols'
- arch=('any')
- depends=()
- _installdir="${pkgdir}/usr/lib/debug"
- cd "$_pkgname-$_pkgver/"
- install -d -m0755 "$_installdir"
- for _path in $(find xen -type f \( -name '*-syms' -or -name '*\.map' \)); do
- _file=$(basename "$_path")
- _installfile=$(echo "$_file" |
- sed "s/\([^.]*\)\(\.*\)/\1-${_pkgver}\2/" )
- install -D -m0644 -p "$_path" "$_installdir/$_installfile"
- done
+
+package_xen-stubdom() {
+ pkgdesc="Xen hypervisor stubdom files"
+ arch=("x86_64")
+ depends=("xen")
+
+ cd "${srcdir}/${pkgbase}-${pkgver}/stubdom"
+ make DESTDIR="${pkgdir}" install
}
+
+package_xen-qemu-builtin() {
+ pkgdesc="Xen hypervisor QEMU components"
+ arch=("x86_64")
+ depends=("xen")
+
+ cd "${srcdir}/${pkgbase}-${pkgver}/tools/qemu-xen-build"
+ make DESTDIR="${pkgdir}" install
+}
+