diff options
author | Sandeep Gundlupet Raju <sandeep.gundlupet-raju@amd.com> | 2024-01-03 19:51:28 -0700 |
---|---|---|
committer | Mark Hatle <mark.hatle@amd.com> | 2024-01-06 11:36:39 -0600 |
commit | 0ddfa30d488a725341da80ea7bafb0da23e28659 (patch) | |
tree | 970440300cb8eea525dfb1240334ed4835dafd85 | |
parent | bfe41ae084d13c13c595830c0ec5d6dde2252b57 (diff) | |
download | meta-xilinx-0ddfa30d488a725341da80ea7bafb0da23e28659.tar.gz |
xen: Move xen recipes and files from petalinux layer
Move xen recipes and files from meta-petalinux to xilinx-virtualization
layer exlcuding example configuration and passthrough device tree.
Signed-off-by: Sandeep Gundlupet Raju <sandeep.gundlupet-raju@amd.com>
Signed-off-by: Mark Hatle <mark.hatle@amd.com>
13 files changed, 1580 insertions, 0 deletions
diff --git a/meta-xilinx-virtualization/recipes-extended/xen/files/0001-menuconfig-mconf-cfg-Allow-specification-of-ncurses-location.patch b/meta-xilinx-virtualization/recipes-extended/xen/files/0001-menuconfig-mconf-cfg-Allow-specification-of-ncurses-location.patch new file mode 100644 index 00000000..135860ab --- /dev/null +++ b/meta-xilinx-virtualization/recipes-extended/xen/files/0001-menuconfig-mconf-cfg-Allow-specification-of-ncurses-location.patch | |||
@@ -0,0 +1,57 @@ | |||
1 | From b300c18ab899b3c899e5405c96c20a32e51d77c8 Mon Sep 17 00:00:00 2001 | ||
2 | From: Bruce Ashfield <bruce.ashfield@windriver.com> | ||
3 | Date: Mon, 2 Jul 2018 23:10:28 -0400 | ||
4 | Subject: [PATCH] xen: Fix menuconfig and add support for config fragments and | ||
5 | |||
6 | Upstream-Status: Xen: Inappropriate [oe specific, cross compile issue] | ||
7 | Upstream-Status: Kernel: Pending | ||
8 | Signed-off-by: Diego Sueiro <diego.sueiro@arm.com> | ||
9 | commit e6972e689a980ab28637e94e48c77eeace6abde5 | ||
10 | |||
11 | xen/kconfig,menuconfig,mconf-cfg: Allow specification of ncurses location | ||
12 | |||
13 | In some cross build environments such as the Yocto Project build | ||
14 | environment it provides an ncurses library that is compiled | ||
15 | differently than the host's version. This causes display corruption | ||
16 | problems when the host's curses includes are used instead of the | ||
17 | includes from the provided compiler are overridden. There is a second | ||
18 | case where there is no curses libraries at all on the host system and | ||
19 | menuconfig will just fail entirely. | ||
20 | |||
21 | The solution is simply to allow an override variable in | ||
22 | check-lxdialog.sh for environments such as the Yocto Project. Adding | ||
23 | a CROSS_CURSES_LIB and CROSS_CURSES_INC solves the issue and allowing | ||
24 | compiling and linking against the right headers and libraries. | ||
25 | |||
26 | Change-Id: Ibe8dfafc90655e3be2671dbbb0cb7f5631fc4d44 | ||
27 | Signed-off-by: Jason Wessel <jason.wessel@windriver.com> | ||
28 | cc: Michal Marek <mmarek@suse.cz> | ||
29 | cc: linux-kbuild@vger.kernel.org | ||
30 | Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com> | ||
31 | |||
32 | --- | ||
33 | xen/tools/kconfig/mconf-cfg.sh | 8 ++++++++ | ||
34 | 1 file changed, 8 insertions(+) | ||
35 | mode change 100755 => 100644 xen/tools/kconfig/mconf-cfg.sh | ||
36 | |||
37 | diff --git a/xen/tools/kconfig/mconf-cfg.sh b/xen/tools/kconfig/mconf-cfg.sh | ||
38 | old mode 100755 | ||
39 | new mode 100644 | ||
40 | index c812872d7f..56eb4fc79f | ||
41 | --- a/xen/tools/kconfig/mconf-cfg.sh | ||
42 | +++ b/xen/tools/kconfig/mconf-cfg.sh | ||
43 | @@ -4,6 +4,14 @@ | ||
44 | PKG="ncursesw" | ||
45 | PKG2="ncurses" | ||
46 | |||
47 | +if [ "$CROSS_CURSES_LIB" != "" ]; then | ||
48 | + echo libs=\'$CROSS_CURSES_LIB\' | ||
49 | + if [ x"$CROSS_CURSES_INC" != x ]; then | ||
50 | + echo cflags=\'$CROSS_CURSES_INC\' | ||
51 | + fi | ||
52 | + exit 0 | ||
53 | +fi | ||
54 | + | ||
55 | if [ -n "$(command -v pkg-config)" ]; then | ||
56 | if pkg-config --exists $PKG; then | ||
57 | echo cflags=\"$(pkg-config --cflags $PKG)\" | ||
diff --git a/meta-xilinx-virtualization/recipes-extended/xen/files/0001-python-pygrub-pass-DISTUTILS-xen-4.15.patch b/meta-xilinx-virtualization/recipes-extended/xen/files/0001-python-pygrub-pass-DISTUTILS-xen-4.15.patch new file mode 100644 index 00000000..35cd9a81 --- /dev/null +++ b/meta-xilinx-virtualization/recipes-extended/xen/files/0001-python-pygrub-pass-DISTUTILS-xen-4.15.patch | |||
@@ -0,0 +1,73 @@ | |||
1 | From 6db88791d923167f160afbcadeffad84a4cbdbc5 Mon Sep 17 00:00:00 2001 | ||
2 | Message-Id: <6db88791d923167f160afbcadeffad84a4cbdbc5.1612262706.git.bertrand.marquis@arm.com> | ||
3 | From: Maciej Pijanowski <maciej.pijanowski@3mdeb.com> | ||
4 | Date: Fri, 19 Oct 2018 11:01:37 +0200 | ||
5 | Subject: [PATCH] python,pygrub: pass DISTUTILS env vars as setup.py args | ||
6 | |||
7 | Upstream-Status: Xen: Inappropriate [oe specific, python install issues] | ||
8 | |||
9 | Allow to respect the target install dir (PYTHON_SITEPACKAGES_DIR) | ||
10 | as well as other parameters set by the OpenEmbedded build system. | ||
11 | This is especially useful when the target libdir is not the default one | ||
12 | (/usr/lib), but for example /usr/lib64. | ||
13 | |||
14 | Signed-off-by: Maciej Pijanowski <maciej.pijanowski@3mdeb.com> | ||
15 | |||
16 | Forward-ported to Xen 4.12.0 | ||
17 | Signed-off-by: Christopher Clark <christopher.clark6@baesystems.com> | ||
18 | |||
19 | Modified to support pygrub installation with python 3 | ||
20 | Signed-off-by: Christopher Clark <christopher.clark6@baesystems.com> | ||
21 | |||
22 | Forward-ported to Xen 4.14.0 | ||
23 | Signed-off-by: Christopher Clark <christopher.clark6@baesystems.com> | ||
24 | |||
25 | Forward-ported to Xen 4.15.0 | ||
26 | Signed-off-by: Bertrand Marquis <bertrand.marquis@arm.com> | ||
27 | |||
28 | --- | ||
29 | tools/pygrub/Makefile | 7 +++++-- | ||
30 | tools/python/Makefile | 2 +- | ||
31 | 2 files changed, 6 insertions(+), 3 deletions(-) | ||
32 | |||
33 | diff --git a/tools/pygrub/Makefile b/tools/pygrub/Makefile | ||
34 | index 37b2146214..ffb9270065 100644 | ||
35 | --- a/tools/pygrub/Makefile | ||
36 | +++ b/tools/pygrub/Makefile | ||
37 | @@ -10,7 +10,7 @@ INSTALL_LOG = build/installed_files.txt | ||
38 | all: build | ||
39 | .PHONY: build | ||
40 | build: | ||
41 | - CC="$(CC)" CFLAGS="$(PY_CFLAGS)" LDSHARED="$(CC)" LDFLAGS="$(PY_LDFLAGS)" $(PYTHON) setup.py build | ||
42 | + CC="$(CC)" CFLAGS="$(PY_CFLAGS)" LDSHARED="$(CC)" LDFLAGS="$(PY_LDFLAGS)" $(PYTHON) setup.py build $(DISTUTILS_BUILD_ARGS) | ||
43 | |||
44 | .PHONY: install | ||
45 | install: all | ||
46 | @@ -18,7 +18,10 @@ install: all | ||
47 | CC="$(CC)" CFLAGS="$(PY_CFLAGS)" LDSHARED="$(CC)" \ | ||
48 | LDFLAGS="$(PY_LDFLAGS)" $(PYTHON) setup.py install \ | ||
49 | --record $(INSTALL_LOG) $(PYTHON_PREFIX_ARG) \ | ||
50 | - --root="$(DESTDIR)" --install-scripts=$(LIBEXEC_BIN) --force | ||
51 | + --root="$(DESTDIR)" --install-scripts=$(LIBEXEC_BIN) --force \ | ||
52 | + $(DISTUTILS_INSTALL_ARGS) | ||
53 | + rm -f $(DESTDIR)/$(LIBEXEC_BIN)/pygrub | ||
54 | + $(INSTALL_PYTHON_PROG) src/pygrub $(DESTDIR)/$(LIBEXEC_BIN)/pygrub | ||
55 | set -e; if [ $(bindir) != $(LIBEXEC_BIN) -a \ | ||
56 | "`readlink -f $(DESTDIR)/$(bindir)`" != \ | ||
57 | "`readlink -f $(LIBEXEC_BIN)`" ]; then \ | ||
58 | diff --git a/tools/python/Makefile b/tools/python/Makefile | ||
59 | index cc76423647..5cb11ae453 100644 | ||
60 | --- a/tools/python/Makefile | ||
61 | +++ b/tools/python/Makefile | ||
62 | @@ -12,7 +12,7 @@ setup.py = CC="$(CC)" CFLAGS="$(PY_CFLAGS)" LDSHARED="$(CC)" LDFLAGS="$(PY_LDFLA | ||
63 | SHLIB_libxenctrl="$(SHLIB_libxenctrl)" \ | ||
64 | SHLIB_libxenguest="$(SHLIB_libxenguest)" \ | ||
65 | SHLIB_libxenstore="$(SHLIB_libxenstore)" \ | ||
66 | - $(PYTHON) setup.py | ||
67 | + $(PYTHON) setup.py $(DISTUTILS_BUILD_ARGS) | ||
68 | |||
69 | .PHONY: build | ||
70 | build: | ||
71 | -- | ||
72 | 2.17.1 | ||
73 | |||
diff --git a/meta-xilinx-virtualization/recipes-extended/xen/files/xen-flask-race-fix.patch b/meta-xilinx-virtualization/recipes-extended/xen/files/xen-flask-race-fix.patch new file mode 100644 index 00000000..fa2a82ff --- /dev/null +++ b/meta-xilinx-virtualization/recipes-extended/xen/files/xen-flask-race-fix.patch | |||
@@ -0,0 +1,54 @@ | |||
1 | From mboxrd@z Thu Jan 1 00:00:00 1970 | ||
2 | From: Anthony PERARD <anthony.perard@citrix.com> | ||
3 | Subject: [XEN PATCH] build: fix building flask headers before descending in flask/ss/ | ||
4 | Date: Fri, 20 Jan 2023 13:36:26 +0000 | ||
5 | Message-ID: <20230120133626.55680-1-anthony.perard@citrix.com> | ||
6 | X-Mailer: git-send-email 2.30.2 | ||
7 | MIME-Version: 1.0 | ||
8 | Content-Transfer-Encoding: 8bit | ||
9 | Content-Type: text/plain | ||
10 | |||
11 | Unfortunatly, adding prerequisite to "$(obj)/ss/built_in.o" doesn't | ||
12 | work because we have "$(obj)/%/built_in.o: $(obj)/% ;" in Rules.mk. | ||
13 | So, make is allow to try to build objects in "xsm/flask/ss/" before | ||
14 | generating the headers. | ||
15 | |||
16 | Adding a prerequisite on "$(obj)/ss" instead will fix the issue has | ||
17 | that the target used to run make in this subdirectory. | ||
18 | |||
19 | Unfortunatly, that target is also used when running `make clean`, so | ||
20 | we need to ignore it in this case. $(MAKECMDGOALS) can't be used in | ||
21 | this case as it is empty, but we can guess which operation is done by | ||
22 | looking at the list of loaded makefiles. | ||
23 | |||
24 | Upstream-Status: backport [https://lore.kernel.org/xen-devel/20230120133626.55680-1-anthony.perard@citrix.com/T/#u] | ||
25 | |||
26 | Fixes: 7a3bcd2babcc ("build: build everything from the root dir, use obj=$subdir") | ||
27 | Reported-by: "Daniel P. Smith" <dpsmith@apertussolutions.com> | ||
28 | Signed-off-by: Anthony PERARD <anthony.perard@citrix.com> | ||
29 | --- | ||
30 | xen/xsm/flask/Makefile | 6 +++++- | ||
31 | 1 file changed, 5 insertions(+), 1 deletion(-) | ||
32 | |||
33 | diff --git a/xen/xsm/flask/Makefile b/xen/xsm/flask/Makefile | ||
34 | index d25312f4fa..2d24346ee3 100644 | ||
35 | --- a/xen/xsm/flask/Makefile | ||
36 | +++ b/xen/xsm/flask/Makefile | ||
37 | @@ -16,7 +16,11 @@ FLASK_H_FILES := flask.h class_to_string.h initial_sid_to_string.h | ||
38 | AV_H_FILES := av_perm_to_string.h av_permissions.h | ||
39 | ALL_H_FILES := $(addprefix include/,$(FLASK_H_FILES) $(AV_H_FILES)) | ||
40 | |||
41 | -$(addprefix $(obj)/,$(obj-y)) $(obj)/ss/built_in.o: $(addprefix $(obj)/,$(ALL_H_FILES)) | ||
42 | +# Adding prerequisite to descending into ss/ folder only when not running `make | ||
43 | +# clean`. | ||
44 | +ifeq ($(filter %/Makefile.clean,$(MAKEFILE_LIST)),) | ||
45 | +$(addprefix $(obj)/,$(obj-y)) $(obj)/ss: $(addprefix $(obj)/,$(ALL_H_FILES)) | ||
46 | +endif | ||
47 | extra-y += $(ALL_H_FILES) | ||
48 | |||
49 | mkflask := $(srcdir)/policy/mkflask.sh | ||
50 | -- | ||
51 | Anthony PERARD | ||
52 | |||
53 | |||
54 | |||
diff --git a/meta-xilinx-virtualization/recipes-extended/xen/xen-arch.inc b/meta-xilinx-virtualization/recipes-extended/xen/xen-arch.inc new file mode 100644 index 00000000..fb0093e3 --- /dev/null +++ b/meta-xilinx-virtualization/recipes-extended/xen/xen-arch.inc | |||
@@ -0,0 +1,18 @@ | |||
1 | |||
2 | valid_xen_archs = " \ | ||
3 | x86_64 x86_32 \ | ||
4 | arm32 arm64 \ | ||
5 | " | ||
6 | |||
7 | def map_xen_arch(a, d): | ||
8 | import re | ||
9 | valid_archs = d.getVar('valid_xen_archs').split() | ||
10 | |||
11 | if re.match("i.86", a): return "x86_32" | ||
12 | elif re.match("x86.64", a): return "x86_64" | ||
13 | elif re.match("arm.*", a): return "arm32" | ||
14 | elif re.match("aarch64.*", a): return "arm64" | ||
15 | elif a in valid_archs: return a | ||
16 | else: | ||
17 | return "INVALID" | ||
18 | |||
diff --git a/meta-xilinx-virtualization/recipes-extended/xen/xen-blktap.inc b/meta-xilinx-virtualization/recipes-extended/xen/xen-blktap.inc new file mode 100644 index 00000000..ad9d5fdb --- /dev/null +++ b/meta-xilinx-virtualization/recipes-extended/xen/xen-blktap.inc | |||
@@ -0,0 +1,76 @@ | |||
1 | # The Xen block tap components are packaged separately here to support | ||
2 | # the option to build them in a separate recipe from xen-tools. | ||
3 | |||
4 | BLKTAP_PACKAGES ?= " \ | ||
5 | ${PN}-blktap \ | ||
6 | ${PN}-libblktap \ | ||
7 | ${PN}-libblktapctl \ | ||
8 | ${PN}-libblktapctl-dev \ | ||
9 | ${PN}-libblktap-dev \ | ||
10 | ${PN}-libvhd \ | ||
11 | ${PN}-libvhd-dev \ | ||
12 | ${PN}-blktap-staticdev \ | ||
13 | " | ||
14 | |||
15 | BLKTAP_PROVIDES ?= " \ | ||
16 | virtual/blktap \ | ||
17 | virtual/libblktap \ | ||
18 | virtual/libblktapctl \ | ||
19 | virtual/libvhd \ | ||
20 | " | ||
21 | |||
22 | BLKTAP_RRECOMMENDS ?= " \ | ||
23 | virtual/blktap \ | ||
24 | virtual/libblktap \ | ||
25 | virtual/libblktapctl \ | ||
26 | virtual/libvhd \ | ||
27 | " | ||
28 | |||
29 | RPROVIDES:${PN}-blktap = "virtual/blktap" | ||
30 | RPROVIDES:${PN}-libblktap = "virtual/libblktap" | ||
31 | RPROVIDES:${PN}-libblktapctl = "virtual/libblktapctl" | ||
32 | RPROVIDES:${PN}-libvhd = "virtual/libvhd" | ||
33 | |||
34 | FILES:${PN}-blktap-staticdev += "\ | ||
35 | ${libdir}/libblktapctl.a \ | ||
36 | ${libdir}/libvhd.a \ | ||
37 | ${libdir}/libblktap.a \ | ||
38 | " | ||
39 | |||
40 | FILES:${PN}-libblktapctl = "${libdir}/libblktapctl.so.*" | ||
41 | FILES:${PN}-libblktapctl-dev = " \ | ||
42 | ${libdir}/libblktapctl.so \ | ||
43 | ${libdir}/pkgconfig/xenblktapctl.pc \ | ||
44 | ${datadir}/pkgconfig/xenblktapctl.pc \ | ||
45 | " | ||
46 | |||
47 | FILES:${PN}-libvhd = "${libdir}/libvhd.so.*" | ||
48 | FILES:${PN}-libvhd-dev = " \ | ||
49 | ${libdir}/libvhd.so \ | ||
50 | ${libdir}/pkgconfig/vhd.pc \ | ||
51 | ${datadir}/pkgconfig/vhd.pc \ | ||
52 | " | ||
53 | |||
54 | FILES:${PN}-libblktap = "${libdir}/libblktap.so.*" | ||
55 | FILES:${PN}-libblktap-dev = " \ | ||
56 | ${libdir}/libblktap.so \ | ||
57 | ${libdir}/pkgconfig/blktap.pc \ | ||
58 | ${datadir}/pkgconfig/blktap.pc \ | ||
59 | " | ||
60 | |||
61 | FILES:${PN}-blktap = "\ | ||
62 | ${sbindir}/blktapctrl \ | ||
63 | ${sbindir}/img2qcow \ | ||
64 | ${sbindir}/lock-util \ | ||
65 | ${sbindir}/qcow2raw \ | ||
66 | ${sbindir}/qcow-create \ | ||
67 | ${sbindir}/tap-ctl \ | ||
68 | ${sbindir}/tapdisk \ | ||
69 | ${sbindir}/tapdisk2 \ | ||
70 | ${sbindir}/tapdisk-client \ | ||
71 | ${sbindir}/tapdisk-diff \ | ||
72 | ${sbindir}/tapdisk-stream \ | ||
73 | ${sbindir}/td-util \ | ||
74 | ${sbindir}/vhd-update \ | ||
75 | ${sbindir}/vhd-util \ | ||
76 | " | ||
diff --git a/meta-xilinx-virtualization/recipes-extended/xen/xen-hypervisor.inc b/meta-xilinx-virtualization/recipes-extended/xen/xen-hypervisor.inc new file mode 100644 index 00000000..6f3d24d0 --- /dev/null +++ b/meta-xilinx-virtualization/recipes-extended/xen/xen-hypervisor.inc | |||
@@ -0,0 +1,117 @@ | |||
1 | SUMMARY = "Xen hypervisor" | ||
2 | DESCRIPTION = "The Xen hypervisor" | ||
3 | |||
4 | # This recipe is for just the Xen hypervisor. | ||
5 | # Separate recipes are used to build Xen and its components: | ||
6 | # this allows for varying the target architecture or toolchain used | ||
7 | # to build the different components. eg. 32-bit tools and a 64-bit hypervisor. | ||
8 | |||
9 | # The Xen hypervisor has a narrower compatible platform range than the Xen tools | ||
10 | COMPATIBLE_HOST = '(x86_64.*).*-linux|aarch64.*-linux|arm-.*-linux-gnueabi' | ||
11 | |||
12 | inherit deploy python3native cml1 | ||
13 | |||
14 | PACKAGES = " \ | ||
15 | ${PN} \ | ||
16 | ${PN}-dbg \ | ||
17 | ${PN}-efi \ | ||
18 | " | ||
19 | |||
20 | FILES:${PN} = " \ | ||
21 | /boot/xen-* \ | ||
22 | /boot/xen \ | ||
23 | /boot/xen-*.gz \ | ||
24 | /boot/xen.gz \ | ||
25 | /boot/xen-syms-* \ | ||
26 | " | ||
27 | |||
28 | FILES:${PN}-dbg += "${libdir}/debug/*" | ||
29 | |||
30 | FILES:${PN}-efi = " \ | ||
31 | /boot/xen.efi \ | ||
32 | ${exec_prefix}/lib64/efi/xen* \ | ||
33 | " | ||
34 | |||
35 | do_configure() { | ||
36 | do_configure_common | ||
37 | |||
38 | # Handle the config fragments | ||
39 | cfgs="${@' '.join(find_cfgs(d))}" | ||
40 | if [ -n "${cfgs}" ]; then | ||
41 | # If .config is not present generate one in order | ||
42 | # to use the merge_config.sh | ||
43 | if [ ! -f "${S}/xen/.config" ] ; then | ||
44 | oe_runmake -C ${S}/xen defconfig | ||
45 | fi | ||
46 | ${S}/xen/tools/kconfig/merge_config.sh -m -O \ | ||
47 | ${S}/xen ${S}/xen/.config "${cfgs}" | ||
48 | fi | ||
49 | } | ||
50 | |||
51 | # The hypervisor binary for arm must not be built with the hard floating point | ||
52 | # ABI. Override CC and CPP when invoking make so that they do not contain | ||
53 | # TUNE_CCARGS. | ||
54 | EXTRA_OEMAKE:arm += "CC='${CCACHE}${HOST_PREFIX}gcc ${TOOLCHAIN_OPTIONS} \ | ||
55 | ${CC_REPRODUCIBLE_OPTIONS}' \ | ||
56 | CPP='${CCACHE}${HOST_PREFIX}gcc -E ${TOOLCHAIN_OPTIONS} \ | ||
57 | ${CC_REPRODUCIBLE_OPTIONS}'" | ||
58 | |||
59 | do_compile() { | ||
60 | oe_runmake xen PYTHON="${PYTHON}" \ | ||
61 | EXTRA_CFLAGS_XEN_CORE="${EXTRA_CFLAGS_XEN_CORE}" | ||
62 | } | ||
63 | |||
64 | do_install() { | ||
65 | oe_runmake DESTDIR="${D}" install-xen | ||
66 | } | ||
67 | # The do_install also ships files in /boot and /usr/lib64 | ||
68 | SYSROOT_DIRS += "/boot ${exec_prefix}/lib64" | ||
69 | |||
70 | do_deploy() { | ||
71 | install -d ${DEPLOYDIR} | ||
72 | |||
73 | if [ -f ${B}/xen/xen ]; then | ||
74 | install -m 0644 ${B}/xen/xen ${DEPLOYDIR}/xen-${MACHINE} | ||
75 | fi | ||
76 | |||
77 | if [ -f ${B}/xen/xen.gz ]; then | ||
78 | install -m 0644 ${B}/xen/xen.gz ${DEPLOYDIR}/xen-${MACHINE}.gz | ||
79 | fi | ||
80 | |||
81 | if [ -f ${B}/xen/xen.efi ]; then | ||
82 | install -m 0644 ${B}/xen/xen.efi ${DEPLOYDIR}/xen-${MACHINE}.efi | ||
83 | fi | ||
84 | } | ||
85 | # Scheduling the do_deploy task: | ||
86 | # - deploy copies files from ${B} that are written during do_compile so must | ||
87 | # at least run afer that task has completed | ||
88 | # - the hypervisor binaries may be included in the image filesystem, so we | ||
89 | # must ensure that the binaries deployed match what is staged in the sysroot: | ||
90 | # so do_deploy must run after do_populate_sysroot and after do_compile is | ||
91 | # also needed for when having rm_work and bitbake needs to re-run do_deploy, | ||
92 | # we ensure that the ${B} is re-generated, otherwise the deploy-xen will be | ||
93 | # empty | ||
94 | # - add the task before do_build to ensure that deployment has completed when | ||
95 | # the recipe build done stamp is written | ||
96 | addtask deploy after do_compile do_populate_sysroot before do_build | ||
97 | # To ensure that a deployed hypervisor has matching tools, add a dependency to | ||
98 | # make sure that the tools have built and been staged: | ||
99 | do_deploy[depends] += "xen-tools:do_populate_sysroot" | ||
100 | # Also ensure anything that the tools recipe needs to deploy, such as a | ||
101 | # XSM policy file, has been deployed first: | ||
102 | do_deploy[depends] += "xen-tools:do_deploy" | ||
103 | |||
104 | # Enable use of menuconfig directly from bitbake and also within the devshell | ||
105 | do_devshell[depends] += "ncurses-native:do_populate_sysroot" | ||
106 | |||
107 | # Pass the native library path for kconfig build when running the do_menuconfig | ||
108 | # task | ||
109 | CROSS_CURSES_LIB += "-L${STAGING_LIBDIR_NATIVE}" | ||
110 | |||
111 | # Specify the root dir of the .config file for do_menuconfig and do_diffconfig | ||
112 | # tasks | ||
113 | KCONFIG_CONFIG_ROOTDIR = "${S}/xen" | ||
114 | |||
115 | # Xen is setting all CC flags on its own. Make sure that they are not modified | ||
116 | # for aarch64, e.g. with architecture-specific optimizations. | ||
117 | TUNE_CCARGS:aarch64="" | ||
diff --git a/meta-xilinx-virtualization/recipes-extended/xen/xen-tools.inc b/meta-xilinx-virtualization/recipes-extended/xen/xen-tools.inc new file mode 100644 index 00000000..f770eec2 --- /dev/null +++ b/meta-xilinx-virtualization/recipes-extended/xen/xen-tools.inc | |||
@@ -0,0 +1,861 @@ | |||
1 | SUMMARY = "Xen hypervisor tools" | ||
2 | DESCRIPTION = "Tools and utility software for the Xen hypervisor" | ||
3 | |||
4 | COMPATIBLE_HOST = 'i686-.*-linux|(x86_64.*).*-linux|aarch64.*-linux|arm-.*-linux-gnueabi' | ||
5 | |||
6 | inherit setuptools3 update-rc.d systemd deploy | ||
7 | require xen-blktap.inc | ||
8 | |||
9 | RDEPENDS:${PN} = "\ | ||
10 | bash perl xz \ | ||
11 | ${PN}-console \ | ||
12 | ${PN}-libxenguest \ | ||
13 | ${PN}-libxenlight \ | ||
14 | ${PN}-libxenvchan \ | ||
15 | ${PN}-libxenctrl \ | ||
16 | ${PN}-libxlutil \ | ||
17 | ${PN}-libxenstat \ | ||
18 | ${PN}-libxenstore \ | ||
19 | ${PN}-libfsimage \ | ||
20 | ${PN}-fsimage \ | ||
21 | ${PN}-scripts-block \ | ||
22 | ${PN}-scripts-network \ | ||
23 | ${PN}-xen-watchdog \ | ||
24 | ${PN}-xencommons \ | ||
25 | ${PN}-xendomains \ | ||
26 | ${PN}-xenstore \ | ||
27 | virtual/xenstored \ | ||
28 | ${PN}-xl \ | ||
29 | " | ||
30 | |||
31 | RDEPENDS:${PN}-dev = "" | ||
32 | |||
33 | RRECOMMENDS:${PN} = " \ | ||
34 | qemu \ | ||
35 | ${@bb.utils.contains('XEN_TARGET_ARCH', 'x86_64', 'seabios ipxe vgabios', '', d)} \ | ||
36 | ${@bb.utils.contains('PACKAGECONFIG', 'externalblktap', '', '${BLKTAP_RRECOMMENDS}', d)} \ | ||
37 | ${PN}-flask \ | ||
38 | ${PN}-hvmloader \ | ||
39 | ${PN}-libxenhypfs \ | ||
40 | ${PN}-shim \ | ||
41 | ${PN}-ucode \ | ||
42 | ${PN}-vchan \ | ||
43 | ${PN}-xenpaging \ | ||
44 | ${PN}-xenhypfs \ | ||
45 | " | ||
46 | |||
47 | RDEPENDS:${PN}-devd = " \ | ||
48 | ${PN}-xl \ | ||
49 | " | ||
50 | |||
51 | RDEPENDS:${PN}-fsimage = " \ | ||
52 | libext2fs \ | ||
53 | " | ||
54 | |||
55 | RDEPENDS:${PN}-misc = " \ | ||
56 | perl \ | ||
57 | python3 \ | ||
58 | ${PN}-xencov \ | ||
59 | " | ||
60 | |||
61 | RSUGGESTS:${PN}-misc = " \ | ||
62 | ${PN}-xencons \ | ||
63 | ${PN}-xenpvnetboot \ | ||
64 | " | ||
65 | |||
66 | RDEPENDS:${PN}-python = " \ | ||
67 | python3 \ | ||
68 | " | ||
69 | |||
70 | RDEPENDS:${PN}-pygrub = " \ | ||
71 | python3 \ | ||
72 | ${PN}-python \ | ||
73 | " | ||
74 | |||
75 | RDEPENDS:${PN}-remus = "bash" | ||
76 | |||
77 | RDEPENDS:${PN}-scripts-block = "\ | ||
78 | bash \ | ||
79 | ${PN}-scripts-common \ | ||
80 | ${PN}-volatiles \ | ||
81 | " | ||
82 | |||
83 | RDEPENDS:${PN}-scripts-common = "bash" | ||
84 | |||
85 | RDEPENDS:${PN}-scripts-network = "\ | ||
86 | bash \ | ||
87 | bridge-utils \ | ||
88 | ${PN}-scripts-common \ | ||
89 | ${PN}-volatiles \ | ||
90 | " | ||
91 | |||
92 | RRECOMMENDS:${PN}-scripts-network = "\ | ||
93 | ifupdown \ | ||
94 | " | ||
95 | |||
96 | RSUGGESTS:${PN}-xencov = "${PN}-xencov-split" | ||
97 | |||
98 | RDEPENDS:${PN}-xencommons = "\ | ||
99 | bash \ | ||
100 | util-linux-prlimit \ | ||
101 | ${PN}-console \ | ||
102 | ${PN}-xenstore \ | ||
103 | virtual/xenstored \ | ||
104 | ${PN}-xl \ | ||
105 | ${PN}-scripts-common \ | ||
106 | " | ||
107 | |||
108 | RDEPENDS:${PN}-xendomains = "\ | ||
109 | bash \ | ||
110 | ${PN}-console \ | ||
111 | ${PN}-scripts-block \ | ||
112 | ${PN}-scripts-common \ | ||
113 | virtual/xenstored \ | ||
114 | " | ||
115 | |||
116 | RDEPENDS:${PN}-xenhypfs = " \ | ||
117 | ${PN}-libxenhypfs \ | ||
118 | " | ||
119 | |||
120 | RDEPENDS:${PN}-xl = "libgcc" | ||
121 | |||
122 | RDEPENDS:${PN}-xenmon = " \ | ||
123 | python3 \ | ||
124 | " | ||
125 | |||
126 | RSUGGESTS:${PN}-xentrace = "${PN}-xentrace-format" | ||
127 | |||
128 | RDEPENDS:${PN}-xen-watchdog = "bash" | ||
129 | |||
130 | PACKAGES = " \ | ||
131 | ${PN} \ | ||
132 | ${@bb.utils.contains('PACKAGECONFIG', 'externalblktap', '', '${BLKTAP_PACKAGES}', d)} \ | ||
133 | ${PN}-console \ | ||
134 | ${PN}-cpuid \ | ||
135 | ${PN}-dbg \ | ||
136 | ${PN}-dev \ | ||
137 | ${PN}-devd \ | ||
138 | ${PN}-doc \ | ||
139 | ${PN}-flask \ | ||
140 | ${PN}-flask-tools \ | ||
141 | ${PN}-fsimage \ | ||
142 | ${PN}-gdbsx \ | ||
143 | ${PN}-hvmloader \ | ||
144 | ${PN}-init-xenstore-dom \ | ||
145 | ${PN}-kdd \ | ||
146 | ${PN}-libfsimage \ | ||
147 | ${PN}-libfsimage-dev \ | ||
148 | ${PN}-libxencall \ | ||
149 | ${PN}-libxencall-dev \ | ||
150 | ${PN}-libxenctrl \ | ||
151 | ${PN}-libxenctrl-dev \ | ||
152 | ${PN}-libxendevicemodel \ | ||
153 | ${PN}-libxendevicemodel-dev \ | ||
154 | ${PN}-libxenevtchn \ | ||
155 | ${PN}-libxenevtchn-dev \ | ||
156 | ${PN}-libxenforeignmemory \ | ||
157 | ${PN}-libxenforeignmemory-dev \ | ||
158 | ${PN}-libxengnttab \ | ||
159 | ${PN}-libxengnttab-dev \ | ||
160 | ${PN}-libxenguest \ | ||
161 | ${PN}-libxenguest-dev \ | ||
162 | ${PN}-libxenhypfs \ | ||
163 | ${PN}-libxenhypfs-dev \ | ||
164 | ${PN}-libxenlight \ | ||
165 | ${PN}-libxenlight-dev \ | ||
166 | ${PN}-libxenstat \ | ||
167 | ${PN}-libxenstat-dev \ | ||
168 | ${PN}-libxenstore \ | ||
169 | ${PN}-libxenstore-dev \ | ||
170 | ${PN}-libxentoolcore \ | ||
171 | ${PN}-libxentoolcore-dev \ | ||
172 | ${PN}-libxentoollog \ | ||
173 | ${PN}-libxentoollog-dev \ | ||
174 | ${PN}-libxenvchan \ | ||
175 | ${PN}-libxenvchan-dev \ | ||
176 | ${PN}-libxlutil \ | ||
177 | ${PN}-libxlutil-dev \ | ||
178 | ${PN}-livepatch \ | ||
179 | ${PN}-misc \ | ||
180 | ${PN}-pygrub \ | ||
181 | ${PN}-python \ | ||
182 | ${PN}-remus \ | ||
183 | ${PN}-scripts-block \ | ||
184 | ${PN}-scripts-common \ | ||
185 | ${PN}-scripts-network \ | ||
186 | ${PN}-shim \ | ||
187 | ${PN}-staticdev \ | ||
188 | ${PN}-ucode \ | ||
189 | ${PN}-vchan \ | ||
190 | ${PN}-volatiles \ | ||
191 | ${PN}-xcutils \ | ||
192 | ${PN}-xencommons \ | ||
193 | ${PN}-xencov \ | ||
194 | ${PN}-xend \ | ||
195 | ${PN}-xend-examples \ | ||
196 | ${PN}-xendomains \ | ||
197 | ${PN}-xenhypfs \ | ||
198 | ${PN}-xenmon \ | ||
199 | ${PN}-xenpaging \ | ||
200 | ${PN}-xenpmd \ | ||
201 | ${PN}-xenstat \ | ||
202 | ${PN}-xenstore \ | ||
203 | ${PN}-xenstored \ | ||
204 | ${PN}-xentrace \ | ||
205 | ${PN}-xen-watchdog \ | ||
206 | ${PN}-xl \ | ||
207 | ${PN}-xl-examples \ | ||
208 | ${PN}-xm \ | ||
209 | ${PN}-xm-examples \ | ||
210 | ${PN}-xen-access \ | ||
211 | ${PN}-xen-memshare \ | ||
212 | ${PN}-test \ | ||
213 | ${PN}-xen-vmtrace \ | ||
214 | ${PN}-xen-mceinj \ | ||
215 | " | ||
216 | |||
217 | PROVIDES =+ " \ | ||
218 | virtual/xenstored \ | ||
219 | ${@bb.utils.contains('PACKAGECONFIG', 'externalblktap', '', '${BLKTAP_PROVIDES}', d)} \ | ||
220 | " | ||
221 | |||
222 | # There are multiple implementations of the XenStore daemon, so we use a | ||
223 | # virtual package to allow for substitution. | ||
224 | RPROVIDES:${PN}-xenstored = "virtual/xenstored" | ||
225 | |||
226 | FILES:${PN}-dbg += "\ | ||
227 | ${libdir}/xen/bin/.debug \ | ||
228 | ${nonarch_libdir}/${PYTHON_DIR}/site-packages/.debug \ | ||
229 | ${nonarch_libdir}/${PYTHON_DIR}/site-packages/xen/lowlevel/.debug \ | ||
230 | ${libdir}/fs/xfs/.debug \ | ||
231 | ${libdir}/fs/ufs/.debug \ | ||
232 | ${libdir}/fs/ext2fs-lib/.debug \ | ||
233 | ${libdir}/fs/fat/.debug \ | ||
234 | ${libdir}/fs/zfs/.debug \ | ||
235 | ${libdir}/fs/reiserfs/.debug \ | ||
236 | ${libdir}/fs/iso9660/.debug \ | ||
237 | ${libdir}/fs/**/.debug \ | ||
238 | ${sbindir}/.debug \ | ||
239 | ${libdir}exec/.debug \ | ||
240 | ${libdir}/xen/libexec/.debug \ | ||
241 | ${bindir}/.debug \ | ||
242 | ${nonarch_libdir}/${PYTHON_DIR}/dist-packages/.debug \ | ||
243 | ${nonarch_libdir}/${PYTHON_DIR}/dist-packages/xen/lowlevel/.debug \ | ||
244 | " | ||
245 | |||
246 | FILES:${PN}-dev = "\ | ||
247 | ${includedir} \ | ||
248 | " | ||
249 | |||
250 | FILES:${PN}-doc = "\ | ||
251 | ${sysconfdir}/xen/README \ | ||
252 | ${sysconfdir}/xen/README.incompatibilities \ | ||
253 | ${datadir}/doc \ | ||
254 | ${datadir}/man \ | ||
255 | " | ||
256 | |||
257 | FILES:${PN}-staticdev += "\ | ||
258 | ${libdir}/libxenguest.a \ | ||
259 | ${libdir}/libxenlight.a \ | ||
260 | ${libdir}/libxenvchan.a \ | ||
261 | ${libdir}/libxenctrl.a \ | ||
262 | ${libdir}/libxlutil.a \ | ||
263 | ${libdir}/libxenstat.a \ | ||
264 | ${libdir}/libxenstore.a \ | ||
265 | " | ||
266 | |||
267 | FILES:${PN}-libxencall = "${libdir}/libxencall.so.*" | ||
268 | FILES:${PN}-libxencall-dev = " \ | ||
269 | ${libdir}/libxencall.so \ | ||
270 | ${libdir}/pkgconfig/xencall.pc \ | ||
271 | ${datadir}/pkgconfig/xencall.pc \ | ||
272 | " | ||
273 | |||
274 | FILES:${PN}-libxenctrl = "${libdir}/libxenctrl.so.*" | ||
275 | FILES:${PN}-libxenctrl-dev = " \ | ||
276 | ${libdir}/libxenctrl.so \ | ||
277 | ${libdir}/pkgconfig/xencontrol.pc \ | ||
278 | ${datadir}/pkgconfig/xencontrol.pc \ | ||
279 | " | ||
280 | |||
281 | FILES:${PN}-libxendevicemodel = "${libdir}/libxendevicemodel.so.*" | ||
282 | FILES:${PN}-libxendevicemodel-dev = " \ | ||
283 | ${libdir}/libxendevicemodel.so \ | ||
284 | ${libdir}/pkgconfig/xendevicemodel.pc \ | ||
285 | ${datadir}/pkgconfig/xendevicemodel.pc \ | ||
286 | " | ||
287 | |||
288 | FILES:${PN}-libxenevtchn = "${libdir}/libxenevtchn.so.*" | ||
289 | FILES:${PN}-libxenevtchn-dev = " \ | ||
290 | ${libdir}/libxenevtchn.so \ | ||
291 | ${libdir}/pkgconfig/xenevtchn.pc \ | ||
292 | ${datadir}/pkgconfig/xenevtchn.pc \ | ||
293 | " | ||
294 | |||
295 | FILES:${PN}-libxenforeignmemory = "${libdir}/libxenforeignmemory.so.*" | ||
296 | FILES:${PN}-libxenforeignmemory-dev = " \ | ||
297 | ${libdir}/libxenforeignmemory.so \ | ||
298 | ${libdir}/pkgconfig/xenforeignmemory.pc \ | ||
299 | ${datadir}/pkgconfig/xenforeignmemory.pc \ | ||
300 | " | ||
301 | |||
302 | FILES:${PN}-libxengnttab = "${libdir}/libxengnttab.so.*" | ||
303 | FILES:${PN}-libxengnttab-dev = " \ | ||
304 | ${libdir}/libxengnttab.so \ | ||
305 | ${libdir}/pkgconfig/xengnttab.pc \ | ||
306 | ${datadir}/pkgconfig/xengnttab.pc \ | ||
307 | " | ||
308 | |||
309 | FILES:${PN}-libxenguest = "${libdir}/libxenguest.so.*" | ||
310 | FILES:${PN}-libxenguest-dev = " \ | ||
311 | ${libdir}/libxenguest.so \ | ||
312 | ${libdir}/pkgconfig/xenguest.pc \ | ||
313 | ${datadir}/pkgconfig/xenguest.pc \ | ||
314 | " | ||
315 | |||
316 | FILES:${PN}-libxenhypfs = "${libdir}/libxenhypfs.so.*" | ||
317 | FILES:${PN}-libxenhypfs-dev = " \ | ||
318 | ${libdir}/libxenhypfs.so \ | ||
319 | ${libdir}/pkgconfig/xenhypfs.pc \ | ||
320 | " | ||
321 | |||
322 | FILES:${PN}-libxenlight = "${libdir}/libxenlight.so.*" | ||
323 | FILES:${PN}-libxenlight-dev = " \ | ||
324 | ${libdir}/libxenlight.so \ | ||
325 | ${libdir}/pkgconfig/xenlight.pc \ | ||
326 | ${datadir}/pkgconfig/xenlight.pc \ | ||
327 | " | ||
328 | |||
329 | FILES:${PN}-libxenstat = "${libdir}/libxenstat.so.*" | ||
330 | FILES:${PN}-libxenstat-dev = " \ | ||
331 | ${libdir}/libxenstat.so \ | ||
332 | ${libdir}/pkgconfig/xenstat.pc \ | ||
333 | ${datadir}/pkgconfig/xenstat.pc \ | ||
334 | " | ||
335 | |||
336 | FILES:${PN}-libxenstore = "${libdir}/libxenstore.so.*" | ||
337 | FILES:${PN}-libxenstore-dev = " \ | ||
338 | ${libdir}/libxenstore.so \ | ||
339 | ${libdir}/pkgconfig/xenstore.pc \ | ||
340 | ${datadir}/pkgconfig/xenstore.pc \ | ||
341 | " | ||
342 | |||
343 | FILES:${PN}-libxentoolcore = "${libdir}/libxentoolcore.so.*" | ||
344 | FILES:${PN}-libxentoolcore-dev = " \ | ||
345 | ${libdir}/libxentoolcore.so \ | ||
346 | ${libdir}/pkgconfig/xentoolcore.pc \ | ||
347 | ${datadir}/pkgconfig/xentoolcore.pc \ | ||
348 | " | ||
349 | |||
350 | FILES:${PN}-libxentoollog = "${libdir}/libxentoollog.so.*" | ||
351 | FILES:${PN}-libxentoollog-dev = " \ | ||
352 | ${libdir}/libxentoollog.so \ | ||
353 | ${libdir}/pkgconfig/xentoollog.pc \ | ||
354 | ${datadir}/pkgconfig/xentoollog.pc \ | ||
355 | " | ||
356 | |||
357 | FILES:${PN}-libxenvchan = "${libdir}/libxenvchan.so.*" | ||
358 | FILES:${PN}-libxenvchan-dev = " \ | ||
359 | ${libdir}/libxenvchan.so \ | ||
360 | ${libdir}/pkgconfig/xenvchan.pc \ | ||
361 | ${datadir}/pkgconfig/xenvchan.pc \ | ||
362 | " | ||
363 | |||
364 | FILES:${PN}-libxlutil = "${libdir}/libxlutil.so.*" | ||
365 | FILES:${PN}-libxlutil-dev = " \ | ||
366 | ${libdir}/libxlutil.so \ | ||
367 | ${libdir}/pkgconfig/xlutil.pc \ | ||
368 | ${datadir}/pkgconfig/xlutil.pc \ | ||
369 | " | ||
370 | FILES:${PN}-libvhd = "${libdir}/libvhd.so.*" | ||
371 | FILES:${PN}-libvhd-dev = " \ | ||
372 | ${libdir}/libvhd.so \ | ||
373 | ${libdir}/pkgconfig/vhd.pc \ | ||
374 | ${datadir}/pkgconfig/vhd.pc \ | ||
375 | " | ||
376 | |||
377 | FILES:${PN}-libfsimage = " \ | ||
378 | ${libdir}/libfsimage.so.* \ | ||
379 | ${libdir}/libxenfsimage.so.* \ | ||
380 | " | ||
381 | |||
382 | FILES:${PN}-libfsimage-dev = " \ | ||
383 | ${libdir}/libfsimage.so \ | ||
384 | ${libdir}/libxenfsimage.so \ | ||
385 | ${libdir}/pkgconfig/fsimage.pc \ | ||
386 | ${datadir}/pkgconfig/fsimage.pc \ | ||
387 | ${libdir}/pkgconfig/xenfsimage.pc \ | ||
388 | ${datadir}/pkgconfig/xenfsimage.pc \ | ||
389 | " | ||
390 | |||
391 | FILES:${PN}-fsimage = " \ | ||
392 | ${libdir}/fs/**/[a-z]*fsimage.so \ | ||
393 | ${libdir}/xenfsimage/**/fsimage.so \ | ||
394 | " | ||
395 | |||
396 | FILES:${PN}-init-xenstore-dom = "${libdir}/xen/bin/init-xenstore-domain" | ||
397 | |||
398 | FILES:${PN} = "\ | ||
399 | ${sysconfdir}/xen/auto \ | ||
400 | ${sysconfdir}/xen/cpupool \ | ||
401 | ${localstatedir}/xen/dump \ | ||
402 | " | ||
403 | |||
404 | FILES:${PN}-console = "\ | ||
405 | ${libdir}/xen/bin/xenconsole \ | ||
406 | ${sbindir}/xenconsoled \ | ||
407 | " | ||
408 | |||
409 | FILES:${PN}-cpuid = "\ | ||
410 | ${bindir}/xen-cpuid \ | ||
411 | " | ||
412 | |||
413 | FILES:${PN}-devd = "\ | ||
414 | ${sysconfdir}/init.d/xendriverdomain \ | ||
415 | ${systemd_unitdir}/system/xendriverdomain.service \ | ||
416 | " | ||
417 | |||
418 | FILES:${PN}-flask = "\ | ||
419 | /boot/xenpolicy-* \ | ||
420 | " | ||
421 | |||
422 | FILES:${PN}-flask-tools = "\ | ||
423 | ${sbindir}/flask-get-bool \ | ||
424 | ${sbindir}/flask-getenforce \ | ||
425 | ${sbindir}/flask-label-pci \ | ||
426 | ${sbindir}/flask-loadpolicy \ | ||
427 | ${sbindir}/flask-set-bool \ | ||
428 | ${sbindir}/flask-setenforce \ | ||
429 | " | ||
430 | |||
431 | FILES:${PN}-gdbsx = "\ | ||
432 | ${sbindir}/gdbsx \ | ||
433 | " | ||
434 | |||
435 | INSANE_SKIP:${PN}-hvmloader = "arch" | ||
436 | FILES:${PN}-hvmloader = "\ | ||
437 | ${libdir}/xen/boot/hvmloader \ | ||
438 | " | ||
439 | |||
440 | FILES:${PN}-kdd = "\ | ||
441 | ${sbindir}/kdd \ | ||
442 | ${sbindir}/xen-kdd \ | ||
443 | " | ||
444 | |||
445 | FILES:${PN}-livepatch += " \ | ||
446 | ${sbindir}/xen-livepatch \ | ||
447 | " | ||
448 | |||
449 | FILES:${PN}-misc = "\ | ||
450 | ${bindir}/xen-detect \ | ||
451 | ${libdir}/xen/bin/depriv-fd-checker \ | ||
452 | ${sbindir}/gtracestat \ | ||
453 | ${sbindir}/gtraceview \ | ||
454 | ${sbindir}/xen-bugtool \ | ||
455 | ${sbindir}/xenperf \ | ||
456 | ${sbindir}/xenpm \ | ||
457 | ${sbindir}/xsview \ | ||
458 | ${sbindir}/xen-diag \ | ||
459 | ${sbindir}/xen-tmem-list-parse \ | ||
460 | ${sbindir}/xen-python-path \ | ||
461 | ${sbindir}/xen-ringwatch \ | ||
462 | ${sbindir}/xen-hptool \ | ||
463 | ${sbindir}/xen-hvmcrash \ | ||
464 | ${sbindir}/xen-hvmctx \ | ||
465 | ${sbindir}/xenlockprof \ | ||
466 | ${sbindir}/xen-lowmemd \ | ||
467 | ${sbindir}/xen-mfndump \ | ||
468 | ${libdir}/xen/bin/verify-stream-v2 \ | ||
469 | ${libdir}/xen/bin/convert-legacy-stream \ | ||
470 | " | ||
471 | |||
472 | FILES:${PN}-pygrub = "\ | ||
473 | ${bindir}/pygrub \ | ||
474 | ${libdir}/xen/bin/pygrub \ | ||
475 | " | ||
476 | |||
477 | # Depending on the version of Xen libdir or nonarch libdir is used | ||
478 | FILES:${PN}-python = "\ | ||
479 | ${libdir}/${PYTHON_DIR} \ | ||
480 | ${nonarch_libdir}/${PYTHON_DIR} \ | ||
481 | " | ||
482 | |||
483 | FILES:${PN}-remus = "\ | ||
484 | ${sysconfdir}/xen/scripts/remus-netbuf-setup \ | ||
485 | " | ||
486 | |||
487 | FILES:${PN}-scripts-network = " \ | ||
488 | ${sysconfdir}/xen/scripts/colo-proxy-setup \ | ||
489 | ${sysconfdir}/xen/scripts/network-bridge \ | ||
490 | ${sysconfdir}/xen/scripts/network-nat \ | ||
491 | ${sysconfdir}/xen/scripts/network-route \ | ||
492 | ${sysconfdir}/xen/scripts/qemu-ifup \ | ||
493 | ${sysconfdir}/xen/scripts/vif2 \ | ||
494 | ${sysconfdir}/xen/scripts/vif-bridge \ | ||
495 | ${sysconfdir}/xen/scripts/vif-common.sh \ | ||
496 | ${sysconfdir}/xen/scripts/vif-nat \ | ||
497 | ${sysconfdir}/xen/scripts/vif-openvswitch \ | ||
498 | ${sysconfdir}/xen/scripts/vif-route \ | ||
499 | ${sysconfdir}/xen/scripts/vif-setup \ | ||
500 | " | ||
501 | |||
502 | FILES:${PN}-scripts-block = " \ | ||
503 | ${sysconfdir}/xen/scripts/blktap \ | ||
504 | ${sysconfdir}/xen/scripts/block \ | ||
505 | ${sysconfdir}/xen/scripts/block-common.sh \ | ||
506 | ${sysconfdir}/xen/scripts/block-dummy \ | ||
507 | ${sysconfdir}/xen/scripts/block-enbd \ | ||
508 | ${sysconfdir}/xen/scripts/block-iscsi \ | ||
509 | ${sysconfdir}/xen/scripts/block-nbd \ | ||
510 | ${sysconfdir}/xen/scripts/block-drbd-probe \ | ||
511 | ${sysconfdir}/xen/scripts/block-tap \ | ||
512 | ${sysconfdir}/xen/scripts/vscsi \ | ||
513 | " | ||
514 | |||
515 | FILES:${PN}-scripts-common = " \ | ||
516 | ${sysconfdir}/xen/scripts/external-device-migrate \ | ||
517 | ${sysconfdir}/xen/scripts/hotplugpath.sh \ | ||
518 | ${sysconfdir}/xen/scripts/locking.sh \ | ||
519 | ${sysconfdir}/xen/scripts/logging.sh \ | ||
520 | ${sysconfdir}/xen/scripts/xen-hotplug-cleanup \ | ||
521 | ${sysconfdir}/xen/scripts/xen-hotplug-common.sh \ | ||
522 | ${sysconfdir}/xen/scripts/xen-network-common.sh \ | ||
523 | ${sysconfdir}/xen/scripts/xen-script-common.sh \ | ||
524 | " | ||
525 | |||
526 | INSANE_SKIP:${PN}-shim = "arch" | ||
527 | FILES:${PN}-shim = " \ | ||
528 | ${libdir}/xen/boot/xen-shim \ | ||
529 | " | ||
530 | |||
531 | FILES:${PN}-ucode = "\ | ||
532 | ${sbindir}/xen-ucode \ | ||
533 | " | ||
534 | |||
535 | FILES:${PN}-vchan = "\ | ||
536 | ${bindir}/vchan-socket-proxy \ | ||
537 | " | ||
538 | |||
539 | FILES:${PN}-volatiles = "\ | ||
540 | ${sysconfdir}/default/volatiles/99_xen \ | ||
541 | ${sysconfdir}/tmpfiles.d/xen.conf \ | ||
542 | " | ||
543 | |||
544 | FILES:${PN}-xcutils = "\ | ||
545 | ${libdir}/xen/bin/lsevtchn \ | ||
546 | ${libdir}/xen/bin/readnotes \ | ||
547 | ${libdir}/xen/bin/xc_restore \ | ||
548 | ${libdir}/xen/bin/xc_save \ | ||
549 | " | ||
550 | |||
551 | FILES:${PN}-xencov = "\ | ||
552 | ${sbindir}/xencov \ | ||
553 | " | ||
554 | |||
555 | FILES:${PN}-xend-examples = "\ | ||
556 | ${sysconfdir}/xen/xend-config.sxp \ | ||
557 | ${sysconfdir}/xen/xend-pci-permissive.sxp \ | ||
558 | ${sysconfdir}/xen/xend-pci-quirks.sxp \ | ||
559 | " | ||
560 | |||
561 | FILES:${PN}-xenhypfs = "\ | ||
562 | ${sbindir}/xenhypfs \ | ||
563 | " | ||
564 | |||
565 | FILES:${PN}-xenpaging = "\ | ||
566 | ${libdir}/xen/bin/xenpaging \ | ||
567 | ${localstatedir}/lib/xen/xenpaging \ | ||
568 | " | ||
569 | |||
570 | FILES:${PN}-xenpmd = "\ | ||
571 | ${sbindir}/xenpmd \ | ||
572 | " | ||
573 | |||
574 | FILES:${PN}-xenstat = "\ | ||
575 | ${sbindir}/xentop \ | ||
576 | " | ||
577 | |||
578 | FILES:${PN}-xenstore = "\ | ||
579 | ${bindir}/xenstore \ | ||
580 | ${bindir}/xenstore-chmod \ | ||
581 | ${bindir}/xenstore-control \ | ||
582 | ${bindir}/xenstore-exists \ | ||
583 | ${bindir}/xenstore-list \ | ||
584 | ${bindir}/xenstore-ls \ | ||
585 | ${bindir}/xenstore-read \ | ||
586 | ${bindir}/xenstore-rm \ | ||
587 | ${bindir}/xenstore-watch \ | ||
588 | ${bindir}/xenstore-write \ | ||
589 | " | ||
590 | |||
591 | FILES:${PN}-xenstored = "\ | ||
592 | ${sbindir}/xenstored \ | ||
593 | ${localstatedir}/lib/xenstored \ | ||
594 | " | ||
595 | |||
596 | FILES:${PN}-xentrace = "\ | ||
597 | ${bindir}/xentrace \ | ||
598 | ${bindir}/xentrace_setsize \ | ||
599 | ${libdir}/xen/bin/xenctx \ | ||
600 | ${bindir}/xenalyze \ | ||
601 | ${sbindir}/xentrace \ | ||
602 | ${sbindir}/xentrace_setsize \ | ||
603 | ${sbindir}/xentrace_setmask \ | ||
604 | " | ||
605 | |||
606 | FILES:${PN}-xen-watchdog = "\ | ||
607 | ${sbindir}/xenwatchdogd \ | ||
608 | ${sysconfdir}/init.d/xen-watchdog \ | ||
609 | ${systemd_unitdir}/system/xen-watchdog.service \ | ||
610 | " | ||
611 | |||
612 | FILES:${PN}-xl = "\ | ||
613 | ${sysconfdir}/bash_completion.d/xl.sh \ | ||
614 | ${sysconfdir}/bash_completion.d/xl \ | ||
615 | ${sysconfdir}/xen/xl.conf \ | ||
616 | ${libdir}/xen/bin/libxl-save-helper \ | ||
617 | ${sbindir}/xl \ | ||
618 | ${libdir}/xen/bin/xen-init-dom0 \ | ||
619 | ${libdir}/xen/bin/init-dom0less \ | ||
620 | " | ||
621 | |||
622 | FILES:${PN}-xl-examples = "\ | ||
623 | ${sysconfdir}/xen/xlexample.hvm \ | ||
624 | ${sysconfdir}/xen/xlexample.pvlinux \ | ||
625 | ${sysconfdir}/xen/xlexample.pvhlinux \ | ||
626 | " | ||
627 | |||
628 | FILES:${PN}-xm-examples = "\ | ||
629 | ${sysconfdir}/xen/xmexample1 \ | ||
630 | ${sysconfdir}/xen/xmexample2 \ | ||
631 | ${sysconfdir}/xen/xmexample3 \ | ||
632 | ${sysconfdir}/xen/xmexample.hvm \ | ||
633 | ${sysconfdir}/xen/xmexample.hvm-stubdom \ | ||
634 | ${sysconfdir}/xen/xmexample.nbd \ | ||
635 | ${sysconfdir}/xen/xmexample.pv-grub \ | ||
636 | ${sysconfdir}/xen/xmexample.vti \ | ||
637 | " | ||
638 | |||
639 | FILES:${PN}-xenmon = "\ | ||
640 | ${sbindir}/xenbaked \ | ||
641 | ${sbindir}/xenmon.py \ | ||
642 | ${sbindir}/xenmon \ | ||
643 | " | ||
644 | |||
645 | FILES:${PN}-xm = "\ | ||
646 | ${sysconfdir}/xen/xm-config.xml \ | ||
647 | ${datadir}/xen/create.dtd \ | ||
648 | ${sbindir}/xm \ | ||
649 | " | ||
650 | |||
651 | FILES:${PN}-xencommons += "\ | ||
652 | ${nonarch_libdir}/modules-load.d/xen.conf \ | ||
653 | ${sysconfdir}/default/xencommons \ | ||
654 | ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', '', '${sysconfdir}/init.d/xencommons', d)} \ | ||
655 | ${sysconfdir}/xen/scripts/launch-xenstore \ | ||
656 | ${systemd_unitdir}/system/proc-xen.mount \ | ||
657 | ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', '${systemd_unitdir}/system/xen-qemu-dom0-disk-backend.service', '', d)} \ | ||
658 | ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', '${systemd_unitdir}/system/xenconsoled.service', '', d)} \ | ||
659 | ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', '${systemd_unitdir}/system/xen-init-dom0.service', '', d)} \ | ||
660 | ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', '${systemd_unitdir}/system/xenstored.service', '', d)} \ | ||
661 | ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', '${systemd_unitdir}/system/var-lib-xenstored.mount', '', d)} \ | ||
662 | ${localstatedir} \ | ||
663 | " | ||
664 | |||
665 | FILES:${PN}-xend += " \ | ||
666 | ${sysconfdir}/init.d/xend \ | ||
667 | ${sbindir}/xend \ | ||
668 | " | ||
669 | |||
670 | FILES:${PN}-xendomains += "\ | ||
671 | ${libdir}/xen/bin/xendomains \ | ||
672 | ${sysconfdir}/default/xendomains \ | ||
673 | ${sysconfdir}/init.d/xendomains \ | ||
674 | ${sysconfdir}/sysconfig/xendomains \ | ||
675 | ${systemd_unitdir}/system/xendomains.service \ | ||
676 | " | ||
677 | FILES:${PN}-xen-access += "\ | ||
678 | ${sbindir}/xen-access \ | ||
679 | " | ||
680 | |||
681 | FILES:${PN}-xen-memshare += "\ | ||
682 | ${sbindir}/xen-memshare \ | ||
683 | " | ||
684 | |||
685 | # memshare is only built for x86, so allow empty package for other archs | ||
686 | ALLOW_EMPTY:${PN}-xen-memshare = "1" | ||
687 | |||
688 | FILES:${PN}-test += "\ | ||
689 | ${libdir}/xen/bin/test-xenstore \ | ||
690 | ${libdir}/xen/bin/test-resource \ | ||
691 | ${libdir}/xen/bin/test-cpu-policy \ | ||
692 | ${libdir}/xen/bin/test-tsx \ | ||
693 | ${libdir}/xen/bin/test-paging-mempool \ | ||
694 | " | ||
695 | |||
696 | # test-xenstore and test-resource currently only exist in 4.16 | ||
697 | # test-cpu-policy and test-tsx only exist in 4.16 for x86 | ||
698 | ALLOW_EMPTY:${PN}-test = "1" | ||
699 | |||
700 | FILES:${PN}-xen-mceinj +="\ | ||
701 | ${sbindir}/xen-mceinj \ | ||
702 | " | ||
703 | |||
704 | # xen-mceinj is only built for x86 4.16, so allow empty package | ||
705 | ALLOW_EMPTY:${PN}-xen-mceinj = "1" | ||
706 | |||
707 | FILES:${PN}-xen-vmtrace +="\ | ||
708 | ${sbindir}/xen-vmtrace \ | ||
709 | " | ||
710 | |||
711 | # xen-vmtrace is only built for x86 4.16, so allow empty package | ||
712 | ALLOW_EMPTY:${PN}-xen-vmtrace = "1" | ||
713 | |||
714 | INSANE_SKIP:${PN} = "already-stripped" | ||
715 | |||
716 | # configure init.d scripts | ||
717 | INITSCRIPT_PACKAGES = "${PN}-xend ${PN}-xen-watchdog ${PN}-xendomains ${PN}-devd" | ||
718 | INITSCRIPT_PACKAGES += "${@bb.utils.contains('DISTRO_FEATURES', 'systemd', '', '${PN}-xencommons', d)}" | ||
719 | INITSCRIPT_NAME:${PN}-xencommons = "xencommons" | ||
720 | INITSCRIPT_PARAMS:${PN}-xencommons = "defaults 80" | ||
721 | INITSCRIPT_NAME:${PN}-xen-watchdog = "xen-watchdog" | ||
722 | INITSCRIPT_PARAMS:${PN}-xen-watchdog = "defaults 81" | ||
723 | INITSCRIPT_NAME:${PN}-xend = "xend" | ||
724 | INITSCRIPT_PARAMS:${PN}-xend = "defaults 82" | ||
725 | INITSCRIPT_NAME:${PN}-xendomains = "xendomains" | ||
726 | INITSCRIPT_PARAMS:${PN}-xendomains = "defaults 83" | ||
727 | INITSCRIPT_NAME:${PN}-devd = "xendriverdomain" | ||
728 | INITSCRIPT_PARAMS:${PN}-devd = "defaults 82" | ||
729 | |||
730 | # systemd packages | ||
731 | SYSTEMD_PACKAGES = "${PN}-xen-watchdog ${PN}-xencommons ${PN}-xendomains ${PN}-devd" | ||
732 | SYSTEMD_SERVICE:${PN}-devd = "xendriverdomain.service" | ||
733 | SYSTEMD_SERVICE:${PN}-xen-watchdog = "xen-watchdog.service" | ||
734 | SYSTEMD_SERVICE:${PN}-xencommons = " \ | ||
735 | proc-xen.mount \ | ||
736 | xen-qemu-dom0-disk-backend.service \ | ||
737 | xenconsoled.service \ | ||
738 | xen-init-dom0.service \ | ||
739 | xenstored.service \ | ||
740 | " | ||
741 | SYSTEMD_SERVICE:${PN}-xendomains = "xendomains.service" | ||
742 | |||
743 | QEMU_ARCH = "i386" | ||
744 | QEMU_ARCH:aarch64 = "aarch64" | ||
745 | |||
746 | EXTRA_OECONF += " \ | ||
747 | --with-systemd=${systemd_unitdir}/system \ | ||
748 | --with-initddir=${INIT_D_DIR} \ | ||
749 | --with-sysconfig-leaf-dir=default \ | ||
750 | --with-system-qemu=${bindir}/qemu-system-${QEMU_ARCH} \ | ||
751 | " | ||
752 | |||
753 | do_configure() { | ||
754 | do_configure_common | ||
755 | } | ||
756 | |||
757 | do_compile() { | ||
758 | cd ${S} | ||
759 | oe_runmake tools PYTHON="${PYTHON}" \ | ||
760 | EXTRA_CFLAGS_XEN_TOOLS="${EXTRA_CFLAGS_XEN_TOOLS}" | ||
761 | } | ||
762 | |||
763 | do_install() { | ||
764 | cd ${S} | ||
765 | oe_runmake DESTDIR="${D}" install-tools | ||
766 | |||
767 | # Remove unported python 2 scripts -- see the separate xen-python2 recipe | ||
768 | rm -f ${D}${bindir}/xentrace_format \ | ||
769 | ${D}${bindir}/xencons \ | ||
770 | ${D}${bindir}/xencov_split \ | ||
771 | ${D}${libdir}/xen/bin/xenpvnetboot | ||
772 | |||
773 | # remove installed volatiles | ||
774 | rm -rf ${D}${base_prefix}/run \ | ||
775 | ${D}${localstatedir}/run \ | ||
776 | ${D}${localstatedir}/lock \ | ||
777 | ${D}${localstatedir}/log \ | ||
778 | ${D}${localstatedir}/volatile \ | ||
779 | ${D}${localstatedir}/lib/xen | ||
780 | |||
781 | VOLATILE_DIRS=" \ | ||
782 | ${base_prefix}/run/xenstored \ | ||
783 | ${base_prefix}/run/xend \ | ||
784 | ${base_prefix}/run/xend/boot \ | ||
785 | ${base_prefix}/run/xen \ | ||
786 | ${localstatedir}/log/xen \ | ||
787 | ${localstatedir}/lock/xen \ | ||
788 | ${localstatedir}/lock/subsys \ | ||
789 | ${localstatedir}/lib/xen \ | ||
790 | " | ||
791 | |||
792 | # install volatiles using populate_volatiles mechanism | ||
793 | install -d ${D}${sysconfdir}/default/volatiles | ||
794 | for i in $VOLATILE_DIRS; do | ||
795 | echo "d root root 0755 $i none" >> ${D}${sysconfdir}/default/volatiles/99_xen | ||
796 | done | ||
797 | |||
798 | # workaround for xendomains script which searchs sysconfig if directory exists | ||
799 | install -d ${D}${sysconfdir}/sysconfig | ||
800 | ln -sf ${sysconfdir}/default/xendomains ${D}${sysconfdir}/sysconfig/xendomains | ||
801 | |||
802 | # systemd | ||
803 | if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then | ||
804 | # install volatiles using systemd tmpfiles.d | ||
805 | install -d ${D}${sysconfdir}/tmpfiles.d | ||
806 | for i in $VOLATILE_DIRS; do | ||
807 | echo "d $i 0755 root root - -" >> ${D}${sysconfdir}/tmpfiles.d/xen.conf | ||
808 | done | ||
809 | fi | ||
810 | |||
811 | if [ -e ${D}${systemd_unitdir}/system/xen-qemu-dom0-disk-backend.service ]; then | ||
812 | sed -i 's#ExecStart=.*qemu-system-i386\(.*\)$#ExecStart=/usr/bin/qemu-system-i386\1#' \ | ||
813 | ${D}${systemd_unitdir}/system/xen-qemu-dom0-disk-backend.service | ||
814 | fi | ||
815 | |||
816 | if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then | ||
817 | rm -f ${D}/${sysconfdir}/init.d/xencommons | ||
818 | else | ||
819 | # fixup default path to qemu-system-i386 | ||
820 | sed -i 's#\(test -z "$QEMU_XEN" && QEMU_XEN=\).*$#\1"/usr/bin/qemu-system-i386"#' ${D}/etc/init.d/xencommons | ||
821 | |||
822 | # remove the uncondiontally installed systemd service files | ||
823 | rm -f ${D}/${systemd_unitdir}/system/xen-qemu-dom0-disk-backend.service | ||
824 | rm -f ${D}/${systemd_unitdir}/system/xenconsoled.service | ||
825 | rm -f ${D}/${systemd_unitdir}/system/xen-init-dom0.service | ||
826 | rm -f ${D}/${systemd_unitdir}/system/xenstored.service | ||
827 | rm -f ${D}/${systemd_unitdir}/system/var-lib-xenstored.mount | ||
828 | fi | ||
829 | } | ||
830 | |||
831 | pkg_postinst:${PN}-volatiles() { | ||
832 | if [ -z "$D" ]; then | ||
833 | if command -v systemd-tmpfiles >/dev/null; then | ||
834 | systemd-tmpfiles --create ${sysconfdir}/tmpfiles.d/xen.conf | ||
835 | elif [ -e ${sysconfdir}/init.d/populate-volatile.sh ]; then | ||
836 | ${sysconfdir}/init.d/populate-volatile.sh update | ||
837 | fi | ||
838 | fi | ||
839 | } | ||
840 | |||
841 | do_deploy() { | ||
842 | XEN_FULLVERSION=$(oe_runmake -C ${S}/xen xenversion --no-print-directory) | ||
843 | FLASK_POLICY_FILE="xenpolicy-${XEN_FULLVERSION}" | ||
844 | |||
845 | install -d ${DEPLOYDIR} | ||
846 | |||
847 | # Install the flask policy in the deploy directory if it exists | ||
848 | if [ -f ${D}/boot/${FLASK_POLICY_FILE} ]; then | ||
849 | install -m 0644 ${D}/boot/${FLASK_POLICY_FILE} ${DEPLOYDIR} | ||
850 | ln -sf ${FLASK_POLICY_FILE} ${DEPLOYDIR}/xenpolicy-${MACHINE} | ||
851 | fi | ||
852 | } | ||
853 | # Scheduling the do_deploy task: | ||
854 | # - deploy copies files from ${D} that are written during do_install so must run | ||
855 | # after that task | ||
856 | # - the tools binaries are included in the image filesystem, so we must ensure | ||
857 | # that the binaries deployed match what is staged in the sysroot: | ||
858 | # so do_deploy must run after do_populate_sysroot | ||
859 | # - add the task before do_build to ensure that deployment has completed when | ||
860 | # the recipe build done stamp is written | ||
861 | addtask deploy after do_install do_populate_sysroot before do_build | ||
diff --git a/meta-xilinx-virtualization/recipes-extended/xen/xen-tools_%.bbappend b/meta-xilinx-virtualization/recipes-extended/xen/xen-tools_%.bbappend new file mode 100644 index 00000000..a9675ce3 --- /dev/null +++ b/meta-xilinx-virtualization/recipes-extended/xen/xen-tools_%.bbappend | |||
@@ -0,0 +1,27 @@ | |||
1 | require xen-xilinx.inc | ||
2 | |||
3 | # Only include the sysvinit scripts if sysvinit is enabled. | ||
4 | do_install:append () { | ||
5 | if [ -e ${D}/usr/lib/xen/bin/pygrub ]; then | ||
6 | sed -i -e '1c#!/usr/bin/env python3' ${D}/usr/lib/xen/bin/pygrub | ||
7 | fi | ||
8 | |||
9 | if [ "${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', 'sysvinit', '', d)}" != 'sysvinit' ]; then | ||
10 | rm -f ${D}/etc/init.d/xendomains | ||
11 | rm -f ${D}/etc/init.d/xencommons | ||
12 | rm -f ${D}/etc/init.d/xendriverdomain | ||
13 | rm -f ${D}/etc/init.d/xen-watchdog | ||
14 | fi | ||
15 | } | ||
16 | |||
17 | # If we're in a hybrid configuration, we want to stop the system from | ||
18 | # running any Xen sysvinit scripts | ||
19 | # This has a side effect of, on a hybrid system, if the init manager is | ||
20 | # sysvinit, the user will need to manually enable Xen. | ||
21 | INHIBIT_UPDATERCD_BBCLASS = "${@bb.utils.contains('DISTRO_FEATURES', 'systemd', '1', '', d)}" | ||
22 | |||
23 | FILES:${PN} += " \ | ||
24 | ${libdir}/xen/bin/init-dom0less \ | ||
25 | ${libdir}/xen/bin/get_overlay \ | ||
26 | ${libdir}/xen/bin/get_overlay.sh \ | ||
27 | " | ||
diff --git a/meta-xilinx-virtualization/recipes-extended/xen/xen-tools_4.17.bb b/meta-xilinx-virtualization/recipes-extended/xen/xen-tools_4.17.bb new file mode 100644 index 00000000..acc9184b --- /dev/null +++ b/meta-xilinx-virtualization/recipes-extended/xen/xen-tools_4.17.bb | |||
@@ -0,0 +1,18 @@ | |||
1 | # xen 4.17.0 release sha | ||
2 | SRCREV ?= "11560248ffda3f00f20bbdf3ae088af474f7f2a3" | ||
3 | |||
4 | XEN_URI ?= "git://xenbits.xen.org/xen.git" | ||
5 | XEN_REL ?= "4.17" | ||
6 | XEN_BRANCH ?= "stable-${XEN_REL}" | ||
7 | |||
8 | SRC_URI = " \ | ||
9 | ${XEN_URI};branch=${XEN_BRANCH} \ | ||
10 | file://0001-python-pygrub-pass-DISTUTILS-xen-4.15.patch \ | ||
11 | " | ||
12 | |||
13 | LIC_FILES_CHKSUM ?= "file://COPYING;md5=d1a1e216f80b6d8da95fec897d0dbec9" | ||
14 | |||
15 | S = "${WORKDIR}/git" | ||
16 | |||
17 | require xen.inc | ||
18 | require xen-tools.inc | ||
diff --git a/meta-xilinx-virtualization/recipes-extended/xen/xen-xilinx.inc b/meta-xilinx-virtualization/recipes-extended/xen/xen-xilinx.inc new file mode 100644 index 00000000..d7810b27 --- /dev/null +++ b/meta-xilinx-virtualization/recipes-extended/xen/xen-xilinx.inc | |||
@@ -0,0 +1,7 @@ | |||
1 | SRCREV = "38eebc6e5c6f7aa9180672a56d33217bf1ef1ca6" | ||
2 | XEN_URI = "git://github.com/Xilinx/xen.git;protocol=https" | ||
3 | XEN_BRANCH = "xlnx_rebase_4.17" | ||
4 | |||
5 | PV .= "-xilinx+git${SRCPV}" | ||
6 | |||
7 | DEFAULT_PREFERENCE = "+1" | ||
diff --git a/meta-xilinx-virtualization/recipes-extended/xen/xen.inc b/meta-xilinx-virtualization/recipes-extended/xen/xen.inc new file mode 100644 index 00000000..5937763a --- /dev/null +++ b/meta-xilinx-virtualization/recipes-extended/xen/xen.inc | |||
@@ -0,0 +1,233 @@ | |||
1 | HOMEPAGE = "http://xen.org" | ||
2 | LICENSE = "GPL-2.0-only" | ||
3 | SECTION = "console/tools" | ||
4 | |||
5 | inherit autotools-brokensep pkgconfig | ||
6 | |||
7 | require xen-arch.inc | ||
8 | |||
9 | PACKAGECONFIG ??= " \ | ||
10 | ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'systemd', '', d)} \ | ||
11 | " | ||
12 | |||
13 | PACKAGECONFIG[lzo] = ",,lzo" | ||
14 | PACKAGECONFIG[xsm] = "--enable-xsmpolicy,--disable-xsmpolicy,checkpolicy-native," | ||
15 | PACKAGECONFIG[systemd] = "--enable-systemd,--disable-systemd,systemd," | ||
16 | PACKAGECONFIG[externalblktap] = ",,," | ||
17 | |||
18 | DEPENDS = " \ | ||
19 | ${@bb.utils.contains('XEN_TARGET_ARCH', 'x86_64', 'dev86-native', '', d)} \ | ||
20 | bison-native \ | ||
21 | flex-native \ | ||
22 | file-native \ | ||
23 | gettext-native \ | ||
24 | acpica-native \ | ||
25 | ncurses-native \ | ||
26 | util-linux-native \ | ||
27 | xz-native \ | ||
28 | bridge-utils \ | ||
29 | curl \ | ||
30 | dtc \ | ||
31 | gettext \ | ||
32 | glib-2.0 \ | ||
33 | gnutls \ | ||
34 | iproute2 \ | ||
35 | libnl \ | ||
36 | ncurses \ | ||
37 | openssl \ | ||
38 | pciutils \ | ||
39 | pixman \ | ||
40 | procps \ | ||
41 | python3 \ | ||
42 | libaio \ | ||
43 | util-linux \ | ||
44 | xz \ | ||
45 | yajl \ | ||
46 | zlib \ | ||
47 | gnu-efi \ | ||
48 | " | ||
49 | |||
50 | #### REQUIRED ENVIRONMENT VARIABLES #### | ||
51 | export BUILD_SYS | ||
52 | export HOST_SYS | ||
53 | export STAGING_INCDIR | ||
54 | export STAGING_LIBDIR | ||
55 | |||
56 | # specify xen hypervisor to build/target | ||
57 | export XEN_TARGET_ARCH = "${@map_xen_arch(d.getVar('TARGET_ARCH'), d)}" | ||
58 | export XEN_COMPILE_ARCH = "${@map_xen_arch(d.getVar('BUILD_ARCH'), d)}" | ||
59 | |||
60 | python () { | ||
61 | if d.getVar('XEN_TARGET_ARCH') == 'INVALID': | ||
62 | raise bb.parse.SkipPackage('Cannot map `%s` to a xen architecture' % d.getVar('TARGET_ARCH')) | ||
63 | } | ||
64 | |||
65 | # Yocto appends ${PN} to libexecdir by default and Xen appends 'xen' as well | ||
66 | # the result is a nested xen/xen/ so let's avoid that by shunning Yocto's | ||
67 | # extra ${PN} appended. | ||
68 | libexecdir = "${libdir}" | ||
69 | |||
70 | # hardcoded as Linux, as the only compatible hosts are Linux. | ||
71 | export XEN_OS = "Linux" | ||
72 | |||
73 | # this is used for the header (#!${bindir}/python) of the install python scripts | ||
74 | export PYTHONPATH="${bindir}/env python3" | ||
75 | export ac_cv_path_PYTHONPATH="${bindir}/env python3" | ||
76 | export DISTUTILS_BUILD_ARGS | ||
77 | export DISTUTILS_INSTALL_ARGS | ||
78 | |||
79 | # xen and seabios require HOSTCC and HOSTCXX set to cross-compile | ||
80 | export HOSTCC="${BUILD_CC}" | ||
81 | export HOSTCXX="${BUILD_CXX}" | ||
82 | |||
83 | # make xen requires CROSS_COMPILE set by hand as it does not abide by ./configure | ||
84 | export CROSS_COMPILE="${TARGET_PREFIX}" | ||
85 | |||
86 | # overide LDFLAGS to allow xen to build without: "x86_64-oe-linux-ld: unrecognized option '-Wl,-O1'" | ||
87 | export LDFLAGS="" | ||
88 | |||
89 | # No additional C flags for the main hypervisor build | ||
90 | EXTRA_CFLAGS_XEN_CORE ?= "" | ||
91 | # Add prefix maps to support buildpaths QA test and reproducibility | ||
92 | DEBUG_PREFIX_MAP:append = " \ | ||
93 | -ffile-prefix-map=${S}=${PN}-source \ | ||
94 | -fdebug-prefix-map=${WORKDIR}=${PN} \ | ||
95 | " | ||
96 | |||
97 | # - The Xen tools build for x86 systems with HVM-mode enabled includes hvmloader | ||
98 | # which fails to build when "-m64" is included in flags set via the | ||
99 | # EXTRA_CFLAGS_XEN_TOOLS: so clear TUNE_CCARGS on x86 to prevent that. | ||
100 | TUNE_CCARGS:x86-64="" | ||
101 | |||
102 | # - Yocto supplies the _FORTIFY_SOURCE flag via CC/CPP/CXX but then passes the | ||
103 | # optimization -O via C*FLAGS which is problematic when the CFLAGS are cleared | ||
104 | # within the build because compilation fails with the compiler stating | ||
105 | # "_FORTIFY_SOURCE requires compiling with optimization (-O)". | ||
106 | # - Move HOST_CC_ARCH into the Xen-provided CFLAGS variables and keep | ||
107 | # TOOLCHAIN_OPTIONS set via CC: this enables hvmloader to be built correctly. | ||
108 | # It must not be compiled with SSE compiler options enabled and the Xen build | ||
109 | # explicitly clears CFLAGS to ensure that, so such options must not be passed | ||
110 | # in via the tool variable. hvmloader is required to run HVM-mode guest VMs. | ||
111 | CC="${CCACHE}${HOST_PREFIX}gcc ${TOOLCHAIN_OPTIONS} ${DEBUG_PREFIX_MAP} ${CC_REPRODUCIBLE_OPTIONS}" | ||
112 | EXTRA_CFLAGS_XEN_TOOLS="${HOST_CC_ARCH} ${CFLAGS}" | ||
113 | # 32-bit ARM needs the TUNE_CCARGS component of HOST_CC_ARCH to be passed | ||
114 | # in CC to ensure that configure can compile binaries for the right arch. | ||
115 | CC:arm="${CCACHE}${HOST_PREFIX}gcc ${TUNE_CCARGS} ${TOOLCHAIN_OPTIONS} ${DEBUG_PREFIX_MAP} ${CC_REPRODUCIBLE_OPTIONS}" | ||
116 | |||
117 | # There are no Xen-provided variables for C++, so append to the tool variables: | ||
118 | CPP:append = " ${CPPFLAGS}" | ||
119 | CXX:append = " ${CXXFLAGS}" | ||
120 | |||
121 | EXTRA_OECONF += " \ | ||
122 | --exec-prefix=${prefix} \ | ||
123 | --prefix=${prefix} \ | ||
124 | --host=${HOST_SYS} \ | ||
125 | --disable-stubdom \ | ||
126 | --disable-ioemu-stubdom \ | ||
127 | --disable-pv-grub \ | ||
128 | --disable-xenstore-stubdom \ | ||
129 | --disable-rombios \ | ||
130 | --disable-ocamltools \ | ||
131 | --disable-qemu-traditional \ | ||
132 | ${@bb.utils.contains('XEN_TARGET_ARCH', 'x86_64', \ | ||
133 | '--enable-pvshim --with-system-seabios="/usr/share/firmware/bios.bin"', \ | ||
134 | '--disable-pvshim --disable-seabios', d)} \ | ||
135 | " | ||
136 | |||
137 | EXTRA_OEMAKE += "STDVGA_ROM=${STAGING_DIR_HOST}/usr/share/firmware/vgabios-0.8a.bin" | ||
138 | EXTRA_OEMAKE += "CIRRUSVGA_ROM=${STAGING_DIR_HOST}/usr/share/firmware/vgabios-0.8a.cirrus.bin" | ||
139 | EXTRA_OEMAKE += "SEABIOS_ROM=${STAGING_DIR_HOST}/usr/share/firmware/bios.bin" | ||
140 | EXTRA_OEMAKE += "ETHERBOOT_ROMS=${STAGING_DIR_HOST}/usr/share/firmware/rtl8139.rom" | ||
141 | |||
142 | # prevent the Xen build scripts from fetching things during the build | ||
143 | # all dependencies should be reflected in the Yocto recipe | ||
144 | EXTRA_OEMAKE += "WGET=/bin/false" | ||
145 | EXTRA_OEMAKE += "GIT=/bin/false" | ||
146 | |||
147 | # Improve build reproducibility: provide values for build variables. | ||
148 | def get_build_time_vars(d): | ||
149 | source_date_epoch = d.getVar('SOURCE_DATE_EPOCH') | ||
150 | if source_date_epoch is not None: | ||
151 | import datetime | ||
152 | utc_datetime = datetime.datetime.utcfromtimestamp(float(source_date_epoch)) | ||
153 | return " XEN_BUILD_DATE=" + utc_datetime.strftime("%Y-%m-%d") + \ | ||
154 | " XEN_BUILD_TIME=" + utc_datetime.strftime("%H:%M:%S") | ||
155 | return "" | ||
156 | EXTRA_OEMAKE += "${@['', 'XEN_WHOAMI=${PF} XEN_DOMAIN=${DISTRO} XEN_BUILD_HOST=${PN}-buildhost'] \ | ||
157 | [d.getVar('BUILD_REPRODUCIBLE_BINARIES') == '1']}${@get_build_time_vars(d)}" | ||
158 | |||
159 | # Improve build reproducibility: compiler flags to remove filesystem differences. | ||
160 | CC_REPRODUCIBLE_OPTIONS = "${@['', '-gno-record-gcc-switches'] \ | ||
161 | [d.getVar('BUILD_REPRODUCIBLE_BINARIES') == '1']}" | ||
162 | |||
163 | # check for XSM in package config to allow XSM_ENABLE to be set | ||
164 | python () { | ||
165 | pkgconfig = d.getVar('PACKAGECONFIG') | ||
166 | if ('xsm') in pkgconfig.split(): | ||
167 | d.setVar('XSM_ENABLED', '1') | ||
168 | else: | ||
169 | d.setVar('XSM_ENABLED', '0') | ||
170 | } | ||
171 | |||
172 | do_post_patch() { | ||
173 | # fixup AS/CC/CCP/etc variable within StdGNU.mk | ||
174 | for i in LD CC CPP CXX; do | ||
175 | sed -i "s/^\($i\s\s*\).*=/\1?=/" ${S}/config/StdGNU.mk | ||
176 | done | ||
177 | # fixup environment passing in some makefiles | ||
178 | sed -i 's#\(\w*\)=\(\$.\w*.\)#\1="\2"#' ${S}/tools/firmware/Makefile | ||
179 | |||
180 | # libsystemd-daemon -> libsystemd for newer systemd versions | ||
181 | sed -i 's#libsystemd-daemon#libsystemd#' ${S}/tools/configure | ||
182 | |||
183 | # Improve build reproducibility: disable insertion of the build timestamp | ||
184 | # into the x86 EFI hypervisor binary. | ||
185 | # binutils should allow a user-supplied timestamp or use SOURCE_DATE_EPOCH | ||
186 | # for PE but currently does not. | ||
187 | if [ "${BUILD_REPRODUCIBLE_BINARIES}" = "1" ] ; then | ||
188 | sed '/^EFI_LDFLAGS = /{a EFI_LDFLAGS += --no-insert-timestamp | ||
189 | }' -i "${S}/xen/arch/x86/Makefile" | ||
190 | fi | ||
191 | } | ||
192 | |||
193 | addtask post_patch after do_patch before do_configure | ||
194 | |||
195 | # Allow all hypervisor settings in a defconfig | ||
196 | EXTRA_OEMAKE += "XEN_CONFIG_EXPERT=y" | ||
197 | # Build release versions always. Technically since we track release | ||
198 | # tarballs this always happens but occasionally people pull in patches | ||
199 | # from staging that reverts this | ||
200 | EXTRA_OEMAKE += "debug=n" | ||
201 | |||
202 | do_configure_common() { | ||
203 | cd ${S} | ||
204 | |||
205 | #./configure --enable-xsmpolicy does not set XSM_ENABLE must be done manually | ||
206 | if [ "${XSM_ENABLED}" = "1" ]; then | ||
207 | echo "XSM_ENABLE := y" > ${S}/.config | ||
208 | fi | ||
209 | |||
210 | if [ -f "${WORKDIR}/defconfig" ]; then | ||
211 | cp "${WORKDIR}/defconfig" "${S}/xen/.config" || \ | ||
212 | bbfatal "Unable to copy defconfig to .config" | ||
213 | fi | ||
214 | |||
215 | unset CFLAGS | ||
216 | |||
217 | # do configure | ||
218 | oe_runconf EXTRA_CFLAGS_XEN_CORE="${EXTRA_CFLAGS_XEN_CORE}" \ | ||
219 | EXTRA_CFLAGS_XEN_TOOLS="${EXTRA_CFLAGS_XEN_TOOLS}" \ | ||
220 | PYTHON="${PYTHON}" | ||
221 | } | ||
222 | |||
223 | do_compile:prepend() { | ||
224 | # workaround for build bug when CFLAGS is exported | ||
225 | # https://www.mail-archive.com/xen-devel@lists.xen.org/msg67822.html | ||
226 | unset CFLAGS | ||
227 | } | ||
228 | |||
229 | do_install:prepend() { | ||
230 | # CFLAGS is used to set PY_CFLAGS which affects the pygrub install | ||
231 | # so also need to unset CFLAGS here: | ||
232 | unset CFLAGS | ||
233 | } | ||
diff --git a/meta-xilinx-virtualization/recipes-extended/xen/xen_%.bbappend b/meta-xilinx-virtualization/recipes-extended/xen/xen_%.bbappend new file mode 100644 index 00000000..f0340f1c --- /dev/null +++ b/meta-xilinx-virtualization/recipes-extended/xen/xen_%.bbappend | |||
@@ -0,0 +1,20 @@ | |||
1 | require xen-xilinx.inc | ||
2 | |||
3 | FILESEXTRAPATHS:prepend := "${THISDIR}/files:" | ||
4 | |||
5 | RDEPENDS:${PN}-efi += "bash python3" | ||
6 | |||
7 | do_deploy:append() { | ||
8 | # Mimic older behavior for compatibility | ||
9 | if [ -f ${DEPLOYDIR}/xen-${MACHINE} ]; then | ||
10 | ln -s xen-${MACHINE} ${DEPLOYDIR}/xen | ||
11 | fi | ||
12 | |||
13 | if [ -f ${DEPLOYDIR}/xen-${MACHINE}.gz ]; then | ||
14 | ln -s xen-${MACHINE}.gz ${DEPLOYDIR}/xen.gz | ||
15 | fi | ||
16 | |||
17 | if [ -f ${DEPLOYDIR}/xen-${MACHINE}.efi ]; then | ||
18 | ln -s xen-${MACHINE}.efi ${DEPLOYDIR}/xen.efi | ||
19 | fi | ||
20 | } | ||
diff --git a/meta-xilinx-virtualization/recipes-extended/xen/xen_4.17.bb b/meta-xilinx-virtualization/recipes-extended/xen/xen_4.17.bb new file mode 100644 index 00000000..41cf2a15 --- /dev/null +++ b/meta-xilinx-virtualization/recipes-extended/xen/xen_4.17.bb | |||
@@ -0,0 +1,19 @@ | |||
1 | # xen 4.17.0 release sha | ||
2 | SRCREV ?= "11560248ffda3f00f20bbdf3ae088af474f7f2a3" | ||
3 | |||
4 | XEN_URI ?= "git://xenbits.xen.org/xen.git" | ||
5 | XEN_REL ?= "4.17" | ||
6 | XEN_BRANCH ?= "stable-${XEN_REL}" | ||
7 | |||
8 | SRC_URI = " \ | ||
9 | ${XEN_URI};branch=${XEN_BRANCH} \ | ||
10 | file://0001-menuconfig-mconf-cfg-Allow-specification-of-ncurses-location.patch \ | ||
11 | file://xen-flask-race-fix.patch \ | ||
12 | " | ||
13 | |||
14 | LIC_FILES_CHKSUM ?= "file://COPYING;md5=d1a1e216f80b6d8da95fec897d0dbec9" | ||
15 | |||
16 | S = "${WORKDIR}/git" | ||
17 | |||
18 | require xen.inc | ||
19 | require xen-hypervisor.inc | ||