Compare commits

1 Commits
1.1 ... main

14 changed files with 184 additions and 636 deletions

View File

@@ -1,138 +0,0 @@
Index: xen-4.19.0-testing/Config.mk
===================================================================
--- xen-4.19.0-testing.orig/Config.mk
+++ xen-4.19.0-testing/Config.mk
@@ -77,7 +77,7 @@ EXTRA_INCLUDES += $(EXTRA_PREFIX)/includ
EXTRA_LIB += $(EXTRA_PREFIX)/lib
endif
-PYTHON ?= python
+PYTHON ?= python3
PYTHON_PREFIX_ARG ?= --prefix="$(prefix)"
# The above requires that prefix contains *no spaces*. This variable is here
# to permit the user to set PYTHON_PREFIX_ARG to '' to workaround this bug:
Index: xen-4.19.0-testing/tools/configure
===================================================================
--- xen-4.19.0-testing.orig/tools/configure
+++ xen-4.19.0-testing/tools/configure
@@ -8297,15 +8297,15 @@ if test x"${PYTHONPATH}" = x"no"
then
as_fn_error $? "Unable to find $PYTHON, please install $PYTHON" "$LINENO" 5
fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for python version >= 2.7 " >&5
-printf %s "checking for python version >= 2.7 ... " >&6; }
-`$PYTHON -c 'import sys; sys.exit(eval("sys.version_info < (2, 7)"))'`
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for python version >= 3.0 " >&5
+printf %s "checking for python version >= 3.0 ... " >&6; }
+`$PYTHON -c 'import sys; sys.exit(eval("sys.version_info < (3, 0)"))'`
if test "$?" != "0"
then
python_version=`$PYTHON -V 2>&1`
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
printf "%s\n" "no" >&6; }
- as_fn_error $? "$python_version is too old, minimum required version is 2.7" "$LINENO" 5
+ as_fn_error $? "$python_version is too old, minimum required version is 3.0" "$LINENO" 5
else
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
printf "%s\n" "yes" >&6; }
Index: xen-4.19.0-testing/tools/libs/light/idl.py
===================================================================
--- xen-4.19.0-testing.orig/tools/libs/light/idl.py
+++ xen-4.19.0-testing/tools/libs/light/idl.py
@@ -271,7 +271,7 @@ class KeyedUnion(Aggregate):
if not isinstance(keyvar_type, Enumeration):
raise ValueError
- kv_kwargs = dict([(x.lstrip('keyvar_'),y) for (x,y) in kwargs.items() if x.startswith('keyvar_')])
+ kv_kwargs = dict([(x.lstrip('keyvar_'),y) for (x,y) in list(kwargs.items()) if x.startswith('keyvar_')])
self.keyvar = Field(keyvar_type, keyvar_name, **kv_kwargs)
@@ -317,7 +317,7 @@ class Array(Type):
kwargs.setdefault('json_parse_type', 'JSON_ARRAY')
Type.__init__(self, namespace=elem_type.namespace, typename=elem_type.rawname + " *", **kwargs)
- lv_kwargs = dict([(x.lstrip('lenvar_'),y) for (x,y) in kwargs.items() if x.startswith('lenvar_')])
+ lv_kwargs = dict([(x.lstrip('lenvar_'),y) for (x,y) in list(kwargs.items()) if x.startswith('lenvar_')])
self.lenvar = Field(integer, lenvar_name, **lv_kwargs)
self.elem_type = elem_type
@@ -353,7 +353,7 @@ def parse(f):
globs = {}
locs = OrderedDict()
- for n,t in globals().items():
+ for n,t in list(globals().items()):
if isinstance(t, Type):
globs[n] = t
elif isinstance(t,type(object)) and issubclass(t, Type):
Index: xen-4.19.0-testing/tools/libs/light/gentest.py
===================================================================
--- xen-4.19.0-testing.orig/tools/libs/light/gentest.py
+++ xen-4.19.0-testing/tools/libs/light/gentest.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/python3
from __future__ import print_function
Index: xen-4.19.0-testing/tools/libs/light/gentypes.py
===================================================================
--- xen-4.19.0-testing.orig/tools/libs/light/gentypes.py
+++ xen-4.19.0-testing/tools/libs/light/gentypes.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/python3
from __future__ import print_function
Index: xen-4.19.0-testing/tools/include/xen-foreign/mkheader.py
===================================================================
--- xen-4.19.0-testing.orig/tools/include/xen-foreign/mkheader.py
+++ xen-4.19.0-testing/tools/include/xen-foreign/mkheader.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/python3
from __future__ import print_function
Index: xen-4.19.0-testing/tools/include/xen-foreign/mkchecker.py
===================================================================
--- xen-4.19.0-testing.orig/tools/include/xen-foreign/mkchecker.py
+++ xen-4.19.0-testing/tools/include/xen-foreign/mkchecker.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/python3
import sys;
from structs import structs, compat_arches;
Index: xen-4.19.0-testing/xen/tools/gen-cpuid.py
===================================================================
--- xen-4.19.0-testing.orig/xen/tools/gen-cpuid.py
+++ xen-4.19.0-testing/xen/tools/gen-cpuid.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/python3
# -*- coding: utf-8 -*-
import sys, os, re
Index: xen-4.19.0-testing/xen/tools/compat-build-source.py
===================================================================
--- xen-4.19.0-testing.orig/xen/tools/compat-build-source.py
+++ xen-4.19.0-testing/xen/tools/compat-build-source.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/python3
import re,sys
Index: xen-4.19.0-testing/xen/tools/compat-build-header.py
===================================================================
--- xen-4.19.0-testing.orig/xen/tools/compat-build-header.py
+++ xen-4.19.0-testing/xen/tools/compat-build-header.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/python3
import re,sys

11
disable-pv-support.patch Normal file
View File

@@ -0,0 +1,11 @@
--- a/xen/arch/x86/Kconfig
+++ b/xen/arch/x86/Kconfig
@@ -62,7 +62,7 @@ source "arch/x86/Kconfig.cpu"
source "arch/Kconfig"
config PV
- def_bool y
+ def_bool n
prompt "PV support"
help
Interfaces to support PV domains. These require guest kernel support

View File

