meta-virtualization/recipes-extended/xen/xen.inc
Chris Patterson 279dbced29 iasl: remove iasl in favor of acpica in openembedded-core
It is out of date, causes compilation errors, and is replacable
with acpica.  This commit removes the iasl recipe as well
as updating references within seabios and xen, even though
acpcica PROVIDES iasl.

Signed-off-by: Chris Patterson <pattersonc@ainfosec.com>
Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com>
2018-10-11 14:17:39 -04:00

1105 lines
32 KiB
PHP

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