DESCRIPTION = "Xen hypervisor" HOMEPAGE = "http://xen.org" LICENSE = "GPLv2" SECTION = "console/tools" LIC_FILES_CHKSUM = "file://COPYING;md5=bbb4b1bdc2c3b6743da3c39d03249095" COMPATIBLE_HOST = '(x86_64.*).*-linux|aarch64.*-linux|arm-.*-linux-gnueabi' inherit autotools-brokensep setuptools update-rc.d systemd deploy require xen-arch.inc PACKAGECONFIG ??= " \ sdl \ ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'systemd', '', d)} \ ${@bb.utils.contains('XEN_TARGET_ARCH', 'x86_64', 'hvm', '', d)} \ " FLASK_POLICY_FILE ?= "xenpolicy-${PV}" PACKAGECONFIG[sdl] = "--enable-sdl,--disable-sdl,virtual/libsdl," PACKAGECONFIG[xsm] = "--enable-xsmpolicy,--disable-xsmpolicy,checkpolicy-native," PACKAGECONFIG[systemd] = "--enable-systemd,--disable-systemd,systemd," PACKAGECONFIG[hvm] = "--with-system-seabios="/usr/share/firmware/bios.bin",--disable-seabios,seabios ipxe vgabios," DEPENDS = " \ bison-native \ dev86-native \ flex-native \ file-native \ gettext-native \ acpica-native \ ncurses-native \ util-linux-native \ xz-native \ bridge-utils \ curl \ dtc \ gettext \ glib-2.0 \ gnutls \ iproute2 \ libnl \ ncurses \ openssl \ pciutils \ pixman \ procps \ python \ libaio \ lzo \ util-linux \ xz \ yajl \ zlib \ gnu-efi \ " # inherit setuptools adds python to RDEPENDS, override it RDEPENDS_${PN} = "" RDEPENDS_${PN}-base = "\ bash perl xz \ ${PN}-console \ ${PN}-libxenguest \ ${PN}-libxenlight \ ${PN}-libxenvchan \ ${PN}-libxenctrl \ ${PN}-libxlutil \ ${PN}-libxenstat \ ${PN}-libxenstore \ ${PN}-libfsimage \ ${PN}-fsimage \ ${PN}-scripts-block \ ${PN}-scripts-network \ ${PN}-xen-watchdog \ ${PN}-xencommons \ ${PN}-xendomains \ ${PN}-xenstore \ ${PN}-xenstored \ ${PN}-xl \ " RDEPENDS_${PN}-dev = "" RRECOMMENDS_${PN}-base = " \ ${PN}-blktap \ ${PN}-libblktap \ ${PN}-libblktapctl \ ${PN}-libvhd \ ${PN}-flask \ ${PN}-hvmloader \ ${PN}-shim \ ${PN}-xenpaging \ " RDEPENDS_${PN}-devd = " \ ${PN}-xl \ " RDEPENDS_${PN}-fsimage = " \ libext2fs \ " RDEPENDS_${PN}-misc = " \ perl \ python \ " RDEPENDS_${PN}-remus = " \ bash \ python \ " RDEPENDS_${PN}-scripts-block = "\ bash \ ${PN}-scripts-common \ ${PN}-volatiles \ " RDEPENDS_${PN}-scripts-common = "bash" RDEPENDS_${PN}-scripts-network = "\ bash \ bridge-utils \ ${PN}-scripts-common \ ${PN}-volatiles \ " RDEPENDS_${PN}-xencommons = "\ bash \ ${PN}-console \ ${PN}-xenstore \ ${PN}-xenstored \ ${PN}-xl \ ${PN}-scripts-common \ " RDEPENDS_${PN}-xendomains = "\ bash \ ${PN}-console \ ${PN}-scripts-block \ ${PN}-scripts-common \ ${PN}-xenstored \ " RDEPENDS_${PN}-xl = "libgcc" RDEPENDS_${PN}-xentrace = "python" RDEPENDS_${PN}-xen-watchdog = "bash" PACKAGES = "\ ${PN}-base \ ${PN}-blktap \ ${PN}-console \ ${PN}-cpuid \ ${PN}-dbg \ ${PN}-dev \ ${PN}-devd \ ${PN}-doc \ ${PN}-efi \ ${PN}-flask \ ${PN}-flask-tools \ ${PN}-fsimage \ ${PN}-gdbsx \ ${PN}-hvmloader \ ${PN}-hypervisor \ ${PN}-init-xenstore-dom \ ${PN}-kdd \ ${PN}-libblktap \ ${PN}-libblktapctl \ ${PN}-libblktapctl-dev \ ${PN}-libblktap-dev \ ${PN}-libfsimage \ ${PN}-libfsimage-dev \ ${PN}-libvhd \ ${PN}-libvhd-dev \ ${PN}-libxencall \ ${PN}-libxencall-dev \ ${PN}-libxenctrl \ ${PN}-libxenctrl-dev \ ${PN}-libxendevicemodel \ ${PN}-libxendevicemodel-dev \ ${PN}-libxenevtchn \ ${PN}-libxenevtchn-dev \ ${PN}-libxenforeignmemory \ ${PN}-libxenforeignmemory-dev \ ${PN}-libxengnttab \ ${PN}-libxengnttab-dev \ ${PN}-libxenguest \ ${PN}-libxenguest-dev \ ${PN}-libxenlight \ ${PN}-libxenlight-dev \ ${PN}-libxenstat \ ${PN}-libxenstat-dev \ ${PN}-libxenstore \ ${PN}-libxenstore-dev \ ${PN}-libxentoolcore \ ${PN}-libxentoolcore-dev \ ${PN}-libxentoollog \ ${PN}-libxentoollog-dev \ ${PN}-libxenvchan \ ${PN}-libxenvchan-dev \ ${PN}-libxlutil \ ${PN}-libxlutil-dev \ ${PN}-livepatch \ ${PN}-misc \ ${PN}-pygrub \ ${PN}-python \ ${PN}-qemu \ ${PN}-remus \ ${PN}-scripts-block \ ${PN}-scripts-common \ ${PN}-scripts-network \ ${PN}-shim \ ${PN}-staticdev \ ${PN}-volatiles \ ${PN}-xcutils \ ${PN}-xencommons \ ${PN}-xend \ ${PN}-xend-examples \ ${PN}-xendomains \ ${PN}-xenmon \ ${PN}-xenpaging \ ${PN}-xenpmd \ ${PN}-xenstat \ ${PN}-xenstore \ ${PN}-xenstored \ ${PN}-xentrace \ ${PN}-xen-watchdog \ ${PN}-xl \ ${PN}-xl-examples \ ${PN}-xm \ ${PN}-xm-examples \ " FILES_${PN}-dbg += "\ ${libdir}/.debug \ ${libdir}/debug/* \ ${libdir}/xen/bin/.debug \ ${libdir}/python2.7/site-packages/.debug \ ${libdir}/python2.7/site-packages/xen/lowlevel/.debug \ ${libdir}/fs/xfs/.debug \ ${libdir}/fs/ufs/.debug \ ${libdir}/fs/ext2fs-lib/.debug \ ${libdir}/fs/fat/.debug \ ${libdir}/fs/zfs/.debug \ ${libdir}/fs/reiserfs/.debug \ ${libdir}/fs/iso9660/.debug \ ${libdir}/fs/*/.debug \ ${sbindir}/.debug \ ${libdir}exec/.debug \ ${libdir}/xen/libexec/.debug \ ${bindir}/.debug \ ${libdir}/python2.7/dist-packages/.debug \ ${libdir}/python2.7/dist-packages/xen/lowlevel/.debug \ " FILES_${PN}-dev = "\ ${includedir} \ " FILES_${PN}-doc = "\ ${sysconfdir}/xen/README \ ${sysconfdir}/xen/README.incompatibilities \ ${datadir}/doc \ ${datadir}/man \ " FILES_${PN}-staticdev += "\ ${libdir}/libblktapctl.a \ ${libdir}/libxenguest.a \ ${libdir}/libxenlight.a \ ${libdir}/libxenvchan.a \ ${libdir}/libxenctrl.a \ ${libdir}/libxlutil.a \ ${libdir}/libvhd.a \ ${libdir}/libxenstat.a \ ${libdir}/libxenstore.a \ ${libdir}/libblktap.a \ " FILES_${PN}-libblktapctl = "${libdir}/libblktapctl.so.*" FILES_${PN}-libblktapctl-dev = " \ ${libdir}/libblktapctl.so \ ${datadir}/pkgconfig/xenblktapctl.pc \ " FILES_${PN}-libxencall = "${libdir}/libxencall.so.*" FILES_${PN}-libxencall-dev = " \ ${libdir}/libxencall.so \ ${datadir}/pkgconfig/xencall.pc \ " FILES_${PN}-libxenctrl = "${libdir}/libxenctrl.so.*" FILES_${PN}-libxenctrl-dev = " \ ${libdir}/libxenctrl.so \ ${datadir}/pkgconfig/xencontrol.pc \ " FILES_${PN}-libxendevicemodel = "${libdir}/libxendevicemodel.so.*" FILES_${PN}-libxendevicemodel-dev = " \ ${libdir}/libxendevicemodel.so \ ${datadir}/pkgconfig/xendevicemodel.pc \ " FILES_${PN}-libxenevtchn = "${libdir}/libxenevtchn.so.*" FILES_${PN}-libxenevtchn-dev = " \ ${libdir}/libxenevtchn.so \ ${datadir}/pkgconfig/xenevtchn.pc \ " FILES_${PN}-libxenforeignmemory = "${libdir}/libxenforeignmemory.so.*" FILES_${PN}-libxenforeignmemory-dev = " \ ${libdir}/libxenforeignmemory.so \ ${datadir}/pkgconfig/xenforeignmemory.pc \ " FILES_${PN}-libxengnttab = "${libdir}/libxengnttab.so.*" FILES_${PN}-libxengnttab-dev = " \ ${libdir}/libxengnttab.so \ ${datadir}/pkgconfig/xengnttab.pc \ " FILES_${PN}-libxenguest = "${libdir}/libxenguest.so.*" FILES_${PN}-libxenguest-dev = " \ ${libdir}/libxenguest.so \ ${datadir}/pkgconfig/xenguest.pc \ " FILES_${PN}-libxenlight = "${libdir}/libxenlight.so.*" FILES_${PN}-libxenlight-dev = " \ ${libdir}/libxenlight.so \ ${datadir}/pkgconfig/xenlight.pc \ " FILES_${PN}-libxenstat = "${libdir}/libxenstat.so.*" FILES_${PN}-libxenstat-dev = " \ ${libdir}/libxenstat.so \ ${datadir}/pkgconfig/xenstat.pc \ " FILES_${PN}-libxenstore = "${libdir}/libxenstore.so.*" FILES_${PN}-libxenstore-dev = " \ ${libdir}/libxenstore.so \ ${datadir}/pkgconfig/xenstore.pc \ " FILES_${PN}-libxentoolcore = "${libdir}/libxentoolcore.so.*" FILES_${PN}-libxentoolcore-dev = " \ ${libdir}/libxentoolcore.so \ ${datadir}/pkgconfig/xentoolcore.pc \ " FILES_${PN}-libxentoollog = "${libdir}/libxentoollog.so.*" FILES_${PN}-libxentoollog-dev = " \ ${libdir}/libxentoollog.so \ ${datadir}/pkgconfig/xentoollog.pc \ " FILES_${PN}-libxenvchan = "${libdir}/libxenvchan.so.*" FILES_${PN}-libxenvchan-dev = " \ ${libdir}/libxenvchan.so \ ${datadir}/pkgconfig/xenvchan.pc \ " FILES_${PN}-libxlutil = "${libdir}/libxlutil.so.*" FILES_${PN}-libxlutil-dev = " \ ${libdir}/libxlutil.so \ ${datadir}/pkgconfig/xlutil.pc \ " FILES_${PN}-libvhd = "${libdir}/libvhd.so.*" FILES_${PN}-libvhd-dev = " \ ${libdir}/libvhd.so \ ${datadir}/pkgconfig/vhd.pc \ " FILES_${PN}-libblktap = "${libdir}/libblktap.so.*" FILES_${PN}-libblktap-dev = " \ ${libdir}/libblktap.so \ ${datadir}/pkgconfig/blktap.pc \ " FILES_${PN}-libfsimage = "${libdir}/libfsimage.so.*" FILES_${PN}-libfsimage-dev = " \ ${libdir}/libfsimage.so \ ${datadir}/pkgconfig/fsimage.pc \ " FILES_${PN}-fsimage = "${libdir}/fs/*/*fsimage.so" FILES_${PN}-hypervisor = "\ /boot/xen-* \ /boot/xen \ /boot/xen-*.gz \ /boot/xen.gz \ /boot/xen-syms-* \ " FILES_${PN}-init-xenstore-dom = "${libdir}/xen/bin/init-xenstore-domain" FILES_${PN}-efi = "\ ${exec_prefix}/lib64 \ ${exec_prefix}/lib64/xen* \ " FILES_${PN}-base = "\ ${sysconfdir}/xen/auto \ ${sysconfdir}/xen/cpupool \ ${localstatedir}/xen/dump \ " FILES_${PN}-blktap = "\ ${sbindir}/blktapctrl \ ${sbindir}/img2qcow \ ${sbindir}/lock-util \ ${sbindir}/qcow2raw \ ${sbindir}/qcow-create \ ${sbindir}/tap-ctl \ ${sbindir}/tapdisk \ ${sbindir}/tapdisk2 \ ${sbindir}/tapdisk-client \ ${sbindir}/tapdisk-diff \ ${sbindir}/tapdisk-stream \ ${sbindir}/td-util \ ${sbindir}/vhd-update \ ${sbindir}/vhd-util \ " FILES_${PN}-console = "\ ${libdir}/xen/bin/xenconsole \ ${sbindir}/xenconsoled \ " FILES_${PN}-cpuid = "\ ${bindir}/xen-cpuid \ " FILES_${PN}-devd = "\ ${sysconfdir}/init.d/xendriverdomain \ ${systemd_unitdir}/system/xendriverdomain.service \ " FILES_${PN}-flask = "\ /boot/${FLASK_POLICY_FILE} \ " FILES_${PN}-flask-tools = "\ ${sbindir}/flask-get-bool \ ${sbindir}/flask-getenforce \ ${sbindir}/flask-label-pci \ ${sbindir}/flask-loadpolicy \ ${sbindir}/flask-set-bool \ ${sbindir}/flask-setenforce \ " FILES_${PN}-gdbsx = "\ ${sbindir}/gdbsx \ " INSANE_SKIP_${PN}-hvmloader = "arch" FILES_${PN}-hvmloader = "\ ${libdir}/xen/boot/hvmloader \ " FILES_${PN}-kdd = "\ ${sbindir}/kdd \ " FILES_${PN}-livepatch += " \ ${sbindir}/xen-livepatch \ " FILES_${PN}-misc = "\ ${bindir}/xencons \ ${bindir}/xencov_split \ ${bindir}/xen-detect \ ${libdir}/xen/bin/xenpvnetboot \ ${libdir}/xen/bin/depriv-fd-checker \ ${sbindir}/gtracestat \ ${sbindir}/gtraceview \ ${sbindir}/xen-bugtool \ ${sbindir}/xencov \ ${sbindir}/xenperf \ ${sbindir}/xenpm \ ${sbindir}/xsview \ ${sbindir}/xen-diag \ ${sbindir}/xen-tmem-list-parse \ ${sbindir}/xen-python-path \ ${sbindir}/xen-ringwatch \ ${sbindir}/xen-hptool \ ${sbindir}/xen-hvmcrash \ ${sbindir}/xen-hvmctx \ ${sbindir}/xenlockprof \ ${sbindir}/xen-lowmemd \ ${sbindir}/xen-mfndump \ ${libdir}/xen/bin/verify-stream-v2 \ ${libdir}/xen/bin/convert-legacy-stream \ " FILES_${PN}-pygrub = "\ ${bindir}/pygrub \ ${libdir}/xen/bin/pygrub \ " FILES_${PN}-python = "\ ${libdir}/python2.7 \ " INSANE_SKIP_${PN} = "already-stripped" INSANE_SKIP_${PN}-qemu = "arch" FILES_${PN}-qemu = " \ ${datadir}/xen/qemu \ ${libdir}/xen/bin/qemu-system-i386 \ ${libdir}/xen/bin/qemu-system-x86_64 \ ${libdir}/xen/bin/qemu-img \ ${libdir}/xen/bin/qemu-nbd \ ${libdir}/xen/bin/qemu-ga \ ${libdir}/xen/bin/qemu-io \ ${libdir}/xen/bin/qemu-dm \ ${libdir}/xen/bin/virtfs-proxy-helper \ /usr/libexec/qemu-bridge-helper \ ${libdir}/xen/libexec/qemu-bridge-helper \ /usr/etc/qemu \ /usr/etc/qemu/target-x86_64.conf \ ${libdir}/xen/etc/qemu/target-x86_64.conf \ ${datadir}/qemu-xen \ ${datadir}/qemu-xen/qemu \ ${datadir}/qemu-xen/qemu/bamboo.dtb \ ${datadir}/qemu-xen/qemu/pxe-pcnet.rom \ ${datadir}/qemu-xen/qemu/vgabios-vmware.bin \ ${datadir}/qemu-xen/qemu/pxe-eepro100.rom \ ${datadir}/qemu-xen/qemu/pxe-e1000.rom \ ${datadir}/qemu-xen/qemu/openbios-ppc \ ${datadir}/qemu-xen/qemu/multiboot.bin \ ${datadir}/qemu-xen/qemu/vgabios-cirrus.bin \ ${datadir}/qemu-xen/qemu/bios.bin \ ${datadir}/qemu-xen/qemu/vgabios-stdvga.bin \ ${datadir}/qemu-xen/qemu/palcode-clipper \ ${datadir}/qemu-xen/qemu/pxe-ne2k_pci.rom \ ${datadir}/qemu-xen/qemu/spapr-rtas.bin \ ${datadir}/qemu-xen/qemu/slof.bin \ ${datadir}/qemu-xen/qemu/vgabios-qxl.bin \ ${datadir}/qemu-xen/qemu/pxe-rtl8139.rom \ ${datadir}/qemu-xen/qemu/openbios-sparc64 \ ${datadir}/qemu-xen/qemu/pxe-virtio.rom \ ${datadir}/qemu-xen/qemu/kvmvapic.bin \ ${datadir}/qemu-xen/qemu/openbios-sparc32 \ ${datadir}/qemu-xen/qemu/petalogix-s3adsp1800.dtb \ ${datadir}/qemu-xen/qemu/sgabios.bin \ ${datadir}/qemu-xen/qemu/linuxboot.bin \ ${datadir}/qemu-xen/qemu/qemu-icon.bmp \ ${datadir}/qemu-xen/qemu/ppc_rom.bin \ ${datadir}/qemu-xen/qemu/vgabios.bin \ ${datadir}/qemu-xen/qemu/s390-zipl.rom \ ${datadir}/qemu-xen/qemu/petalogix-ml605.dtb \ ${datadir}/qemu-xen/qemu/keymaps \ ${datadir}/qemu-xen/qemu/keymaps/common \ ${datadir}/qemu-xen/qemu/keymaps/th \ ${datadir}/qemu-xen/qemu/keymaps/is \ ${datadir}/qemu-xen/qemu/keymaps/en-gb \ ${datadir}/qemu-xen/qemu/keymaps/ar \ ${datadir}/qemu-xen/qemu/keymaps/fr-be \ ${datadir}/qemu-xen/qemu/keymaps/ru \ ${datadir}/qemu-xen/qemu/keymaps/hu \ ${datadir}/qemu-xen/qemu/keymaps/de-ch \ ${datadir}/qemu-xen/qemu/keymaps/no \ ${datadir}/qemu-xen/qemu/keymaps/fr \ ${datadir}/qemu-xen/qemu/keymaps/pl \ ${datadir}/qemu-xen/qemu/keymaps/fr-ca \ ${datadir}/qemu-xen/qemu/keymaps/de \ ${datadir}/qemu-xen/qemu/keymaps/fr-ch \ ${datadir}/qemu-xen/qemu/keymaps/bepo \ ${datadir}/qemu-xen/qemu/keymaps/lv \ ${datadir}/qemu-xen/qemu/keymaps/ja \ ${datadir}/qemu-xen/qemu/keymaps/da \ ${datadir}/qemu-xen/qemu/keymaps/lt \ ${datadir}/qemu-xen/qemu/keymaps/hr \ ${datadir}/qemu-xen/qemu/keymaps/es \ ${datadir}/qemu-xen/qemu/keymaps/modifiers \ ${datadir}/qemu-xen/qemu/keymaps/sl \ ${datadir}/qemu-xen/qemu/keymaps/it \ ${datadir}/qemu-xen/qemu/keymaps/nl \ ${datadir}/qemu-xen/qemu/keymaps/fo \ ${datadir}/qemu-xen/qemu/keymaps/mk \ ${datadir}/qemu-xen/qemu/keymaps/pt-br \ ${datadir}/qemu-xen/qemu/keymaps/tr \ ${datadir}/qemu-xen/qemu/keymaps/sv \ ${datadir}/qemu-xen/qemu/keymaps/fi \ ${datadir}/qemu-xen/qemu/keymaps/en-us \ ${datadir}/qemu-xen/qemu/keymaps/et \ ${datadir}/qemu-xen/qemu/keymaps/nl-be \ ${datadir}/qemu-xen/qemu/keymaps/pt \ ${bindir}/qemu-nbd-xen \ ${bindir}/qemu-img-xen \ " FILES_${PN}-remus = "\ ${bindir}/remus \ ${sysconfdir}/xen/scripts/remus-netbuf-setup \ " FILES_${PN}-scripts-network = " \ ${sysconfdir}/xen/scripts/colo-proxy-setup \ ${sysconfdir}/xen/scripts/network-bridge \ ${sysconfdir}/xen/scripts/network-nat \ ${sysconfdir}/xen/scripts/network-route \ ${sysconfdir}/xen/scripts/qemu-ifup \ ${sysconfdir}/xen/scripts/vif2 \ ${sysconfdir}/xen/scripts/vif-bridge \ ${sysconfdir}/xen/scripts/vif-common.sh \ ${sysconfdir}/xen/scripts/vif-nat \ ${sysconfdir}/xen/scripts/vif-openvswitch \ ${sysconfdir}/xen/scripts/vif-route \ ${sysconfdir}/xen/scripts/vif-setup \ " FILES_${PN}-scripts-block = " \ ${sysconfdir}/xen/scripts/blktap \ ${sysconfdir}/xen/scripts/block \ ${sysconfdir}/xen/scripts/block-common.sh \ ${sysconfdir}/xen/scripts/block-dummy \ ${sysconfdir}/xen/scripts/block-enbd \ ${sysconfdir}/xen/scripts/block-iscsi \ ${sysconfdir}/xen/scripts/block-nbd \ ${sysconfdir}/xen/scripts/block-drbd-probe \ ${sysconfdir}/xen/scripts/block-tap \ ${sysconfdir}/xen/scripts/vscsi \ " FILES_${PN}-scripts-common = " \ ${sysconfdir}/xen/scripts/external-device-migrate \ ${sysconfdir}/xen/scripts/hotplugpath.sh \ ${sysconfdir}/xen/scripts/locking.sh \ ${sysconfdir}/xen/scripts/logging.sh \ ${sysconfdir}/xen/scripts/xen-hotplug-cleanup \ ${sysconfdir}/xen/scripts/xen-hotplug-common.sh \ ${sysconfdir}/xen/scripts/xen-network-common.sh \ ${sysconfdir}/xen/scripts/xen-script-common.sh \ " INSANE_SKIP_${PN}-shim = "arch" FILES_${PN}-shim = " \ ${libdir}/xen/boot/xen-shim \ " FILES_${PN}-volatiles = "\ ${sysconfdir}/default/volatiles/99_xen \ ${sysconfdir}/tmpfiles.d/xen.conf \ " FILES_${PN}-xcutils = "\ ${libdir}/xen/bin/lsevtchn \ ${libdir}/xen/bin/readnotes \ ${libdir}/xen/bin/xc_restore \ ${libdir}/xen/bin/xc_save \ " FILES_${PN}-xend-examples = "\ ${sysconfdir}/xen/xend-config.sxp \ ${sysconfdir}/xen/xend-pci-permissive.sxp \ ${sysconfdir}/xen/xend-pci-quirks.sxp \ " FILES_${PN}-xenpaging = "\ ${libdir}/xen/bin/xenpaging \ ${localstatedir}/lib/xen/xenpaging \ " FILES_${PN}-xenpmd = "\ ${sbindir}/xenpmd \ " FILES_${PN}-xenstat = "\ ${sbindir}/xentop \ " FILES_${PN}-xenstore = "\ ${bindir}/xenstore \ ${bindir}/xenstore-chmod \ ${bindir}/xenstore-control \ ${bindir}/xenstore-exists \ ${bindir}/xenstore-list \ ${bindir}/xenstore-ls \ ${bindir}/xenstore-read \ ${bindir}/xenstore-rm \ ${bindir}/xenstore-watch \ ${bindir}/xenstore-write \ " FILES_${PN}-xenstored = "\ ${sbindir}/xenstored \ ${localstatedir}/lib/xenstored \ " FILES_${PN}-xentrace = "\ ${bindir}/xentrace \ ${bindir}/xentrace_format \ ${bindir}/xentrace_setsize \ ${libdir}/xen/bin/xenctx \ ${bindir}/xenalyze \ ${sbindir}/xentrace \ ${sbindir}/xentrace_setsize \ " FILES_${PN}-xen-watchdog = "\ ${sbindir}/xenwatchdogd \ ${sysconfdir}/init.d/xen-watchdog \ ${systemd_unitdir}/system/xen-watchdog.service \ " FILES_${PN}-xl = "\ ${sysconfdir}/bash_completion.d/xl.sh \ ${sysconfdir}/xen/xl.conf \ ${libdir}/xen/bin/libxl-save-helper \ ${sbindir}/xl \ ${libdir}/xen/bin/xen-init-dom0 \ " FILES_${PN}-xl-examples = "\ ${sysconfdir}/xen/xlexample.hvm \ ${sysconfdir}/xen/xlexample.pvlinux \ " FILES_${PN}-xm-examples = "\ ${sysconfdir}/xen/xmexample1 \ ${sysconfdir}/xen/xmexample2 \ ${sysconfdir}/xen/xmexample3 \ ${sysconfdir}/xen/xmexample.hvm \ ${sysconfdir}/xen/xmexample.hvm-stubdom \ ${sysconfdir}/xen/xmexample.nbd \ ${sysconfdir}/xen/xmexample.pv-grub \ ${sysconfdir}/xen/xmexample.vti \ " FILES_${PN}-xenmon = "\ ${sbindir}/xenbaked \ ${sbindir}/xentrace_setmask \ ${sbindir}/xenmon.py \ " FILES_${PN}-xm = "\ ${sysconfdir}/xen/xm-config.xml \ ${datadir}/xen/create.dtd \ ${sbindir}/xm \ " FILES_${PN}-xencommons += "\ ${sysconfdir}/default/xencommons \ ${sysconfdir}/init.d/xencommons \ ${sysconfdir}/xen/scripts/launch-xenstore \ ${systemd_unitdir}/modules-load.d/xen.conf \ ${systemd_unitdir}/system/proc-xen.mount \ ${systemd_unitdir}/system/xen-qemu-dom0-disk-backend.service \ ${systemd_unitdir}/system/xenconsoled.service \ ${systemd_unitdir}/system/xen-init-dom0.service \ ${systemd_unitdir}/system/xenstored.service \ ${systemd_unitdir}/system/var-lib-xenstored.mount \ " FILES_${PN}-xend += " \ ${sysconfdir}/init.d/xend \ ${sbindir}/xend \ " FILES_${PN}-xendomains += "\ ${libdir}/xen/bin/xendomains \ ${sysconfdir}/default/xendomains \ ${sysconfdir}/init.d/xendomains \ ${sysconfdir}/sysconfig/xendomains \ ${systemd_unitdir}/system/xendomains.service \ " # configure init.d scripts INITSCRIPT_PACKAGES = "${PN}-xend ${PN}-xencommons ${PN}-xen-watchdog ${PN}-xendomains ${PN}-devd" INITSCRIPT_NAME_${PN}-xencommons = "xencommons" INITSCRIPT_PARAMS_${PN}-xencommons = "defaults 80" INITSCRIPT_NAME_${PN}-xen-watchdog = "xen-watchdog" INITSCRIPT_PARAMS_${PN}-xen-watchdog = "defaults 81" INITSCRIPT_NAME_${PN}-xend = "xend" INITSCRIPT_PARAMS_${PN}-xend = "defaults 82" INITSCRIPT_NAME_${PN}-xendomains = "xendomains" INITSCRIPT_PARAMS_${PN}-xendomains = "defaults 83" INITSCRIPT_NAME_${PN}-devd = "xendriverdomain" INITSCRIPT_PARAMS_${PN}-devd = "defaults 82" # systemd packages SYSTEMD_PACKAGES = "${PN}-xen-watchdog ${PN}-xencommons ${PN}-xendomains ${PN}-devd" SYSTEMD_SERVICE_${PN}-devd = "xendriverdomain.service" SYSTEMD_SERVICE_${PN}-xen-watchdog = "xen-watchdog.service" SYSTEMD_SERVICE_${PN}-xencommons = " \ proc-xen.mount \ var-lib-xenstored.mount \ xen-qemu-dom0-disk-backend.service \ xenconsoled.service \ xen-init-dom0.service \ xenstored.service \ " SYSTEMD_SERVICE_${PN}-xendomains = "xendomains.service" #### REQUIRED ENVIRONMENT VARIABLES #### export BUILD_SYS export HOST_SYS export STAGING_INCDIR export STAGING_LIBDIR # specify xen hypervisor to build/target export XEN_TARGET_ARCH = "${@map_xen_arch(d.getVar('TARGET_ARCH'), d)}" export XEN_COMPILE_ARCH = "${@map_xen_arch(d.getVar('BUILD_ARCH'), d)}" python () { if d.getVar('XEN_TARGET_ARCH') == 'INVALID': raise bb.parse.SkipPackage('Cannot map `%s` to a xen architecture' % d.getVar('TARGET_ARCH')) } # Yocto appends ${PN} to libexecdir by default and Xen appends 'xen' as well # the result is a nested xen/xen/ so let's avoid that by shunning Yocto's # extra ${PN} appended. libexecdir = "${libdir}" # hardcoded as Linux, as the only compatible hosts are Linux. export XEN_OS = "Linux" # this is used for the header (#!${bindir}/python) of the install python scripts export PYTHONPATH="${bindir}/python" export ac_cv_path_PYTHONPATH="${bindir}/python" # xen and seabios require HOSTCC and HOSTCXX set to cross-compile export HOSTCC="${BUILD_CC}" export HOSTCXX="${BUILD_CXX}" # make xen requires CROSS_COMPILE set by hand as it does not abide by ./configure export CROSS_COMPILE="${TARGET_PREFIX}" # overide LDFLAGS to allow xen to build without: "x86_64-oe-linux-ld: unrecognized option '-Wl,-O1'" export LDFLAGS="" # Yocto injects -mfpmath=sse for some machine types into the CFLAGS which # conflicts with -mno-sse so instead we strip -mfpmath=sse instead of # patching the build to be ok with this TUNE_CCARGS := "${@oe.utils.str_filter_out('-mfpmath=sse', '${TUNE_CCARGS}', d)}" # Supply the full set of compiler flags via the tool variables # Yocto supplys _FORTIFY_SOURCE via CC/CPP/CXX but optimization -O via C*FLAGS CC_append = " ${CFLAGS}" CPP_append = " ${CPPFLAGS}" CXX_append = " ${CXXFLAGS}" EXTRA_OECONF += " \ --exec-prefix=/usr \ --prefix=/usr \ --host=${HOST_SYS} \ --with-systemd=${systemd_unitdir}/system \ --with-systemd-modules-load=${systemd_unitdir}/modules-load.d \ --disable-stubdom \ --disable-ioemu-stubdom \ --disable-pv-grub \ --disable-xenstore-stubdom \ --disable-rombios \ --disable-ocamltools \ --with-initddir=${INIT_D_DIR} \ --with-sysconfig-leaf-dir=default \ --with-system-qemu=/usr/bin/qemu-system-i386 \ --disable-qemu-traditional \ " EXTRA_OEMAKE += "STDVGA_ROM=${STAGING_DIR_HOST}/usr/share/firmware/vgabios-0.7a.bin" EXTRA_OEMAKE += "CIRRUSVGA_ROM=${STAGING_DIR_HOST}/usr/share/firmware/vgabios-0.7a.cirrus.bin" EXTRA_OEMAKE += "SEABIOS_ROM=${STAGING_DIR_HOST}/usr/share/firmware/bios.bin" EXTRA_OEMAKE += "ETHERBOOT_ROMS=${STAGING_DIR_HOST}/usr/share/firmware/rtl8139.rom" # prevent the Xen build scripts from fetching things during the build # all dependencies should be reflected in the Yocto recipe EXTRA_OEMAKE += "WGET=/bin/false" EXTRA_OEMAKE += "GIT=/bin/false" # Improve build reproducibility: provide values for build variables. def get_build_time_vars(d): source_date_epoch = d.getVar('SOURCE_DATE_EPOCH') if source_date_epoch is not None: import datetime utc_datetime = datetime.datetime.utcfromtimestamp(float(source_date_epoch)) return " XEN_BUILD_DATE=" + utc_datetime.strftime("%Y-%m-%d") + \ " XEN_BUILD_TIME=" + utc_datetime.strftime("%H:%M:%S") return "" EXTRA_OEMAKE += "${@['', 'XEN_WHOAMI=${PF} XEN_DOMAIN=${DISTRO} XEN_BUILD_HOST=${PN}-buildhost'] \ [d.getVar('BUILD_REPRODUCIBLE_BINARIES') == '1']}${@get_build_time_vars(d)}" # Improve build reproducibility: compiler flags to remove filesystem differences. # Suppress __FILE__ via an alternative builtin. CC += "${@['', '-gno-record-gcc-switches -Wno-builtin-macro-redefined -D__FILE__=__VERSION__ ' + \ '-fdebug-prefix-map=${WORKDIR}=${PN}'] \ [d.getVar('BUILD_REPRODUCIBLE_BINARIES') == '1']}" # check for XSM in package config to allow XSM_ENABLE to be set python () { pkgconfig = d.getVar('PACKAGECONFIG') if ('xsm') in pkgconfig.split(): d.setVar('XSM_ENABLED', '1') else: d.setVar('XSM_ENABLED', '0') } do_post_patch() { # fixup AS/CC/CCP/etc variable within StdGNU.mk for i in LD CC CPP CXX; do sed -i "s/^\($i\s\s*\).*=/\1?=/" ${S}/config/StdGNU.mk done # fixup environment passing in some makefiles sed -i 's#\(\w*\)=\(\$.\w*.\)#\1="\2"#' ${S}/tools/firmware/Makefile # libsystemd-daemon -> libsystemd for newer systemd versions sed -i 's#libsystemd-daemon#libsystemd#' ${S}/tools/configure # Improve build reproducibility: disable insertion of the build timestamp # into the x86 EFI hypervisor binary. # binutils should allow a user-supplied timestamp or use SOURCE_DATE_EPOCH # for PE but currently does not. if [ "${BUILD_REPRODUCIBLE_BINARIES}" = "1" ] ; then sed '/^EFI_LDFLAGS = /{a EFI_LDFLAGS += --no-insert-timestamp }' -i "${S}/xen/arch/x86/Makefile" fi } do_post_patch_append_arm() { # The hypervisor binary must not be built with the hard floating point ABI. echo "CC := \$(filter-out ${TUNE_CCARGS},\$(CC))" >> ${B}/xen/arch/arm/Rules.mk } addtask post_patch after do_patch before do_configure do_stubs() { # no stubs-32.h in our 64-bit sysroot - hack it into tools/include/gnu if ! test -f ${STAGING_DIR_TARGET}/usr/include/gnu/stubs-32.h ; then if test -f ${STAGING_DIR_TARGET}/usr/include/gnu/stubs-64.h ; then test -d ${S}/tools/include/gnu || mkdir ${S}/tools/include/gnu cat ${STAGING_DIR_TARGET}/usr/include/gnu/stubs-64.h | grep -v stub_bdflush | grep -v stub_getmsg | grep -v stub_putmsg > ${S}/tools/include/gnu/stubs-32.h echo \#define __stub___kernel_cosl >> ${S}/tools/include/gnu/stubs-32.h echo \#define __stub___kernel_sinl >> ${S}/tools/include/gnu/stubs-32.h echo \#define __stub___kernel_tanl >> ${S}/tools/include/gnu/stubs-32.h fi fi } addtask stubs after do_configure before do_compile # Allow all hypervisor settings in a defconfig EXTRA_OEMAKE += "XEN_CONFIG_EXPERT=y" # Build release versions always. Technically since we track release # tarballs this always happens but occasionally people pull in patches # from staging that reverts this EXTRA_OEMAKE += "debug=n" do_configure() { #./configure --enable-xsmpolicy does not set XSM_ENABLE must be done manually if [ "${XSM_ENABLED}" = "1" ]; then echo "XSM_ENABLE := y" > ${S}/.config fi if [ -f "${WORKDIR}/defconfig" ]; then cp "${WORKDIR}/defconfig" "${B}/xen/.config" || \ bbfatal "Unable to copy defconfig to .config" fi # do configure oe_runconf if [ ! -e ${STAGING_INCDIR}/bits/long-double-32.h ]; then cp ${STAGING_INCDIR}/bits/long-double-64.h ${STAGING_INCDIR}/bits/long-double-32.h fi } do_compile() { # workaround for build bug when CFLAGS is exported # https://www.mail-archive.com/xen-devel@lists.xen.org/msg67822.html unset CFLAGS # Workaround for parallel build bug: build xen first. # https://lists.xenproject.org/archives/html/xen-devel/2018-07/msg02551.html oe_runmake xen oe_runmake } do_install() { # CFLAGS is used to set PY_CFLAGS which affects the pygrub install # so also need to unset CFLAGS here: unset CFLAGS oe_runmake DESTDIR="${D}" install # remove installed volatiles rm -rf ${D}${localstatedir}/run \ ${D}${localstatedir}/lock \ ${D}${localstatedir}/log \ ${D}${localstatedir}/volatile \ ${D}${localstatedir}/lib/xen VOLATILE_DIRS=" \ ${localstatedir}/run/xenstored \ ${localstatedir}/run/xend \ ${localstatedir}/run/xend/boot \ ${localstatedir}/run/xen \ ${localstatedir}/log/xen \ ${localstatedir}/lock/xen \ ${localstatedir}/lock/subsys \ ${localstatedir}/lib/xen \ " # install volatiles using populate_volatiles mechanism install -d ${D}${sysconfdir}/default/volatiles for i in $VOLATILE_DIRS; do echo "d root root 0755 $i none" >> ${D}${sysconfdir}/default/volatiles/99_xen done # workaround for xendomains script which searchs sysconfig if directory exists install -d ${D}${sysconfdir}/sysconfig ln -sf ${sysconfdir}/default/xendomains ${D}${sysconfdir}/sysconfig/xendomains # systemd if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then # install volatiles using systemd tmpfiles.d install -d ${D}${sysconfdir}/tmpfiles.d for i in $VOLATILE_DIRS; do echo "d $i 0755 root root - -" >> ${D}${sysconfdir}/tmpfiles.d/xen.conf done fi # fixup default path to qemu-system-i386 sed -i 's#\(test -z "$QEMU_XEN" && QEMU_XEN=\).*$#\1"/usr/bin/qemu-system-i386"#' ${D}/etc/init.d/xencommons if [ -e ${D}${systemd_unitdir}/system/xen-qemu-dom0-disk-backend.service ]; then sed -i 's#ExecStart=.*qemu-system-i386\(.*\)$#ExecStart=/usr/bin/qemu-system-i386\1#' \ ${D}${systemd_unitdir}/system/xen-qemu-dom0-disk-backend.service fi } pkg_postinst_${PN}-volatiles() { if [ -z "$D" ]; then if command -v systemd-tmpfiles >/dev/null; then systemd-tmpfiles --create ${sysconfdir}/tmpfiles.d/xen.conf elif [ -e ${sysconfdir}/init.d/populate-volatile.sh ]; then ${sysconfdir}/init.d/populate-volatile.sh update fi fi } do_deploy() { install -d ${DEPLOYDIR} if [ -f ${D}/boot/xen ]; then install -m 0644 ${D}/boot/xen ${DEPLOYDIR}/xen-${MACHINE} fi if [ -f ${D}/boot/xen.gz ]; then install -m 0644 ${D}/boot/xen.gz ${DEPLOYDIR}/xen-${MACHINE}.gz fi if [ -f ${D}/usr/lib64/efi/xen.efi ]; then install -m 0644 ${D}/usr/lib64/efi/xen.efi ${DEPLOYDIR}/xen-${MACHINE}.efi fi # Install the flask policy in the deploy directory if it exists if [ -f ${D}/boot/${FLASK_POLICY_FILE} ]; then install -m 0644 ${D}/boot/${FLASK_POLICY_FILE} ${DEPLOYDIR} ln -sf ${FLASK_POLICY_FILE} ${DEPLOYDIR}/xenpolicy-${MACHINE} fi } addtask deploy after do_populate_sysroot # Enable use of menuconfig directly from bitbake and also within the devshell OE_TERMINAL_EXPORTS += "HOST_EXTRACFLAGS HOSTLDFLAGS TERMINFO" HOST_EXTRACFLAGS = "${BUILD_CFLAGS} ${BUILD_LDFLAGS}" HOSTLDFLAGS = "${BUILD_LDFLAGS}" TERMINFO = "${STAGING_DATADIR_NATIVE}/terminfo" do_devshell[depends] += "ncurses-native:do_populate_sysroot" KCONFIG_CONFIG_COMMAND ??= "menuconfig" python do_menuconfig() { import shutil try: mtime = os.path.getmtime("xen/.config") shutil.copy("xen/.config", "xen/.config.orig") except OSError: mtime = 0 oe_terminal("${SHELL} -c \"cd xen; XEN_CONFIG_EXPERT=y make %s; if [ \$? -ne 0 ]; then echo 'Command failed.'; printf 'Press any key to continue... '; read r; fi\"" % d.getVar('KCONFIG_CONFIG_COMMAND'), d.getVar('PN') + ' Configuration', d) try: newmtime = os.path.getmtime("xen/.config") except OSError: newmtime = 0 if newmtime > mtime: bb.note("Configuration changed, recompile will be forced") bb.build.write_taint('do_compile', d) } do_menuconfig[depends] += "ncurses-native:do_populate_sysroot" do_menuconfig[nostamp] = "1" do_menuconfig[dirs] = "${B}" addtask menuconfig after do_configure