@@ -278,7 +278,7 @@ the execution time of each script.
#include <xenevtchn.h>
#include <xenstore.h>
@@ -1626,6 +1627,7 @@ struct libxl__xswait_state {
@@ -1624,6 +1625,7 @@ struct libxl__xswait_state {
const char *what; /* for error msgs: noun phrase, what we're waiting for */
const char *path;
int timeout_ms; /* as for poll(2) */
@@ -286,7 +286,7 @@ the execution time of each script.
libxl__xswait_callback *callback;
/* remaining fields are private to xswait */
libxl__ev_time time_ev;
@@ -2703,6 +2705,7 @@ struct libxl__async_exec_state {
@@ -2701,6 +2703,7 @@ struct libxl__async_exec_state {
char **args; /* execution arguments */
char **env; /* execution environment */
@@ -294,7 +294,7 @@ the execution time of each script.
/* private */
libxl__ev_time time;
libxl__ev_child child;
@@ -4899,6 +4902,9 @@ _hidden int userlookup_helper_getpwuid(l
@@ -4893,6 +4896,9 @@ _hidden int userlookup_helper_getpwuid(l
#endif

View File

@@ -1,63 +0,0 @@
Index: xen-4.19.0-testing/tools/pygrub/src/pygrub
===================================================================
--- xen-4.19.0-testing.orig/tools/pygrub/src/pygrub
+++ xen-4.19.0-testing/tools/pygrub/src/pygrub
@@ -593,7 +593,7 @@ class Grub:
self.cf.filename = f
break
if self.__dict__.get('cf', None) is None:
- raise RuntimeError("couldn't find bootloader config file in the image provided.")
+ return
f = fs.open_file(self.cf.filename)
# limit read size to avoid pathological cases
buf = f.read(FS_READ_MAX)
@@ -768,6 +768,20 @@ def run_grub(file, entry, fs, cfg_args):
g = Grub(file, fs)
+ # If missing config or grub has no menu entries to select, look for
+ # vmlinuz-xen and initrd-xen in /boot
+ if g.__dict__.get('cf', None) is None or len(g.cf.images) == 0 or re.search(r"xen(-pae)?\.gz",g.cf.images[0].kernel[1]):
+ if not list_entries:
+ chosencfg = { "kernel": None, "ramdisk": None, "args": "" }
+ chosencfg = sniff_xen_kernel(fs, incfg)
+ if chosencfg["kernel"] and chosencfg["ramdisk"]:
+ chosencfg["args"] = cfg_args
+ return chosencfg
+ if g.__dict__.get('cf', None) is None:
+ raise RuntimeError("couldn't find bootloader config file in the image provided.")
+ else:
+ return
+
if list_entries:
for i in range(len(g.cf.images)):
img = g.cf.images[i]
@@ -854,6 +868,19 @@ def sniff_netware(fs, cfg):
return cfg
+def sniff_xen_kernel(fs, cfg):
+ if not cfg["kernel"]:
+ if fs.file_exists('/boot/vmlinuz-xen'):
+ cfg["kernel"] = '/boot/vmlinuz-xen'
+ elif fs.file_exists('/boot/vmlinuz-xenpae'):
+ cfg["kernel"] = '/boot/vmlinuz-xenpae'
+ if cfg["kernel"] and not cfg["ramdisk"]:
+ if fs.file_exists('/boot/initrd-xen'):
+ cfg["ramdisk"] = '/boot/initrd-xen'
+ elif fs.file_exists('/boot/initrd-xenpae'):
+ cfg["ramdisk"] = '/boot/initrd-xenpae'
+ return cfg
+
def format_sxp(kernel, ramdisk, args):
s = "linux (kernel %s)" % repr(kernel)
if ramdisk:
@@ -932,7 +959,7 @@ if __name__ == "__main__":
debug = False
not_really = False
output_format = "sxp"
- output_directory = "/var/run/xen/pygrub/"
+ output_directory = "/var/run/xen"
uid = None
# what was passed in

View File

@@ -1,59 +0,0 @@
References: bsc#978413
The parsing code can't handle a single line menu entry.
For example: menuentry 'halt' { halt }
Force it to fall through where it will handle the closing brace.
Also change warning to debug to cut down on verbose output.
Index: xen-4.18.0-testing/tools/pygrub/src/GrubConf.py
===================================================================
--- xen-4.18.0-testing.orig/tools/pygrub/src/GrubConf.py
+++ xen-4.18.0-testing/tools/pygrub/src/GrubConf.py
@@ -150,7 +150,7 @@ class GrubImage(_GrubImage):
else:
logging.info("Ignored image directive %s" %(com,))
else:
- logging.warning("Unknown image directive %s" %(com,))
+ logging.debug("Unknown image directive %s" %(com,))
# now put the line in the list of lines
if replace is None:
@@ -309,7 +309,7 @@ class GrubConfigFile(_GrubConfigFile):
else:
logging.info("Ignored directive %s" %(com,))
else:
- logging.warning("Unknown directive %s" %(com,))
+ logging.debug("Unknown directive %s" %(com,))
if img:
self.add_image(GrubImage(title, img))
@@ -343,7 +343,7 @@ class Grub2Image(_GrubImage):
elif com.startswith('set:'):
pass
else:
- logging.warning("Unknown image directive %s" %(com,))
+ logging.debug("Unknown image directive %s" %(com,))
# now put the line in the list of lines
if replace is None:
@@ -408,7 +408,10 @@ class Grub2ConfigFile(_GrubConfigFile):
raise RuntimeError("syntax error: cannot nest menuentry (%d %s)" % (len(img),img))
img = []
title = title_match.group(1)
- continue
+ if not l.endswith('}'):
+ continue
+ # One line menuentry, Ex. menuentry 'halt' { halt }
+ l = '}'
if l.startswith("submenu"):
menu_level += 1
@@ -447,7 +450,7 @@ class Grub2ConfigFile(_GrubConfigFile):
elif com.startswith('set:'):
pass
else:
- logging.warning("Unknown directive %s" %(com,))
+ logging.debug("Unknown directive %s" %(com,))
if img is not None:
raise RuntimeError("syntax error: end of file with open menuentry(%d %s)" % (len(img),img))

View File

@@ -1,20 +0,0 @@
xendomains: remove libvirtd conflict
Conflicting with libvirtd is fine for upstream, where xl/libxl is king.
But down the SUSE stream, we promote libvirt and all the libvirt-based
tools. If a user installs libvirt on their SUSE Xen host, then libvirt
should be king and override xendomains.
bsc#1015348
Index: xen-4.8.0-testing/tools/hotplug/Linux/systemd/xendomains.service.in
===================================================================
--- xen-4.8.0-testing.orig/tools/hotplug/Linux/systemd/xendomains.service.in
+++ xen-4.8.0-testing/tools/hotplug/Linux/systemd/xendomains.service.in
@@ -5,7 +5,6 @@ After=proc-xen.mount xenstored.service x
After=network-online.target
After=remote-fs.target
ConditionPathExists=/proc/xen/capabilities
-Conflicts=libvirtd.service
[Service]
Type=oneshot

BIN
xen-4.20.0-testing-src.tar.bz2 (Stored with Git LFS)

Binary file not shown.

BIN
xen-4.20.1-testing-src.tar.bz2 (Stored with Git LFS) Normal file

Binary file not shown.

View File

@@ -1,3 +1,121 @@
-------------------------------------------------------------------
Thu Jul 10 05:25:48 MDT 2025 - carnold@suse.com
- Update to Xen 4.20.1 bug fix release (jsc#PED-8907)
* No upstream changelog found in sources or webpage
- bsc#1246112 - VUL-0: xen: More AMD transient execution attacks
(XSA-471)
Patches contained in new tarball for 4.20.1
- Drop patches contained in new tarball
67c818d4-x86-log-unhandled-mem-accesses-for-PVH-dom0.patch
67c818d5-x86-fixup-p2m-page-faults-for-PVH-dom0.patch
67c818d6-x86-PVH-dom0-correct-iomem_caps-bound.patch
67c818d7-x86-IOMMU-account-for-IOMEM-caps-when-populating.patch
67c818d8-x86-Dom0-relax-Interrupt-Address-Range.patch
67c86fc1-xl-fix-channel-configuration-setting.patch
67cb03e0-x86-vlapic-ESR-write-handling.patch
67d17edd-x86-expose-MSR_FAM10H_MMIO_CONF_BASE-on-AMD.patch
67d17ede-VT-x-PI-usage-of-msi_desc-msg-field.patch
67d2a3fe-libxl-avoid-infinite-loop-in-libxl__remove_directory.patch
67dada68-x86-mm-IS_ALIGNED-in-IS_LnE_ALIGNED.patch
67ea4268-x86-P2M-sync-fast-slow-p2m_get_page_from_gfn.patch
67ea428e-percpu-dont-init-on-resume.patch
67f8ecda-rangeset-incorrect-subtraction.patch
6800b54f-x86-HVM-update-repeat-count-upon.patch
68076044-x86emul-clip-rep-count-for-STOS.patch
6808f549-x86-Intel-work-around-MONITOR-MWAIT-errata.patch
68221f20-x86-alternative-when-feature-not-present.patch
68221f21-x86-guest-remove-Xen-hypercall_page.patch
68221f22-x86-misalign-__x86_indirect_thunk.patch
68221f23-x86-misalign-RETs-in-clear_bhb_loops.patch
68221f24-x86-stubs-introduce-place_ret.patch
68221f25-x86-build-with-Return-Thunks.patch
68221f26-x86-spec-ctrl-synthesise-ITS_NO.patch
682dff83-x86-vPCI-BAR-overlaps-with-non-holes.patch
6835a042-VMX-VMEntry-failure-on-ADL-SPR-with-shadow.patch
6835a043-x86-PV-breakpoint-reporting.patch
xsa470.patch
-------------------------------------------------------------------
Mon Jun 16 15:58:00 CEST 2025 - jbeulich@suse.com
- bsc#1244644 - VUL-0: CVE-2025-27465: xen: x86: Incorrect stubs
exception handling for flags recovery (XSA-470)
xsa470.patch
- Upstream bug fixes (bsc#1027519)
682dff83-x86-vPCI-BAR-overlaps-with-non-holes.patch
6835a042-VMX-VMEntry-failure-on-ADL-SPR-with-shadow.patch
6835a043-x86-PV-breakpoint-reporting.patch
-------------------------------------------------------------------
Tue May 13 13:48:00 CEST 2025 - jbeulich@suse.com
- bsc#1243117 - VUL-0: CVE-2024-28956: xen: Intel CPU: Indirect
Target Selection (ITS) (XSA-469)
68221f20-x86-alternative-when-feature-not-present.patch
68221f21-x86-guest-remove-Xen-hypercall_page.patch
68221f22-x86-misalign-__x86_indirect_thunk.patch
68221f23-x86-misalign-RETs-in-clear_bhb_loops.patch
68221f24-x86-stubs-introduce-place_ret.patch
68221f25-x86-build-with-Return-Thunks.patch
68221f26-x86-spec-ctrl-synthesise-ITS_NO.patch
-------------------------------------------------------------------
Mon May 12 09:07:55 MDT 2025 - carnold@suse.com
- Default to running xenstored in pvh mode
xenstore-run-in-pvh-mode.patch
-------------------------------------------------------------------
Mon Apr 28 12:55:00 CEST 2025 - jbeulich@suse.com
- Upstream bug fixes (bsc#1027519)
67dada68-x86-mm-IS_ALIGNED-in-IS_LnE_ALIGNED.patch
67ea4268-x86-P2M-sync-fast-slow-p2m_get_page_from_gfn.patch
67ea428e-percpu-dont-init-on-resume.patch
67f8ecda-rangeset-incorrect-subtraction.patch
6800b54f-x86-HVM-update-repeat-count-upon.patch
68076044-x86emul-clip-rep-count-for-STOS.patch
6808f549-x86-Intel-work-around-MONITOR-MWAIT-errata.patch
-------------------------------------------------------------------
Mon Apr 14 10:38:51 MDT 2025 - carnold@suse.com
- Disable pv support for PVH only systems.
disable-pv-support.patch
- Updated the spec file by removing what isn't needed to support
PVH only systems
-------------------------------------------------------------------
Mon Mar 31 14:37:13 MDT 2025 - carnold@suse.com
- Drop legacy patches supporting deprecated features
suse-xendomains-service.patch
build-python3-conversion.patch
pygrub-boot-legacy-sles.patch
pygrub-handle-one-line-menu-entries.patch
xen2libvirt.py
-------------------------------------------------------------------
Thu Mar 13 12:50:00 CET 2025 - jbeulich@suse.com
- bsc#1219354 - xen channels and domU console
67c86fc1-xl-fix-channel-configuration-setting.patch
- bsc#1227301 - Kernel boot crashes on Thinkpad P14s Gen 3 AMD
67c818d4-x86-log-unhandled-mem-accesses-for-PVH-dom0.patch
67c818d5-x86-fixup-p2m-page-faults-for-PVH-dom0.patch
67c818d6-x86-PVH-dom0-correct-iomem_caps-bound.patch
67c818d7-x86-IOMMU-account-for-IOMEM-caps-when-populating.patch
67c818d8-x86-Dom0-relax-Interrupt-Address-Range.patch
- bsc#1237692 - When attempting to start guest vm's libxl fills disk with errors
67d2a3fe-libxl-avoid-infinite-loop-in-libxl__remove_directory.patch
- bsc#1241206 - xen fv domU failed to migrate from sle15SP6 host
to sle15SP7 host
67cb03e0-x86-vlapic-ESR-write-handling.patch
- Upstream bug fixes (bsc#1027519)
67d17edd-x86-expose-MSR_FAM10H_MMIO_CONF_BASE-on-AMD.patch
67d17ede-VT-x-PI-usage-of-msi_desc-msg-field.patch
-------------------------------------------------------------------
Wed Mar 5 06:18:13 MST 2025 - carnold@suse.com
@@ -6004,7 +6122,7 @@ Thu Nov 19 07:38:06 UTC 2015 - ohering@suse.de
- Remove xenalyze.hg, its part of xen-4.6
-------------------------------------------------------------------
Wed Nov 10 16:16:24 MDT 2015 - carnold@suse.com
Wed Nov 11 16:16:24 MST 2015 - carnold@suse.com
- Update to Xen Version 4.6.0
xen-4.6.0-testing-src.tar.bz2
@@ -7620,7 +7738,7 @@ Mon Nov 11 10:22:20 MST 2013 - carnold@suse.com
5280aae0-x86-idle-reduce-contention-on-ACPI-register-accesses.patch
-------------------------------------------------------------------
Wed Nov 4 09:42:36 MDT 2013 - carnold@suse.com
Mon Nov 4 09:42:36 MST 2013 - carnold@suse.com
- bnc#848657 - VUL-0: xen: CVE-2013-4494: XSA-73: Lock order
reversal between page allocation and grant table locks
@@ -8491,7 +8609,7 @@ Fri Nov 9 10:29:51 MST 2012 - carnold@novell.com
xen-max-free-mem.diff
-------------------------------------------------------------------
Tue Nov 6 17:41:34 MDT 2012 - carnold@novell.com
Tue Nov 6 17:41:34 MST 2012 - carnold@novell.com
- fate#311966: Fix XEN VNC implementation to correctly map keyboard
layouts
@@ -10151,7 +10269,7 @@ Wed Apr 20 17:50:04 CEST 2011 - ohering@suse.de
- bnc#688519: correct indention in xend-domain-lock.patch
-------------------------------------------------------------------
Thu Apr 19 06:43:19 MST 2011 - jfehlig@novell.com
Tue Apr 19 06:43:19 MDT 2011 - jfehlig@novell.com
- bnc#687981 - L3: mistyping model type when defining VIF crashes
VM
@@ -10744,7 +10862,7 @@ Tue Nov 9 10:00:48 MST 2010 - jfehlig@novell.com
modified block-iscsi script
-------------------------------------------------------------------
Mon Nov 8 13:11:02 MDT 2010 - jfehlig@novell.com
Mon Nov 8 13:11:02 MST 2010 - jfehlig@novell.com
- bnc#649277 - Fix pci passthru in xend interface used by libvirt
22369-xend-pci-passthru-fix.patch

View File

@@ -100,7 +100,7 @@ References: bsc#954872
aio:/.* { DPC->had_depr_prefix=1; DEPRECATE(0); }
--- a/tools/libs/light/libxl_internal.h
+++ b/tools/libs/light/libxl_internal.h
@@ -2070,6 +2070,10 @@ _hidden char *libxl__object_to_json(libx
@@ -2068,6 +2068,10 @@ _hidden char *libxl__object_to_json(libx
_hidden int libxl__cpuid_legacy(libxl_ctx *ctx, uint32_t domid, bool retore,
libxl_domain_build_info *info);

222
xen.spec
View File

@@ -29,58 +29,22 @@
%{?!primary_python:%define primary_python python3}
Name: xen
ExclusiveArch: %ix86 x86_64 aarch64
%define xen_build_dir xen-4.20.0-testing
ExclusiveArch: x86_64
%define xen_build_dir xen-4.20.1-testing
#
%define with_gdbsx 0
%define with_dom0_support 0
%ifarch x86_64
%bcond_without xen_debug
%bcond_without xen_stubdom
%else
%bcond_with xen_debug
%bcond_with xen_stubdom
%endif
#
%define qemu_arch i386
%ifarch x86_64
%define with_gdbsx 1
%define with_dom0_support 1
%endif
#
%ifarch %arm aarch64
%define with_dom0_support 1
%define qemu_arch aarch64
%endif
#
%define xen_install_suffix %{nil}
%ifarch x86_64
%define xen_install_suffix .gz
%endif
# EFI requires gcc 4.6 or newer
# gcc46 is available in 12.1 or sles11sp2
# gcc47 is available in sles11sp3
# gcc48 is available in sles11sp4
# 12.2+ have gcc 4.7 as default compiler
%define with_gcc47 0
%define with_gcc48 0
%define _fwdefdir /etc/sysconfig/SuSEfirewall2.d/services
%systemd_requires
BuildRequires: pkgconfig(libsystemd)
%define with_systemd_modules_load %{_prefix}/lib/modules-load.d
PreReq: %fillup_prereq
%ifarch %arm aarch64
%if 0%{?suse_version} > 1320 || ( 0%{?suse_version} == 1315 && 0%{?sle_version} > 120200 )
BuildRequires: libfdt-devel
%else
BuildRequires: libfdt1-devel
%endif
%endif
BuildRequires: bison
BuildRequires: fdupes
%if 0%{?suse_version} > 1315
BuildRequires: figlet
%endif
BuildRequires: flex
BuildRequires: glib2-devel
BuildRequires: libaio-devel
@@ -91,12 +55,8 @@ BuildRequires: libuuid-devel
BuildRequires: libxml2-devel
BuildRequires: libyajl-devel
%if %{with xen_stubdom}
%if 0%{?suse_version} < 1230
BuildRequires: texinfo
%else
BuildRequires: makeinfo
%endif
%endif
BuildRequires: acpica
BuildRequires: libzstd-devel
BuildRequires: lzo-devel
@@ -106,31 +66,21 @@ BuildRequires: python3-devel
BuildRequires: python3-setuptools
BuildRequires: xz-devel
BuildRequires: pkgconfig(systemd)
%ifarch x86_64
BuildRequires: gcc-32bit
BuildRequires: gcc-c++
%if %{?with_gcc47}0
BuildRequires: gcc47
%endif
%if %{?with_gcc48}0
BuildRequires: gcc48
%endif
BuildRequires: glibc-32bit
BuildRequires: glibc-devel-32bit
BuildRequires: makeinfo
%endif
%ifarch x86_64
BuildRequires: pesign-obs-integration
%endif
BuildRequires: python-rpm-macros
Provides: installhint(reboot-needed)
Version: 4.20.0_08
Version: 4.20.1_02
Release: 0
Summary: Xen Virtualization: Hypervisor (aka VMM aka Microkernel)
License: GPL-2.0-only
Group: System/Kernel
Source0: xen-4.20.0-testing-src.tar.bz2
Source0: xen-4.20.1-testing-src.tar.bz2
Source1: stubdom.tar.bz2
Source2: mini-os.tar.bz2
Source9: xen.changes
@@ -149,7 +99,6 @@ Source31: xenapiusers
# Init script and sysconf file for pciback
Source34: init.pciback
Source35: sysconfig.pciback
Source36: xen2libvirt.py
# Systemd service files
Source41: xencommons.service
Source42: xen-dom0-modules.service
@@ -168,9 +117,8 @@ Patch402: vif-bridge-tap-fix.patch
Patch403: xl-conf-default-bridge.patch
Patch404: xl-conf-disable-autoballoon.patch
Patch405: xen-arch-kconfig-nr_cpus.patch
Patch406: suse-xendomains-service.patch
Patch407: replace-obsolete-network-configuration-commands-in-s.patch
Patch408: ignore-ip-command-script-errors.patch
Patch406: replace-obsolete-network-configuration-commands-in-s.patch
Patch407: ignore-ip-command-script-errors.patch
# Needs to go upstream
Patch420: suspend_evtchn_lock.patch
# Other bug fixes or features
@@ -178,21 +126,19 @@ Patch450: xen.sysconfig-fillup.patch
Patch451: xenconsole-no-multiple-connections.patch
Patch452: hibernate.patch
Patch453: xl-save-pc.patch
Patch454: pygrub-boot-legacy-sles.patch
Patch455: pygrub-handle-one-line-menu-entries.patch
Patch461: libxl.max_event_channels.patch
Patch463: libxl.add-option-to-disable-disk-cache-flushes-in-qdisk.patch
Patch464: xen.libxl.dmmd.patch
Patch465: xenstore-run-in-studomain.patch
Patch466: libxl.helper_done-crash.patch
Patch467: libxl.LIBXL_HOTPLUG_TIMEOUT.patch
# python3 conversion patches
Patch500: build-python3-conversion.patch
Patch466: xenstore-run-in-pvh-mode.patch
Patch467: libxl.helper_done-crash.patch
Patch468: libxl.LIBXL_HOTPLUG_TIMEOUT.patch
# Hypervisor and PV driver Patches
Patch600: xen.bug1026236.suse_vtsc_tolerance.patch
Patch601: x86-ioapic-ack-default.patch
Patch602: xenwatchdogd-restart.patch
Patch621: xen.build-compare.doc_html.patch
Patch622: disable-pv-support.patch
# Build patches
URL: http://www.cl.cam.ac.uk/Research/SRG/netos/xen/
BuildRoot: %{_tmppath}/%{name}-%{version}-build
@@ -207,6 +153,7 @@ This package contains the Xen Hypervisor. (tm)
[Hypervisor is a trademark of IBM]
%package libs
Summary: Xen Virtualization: Libraries
License: GPL-2.0-only
@@ -229,8 +176,6 @@ Authors:
Ian Pratt <ian.pratt@cl.cam.ac.uk>
%if %{?with_dom0_support}0
%package tools
Summary: Xen Virtualization: Control tools for domain 0
License: GPL-2.0-only
@@ -238,28 +183,11 @@ Group: System/Kernel
%if 0%{?suse_version} > 1500
BuildRequires: pam-devel
%endif
%ifarch x86_64
%if 0%{?suse_version} >= 1315
Requires: grub2-x86_64-xen
%endif
Recommends: qemu-ovmf-x86_64
Requires: qemu-x86
%endif
%ifarch %arm aarch64
Requires: qemu-arm
%endif
Requires: %{name} = %{version}-%{release}
Requires: %{name}-libs = %{version}-%{release}
Recommends: multipath-tools
Requires: %{primary_python}
Requires: %{primary_python}-curses
%ifarch %{ix86} x86_64
Requires: qemu-seabios
%endif
# subpackage existed in 10.3
Provides: xen-tools-ioemu = %{version}
Obsoletes: xen-tools-ioemu < %{version}
Conflicts: libvirt < 1.0.5
%description tools
Xen is a virtual machine monitor for x86 that supports execution of
@@ -278,7 +206,6 @@ Authors:
Ian Pratt <ian.pratt@cl.cam.ac.uk>
%ifarch x86_64
%package tools-xendomains-wait-disk
Summary: Adds a new xendomains-wait-disks.service
License: GPL-3.0-or-later
@@ -301,9 +228,7 @@ xendomains.service, but it adds itself as a Wanted service for xendomains.
If xendomains-wait-disks.service fails, xendomains.service is launched anyway.
https://github.com/luizluca/xen-tools-xendomains-wait-disk
%endif
%endif
%package tools-domU
Summary: Xen Virtualization: Control tools for domain U
@@ -321,11 +246,11 @@ This package contains tools that allow unprivileged domains to query
the virtualized environment.
Authors:
--------
Ian Pratt <ian.pratt@cl.cam.ac.uk>
%package devel
Summary: Xen Virtualization: Headers and libraries for development
License: GPL-2.0-only
@@ -342,12 +267,10 @@ This package contains the libraries and header files needed to create
tools to control virtual machines.
Authors:
--------
Ian Pratt <ian.pratt@cl.cam.ac.uk>
%if %{?with_dom0_support}0
%package doc-html
Summary: Xen Virtualization: HTML documentation
@@ -363,11 +286,10 @@ xen-doc-html contains the online documentation in HTML format. Point
your browser at file:/usr/share/doc/packages/xen/html/
Authors:
--------
Ian Pratt <ian.pratt@cl.cam.ac.uk>
%endif
%prep
%setup -q -n %xen_build_dir -a 1 -a 2
@@ -404,12 +326,6 @@ cat > .our_xenversion <<_EOV_
export WGET=$(type -P false)
export FTP=$(type -P false)
export GIT=$(type -P false)
%ifarch aarch64
# GCC10+ enables outline-atomics option by default and breaks the build, so disable it
%if 0%{?suse_version} >= 1550
export CFLAGS="%{optflags} -mno-outline-atomics"
%endif
%endif
export EXTRA_CFLAGS_XEN_TOOLS="%{optflags}"
export EXTRA_CFLAGS_QEMU_TRADITIONAL="%{optflags}"
export SMBIOS_REL_DATE="$SMBIOS_REL_DATE"
@@ -445,7 +361,7 @@ sed -i~ 's/ XENSTORETYPE=domain$/ XENSTORETYPE=daemon/' tools/hotplug/Linux/laun
configure_flags="${configure_flags} --disable-stubdom"
%endif
export PYTHON=$(realpath /usr/bin/python3)
configure_flags="${configure_flags} --disable-qemu-traditional"
configure_flags="${configure_flags} --disable-qemu-traditional --disable-seabios --disable-pygrub"
./configure \
--disable-xen \
--disable-pvshim \
@@ -467,8 +383,6 @@ configure_flags="${configure_flags} --disable-qemu-traditional"
--enable-systemd \
--with-systemd=%{_unitdir} \
--with-systemd-modules-load=%{with_systemd_modules_load} \
--with-system-ovmf=%{_datadir}/qemu/ovmf-x86_64-xen-4m.bin \
--with-system-seabios=%{_datadir}/qemu/bios-256k.bin \
${configure_flags}
make -C tools/include/xen-foreign %{?_smp_mflags}
make %{?_smp_mflags}
@@ -574,7 +488,6 @@ _EOR_
tee ${udev_rulesdir}/80-%{name}-channel-setup.rules <<'_EOF_'
SUBSYSTEM=="xen", DEVPATH=="/devices/console-[0-9]", IMPORT{program}=="xen-channel-setup.sh $attr{nodename} %%n"
SUBSYSTEM=="xen", DEVPATH=="/devices/console-[0-9]", ENV{XEN_CHANNEL_NAME}=="org.qemu.guest_agent.0", TAG+="systemd", ENV{SYSTEMD_WANTS}+="qemu-ga@hvc%%n.service"
_EOF_
#
dracut_moduledir=%{buildroot}/usr/lib/dracut/modules.d/50%{name}-tools-domU
@@ -642,10 +555,6 @@ channel_num="$2"
name="`xenstore-read \"$channel_path\"/name`"
test -z "$name" && exit 1
if test $name != "org.qemu.guest_agent.0"; then
exit 1
fi
mkdir -p /dev/xenchannel
devname=/dev/xenchannel/$name
# Xen's console devices are used for channels. See xen-pv-channel(7)
@@ -657,7 +566,6 @@ _EOF_
chmod 755 ${udev_programdir}/*.sh
# EFI
%if %{?with_dom0_support}0
arch=`uname -m`
install_xen()
{
@@ -695,12 +603,6 @@ install_xen()
}
export BRP_PESIGN_FILES="*.efi /lib/firmware"
CC=gcc
%if %{?with_gcc47}0
CC=gcc-4.7
%endif
%if %{?with_gcc48}0
CC=gcc-4.8
%endif
rm -fv xen/.config
echo CONFIG_REQUIRE_NX=y > xen/.config
echo CONFIG_DIT_DEFAULT=y >> xen/.config
@@ -718,23 +620,6 @@ yes '' | make -C xen oldconfig
make -C xen install XEN_BUILD_DATE="$XEN_BUILD_DATE" XEN_BUILD_TIME="$XEN_BUILD_TIME" DEBUG_DIR=/boot DESTDIR=%{buildroot} CC=$CC %{?_smp_mflags}
install_xen
make -C xen clean
%endif
# On x86_64, qemu-xen was installed as /usr/lib/xen/bin/qemu-system-i386
# and advertised as the <emulator> in libvirt capabilities. Tool such as
# virt-install include <emulator> in domXML they produce, so we need to
# preserve the path. For x86_64, create a simple wrapper that invokes
# /usr/bin/qemu-system-i386
# Using qemu-system-x86_64 will result in an incompatible VM
%ifarch x86_64 aarch64
hardcoded_path_in_existing_domU_xml='%{_libexecdir}/%{name}/bin'
mkdir -vp %{buildroot}${hardcoded_path_in_existing_domU_xml}
tee %{buildroot}${hardcoded_path_in_existing_domU_xml}/qemu-system-%{qemu_arch} << 'EOF'
#!/bin/sh
exec %{_bindir}/qemu-system-%{qemu_arch} "$@"
EOF
chmod 0755 %{buildroot}${hardcoded_path_in_existing_domU_xml}/qemu-system-%{qemu_arch}
#
unit='%{_libexecdir}/%{name}/bin/xendomains-wait-disks'
@@ -749,7 +634,7 @@ Description=Xendomains - for those machines that will start, wait for their disk
Requires=proc-xen.mount xenstored.service
After=proc-xen.mount xenstored.service xenconsoled.service xen-init-dom0.service
After=network-online.target
After=remote-fs.target
After=remote-fs.target
Before=xendomains.service
ConditionPathExists=/proc/xen/capabilities
@@ -762,10 +647,8 @@ TimeoutSec=5min
WantedBy=xendomains.service
_EOS_
#
%endif
# Stubdom
%if %{?with_dom0_support}0
# Docs
mkdir -p %{buildroot}/%{_defaultdocdir}/xen/misc
for name in COPYING %SOURCE10 %SOURCE11 %SOURCE12; do
@@ -777,7 +660,6 @@ for name in vtpm-platforms.txt crashdb.txt xenpaging.txt \
done
# Xen utilities
install -m755 %SOURCE36 %{buildroot}/usr/sbin/xen2libvirt
install -m755 %SOURCE10183 %{buildroot}/usr/sbin/xen_maskcalc
%python3_fix_shebang
@@ -790,7 +672,6 @@ rm -f %{buildroot}/etc/xen/examples/*nbd
# Scripts
rm -f %{buildroot}/etc/xen/scripts/block-*nbd
install -m755 %SOURCE21 %SOURCE22 %SOURCE23 %SOURCE24 %{buildroot}/etc/xen/scripts/
install -m755 tools/pygrub/src/pygrub %{buildroot}/usr/bin/pygrub
mkdir -p %{buildroot}/usr/lib/supportconfig/plugins
install -m 755 %SOURCE13 %{buildroot}/usr/lib/supportconfig/plugins/xen
@@ -869,9 +750,6 @@ find %{buildroot} \( \
-name qcow-create -o \
-name img2qcow -o \
-name qcow2raw -o \
-name qemu-bridge-helper -o \
-name qemu-img-xen -o \
-name qemu-nbd-xen -o \
-name palcode-clipper -o \
-name "*.dtb" -o \
-name "openbios-*" -o \
@@ -899,34 +777,6 @@ find %{buildroot} -name xendriverdomain.service -print -delete
%fdupes %{buildroot}/%{_prefix}
find %{buildroot} -type f -size 0 -delete -print
%else
# !with_dom0_support
# 32 bit hypervisor no longer supported. Remove dom0 tools.
rm -rf %{buildroot}/%{_datadir}/doc
rm -rf %{buildroot}/%{_datadir}/man
rm -rf %{buildroot}/%{_libexecdir}/%{name}
rm -rf %{buildroot}/%{_libdir}/python*
rm -rf %{buildroot}/%{_unitdir}
rm -rf %{buildroot}/%{_fillupdir}
rm -rf %{buildroot}/%{with_systemd_modules_load}
rm -rf %{buildroot}/usr/sbin
rm -rf %{buildroot}/etc/xen
rm -rf %{buildroot}/var
rm -f %{buildroot}/%{_datadir}/bash-completion/completions/xl
rm -f %{buildroot}/%{_sysconfdir}/init.d/xen*
rm -f %{buildroot}/%{_bindir}/*trace*
rm -f %{buildroot}/%{_bindir}/vchan-socket-proxy
rm -f %{buildroot}/%{_bindir}/xenalyze*
rm -f %{buildroot}/%{_bindir}/xenco*
rm -f %{buildroot}/%{_bindir}/xen-cpuid
rm -f %{buildroot}/%{_bindir}/pygrub
rm -f %{buildroot}/%{_bindir}/remus
rm -f %{buildroot}/usr/etc/qemu/target-x86_64.conf
rm -f %{buildroot}/usr/libexec/qemu-bridge-helper
%endif
%if %{?with_dom0_support}0
%files
%defattr(-,root,root)
@@ -934,25 +784,17 @@ rm -f %{buildroot}/usr/libexec/qemu-bridge-helper
%{_libdir}/efi
%{_datadir}/efi
%endif
%files libs
%defattr(-,root,root)
%{_libdir}/xenfsimage/
%{_libdir}/*.so.*
%if %{?with_dom0_support}0
%files tools
%defattr(-,root,root)
/usr/bin/xenalyze
/usr/bin/xenstore*
/usr/bin/pygrub
/usr/bin/vchan-socket-proxy
/usr/bin/xencov_split
%ifarch x86_64
/usr/bin/xen-cpuid
%endif
/usr/sbin/xenbaked
/usr/sbin/xenconsoled
/usr/sbin/xencov
@@ -973,14 +815,10 @@ rm -f %{buildroot}/usr/libexec/qemu-bridge-helper
/usr/sbin/flask-loadpolicy
/usr/sbin/flask-set-bool
/usr/sbin/flask-setenforce
%if %{?with_gdbsx}0
/usr/sbin/gdbsx
%endif
/usr/sbin/xl
/usr/sbin/xen2libvirt
/usr/sbin/xen-access
/usr/sbin/xen_maskcalc
%ifarch %ix86 x86_64
/usr/sbin/xen-hptool
/usr/sbin/xen-hvmcrash
/usr/sbin/xen-hvmctx
@@ -990,7 +828,6 @@ rm -f %{buildroot}/usr/libexec/qemu-bridge-helper
/usr/sbin/xen-ucode
/usr/sbin/xen-mceinj
/usr/sbin/xen-vmtrace
%endif
/usr/sbin/xenhypfs
/usr/sbin/xen-livepatch
/usr/sbin/xen-diag
@@ -1015,10 +852,8 @@ rm -f %{buildroot}/usr/libexec/qemu-bridge-helper
%dir %{_libexecdir}/%{name}
%{_libexecdir}/%{name}/bin
%exclude %{_libexecdir}/%{name}-tools-domU
%ifarch x86_64
%{_libexecdir}/%{name}/boot
%exclude %{_libexecdir}/%{name}/bin/xendomains-wait-disks
%endif
%{_fillupdir}/sysconfig.pciback
%{_fillupdir}/sysconfig.xencommons
%{_fillupdir}/sysconfig.xendomains
@@ -1026,9 +861,7 @@ rm -f %{buildroot}/usr/libexec/qemu-bridge-helper
%dir %attr(700,root,root) /var/lib/xen/images
%dir %attr(700,root,root) /var/lib/xen/save
%dir %attr(700,root,root) /var/lib/xen/dump
%ifarch %ix86 x86_64
%dir %attr(700,root,root) /var/lib/xen/xenpaging
%endif
%dir /var/lib/xenstored
%dir /var/log/xen
%dir /var/log/xen/console
@@ -1050,15 +883,12 @@ rm -f %{buildroot}/usr/libexec/qemu-bridge-helper
%exclude %{_unitdir}/xendomains-wait-disks.service
%config %{with_systemd_modules_load}
%{_datadir}/bash-completion/completions/xl
%dir %{_libdir}/python%{pyver}/site-packages/grub
%dir %{_libdir}/python%{pyver}/site-packages/xen
%dir %{_libdir}/python%{pyver}/site-packages/xen/lowlevel
%dir %{_libdir}/python%{pyver}/site-packages/xen/migration
%{_libdir}/python%{pyver}/site-packages/grub/*
%{_libdir}/python%{pyver}/site-packages/xen/util.py
%{_libdir}/python%{pyver}/site-packages/xen/lowlevel/*
%{_libdir}/python%{pyver}/site-packages/xen/migration/*
%{_libdir}/python%{pyver}/site-packages/*.so
%dir %{_defaultdocdir}/xen
%{_defaultdocdir}/xen/COPYING
%{_defaultdocdir}/xen/README.SUSE
@@ -1066,29 +896,21 @@ rm -f %{buildroot}/usr/libexec/qemu-bridge-helper
%{_defaultdocdir}/xen/boot.xen
%{_mandir}/man*/*
%ifarch x86_64
%files tools-xendomains-wait-disk
%license xendomains-wait-disk/LICENSE
%doc xendomains-wait-disk/README.md
%config %{_unitdir}/xendomains-wait-disks.service
%config %attr(0755,root,root) %{_libexecdir}/%{name}/bin/xendomains-wait-disks
%endif
# with_dom0_support
%endif
%posttrans -n %{name}-tools-domU
%{?regenerate_initrd_posttrans}
%files tools-domU
%defattr(-,root,root)
%ifarch %ix86 x86_64
/usr/bin/xen-detect
%exclude /usr/bin/xenstore-control
%endif
/usr/bin/xenstore*
%if %{?with_dom0_support}0
%config %{_unitdir}/%{name}-vcpu-watch.service
%endif
%{_libexecdir}/%{name}-tools-domU
/usr/lib/udev
/usr/lib/dracut
@@ -1114,8 +936,6 @@ rm -f %{buildroot}/usr/libexec/qemu-bridge-helper
%{_libdir}/pkgconfig/xentoollog.pc
%{_libdir}/pkgconfig/xenvchan.pc
%if %{?with_dom0_support}0
%files doc-html
%defattr(-,root,root)
%dir %{_defaultdocdir}/xen
@@ -1135,7 +955,6 @@ fi
%service_add_pre xen-dom0-modules.service
%service_add_pre xenconsoled.service
%service_add_pre xen-init-dom0.service
%service_add_pre xen-qemu-dom0-disk-backend.service
%if 0%{?suse_version} > 1500
# Prepare for migration to /usr/etc; save any old .rpmsave
for i in logrotate.d/xen pam.d/xen-api ; do
@@ -1161,16 +980,12 @@ done
%service_add_post xen-dom0-modules.service
%service_add_post xenconsoled.service
%service_add_post xen-init-dom0.service
%service_add_post xen-qemu-dom0-disk-backend.service
if [ -f /etc/default/grub ] && ! (/usr/bin/grep GRUB_CMDLINE_XEN /etc/default/grub >/dev/null); then
echo '# Xen boot parameters for all Xen boots' >> /etc/default/grub
echo 'GRUB_CMDLINE_XEN=""' >> /etc/default/grub
echo '# Xen boot parameters for non-recovery Xen boots (in addition to GRUB_CMDLINE_XEN)' >> /etc/default/grub
echo 'GRUB_CMDLINE_XEN_DEFAULT=""' >> /etc/default/grub
fi
if [ -f %{_datadir}/grub2/i386-xen/grub.xen ] && [ ! -f %{_libexecdir}/%{name}/boot/pvgrub32.bin ]; then
ln -sv %{_datadir}/grub2/i386-xen/grub.xen %{_libexecdir}/%{name}/boot/pvgrub32.bin
echo 'GRUB_CMDLINE_XEN_DEFAULT="dom0=pvh"' >> /etc/default/grub
fi
if [ -f %{_datadir}/grub2/x86_64-xen/grub.xen ] && [ ! -f %{_libexecdir}/%{name}/boot/pvgrub64.bin ]; then
ln -sv %{_datadir}/grub2/x86_64-xen/grub.xen %{_libexecdir}/%{name}/boot/pvgrub64.bin
@@ -1184,7 +999,6 @@ fi
%service_del_preun xen-dom0-modules.service
%service_del_preun xenconsoled.service
%service_del_preun xen-init-dom0.service
%service_del_preun xen-qemu-dom0-disk-backend.service
%postun tools
%if %{defined service_del_postun_without_restart}
@@ -1195,7 +1009,6 @@ fi
%service_del_postun_without_restart xen-dom0-modules.service
%service_del_postun_without_restart xenconsoled.service
%service_del_postun_without_restart xen-init-dom0.service
%service_del_postun_without_restart xen-qemu-dom0-disk-backend.service
%else
export DISABLE_RESTART_ON_UPDATE=yes
%service_del_postun xencommons.service
@@ -1205,9 +1018,6 @@ export DISABLE_RESTART_ON_UPDATE=yes
%service_del_postun xen-dom0-modules.service
%service_del_postun xenconsoled.service
%service_del_postun xen-init-dom0.service
%service_del_postun xen-qemu-dom0-disk-backend.service
%endif
%endif
%post libs -p /sbin/ldconfig

View File

@@ -1,137 +0,0 @@
#!/usr/bin/python3
#
# Copyright (C) 2014 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2.1 of the License, or (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this library. If not, see
# <http://www.gnu.org/licenses/>.
#
# Authors:
# Jim Fehlig <jfehlig@suse.com>
#
# Read native Xen configuration format, convert to libvirt domXML, and
# import (virsh define <xml>) into libvirt.
import sys
import os
import argparse
import re
from xml.etree import ElementTree
try:
import libvirt
except ImportError:
print('Unable to import the libvirt module. Is libvirt-python installed?')
sys.exit(1)
parser = argparse.ArgumentParser(description='Import Xen domain configuration into libvirt')
parser.add_argument('-c', '--convert-only', help='Convert Xen domain configuration into libvirt domXML, but do not import into libvirt', action='store_true', dest='convert_only')
parser.add_argument('-r', '--recursive', help='Operate recursivelly on all Xen domain configuration rooted at path', action='store_true')
parser.add_argument('-f', '--format', help='Format of Xen domain configuration. Supported formats are xm and sexpr', choices=['xm', 'sexpr'], default=None)
parser.add_argument('-v', '--verbose', help='Print information about the import process', action='store_true')
parser.add_argument('path', help='Path to Xen domain configuration')
def print_verbose(msg):
if args.verbose:
print(msg)
def check_config(path, config):
isbinary = os.system('file -b ' + path + ' | grep text > /dev/null')
if isbinary:
print('Skipping %s (not a valid Xen configuration file)' % path)
return 'unknown'
for line in config.splitlines():
if len(line) == 0 or line.startswith('#'):
continue
if line.startswith('<domain'):
# XML is not a supported conversion format
break
if line.startswith('(domain'):
print('Found sexpr formatted file %s' % path)
return 'sexpr'
if '=' in line:
print('Found xm formatted file %s' % path)
return 'xm'
break
print('Skipping %s (not a valid Xen configuration file)' % path)
return 'unknown'
def import_domain(conn, path, format=None, convert_only=False):
f = open(path, 'r')
config = f.read()
print_verbose('Xen domain configuration read from %s:\n %s' % (path, config))
if format is None:
format = check_config(path, config)
if format == 'sexpr':
print_verbose('scrubbing domid from configuration')
config = re.sub("\(domid [0-9]*\)", "", config)
print_verbose('scrubbed sexpr:\n %s' % config)
xml = conn.domainXMLFromNative('xen-sxpr', config, 0)
elif format == 'xm':
xml = conn.domainXMLFromNative('xen-xm', config, 0)
else:
# Return to continue on to next file (if recursive)
return
f.close()
# domUloader is no longer available in SLES12, replace with pygrub
tree = ElementTree.fromstring(xml)
bl = tree.find('.//bootloader')
if bl is not None and bl.text is not None and 'domUloader' in bl.text:
bl.text = 'pygrub'
xml = ElementTree.tostring(tree)
print_verbose('Successfully converted Xen domain configuration to '
'libvirt domXML:\n %s' % xml)
if convert_only:
print(xml)
else:
print_verbose('Importing converted libvirt domXML into libvirt...')
dom = conn.defineXML(xml.decode("utf-8"))
if dom is None:
print('Failed to define domain from converted domXML')
sys.exit(1)
print_verbose('domXML successfully imported into libvirt')
args = parser.parse_args()
path = args.path
# Connect to libvirt
conn = libvirt.open(None)
if conn is None:
print('Failed to open connection to the hypervisor')
sys.exit(1)
if args.recursive:
try:
for root, dirs, files in os.walk(path):
for name in files:
abs_name = os.path.join(root, name)
print_verbose('Processing file %s' % abs_name)
import_domain(conn, abs_name, args.format, args.convert_only)
except IOError:
print('Failed to open/read path %s' % path)
sys.exit(1)
else:
import_domain(conn, args.path, args.format, args.convert_only)

View File

@@ -0,0 +1,26 @@
Index: xen-4.20.0-testing/tools/hotplug/Linux/init.d/sysconfig.xencommons.in
===================================================================
--- xen-4.20.0-testing.orig/tools/hotplug/Linux/init.d/sysconfig.xencommons.in
+++ xen-4.20.0-testing/tools/hotplug/Linux/init.d/sysconfig.xencommons.in
@@ -73,7 +73,7 @@ XENSTORED_TRACE=
#XENSTORED_OOM_MEM_THRESHOLD=50
## Type: string
-## Default: @LIBEXEC@/boot/xenstore-stubdom.gz
+## Default: @LIBEXEC@/boot/xenstorepvh-stubdom.gz
#
# xenstore domain kernel.
# Only evaluated if XENSTORETYPE is "domain".
Index: xen-4.20.0-testing/tools/hotplug/Linux/launch-xenstore.in
===================================================================
--- xen-4.20.0-testing.orig/tools/hotplug/Linux/launch-xenstore.in
+++ xen-4.20.0-testing/tools/hotplug/Linux/launch-xenstore.in
@@ -93,7 +93,7 @@ test -f @CONFIG_DIR@/@CONFIG_LEAF_DIR@/x
}
[ "$XENSTORETYPE" = "domain" ] && {
- [ -z "$XENSTORE_DOMAIN_KERNEL" ] && XENSTORE_DOMAIN_KERNEL=@LIBEXEC@/boot/xenstore-stubdom.gz
+ [ -z "$XENSTORE_DOMAIN_KERNEL" ] && XENSTORE_DOMAIN_KERNEL=@LIBEXEC@/boot/xenstorepvh-stubdom.gz
XENSTORE_DOMAIN_ARGS="$XENSTORE_DOMAIN_ARGS --kernel $XENSTORE_DOMAIN_KERNEL"
[ -z "$XENSTORE_DOMAIN_SIZE" ] && XENSTORE_DOMAIN_SIZE=32
XENSTORE_DOMAIN_ARGS="$XENSTORE_DOMAIN_ARGS --memory $XENSTORE_DOMAIN_SIZE"

View File

@@ -67,7 +67,7 @@ Keep going if the event type and shutdown reason remains the same.
int fd;
uint8_t *config_data;
int config_len;
@@ -144,12 +147,24 @@ static int save_domain(uint32_t domid, i
@@ -143,12 +146,24 @@ static int save_domain(uint32_t domid, i
fprintf(stderr, "Failed to open temp file %s for writing\n", filename);
exit(EXIT_FAILURE);
}