commit 77814ee866e66c882313e6caa3053c93a33f6f5b Author: Jakub Bogusz <qbo...@pld-linux.org> Date: Tue Apr 23 05:36:02 2024 +0200
- updated to 4.18.1; new sonames, ocaml libxenlight and libxentoollog are gone pygrubfix.patch | 13 +- python-fixes.patch | 1816 ---------------------------------------------- xen-golang-32bit.patch | 44 +- xen-python_scripts.patch | 30 +- xen-systemd.patch | 6 +- xen.spec | 39 +- 6 files changed, 49 insertions(+), 1899 deletions(-) --- diff --git a/xen.spec b/xen.spec index 5c98b20..5495208 100644 --- a/xen.spec +++ b/xen.spec @@ -44,13 +44,13 @@ Summary: Xen - a virtual machine monitor Summary(pl.UTF-8): Xen - monitor maszyny wirtualnej Name: xen -Version: 4.17.3 +Version: 4.18.1 Release: 1 License: GPL v2, interface parts on BSD-like Group: Applications/System # for available versions see https://xenproject.org/xen-project-archives/ Source0: https://downloads.xenproject.org/release/xen/%{version}/%{name}-%{version}.tar.gz -# Source0-md5: 51a47f8f2a2a65274c3934957c1d03b2 +# Source0-md5: 4f9d75c15be09eaed7c71cd5785ff37a # used by stubdoms; Source10-19 versions set in stubdom/configure.ac Source10: %{xen_extfiles_url}/lwip-1.3.0.tar.gz # Source10-md5: 36cc57650cffda9a0269493be2a169bb @@ -69,8 +69,8 @@ Source18: %{xen_extfiles_url}/tpm_emulator-%{tpm_emulator_version}.tar.gz Source19: https://ftp.gnu.org/gnu/gmp/gmp-%{gmp_version}.tar.bz2 # Source19-md5: dd60683d7057917e34630b4a787932e8 # ipxe tag set in tools/firmware/etherboot/Makefile -Source20: %{xen_extfiles_url}/ipxe-git-3c040ad387099483102708bb1839110bc788cefb.tar.gz -# Source20-md5: 23ba00d5e2c5b4343d12665af73e1cb5 +Source20: %{xen_extfiles_url}/ipxe-git-1d1cf74a5e58811822bee4b3da3cff7282fcdfca.tar.gz +# Source20-md5: 0d0dc7451b47f2c7a2992bbec20bf4d0 Source35: xenconsoled.sysconfig Source37: xenstored.sysconfig Source38: xenstored.tmpfiles @@ -106,7 +106,6 @@ Patch15: gcc10.patch Patch17: %{name}-golang-32bit.patch Patch18: %{name}-gcc12.patch Patch19: gcc13.patch -Patch20: python-fixes.patch URL: http://www.xen.org/products/xenhyp.html BuildRequires: autoconf >= 2.67 %ifarch %{ix86} %{x8664} @@ -445,7 +444,6 @@ Nadzorca Xen w postaci, która może być uruchomiona wprost z firmware %endif %patch18 -p1 %patch19 -p1 -%patch20 -p1 # stubdom sources ln -s %{SOURCE10} %{SOURCE11} %{SOURCE12} %{SOURCE13} %{SOURCE14} stubdom @@ -458,7 +456,6 @@ ln -s %{SOURCE20} tools/firmware/etherboot/ipxe.tar.gz %{__sed} -i -e '1s,/usr/bin/env python$,%{__python3},; 1s,/usr/bin/python2$,%{__python3},' \ %endif tools/misc/xencov_split \ - tools/misc/xenpvnetboot \ tools/pygrub/src/pygrub \ tools/python/scripts/{convert-legacy-stream,verify-stream-v2} \ tools/xenmon/xenmon.py \ @@ -610,7 +607,7 @@ cp -p tools/pygrub/README _doc/README.pygrub # remove unneeded files %if %{with hypervisor} %{__mv} xen/xen-syms $RPM_BUILD_ROOT/boot/%{name}-syms-%{version} -%{__rm} $RPM_BUILD_ROOT/boot/xen-4.17.gz +%{__rm} $RPM_BUILD_ROOT/boot/xen-4.18.gz %{__rm} $RPM_BUILD_ROOT/boot/xen-4.gz %endif %{__rm} -r $RPM_BUILD_ROOT%{_docdir}/xen @@ -807,11 +804,11 @@ fi %files libs %defattr(644,root,root,755) %attr(755,root,root) %{_libdir}/libxenfsimage.so.*.*.* -%attr(755,root,root) %ghost %{_libdir}/libxenfsimage.so.4.17 +%attr(755,root,root) %ghost %{_libdir}/libxenfsimage.so.4.18 %attr(755,root,root) %{_libdir}/libxencall.so.*.* %attr(755,root,root) %ghost %{_libdir}/libxencall.so.1 %attr(755,root,root) %{_libdir}/libxenctrl.so.*.*.* -%attr(755,root,root) %ghost %{_libdir}/libxenctrl.so.4.17 +%attr(755,root,root) %ghost %{_libdir}/libxenctrl.so.4.18 %attr(755,root,root) %{_libdir}/libxendevicemodel.so.*.* %attr(755,root,root) %ghost %{_libdir}/libxendevicemodel.so.1 %attr(755,root,root) %{_libdir}/libxenevtchn.so.*.* @@ -821,21 +818,21 @@ fi %attr(755,root,root) %{_libdir}/libxengnttab.so.*.* %attr(755,root,root) %ghost %{_libdir}/libxengnttab.so.1 %attr(755,root,root) %{_libdir}/libxenguest.so.*.*.* -%attr(755,root,root) %ghost %{_libdir}/libxenguest.so.4.17 +%attr(755,root,root) %ghost %{_libdir}/libxenguest.so.4.18 %attr(755,root,root) %{_libdir}/libxenhypfs.so.*.* %attr(755,root,root) %ghost %{_libdir}/libxenhypfs.so.1 %attr(755,root,root) %{_libdir}/libxenlight.so.*.*.* -%attr(755,root,root) %ghost %{_libdir}/libxenlight.so.4.17 +%attr(755,root,root) %ghost %{_libdir}/libxenlight.so.4.18 %attr(755,root,root) %{_libdir}/libxenstat.so.*.*.* -%attr(755,root,root) %ghost %{_libdir}/libxenstat.so.4.17 +%attr(755,root,root) %ghost %{_libdir}/libxenstat.so.4.18 %attr(755,root,root) %{_libdir}/libxentoolcore.so.*.* %attr(755,root,root) %ghost %{_libdir}/libxentoolcore.so.1 %attr(755,root,root) %{_libdir}/libxentoollog.so.*.* %attr(755,root,root) %ghost %{_libdir}/libxentoollog.so.1 %attr(755,root,root) %{_libdir}/libxenvchan.so.*.*.* -%attr(755,root,root) %ghost %{_libdir}/libxenvchan.so.4.17 +%attr(755,root,root) %ghost %{_libdir}/libxenvchan.so.4.18 %attr(755,root,root) %{_libdir}/libxlutil.so.*.*.* -%attr(755,root,root) %ghost %{_libdir}/libxlutil.so.4.17 +%attr(755,root,root) %ghost %{_libdir}/libxlutil.so.4.18 %dir %{_libdir}/xenfsimage %dir %{_libdir}/xenfsimage/ext2fs-lib %dir %{_libdir}/xenfsimage/fat @@ -927,12 +924,8 @@ fi %attr(755,root,root) %{_libdir}/ocaml/xenctrl/dllxenctrl_stubs.so %dir %{_libdir}/ocaml/xeneventchn %attr(755,root,root) %{_libdir}/ocaml/xeneventchn/dllxeneventchn_stubs.so -%dir %{_libdir}/ocaml/xenlight -%attr(755,root,root) %{_libdir}/ocaml/xenlight/dllxenlight_stubs.so %dir %{_libdir}/ocaml/xenmmap %attr(755,root,root) %{_libdir}/ocaml/xenmmap/dllxenmmap_stubs.so -%dir %{_libdir}/ocaml/xentoollog -%attr(755,root,root) %{_libdir}/ocaml/xentoollog/dllxentoollog_stubs.so %files -n ocaml-xen-devel %defattr(644,root,root,755) @@ -952,18 +945,10 @@ fi %{_libdir}/ocaml/xenmmap/libxenmmap_stubs.a %{_libdir}/ocaml/xenmmap/xenmmap.a %{_libdir}/ocaml/xenmmap/xenmmap.cm[aix]* -%{_libdir}/ocaml/xenlight/META -%{_libdir}/ocaml/xenlight/libxenlight_stubs.a -%{_libdir}/ocaml/xenlight/xenlight.a -%{_libdir}/ocaml/xenlight/xenlight.cm[aix]* %dir %{_libdir}/ocaml/xenstore %{_libdir}/ocaml/xenstore/META %{_libdir}/ocaml/xenstore/xenstore.a %{_libdir}/ocaml/xenstore/*.cm[aixo]* -%{_libdir}/ocaml/xentoollog/META -%{_libdir}/ocaml/xentoollog/libxentoollog_stubs.a -%{_libdir}/ocaml/xentoollog/xentoollog.a -%{_libdir}/ocaml/xentoollog/*.cm[aixo]* %endif %if %{with python2} diff --git a/pygrubfix.patch b/pygrubfix.patch index 6ff2025..4909958 100644 --- a/pygrubfix.patch +++ b/pygrubfix.patch @@ -1,7 +1,6 @@ -diff -urNp -x '*.orig' xen-4.13.1.org/tools/pygrub/src/pygrub xen-4.13.1/tools/pygrub/src/pygrub ---- xen-4.13.1.org/tools/pygrub/src/pygrub 2021-03-25 22:42:14.797689878 +0100 -+++ xen-4.13.1/tools/pygrub/src/pygrub 2021-03-25 22:42:15.517685792 +0100 -@@ -129,6 +129,7 @@ def get_partition_offsets(file): +--- xen-4.18.1/tools/pygrub/src/pygrub.orig 2024-03-18 09:27:49.000000000 +0100 ++++ xen-4.18.1/tools/pygrub/src/pygrub 2024-04-22 20:02:33.313097814 +0200 +@@ -256,6 +256,7 @@ def get_partition_offsets(file): fd = os.open(file, os.O_RDONLY) buf = os.read(fd, 512) os.close(fd) @@ -9,15 +8,15 @@ diff -urNp -x '*.orig' xen-4.13.1.org/tools/pygrub/src/pygrub xen-4.13.1/tools/p for poff in (446, 462, 478, 494): # partition offsets # MBR contains a 16 byte descriptor per partition -@@ -138,6 +139,7 @@ def get_partition_offsets(file): - +@@ -265,6 +266,7 @@ def get_partition_offsets(file): + # offset == 0 implies this partition is not enabled if offset == 0: + offzerocount += 1 continue if type == FDISK_PART_SOLARIS or type == FDISK_PART_SOLARIS_OLD: -@@ -163,6 +165,9 @@ def get_partition_offsets(file): +@@ -290,6 +292,9 @@ def get_partition_offsets(file): # (e.g. grubs) may contain the same signature. if not part_offs: part_offs = [0] diff --git a/python-fixes.patch b/python-fixes.patch deleted file mode 100644 index 02df388..0000000 --- a/python-fixes.patch +++ /dev/null @@ -1,1816 +0,0 @@ -diff -urN xen-4.16.2.orig/tools/misc/Makefile xen-4.16.2/tools/misc/Makefile ---- xen-4.16.2.orig/tools/misc/Makefile 2022-08-18 13:47:46.000000000 +0200 -+++ xen-4.16.2/tools/misc/Makefile 2023-07-23 20:27:26.104773461 +0200 -@@ -13,7 +13,6 @@ - # Everything to be installed in regular bin/ - INSTALL_BIN-$(CONFIG_X86) += xen-cpuid - INSTALL_BIN-$(CONFIG_X86) += xen-detect --INSTALL_BIN += xencons - INSTALL_BIN += xencov_split - INSTALL_BIN += $(INSTALL_BIN-y) - -@@ -45,7 +44,6 @@ - TARGETS_ALL := $(INSTALL_BIN) $(INSTALL_SBIN) $(INSTALL_PRIVBIN) - - # Everything which only needs copying to install --TARGETS_COPY += xencons - TARGETS_COPY += xencov_split - TARGETS_COPY += xenpvnetboot - -diff -urN xen-4.16.2.orig/tools/misc/xencons xen-4.16.2/tools/misc/xencons ---- xen-4.16.2.orig/tools/misc/xencons 2023-07-23 20:27:00.747415202 +0200 -+++ xen-4.16.2/tools/misc/xencons 1970-01-01 01:00:00.000000000 +0100 -@@ -1,92 +0,0 @@ --#!/usr/bin/python2 -- --############################################## --# Console client for Xen guest OSes --# Copyright (c) 2004, K A Fraser --############################################## -- --import errno, os, signal, socket, struct, sys -- --from termios import * --# Indexes into termios.tcgetattr() list. --IFLAG = 0 --OFLAG = 1 --CFLAG = 2 --LFLAG = 3 --ISPEED = 4 --OSPEED = 5 --CC = 6 -- --def __child_death(signum, frame): -- global stop -- stop = True -- --def __recv_from_sock(sock): -- global stop -- stop = False -- while not stop: -- try: -- data = sock.recv(1024) -- except socket.error, error: -- if error[0] != errno.EINTR: -- raise -- else: -- try: -- os.write(1, data) -- except os.error, error: -- if error[0] != errno.EINTR: -- raise -- os.wait() -- --def __send_to_sock(sock): -- while 1: -- try: -- data = os.read(0,1024) -- except os.error, error: -- if error[0] != errno.EINTR: -- raise -- else: -- if ord(data[0]) == ord(']')-64: -- break -- try: -- sock.send(data) -- except socket.error, error: -- if error[0] == errno.EPIPE: -- sys.exit(0) -- if error[0] != errno.EINTR: -- raise -- sys.exit(0) -- --def connect(host,port): -- sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM, 0) -- sock.connect((host,port)) -- -- oattrs = tcgetattr(0) -- nattrs = tcgetattr(0) -- nattrs[IFLAG] = nattrs[IFLAG] & ~(BRKINT | ICRNL | INPCK | ISTRIP | IXON) -- nattrs[OFLAG] = nattrs[OFLAG] & ~(OPOST) -- nattrs[CFLAG] = nattrs[CFLAG] & ~(CSIZE | PARENB) -- nattrs[CFLAG] = nattrs[CFLAG] | CS8 -- nattrs[LFLAG] = nattrs[LFLAG] & ~(ECHO | ICANON | IEXTEN | ISIG) -- nattrs[CC][VMIN] = 1 -- nattrs[CC][VTIME] = 0 -- -- if os.fork(): -- signal.signal(signal.SIGCHLD, __child_death) -- print "************ REMOTE CONSOLE: CTRL-] TO QUIT ********" -- tcsetattr(0, TCSAFLUSH, nattrs) -- try: -- __recv_from_sock(sock) -- finally: -- tcsetattr(0, TCSAFLUSH, oattrs) -- print -- print "************ REMOTE CONSOLE EXITED *****************" -- else: -- signal.signal(signal.SIGPIPE, signal.SIG_IGN) -- __send_to_sock(sock) -- --if __name__ == '__main__': -- if len(sys.argv) != 3: -- print sys.argv[0] + " <host> <port>" -- sys.exit(1) -- connect(str(sys.argv[1]),int(sys.argv[2])) -diff -urN xen-4.16.2.orig/tools/misc/xencov_split xen-4.16.2/tools/misc/xencov_split ---- xen-4.16.2.orig/tools/misc/xencov_split 2023-07-23 20:27:00.747415202 +0200 -+++ xen-4.16.2/tools/misc/xencov_split 2023-07-23 20:27:33.481877687 +0200 -@@ -94,4 +94,3 @@ - sys.exit(1) - except KeyboardInterrupt: - sys.exit(1) -- -diff -urN xen-4.16.2.orig/tools/pygrub/Makefile xen-4.16.2/tools/pygrub/Makefile ---- xen-4.16.2.orig/tools/pygrub/Makefile 2022-08-18 13:47:46.000000000 +0200 -+++ xen-4.16.2/tools/pygrub/Makefile 2023-07-23 20:27:33.481877687 +0200 -@@ -6,19 +6,22 @@ - PY_LDFLAGS = $(SHLIB_LDFLAGS) $(APPEND_LDFLAGS) - INSTALL_LOG = build/installed_files.txt - -+setup.py = CC="$(CC)" CFLAGS="$(PY_CFLAGS)" LDSHARED="$(CC)" LDFLAGS="$(PY_LDFLAGS)" \ -+ $(PYTHON) setup.py -+ - .PHONY: all - all: build - .PHONY: build - build: -- CC="$(CC)" CFLAGS="$(PY_CFLAGS)" LDSHARED="$(CC)" LDFLAGS="$(PY_LDFLAGS)" $(PYTHON) setup.py build -+ $(setup.py) build - - .PHONY: install - install: all - $(INSTALL_DIR) $(DESTDIR)/$(bindir) -- CC="$(CC)" CFLAGS="$(PY_CFLAGS)" LDSHARED="$(CC)" \ -- LDFLAGS="$(PY_LDFLAGS)" $(PYTHON) setup.py install \ -- --record $(INSTALL_LOG) $(PYTHON_PREFIX_ARG) \ -- --root="$(DESTDIR)" --install-scripts=$(LIBEXEC_BIN) --force -+ $(INSTALL_DIR) $(DESTDIR)/$(LIBEXEC_BIN) -+ $(setup.py) install --record $(INSTALL_LOG) $(PYTHON_PREFIX_ARG) \ -+ --root="$(DESTDIR)" --force -+ $(INSTALL_PYTHON_PROG) src/pygrub $(DESTDIR)/$(LIBEXEC_BIN)/pygrub - set -e; if [ $(bindir) != $(LIBEXEC_BIN) -a \ - "`readlink -f $(DESTDIR)/$(bindir)`" != \ - "`readlink -f $(LIBEXEC_BIN)`" ]; then \ -diff -urN xen-4.16.2.orig/tools/pygrub/setup.py xen-4.16.2/tools/pygrub/setup.py ---- xen-4.16.2.orig/tools/pygrub/setup.py 2022-08-18 13:47:46.000000000 +0200 -+++ xen-4.16.2/tools/pygrub/setup.py 2023-07-23 20:27:33.481877687 +0200 -@@ -23,7 +23,6 @@ - author_email='ka...@redhat.com', - license='GPL', - package_dir={'grub': 'src', 'fsimage': 'src'}, -- scripts = ["src/pygrub"], - packages=pkgs, - ext_modules = [ xenfsimage ] - ) -diff -urN xen-4.16.2.orig/tools/pygrub/src/ExtLinuxConf.py xen-4.16.2/tools/pygrub/src/ExtLinuxConf.py ---- xen-4.16.2.orig/tools/pygrub/src/ExtLinuxConf.py 2022-08-18 13:47:46.000000000 +0200 -+++ xen-4.16.2/tools/pygrub/src/ExtLinuxConf.py 2023-07-23 20:27:33.482877701 +0200 -@@ -207,7 +207,7 @@ - "f1": None, - "f2": None, - } -- -+ - if __name__ == "__main__": - if len(sys.argv) < 2: - raise RuntimeError("Need a configuration file to read") -diff -urN xen-4.16.2.orig/tools/pygrub/src/fsimage/fsimage.c xen-4.16.2/tools/pygrub/src/fsimage/fsimage.c ---- xen-4.16.2.orig/tools/pygrub/src/fsimage/fsimage.c 2022-08-18 13:47:46.000000000 +0200 -+++ xen-4.16.2/tools/pygrub/src/fsimage/fsimage.c 2023-07-23 20:27:33.482877701 +0200 -@@ -31,7 +31,7 @@ - fsi_t *fs; - } fsimage_fs_t; - --typedef struct fsimage_file { -+typedef struct fsimage_file { - PyObject_HEAD - fsimage_fs_t *fs; - fsi_file_t *file; -@@ -47,7 +47,7 @@ - ssize_t bytesread = 0; - PyObject * buffer; - -- if (!PyArg_ParseTupleAndKeywords(args, kwargs, "|iL", kwlist, -+ if (!PyArg_ParseTupleAndKeywords(args, kwargs, "|iL", kwlist, - &size, &offset)) - return (NULL); - -@@ -62,7 +62,7 @@ - - if (buffer == NULL) - return (NULL); -- -+ - while (1) { - int err; - void *buf = -@@ -255,7 +255,7 @@ - uint64_t offset = 0; - fsimage_fs_t *fs; - -- if (!PyArg_ParseTupleAndKeywords(args, kwargs, "s|Ls", kwlist, -+ if (!PyArg_ParseTupleAndKeywords(args, kwargs, "s|Ls", kwlist, - &name, &offset, &options)) - return (NULL); - -diff -urN xen-4.16.2.orig/tools/pygrub/src/GrubConf.py xen-4.16.2/tools/pygrub/src/GrubConf.py ---- xen-4.16.2.orig/tools/pygrub/src/GrubConf.py 2022-08-18 13:47:46.000000000 +0200 -+++ xen-4.16.2/tools/pygrub/src/GrubConf.py 2023-07-23 20:27:33.482877701 +0200 -@@ -95,7 +95,7 @@ - self.title = title.strip() - - def __repr__(self): -- return ("title: %s\n" -+ return ("title: %s\n" - " root: %s\n" - " kernel: %s\n" - " args: %s\n" -@@ -140,7 +140,7 @@ - class GrubImage(_GrubImage): - def __init__(self, title, lines): - _GrubImage.__init__(self, title, lines) -- -+ - def set_from_line(self, line, replace = None): - (com, arg) = grub_exact_split(line, 2) - -@@ -265,7 +265,7 @@ - class GrubConfigFile(_GrubConfigFile): - def __init__(self, fn = None): - _GrubConfigFile.__init__(self,fn) -- -+ - def new_image(self, title, lines): - return GrubImage(title, lines) - -@@ -297,7 +297,7 @@ - img = [] - title = l[6:] - continue -- -+ - if img is not None: - img.append(l) - continue -@@ -310,7 +310,7 @@ - logging.info("Ignored directive %s" %(com,)) - else: - logging.warning("Unknown directive %s" %(com,)) -- -+ - if img: - self.add_image(GrubImage(title, img)) - -@@ -322,7 +322,7 @@ - com="set:" + com - m = re.match("([\"\'])(.*)\\1", arg) - if m is not None: -- arg=m.group(2) -+ arg=m.group(2) - return (com,arg) - - class Grub2Image(_GrubImage): -@@ -334,7 +334,7 @@ - - if com == "set": - (com,arg) = grub2_handle_set(arg) -- -+ - if com in self.commands: - if self.commands[com] is not None: - setattr(self, self.commands[com], arg.strip()) -@@ -351,7 +351,7 @@ - else: - self.lines.pop(replace) - self.lines.insert(replace, line) -- -+ - commands = {'set:root': 'root', - 'linux': 'kernel', - 'linux16': 'kernel', -@@ -360,14 +360,14 @@ - 'echo': None, - 'insmod': None, - 'search': None} -- -+ - class Grub2ConfigFile(_GrubConfigFile): - def __init__(self, fn = None): - _GrubConfigFile.__init__(self, fn) -- -+ - def new_image(self, title, lines): - return Grub2Image(title, lines) -- -+ - def parse(self, buf = None): - if buf is None: - if self.filename is None: -@@ -431,10 +431,10 @@ - continue - - (com, arg) = grub_exact_split(l, 2) -- -+ - if com == "set": - (com,arg) = grub2_handle_set(arg) -- -+ - if com in self.commands: - if self.commands[com] is not None: - arg_strip = arg.strip() -@@ -448,7 +448,7 @@ - pass - else: - logging.warning("Unknown directive %s" %(com,)) -- -+ - if img is not None: - raise RuntimeError("syntax error: end of file with open menuentry(%d %s)" % (len(img),img)) - -@@ -466,7 +466,7 @@ - 'if': None, - 'fi': None, - } -- -+ - if __name__ == "__main__": - if len(sys.argv) < 3: - raise RuntimeError('Need a grub version ("grub" or "grub2") and a grub.conf or grub.cfg to read') ---- xen-4.17.3/tools/pygrub/src/pygrub.orig 2024-04-05 06:22:57.454008289 +0200 -+++ xen-4.17.3/tools/pygrub/src/pygrub 2024-04-05 06:27:33.762543552 +0200 -@@ -173,7 +173,7 @@ def enable_cursor(ison): - val = 2 - else: - val = 0 -- -+ - try: - curses.curs_set(val) - except _curses.error: -@@ -241,7 +241,7 @@ FDISK_PART_GPT=0xee - def get_partition_offsets(file): - image_type = identify_disk_image(file) - if image_type == DISK_TYPE_RAW: -- # No MBR: assume whole disk filesystem, which is like a -+ # No MBR: assume whole disk filesystem, which is like a - # single partition starting at 0 - return [0] - elif image_type == DISK_TYPE_HYBRIDISO: -@@ -263,7 +263,7 @@ def get_partition_offsets(file): - partbuf = buf[poff:poff+16] - offset = struct.unpack("<L", partbuf[8:12])[0] * SECTOR_SIZE - type = struct.unpack("<B", partbuf[4:5])[0] -- -+ - # offset == 0 implies this partition is not enabled - if offset == 0: - offzerocount += 1 -@@ -303,7 +303,7 @@ class GrubLineEditor(curses.textpad.Text - screen.noutrefresh() - win = curses.newwin(1, 74, startx, starty + 2) - curses.textpad.Textbox.__init__(self, win) -- -+ - self.line = list(line) - self.pos = len(line) - self.cancelled = False -@@ -369,7 +369,7 @@ class GrubLineEditor(curses.textpad.Text - if self.cancelled: - return None - return string.join(self.line, "") -- -+ - - class Grub: - ENTRY_WIN_LINES = 8 -@@ -393,7 +393,7 @@ class Grub: - self.entry_win = curses.newwin(Grub.ENTRY_WIN_LINES + 2, 74, 2, 1) - self.text_win = curses.newwin(10, 70, 12, 5) - curses.def_prog_mode() -- -+ - curses.reset_prog_mode() - self.screen.erase() - -@@ -411,7 +411,7 @@ class Grub: - self.start_image = self.selected_image - if self.selected_image < self.start_image: - self.start_image = self.selected_image -- -+ - for y in range(self.start_image, len(self.cf.images)): - i = self.cf.images[y] - if y > self.start_image + maxy: -@@ -461,7 +461,7 @@ class Grub: - l = img.lines[idx].expandtabs().ljust(70) - if len(l) > 70: - l = l[:69] + ">" -- -+ - self.entry_win.addstr(idp, 2, l) - if idx == curline: - self.entry_win.attroff(curses.A_REVERSE) -@@ -499,7 +499,7 @@ class Grub: - self.command_line_mode() - if self.isdone: - return -- -+ - # bound at the top and bottom - if curline < 0: - curline = 0 -@@ -532,7 +532,7 @@ class Grub: - lines = [] - while 1: - t = GrubLineEditor(self.screen, y, 2) -- enable_cursor(True) -+ enable_cursor(True) - ret = t.edit() - if ret: - if ret in ("quit", "return"): -@@ -542,7 +542,7 @@ class Grub: - lines.append(ret) - continue - -- # if we got boot, then we want to boot the entered image -+ # if we got boot, then we want to boot the entered image - img = self.cf.new_image("entered", lines) - self.cf.add_image(img) - self.selected_image = len(self.cf.images) - 1 -@@ -555,7 +555,7 @@ class Grub: - def read_config(self, fn, fs = None): - """Read the given file to parse the config. If fs = None, then - we're being given a raw config file rather than a disk image.""" -- -+ - if not os.access(fn, os.R_OK): - raise RuntimeError("Unable to access %s" %(fn,)) - -@@ -631,7 +631,7 @@ class Grub: - while not self.isdone: - self.run_main(timeout) - timeout = -1 -- -+ - return self.selected_image - - def run_main(self, timeout = -1): -@@ -661,7 +661,7 @@ class Grub: - self.start_image = 0 - while (timeout == -1 or mytime < int(timeout)): - draw() -- if timeout != -1 and mytime != -1: -+ if timeout != -1 and mytime != -1: - self.screen.addstr(20, 5, "Will boot selected entry in %2d seconds" - %(int(timeout) - mytime)) - else: -@@ -732,7 +732,7 @@ class Grub: - self.selected_image = 0 - elif self.selected_image >= len(self.cf.images): - self.selected_image = len(self.cf.images) - 1 -- -+ - def get_entry_idx(cf, entry): - # first, see if the given entry is numeric - try: -@@ -820,10 +820,10 @@ def sniff_solaris(fs, cfg): - # Unpleasant. Typically we'll have 'root=foo -k' or 'root=foo /kernel -k', - # and we need to maintain Xen properties (root= and ip=) and the kernel - # before any user args. -- -+ - xenargs = "" - userargs = "" -- -+ - if not cfg["args"]: - cfg["args"] = cfg["kernel"] - else: -@@ -835,7 +835,7 @@ def sniff_solaris(fs, cfg): - cfg["args"] = xenargs + " " + cfg["kernel"] + " " + userargs - - return cfg -- -+ - def sniff_netware(fs, cfg): - if not fs.file_exists("/nwserver/xnloader.sys"): - return cfg -@@ -852,7 +852,7 @@ def format_sxp(kernel, ramdisk, args): - if args: - s += "(args %s)" % repr(args) - return s -- -+ - def format_simple(kernel, ramdisk, args, sep): - for check in (kernel, ramdisk, args): - if check is not None and sep in check: -@@ -867,7 +867,7 @@ def format_simple(kernel, ramdisk, args, - - if __name__ == "__main__": - sel = None -- -+ - def usage(): - print("Usage: %s [-q|--quiet] [-i|--interactive] [-l|--list-entries] [-n|--not-really] [--output=] [--kernel=] [--ramdisk=] [--args=] [--entry=] [--output-directory=] [--output-format=sxp|simple|simple0] [--runas=] [--offset=] <image>" %(sys.argv[0],), file=sys.stderr) - -@@ -1113,4 +1113,4 @@ if __name__ == "__main__": - os.write(fd, ostring) - else: - os.write(fd, ostring.encode()) -- -+ -diff -urN xen-4.16.2.orig/tools/python/Makefile xen-4.16.2/tools/python/Makefile ---- xen-4.16.2.orig/tools/python/Makefile 2022-08-18 13:47:46.000000000 +0200 -+++ xen-4.16.2/tools/python/Makefile 2023-07-23 20:27:33.483877715 +0200 -@@ -36,7 +36,7 @@ - - .PHONY: test - test: -- LD_LIBRARY_PATH=$$(readlink -f ../libs/ctrl):$$(readlink -f ../xenstore) $(PYTHON) -m unittest discover -+ LD_LIBRARY_PATH=$$(readlink -f ../libs/ctrl):$$(readlink -f ../xenstore) $(PYTHON) -m unittest discover -v - - .PHONY: clean - clean: -diff -urN xen-4.16.2.orig/tools/python/pylintrc xen-4.16.2/tools/python/pylintrc ---- xen-4.16.2.orig/tools/python/pylintrc 2022-08-18 13:47:46.000000000 +0200 -+++ xen-4.16.2/tools/python/pylintrc 1970-01-01 01:00:00.000000000 +0100 -@@ -1,307 +0,0 @@ --# lint Python modules using external checkers. --# --# This is the main checker controling the other ones and the reports --# generation. It is itself both a raw checker and an astng checker in order --# to: --# * handle message activation / deactivation at the module level --# * handle some basic but necessary stats'data (number of classes, methods...) --# --# This checker also defines the following reports: --# * R0001: Total errors / warnings --# * R0002: % errors / warnings by module --# * R0003: Messages --# * R0004: Global evaluation --# --[MASTER] --# Add <file or directory> to the black list. It should be a base name, not a --# path. You may set this option multiple times. --ignore=CVS -- --# Pickle collected data for later comparisons. --persistent=yes -- --# Set the cache size for astng objects. --cache-size=500 -- -- -- --[REPORTS] --# Tells wether to display a full report or only the messages --reports=yes -- --# Use HTML as output format instead of text --html=no -- --# Use a parseable text output format, so your favorite text editor will be able --# to jump to the line corresponding to a message. --parseable=no -- --# Colorizes text output using ansi escape codes --color=no -- --# Put messages in a separate file for each module / package specified on the --# command line instead of printing them on stdout. Reports (if any) will be --# written in a file name "pylint_global.[txt|html]". --files-output=no -- --# Python expression which should return a note less than 10 (10 is the highest --# note).You have access to the variables errors warning, statement which --# respectivly contain the number of errors / warnings messages and the total --# number of statements analyzed. This is used by the global evaluation report --# (R0004). --evaluation=10.0 - ((float(5 * error + warning + refactor + convention) / statement) * 10) -- --# Add a comment according to your evaluation note. This is used by the global --# evaluation report (R0004). --comment=no -- --# Include message's id in output --include-ids=yes -- -- -- --# checks for --# * unused variables / imports --# * undefined variables --# * redefinition of variable from builtins or from an outer scope --# * use of variable before assigment --# --[VARIABLES] --# Enable / disable this checker --enable-variables=yes -- --# Tells wether we should check for unused import in __init__ files. --init-import=no -- --# List of variable names used for dummy variables (i.e. not used). --dummy-variables=_,_1,_2,_3,_4,_5,dummy -- -- -- --# checks for : --# * doc strings --# * modules / classes / functions / methods / arguments / variables name --# * number of arguments, local variables, branchs, returns and statements in --# functions, methods --# * required module attributes --# * dangerous default values as arguments --# * redefinition of function / method / class --# * uses of the global statement --# --# This checker also defines the following reports: --# * R0101: Statistics by type --# --[BASIC] --# Enable / disable this checker --enable-basic=yes -- --# Required attributes for module, separated by a comma --required-attributes= -- --# Regular expression which should only match functions or classes name which do --# not require a docstring --no-docstring-rgx=.* -- --# Minimal length for module / class / function / method / argument / variable --# names --min-name-length=1 -- --# Regular expression which should only match correct module names --module-rgx=(([a-z_][a-z0-9_]*)|([A-Z][a-zA-Z0-9]+))$ -- --# Regular expression which should only match correct class names --class-rgx=[A-Z_][a-zA-Z0-9]+$ -- --# Regular expression which should only match correct function names --function-rgx=[a-z_][A-Za-z0-9_]*$ -- --# Regular expression which should only match correct method names --method-rgx=[a-z_][A-Za-z0-9_]*$ -- --# Regular expression which should only match correct argument names --argument-rgx=[a-z_][A-Za-z0-9_]*$ -- --# Regular expression which should only match correct variable names --variable-rgx=[a-z_][A-Za-z0-9_]*$ -- --# Good variable names which should always be accepted, separated by a comma --good-names=i,j,k,ex,Run,_ -- --# Bad variable names which should always be refused, separated by a comma --bad-names=foo,bar,baz,toto,tutu,tata -- --# List of builtins function names that should not be used, separated by a comma --bad-functions=apply,input -- -- -- --# checks for sign of poor/misdesign: --# * number of methods, attributes, local variables... --# * size, complexity of functions, methods --# --[DESIGN] --# Enable / disable this checker --enable-design=yes -- --# Maximum number of arguments for function / method --max-args=15 -- --# Maximum number of locals for function / method body --max-locals=15 -- --# Maximum number of return / yield for function / method body --max-returns=6 -- --# Maximum number of branch for function / method body --max-branchs=12 -- --# Maximum number of statements in function / method body --max-statements=50 -- --# Maximum number of parents for a class (see R0901). --max-parents=7 -- --# Maximum number of attributes for a class (see R0902). --max-attributes=7 -- --# Minimum number of public methods for a class (see R0903). --min-public-methods=2 -- --# Maximum number of public methods for a class (see R0904). --max-public-methods=20 -- -- -- --# checks for : --# * methods without self as first argument --# * overriden methods signature --# * access only to existant members via self --# * attributes not defined in the __init__ method --# * supported interfaces implementation --# * unreachable code --# --[CLASSES] --# Enable / disable this checker --enable-classes=yes -- --# List of interface methods to ignore, separated by a comma. This is used for --# instance to not check methods defines in Zope's Interface base class. --ignore-iface-methods=isImplementedBy,deferred,extends,names,namesAndDescriptions,queryDescriptionFor,getBases,getDescriptionFor,getDoc,getName,getTaggedValue,getTaggedValueTags,isEqualOrExtendedBy,setTaggedValue,isImplementedByInstancesOf,adaptWith,is_implemented_by -- --# Tells wether missing members accessed in mixin class should be ignored. A --# mixin class is detected if its name ends with "mixin" (case insensitive). --ignore-mixin-members=yes -- -- -- --# checks for --# * external modules dependencies --# * relative / wildcard imports --# * cyclic imports --# * uses of deprecated modules --# --# This checker also defines the following reports: --# * R0401: External dependencies --# * R0402: Modules dependencies graph --# --[IMPORTS] --# Enable / disable this checker --enable-imports=no -- --# Deprecated modules which should not be used, separated by a comma --deprecated-modules=regsub,string,TERMIOS,Bastion,rexec -- --# Create a graph of every (i.e. internal and external) dependencies in the given --# file (report R0402 must not be disabled) --import-graph= -- --# Create a graph of external dependencies in the given file (report R0402 must --# not be disabled) --ext-import-graph= -- --# Create a graph of internal dependencies in the given file (report R0402 must --# not be disabled) --int-import-graph= -- -- -- --# checks for --# * excepts without exception filter --# * string exceptions --# --[EXCEPTIONS] --# Enable / disable this checker --enable-exceptions=yes -- -- -- --# checks for : --# * unauthorized constructions --# * strict indentation --# * line length --# * use of <> instead of != --# --[FORMAT] --# Enable / disable this checker --enable-format=no -- --# Maximum number of characters on a single line. --max-line-length=80 -- --# Maximum number of lines in a module --max-module-lines=1000 -- --# String used as indentation unit. This is usually " " (4 spaces) or "\t" (1 tab). --indent-string=' ' -- -- -- --# does not check anything but gives some raw metrics : --# * total number of lines --# * total number of code lines --# * total number of docstring lines --# * total number of comments lines --# * total number of empty lines --# --# This checker also defines the following reports: --# * R0701: Raw metrics --# --[METRICS] --# Enable / disable this checker --enable-metrics=yes -- -- -- --# checks for: --# * warning notes in the code like FIXME, XXX --# * PEP 263: source code with non ascii character but no encoding declaration --# --[MISCELLANEOUS] --# Enable / disable this checker --enable-miscellaneous=yes -- --# List of note tags to take in consideration, separated by a comma. Default to --# FIXME, XXX, TODO --notes=FIXME,XXX,TODO -- -- -- --# checks for similarities and duplicated code. This computation may be --# memory / CPU intensive, so you should disable it if you experiments some --# problems. --# --# This checker also defines the following reports: --# * R0801: Duplication --# --[SIMILARITIES] --# Enable / disable this checker --enable-similarities=yes -- --# Minimum lines number of a similarity. --min-similarity-lines=4 -- --# Ignore comments when computing similarities. --ignore-comments=yes -- -- -- -diff -urN xen-4.16.2.orig/tools/python/xen/lowlevel/xc/xc.c xen-4.16.2/tools/python/xen/lowlevel/xc/xc.c ---- xen-4.16.2.orig/tools/python/xen/lowlevel/xc/xc.c 2022-08-18 13:47:46.000000000 +0200 -+++ xen-4.16.2/tools/python/xen/lowlevel/xc/xc.c 2023-07-23 20:27:33.484877729 +0200 -@@ -1,6 +1,6 @@ - /****************************************************************************** - * Xc.c -- * -+ * - * Copyright (c) 2003-2004, K A Fraser (University of Cambridge) - */ - -@@ -107,7 +107,7 @@ - - if ( xc_domain_dumpcore(self->xc_handle, dom, corefile) != 0 ) - return pyxc_error_to_exception(self->xc_handle); -- -+ - Py_INCREF(zero); - return zero; - } -@@ -142,7 +142,7 @@ - return NULL; - if ( pyhandle != NULL ) - { -- if ( !PyList_Check(pyhandle) || -+ if ( !PyList_Check(pyhandle) || - (PyList_Size(pyhandle) != sizeof(xen_domain_handle_t)) ) - goto out_exception; - -@@ -190,7 +190,7 @@ - - if (xc_domain_max_vcpus(self->xc_handle, dom, max) != 0) - return pyxc_error_to_exception(self->xc_handle); -- -+ - Py_INCREF(zero); - return zero; - } -@@ -225,7 +225,7 @@ - - if ( xc_domain_shutdown(self->xc_handle, dom, reason) != 0 ) - return pyxc_error_to_exception(self->xc_handle); -- -+ - Py_INCREF(zero); - return zero; - } -@@ -257,7 +257,7 @@ - - static char *kwd_list[] = { "domid", "vcpu", "cpumap", NULL }; - -- if ( !PyArg_ParseTupleAndKeywords(args, kwds, "i|iO", kwd_list, -+ if ( !PyArg_ParseTupleAndKeywords(args, kwds, "i|iO", kwd_list, - &dom, &vcpu, &cpulist) ) - return NULL; - -@@ -271,7 +271,7 @@ - - if ( (cpulist != NULL) && PyList_Check(cpulist) ) - { -- for ( i = 0; i < PyList_Size(cpulist); i++ ) -+ for ( i = 0; i < PyList_Size(cpulist); i++ ) - { - long cpu = PyLongOrInt_AsLong(PyList_GetItem(cpulist, i)); - if ( cpu < 0 || cpu >= nr_cpus ) -@@ -284,7 +284,7 @@ - cpumap[cpu / 8] |= 1 << (cpu % 8); - } - } -- -+ - if ( xc_vcpu_setaffinity(self->xc_handle, dom, vcpu, cpumap, - NULL, XEN_VCPUAFFINITY_HARD) != 0 ) - { -@@ -292,7 +292,7 @@ - return pyxc_error_to_exception(self->xc_handle); - } - Py_INCREF(zero); -- free(cpumap); -+ free(cpumap); - return zero; - } - -@@ -306,7 +306,7 @@ - if (!PyArg_ParseTuple(args, "iO", &dom, &pyhandle)) - return NULL; - -- if ( !PyList_Check(pyhandle) || -+ if ( !PyList_Check(pyhandle) || - (PyList_Size(pyhandle) != sizeof(xen_domain_handle_t)) ) - { - goto out_exception; -@@ -322,7 +322,7 @@ - - if (xc_domain_sethandle(self->xc_handle, dom, handle) < 0) - return pyxc_error_to_exception(self->xc_handle); -- -+ - Py_INCREF(zero); - return zero; - -@@ -344,7 +344,7 @@ - xc_dominfo_t *info; - - static char *kwd_list[] = { "first_dom", "max_doms", NULL }; -- -+ - if ( !PyArg_ParseTupleAndKeywords(args, kwds, "|ii", kwd_list, - &first_dom, &max_doms) ) - return NULL; -@@ -417,7 +417,7 @@ - int nr_cpus; - - static char *kwd_list[] = { "domid", "vcpu", NULL }; -- -+ - if ( !PyArg_ParseTupleAndKeywords(args, kwds, "i|i", kwd_list, - &dom, &vcpu) ) - return NULL; -@@ -472,7 +472,7 @@ - int param; - uint64_t value; - -- static char *kwd_list[] = { "domid", "param", NULL }; -+ static char *kwd_list[] = { "domid", "param", NULL }; - if ( !PyArg_ParseTupleAndKeywords(args, kwds, "ii", kwd_list, - &dom, ¶m) ) - return NULL; -@@ -492,7 +492,7 @@ - int param; - uint64_t value; - -- static char *kwd_list[] = { "domid", "param", "value", NULL }; -+ static char *kwd_list[] = { "domid", "param", "value", NULL }; - if ( !PyArg_ParseTupleAndKeywords(args, kwds, "iiL", kwd_list, - &dom, ¶m, &value) ) - return NULL; -@@ -662,7 +662,7 @@ - - if ( rc < 0 ) - { -- free(sdev_array); -+ free(sdev_array); - return pyxc_error_to_exception(self->xc_handle); - } - -@@ -785,7 +785,7 @@ - - static char *kwd_list[] = { "domid", "bus", "dev", "func", "enable", NULL }; - -- if ( !PyArg_ParseTupleAndKeywords(args, kwds, "iiiii", kwd_list, -+ if ( !PyArg_ParseTupleAndKeywords(args, kwds, "iiiii", kwd_list, - &dom, &bus, &dev, &func, &enable) ) - return NULL; - -@@ -900,7 +900,7 @@ - "nr_nodes", pinfo.nr_nodes, - "threads_per_core", pinfo.threads_per_core, - "cores_per_socket", pinfo.cores_per_socket, -- "nr_cpus", pinfo.nr_cpus, -+ "nr_cpus", pinfo.nr_cpus, - "total_memory", pages_to_kib(pinfo.total_pages), - "free_memory", pages_to_kib(pinfo.free_pages), - "scrub_memory", pages_to_kib(pinfo.scrub_pages), -@@ -1190,13 +1190,13 @@ - - static char *kwd_list[] = { "dom", "op", NULL }; - -- if ( !PyArg_ParseTupleAndKeywords(args, kwds, "i|i", kwd_list, -+ if ( !PyArg_ParseTupleAndKeywords(args, kwds, "i|i", kwd_list, - &dom, &op) ) - return NULL; -- -+ - if ( xc_shadow_control(xc->xc_handle, dom, op, NULL, 0) < 0 ) - return pyxc_error_to_exception(xc->xc_handle); -- -+ - Py_INCREF(zero); - return zero; - } -@@ -1213,26 +1213,26 @@ - - static char *kwd_list[] = { "dom", "mb", NULL }; - -- if ( !PyArg_ParseTupleAndKeywords(args, kwds, "i|i", kwd_list, -+ if ( !PyArg_ParseTupleAndKeywords(args, kwds, "i|i", kwd_list, - &dom, &mbarg) ) - return NULL; -- -- if ( mbarg < 0 ) -+ -+ if ( mbarg < 0 ) - op = XEN_DOMCTL_SHADOW_OP_GET_ALLOCATION; -- else -+ else - { - mb = mbarg; - op = XEN_DOMCTL_SHADOW_OP_SET_ALLOCATION; - } - if ( xc_shadow_control(xc->xc_handle, dom, op, &mb, 0) < 0 ) - return pyxc_error_to_exception(xc->xc_handle); -- -+ - mbarg = mb; - return Py_BuildValue("i", mbarg); - } - - static PyObject *pyxc_sched_id_get(XcObject *self) { -- -+ - int sched_id; - if (xc_sched_id(self->xc_handle, &sched_id) != 0) - return PyErr_SetFromErrno(xc_error_obj); -@@ -1250,10 +1250,10 @@ - static char *kwd_list[] = { "domid", "weight", "cap", NULL }; - static char kwd_type[] = "I|HH"; - struct xen_domctl_sched_credit sdom; -- -+ - weight = 0; - cap = (uint16_t)~0U; -- if( !PyArg_ParseTupleAndKeywords(args, kwds, kwd_type, kwd_list, -+ if( !PyArg_ParseTupleAndKeywords(args, kwds, kwd_type, kwd_list, - &domid, &weight, &cap) ) - return NULL; - -@@ -1271,10 +1271,10 @@ - { - uint32_t domid; - struct xen_domctl_sched_credit sdom; -- -+ - if( !PyArg_ParseTuple(args, "I", &domid) ) - return NULL; -- -+ - if ( xc_sched_credit_domain_get(self->xc_handle, domid, &sdom) != 0 ) - return pyxc_error_to_exception(self->xc_handle); - -@@ -1335,7 +1335,7 @@ - - if (xc_domain_setmaxmem(self->xc_handle, dom, maxmem_kb) != 0) - return pyxc_error_to_exception(self->xc_handle); -- -+ - Py_INCREF(zero); - return zero; - } -@@ -1348,12 +1348,12 @@ - if (!PyArg_ParseTuple(args, "ii", &dom, &mem_kb)) - return NULL; - -- mem_pages = mem_kb / 4; -+ mem_pages = mem_kb / 4; - - if (xc_domain_set_pod_target(self->xc_handle, dom, mem_pages, - NULL, NULL, NULL) != 0) - return pyxc_error_to_exception(self->xc_handle); -- -+ - Py_INCREF(zero); - return zero; - } -@@ -1368,7 +1368,7 @@ - - if ( xc_domain_set_memmap_limit(self->xc_handle, dom, maplimit_kb) != 0 ) - return pyxc_error_to_exception(self->xc_handle); -- -+ - Py_INCREF(zero); - return zero; - } -@@ -1382,7 +1382,7 @@ - - static char *kwd_list[] = { "domid", "first_port", "nr_ports", "allow_access", NULL }; - -- if ( !PyArg_ParseTupleAndKeywords(args, kwds, "iiii", kwd_list, -+ if ( !PyArg_ParseTupleAndKeywords(args, kwds, "iiii", kwd_list, - &dom, &first_port, &nr_ports, &allow_access) ) - return NULL; - -@@ -1405,7 +1405,7 @@ - - static char *kwd_list[] = { "domid", "pirq", "allow_access", NULL }; - -- if ( !PyArg_ParseTupleAndKeywords(args, kwds, "iii", kwd_list, -+ if ( !PyArg_ParseTupleAndKeywords(args, kwds, "iii", kwd_list, - &dom, &pirq, &allow_access) ) - return NULL; - -@@ -1428,7 +1428,7 @@ - - static char *kwd_list[] = { "domid", "first_pfn", "nr_pfns", "allow_access", NULL }; - -- if ( !PyArg_ParseTupleAndKeywords(args, kwds, "illi", kwd_list, -+ if ( !PyArg_ParseTupleAndKeywords(args, kwds, "illi", kwd_list, - &dom, &first_pfn, &nr_pfns, &allow_access) ) - return NULL; - -@@ -1479,7 +1479,7 @@ - - static char *kwd_list[] = { "domid", "trigger", "vcpu", NULL }; - -- if ( !PyArg_ParseTupleAndKeywords(args, kwds, "ii|i", kwd_list, -+ if ( !PyArg_ParseTupleAndKeywords(args, kwds, "ii|i", kwd_list, - &dom, &trigger, &vcpu) ) - return NULL; - -@@ -1533,7 +1533,7 @@ - - if (xc_memshr_control(self->xc_handle, dom, enable) != 0) - return pyxc_error_to_exception(self->xc_handle); -- -+ - Py_INCREF(zero); - return zero; - } -@@ -1757,11 +1757,11 @@ - if (!xc_handle) { - return PyErr_SetFromErrno(xc_error_obj); - } -- -+ - ret = xc_flask_sid_to_context(xc_handle, sid, ctx, ctx_len); -- -+ - xc_interface_close(xc_handle); -- -+ - if ( ret != 0 ) { - errno = -ret; - return PyErr_SetFromErrno(xc_error_obj); -@@ -1778,7 +1778,7 @@ - int ret; - - static char *kwd_list[] = { "policy", NULL }; -- -+ - if( !PyArg_ParseTupleAndKeywords(args, kwds, "s#", kwd_list, &policy, &len) ) - return NULL; - -@@ -1808,11 +1808,11 @@ - if (!xc_handle) { - return PyErr_SetFromErrno(xc_error_obj); - } -- -+ - ret = xc_flask_getenforce(xc_handle); -- -+ - xc_interface_close(xc_handle); -- -+ - if ( ret < 0 ) { - errno = -ret; - return PyErr_SetFromErrno(xc_error_obj); -@@ -1838,11 +1838,11 @@ - if (!xc_handle) { - return PyErr_SetFromErrno(xc_error_obj); - } -- -+ - ret = xc_flask_setenforce(xc_handle, mode); -- -+ - xc_interface_close(xc_handle); -- -+ - if ( ret != 0 ) { - errno = -ret; - return PyErr_SetFromErrno(xc_error_obj); -@@ -1860,7 +1860,7 @@ - uint32_t req, allowed, decided, auditallow, auditdeny, seqno; - int ret; - -- static char *kwd_list[] = { "src_context", "tar_context", -+ static char *kwd_list[] = { "src_context", "tar_context", - "tar_class", "req_permissions", - "decided", "auditallow","auditdeny", - "seqno", NULL }; -@@ -1874,10 +1874,10 @@ - if (!xc_handle) { - return PyErr_SetFromErrno(xc_error_obj); - } -- -+ - ret = xc_flask_access(xc_handle, scon, tcon, tclass, req, &allowed, &decided, - &auditallow, &auditdeny, &seqno); -- -+ - xc_interface_close(xc_handle); - - if ( ret != 0 ) { -@@ -1889,14 +1889,14 @@ - } - - static PyMethodDef pyxc_methods[] = { -- { "domain_create", -- (PyCFunction)pyxc_domain_create, -+ { "domain_create", -+ (PyCFunction)pyxc_domain_create, - METH_VARARGS | METH_KEYWORDS, "\n" - "Create a new domain.\n" - " dom [int, 0]: Domain identifier to use (allocated if zero).\n" - "Returns: [int] new domain identifier; -1 on error.\n" }, - -- { "domain_max_vcpus", -+ { "domain_max_vcpus", - (PyCFunction)pyxc_domain_max_vcpus, - METH_VARARGS, "\n" - "Set the maximum number of VCPUs a domain may create.\n" -@@ -1904,43 +1904,43 @@ - " max [int, 0]: New maximum number of VCPUs in domain.\n" - "Returns: [int] 0 on success; -1 on error.\n" }, - -- { "domain_dumpcore", -- (PyCFunction)pyxc_domain_dumpcore, -+ { "domain_dumpcore", -+ (PyCFunction)pyxc_domain_dumpcore, - METH_VARARGS, "\n" - "Dump core of a domain.\n" - " dom [int]: Identifier of domain to dump core of.\n" - " corefile [string]: Name of corefile to be created.\n\n" - "Returns: [int] 0 on success; -1 on error.\n" }, - -- { "domain_pause", -- (PyCFunction)pyxc_domain_pause, -+ { "domain_pause", -+ (PyCFunction)pyxc_domain_pause, - METH_VARARGS, "\n" - "Temporarily pause execution of a domain.\n" - " dom [int]: Identifier of domain to be paused.\n\n" - "Returns: [int] 0 on success; -1 on error.\n" }, - -- { "domain_unpause", -- (PyCFunction)pyxc_domain_unpause, -+ { "domain_unpause", -+ (PyCFunction)pyxc_domain_unpause, - METH_VARARGS, "\n" - "(Re)start execution of a domain.\n" - " dom [int]: Identifier of domain to be unpaused.\n\n" - "Returns: [int] 0 on success; -1 on error.\n" }, - -- { "domain_destroy", -- (PyCFunction)pyxc_domain_destroy, -+ { "domain_destroy", -+ (PyCFunction)pyxc_domain_destroy, - METH_VARARGS, "\n" - "Destroy a domain.\n" - " dom [int]: Identifier of domain to be destroyed.\n\n" - "Returns: [int] 0 on success; -1 on error.\n" }, - -- { "domain_destroy_hook", -- (PyCFunction)pyxc_domain_destroy_hook, -+ { "domain_destroy_hook", -+ (PyCFunction)pyxc_domain_destroy_hook, - METH_VARARGS, "\n" - "Add a hook for arch stuff before destroy a domain.\n" - " dom [int]: Identifier of domain to be destroyed.\n\n" - "Returns: [int] 0 on success; -1 on error.\n" }, - -- { "domain_resume", -+ { "domain_resume", - (PyCFunction)pyxc_domain_resume, - METH_VARARGS, "\n" - "Resume execution of a suspended domain.\n" -@@ -1948,7 +1948,7 @@ - " fast [int]: Use cooperative resume.\n\n" - "Returns: [int] 0 on success; -1 on error.\n" }, - -- { "domain_shutdown", -+ { "domain_shutdown", - (PyCFunction)pyxc_domain_shutdown, - METH_VARARGS, "\n" - "Shutdown a domain.\n" -@@ -1956,8 +1956,8 @@ - " reason [int, 0]: Reason for shutdown.\n" - "Returns: [int] 0 on success; -1 on error.\n" }, - -- { "vcpu_setaffinity", -- (PyCFunction)pyxc_vcpu_setaffinity, -+ { "vcpu_setaffinity", -+ (PyCFunction)pyxc_vcpu_setaffinity, - METH_VARARGS | METH_KEYWORDS, "\n" - "Pin a VCPU to a specified set CPUs.\n" - " dom [int]: Identifier of domain to which VCPU belongs.\n" -@@ -1965,7 +1965,7 @@ - " cpumap [list, []]: list of usable CPUs.\n\n" - "Returns: [int] 0 on success; -1 on error.\n" }, - -- { "domain_sethandle", -+ { "domain_sethandle", - (PyCFunction)pyxc_domain_sethandle, - METH_VARARGS, "\n" - "Set domain's opaque handle.\n" -@@ -1973,8 +1973,8 @@ - " handle [list of 16 ints]: New opaque handle.\n" - "Returns: [int] 0 on success; -1 on error.\n" }, - -- { "domain_getinfo", -- (PyCFunction)pyxc_domain_getinfo, -+ { "domain_getinfo", -+ (PyCFunction)pyxc_domain_getinfo, - METH_VARARGS | METH_KEYWORDS, "\n" - "Get information regarding a set of domains, in increasing id order.\n" - " first_dom [int, 0]: First domain to retrieve info about.\n" -@@ -1999,8 +1999,8 @@ - "reason why it shut itself down.\n" - " cpupool [int] Id of cpupool domain is bound to.\n" }, - -- { "vcpu_getinfo", -- (PyCFunction)pyxc_vcpu_getinfo, -+ { "vcpu_getinfo", -+ (PyCFunction)pyxc_vcpu_getinfo, - METH_VARARGS | METH_KEYWORDS, "\n" - "Get information regarding a VCPU.\n" - " dom [int]: Domain to retrieve info about.\n" -@@ -2024,7 +2024,7 @@ - " xenstore_domid [int]: \n" - "Returns: None on success. Raises exception on error.\n" }, - -- { "hvm_get_param", -+ { "hvm_get_param", - (PyCFunction)pyxc_hvm_param_get, - METH_VARARGS | METH_KEYWORDS, "\n" - "get a parameter of HVM guest OS.\n" -@@ -2032,7 +2032,7 @@ - " param [int]: No. of HVM param.\n" - "Returns: [long] value of the param.\n" }, - -- { "hvm_set_param", -+ { "hvm_set_param", - (PyCFunction)pyxc_hvm_param_set, - METH_VARARGS | METH_KEYWORDS, "\n" - "set a parameter of HVM guest OS.\n" -@@ -2075,12 +2075,12 @@ - " dom [int]: Domain to deassign device from.\n" - " pci_str [str]: PCI devices.\n" - "Returns: [int] 0 on success, or device bdf that can't be deassigned.\n" }, -- -+ - { "sched_id_get", - (PyCFunction)pyxc_sched_id_get, - METH_NOARGS, "\n" - "Get the current scheduler type in use.\n" -- "Returns: [int] sched_id.\n" }, -+ "Returns: [int] sched_id.\n" }, - - { "sched_credit_domain_set", - (PyCFunction)pyxc_sched_credit_domain_set, -@@ -2118,7 +2118,7 @@ - "Returns: [dict]\n" - " weight [short]: domain's scheduling weight\n"}, - -- { "evtchn_alloc_unbound", -+ { "evtchn_alloc_unbound", - (PyCFunction)pyxc_evtchn_alloc_unbound, - METH_VARARGS | METH_KEYWORDS, "\n" - "Allocate an unbound port that will await a remote connection.\n" -@@ -2126,7 +2126,7 @@ - " remote_dom [int]: Remote domain to accept connections from.\n\n" - "Returns: [int] Unbound event-channel port.\n" }, - -- { "evtchn_reset", -+ { "evtchn_reset", - (PyCFunction)pyxc_evtchn_reset, - METH_VARARGS | METH_KEYWORDS, "\n" - "Reset all connections.\n" -@@ -2151,9 +2151,9 @@ - " func [int]: PCI function\n" - " enable [int]: Non-zero means enable access; else disable access\n\n" - "Returns: [int] 0 on success; -1 on error.\n" }, -- -- { "readconsolering", -- (PyCFunction)pyxc_readconsolering, -+ -+ { "readconsolering", -+ (PyCFunction)pyxc_readconsolering, - METH_VARARGS | METH_KEYWORDS, "\n" - "Read Xen's console ring.\n" - " clear [int, 0]: Bool - clear the ring after reading from it?\n\n" -@@ -2201,40 +2201,40 @@ - "Returns [str]: Xen buildid" - " [None]: on failure.\n" }, - -- { "shadow_control", -- (PyCFunction)pyxc_shadow_control, -+ { "shadow_control", -+ (PyCFunction)pyxc_shadow_control, - METH_VARARGS | METH_KEYWORDS, "\n" - "Set parameter for shadow pagetable interface\n" - " dom [int]: Identifier of domain.\n" - " op [int, 0]: operation\n\n" - "Returns: [int] 0 on success; -1 on error.\n" }, - -- { "shadow_mem_control", -- (PyCFunction)pyxc_shadow_mem_control, -+ { "shadow_mem_control", -+ (PyCFunction)pyxc_shadow_mem_control, - METH_VARARGS | METH_KEYWORDS, "\n" - "Set or read shadow pagetable memory use\n" - " dom [int]: Identifier of domain.\n" - " mb [int, -1]: MB of shadow memory this domain should have.\n\n" - "Returns: [int] MB of shadow memory in use by this domain.\n" }, - -- { "domain_setmaxmem", -- (PyCFunction)pyxc_domain_setmaxmem, -+ { "domain_setmaxmem", -+ (PyCFunction)pyxc_domain_setmaxmem, - METH_VARARGS, "\n" - "Set a domain's memory limit\n" - " dom [int]: Identifier of domain.\n" - " maxmem_kb [int]: .\n" - "Returns: [int] 0 on success; -1 on error.\n" }, - -- { "domain_set_target_mem", -- (PyCFunction)pyxc_domain_set_target_mem, -+ { "domain_set_target_mem", -+ (PyCFunction)pyxc_domain_set_target_mem, - METH_VARARGS, "\n" - "Set a domain's memory target\n" - " dom [int]: Identifier of domain.\n" - " mem_kb [int]: .\n" - "Returns: [int] 0 on success; -1 on error.\n" }, - -- { "domain_set_memmap_limit", -- (PyCFunction)pyxc_domain_set_memmap_limit, -+ { "domain_set_memmap_limit", -+ (PyCFunction)pyxc_domain_set_memmap_limit, - METH_VARARGS, "\n" - "Set a domain's physical memory mapping limit\n" - " dom [int]: Identifier of domain.\n" -@@ -2308,7 +2308,7 @@ - "Inject debug keys into Xen.\n" - " keys [str]: String of keys to inject.\n" }, - -- { "dom_set_memshr", -+ { "dom_set_memshr", - (PyCFunction)pyxc_dom_set_memshr, - METH_VARARGS, "\n" - "Enable/disable memory sharing for the domain.\n" -@@ -2390,20 +2390,20 @@ - METH_VARARGS | METH_KEYWORDS, "\n" - "Loads a policy into the hypervisor.\n" - " policy [str]: policy to be load\n" -- "Returns: [int]: 0 on success; -1 on failure.\n" }, -- -+ "Returns: [int]: 0 on success; -1 on failure.\n" }, -+ - { "flask_getenforce", - (PyCFunction)pyflask_getenforce, - METH_NOARGS, "\n" - "Returns the current mode of the Flask XSM module.\n" -- "Returns: [int]: 0 for permissive; 1 for enforcing; -1 on failure.\n" }, -+ "Returns: [int]: 0 for permissive; 1 for enforcing; -1 on failure.\n" }, - - { "flask_setenforce", - (PyCFunction)pyflask_setenforce, - METH_VARARGS | METH_KEYWORDS, "\n" - "Modifies the current mode for the Flask XSM module.\n" - " mode [int]: mode to change to\n" -- "Returns: [int]: 0 on success; -1 on failure.\n" }, -+ "Returns: [int]: 0 on success; -1 on failure.\n" }, - - { "flask_access", - (PyCFunction)pyflask_access, -@@ -2422,7 +2422,7 @@ - " auditdeny [int] permissions set to audit on deny\n" - " seqno [int] not used\n" - "Returns: [int]: 0 on all permission granted; -1 if any permissions are \ -- denied\n" }, -+ denied\n" }, - - { NULL, NULL, 0, NULL } - }; -diff -urN xen-4.16.2.orig/tools/python/xen/lowlevel/xs/xs.c xen-4.16.2/tools/python/xen/lowlevel/xs/xs.c ---- xen-4.16.2.orig/tools/python/xen/lowlevel/xs/xs.c 2022-08-18 13:47:46.000000000 +0200 -+++ xen-4.16.2/tools/python/xen/lowlevel/xs/xs.c 2023-07-23 20:27:33.484877729 +0200 -@@ -1,4 +1,4 @@ --/* -+/* - * Python interface to the Xen Store Daemon. - * - * This library is free software; you can redistribute it and/or -@@ -858,7 +858,7 @@ - * Parse transaction and path arguments from the given args and kwds, - * convert the given self value to an xs_handle, and return all three by - * reference. -- * -+ * - * @return 1 on success, in which case *xh, *th, and *path are valid, or 0 on - * failure. - */ -diff -urN xen-4.16.2.orig/tools/python/xen/migration/legacy.py xen-4.16.2/tools/python/xen/migration/legacy.py ---- xen-4.16.2.orig/tools/python/xen/migration/legacy.py 2022-08-18 13:47:46.000000000 +0200 -+++ xen-4.16.2/tools/python/xen/migration/legacy.py 2023-07-23 20:27:33.484877729 +0200 -@@ -1,4 +1,3 @@ --#!/usr/bin/env python - # -*- coding: utf-8 -*- - - """ -diff -urN xen-4.16.2.orig/tools/python/xen/migration/libxc.py xen-4.16.2/tools/python/xen/migration/libxc.py ---- xen-4.16.2.orig/tools/python/xen/migration/libxc.py 2022-08-18 13:47:46.000000000 +0200 -+++ xen-4.16.2/tools/python/xen/migration/libxc.py 2023-07-23 20:27:33.485877743 +0200 -@@ -1,4 +1,3 @@ --#!/usr/bin/env python - # -*- coding: utf-8 -*- - - """ -diff -urN xen-4.16.2.orig/tools/python/xen/migration/libxl.py xen-4.16.2/tools/python/xen/migration/libxl.py ---- xen-4.16.2.orig/tools/python/xen/migration/libxl.py 2022-08-18 13:47:46.000000000 +0200 -+++ xen-4.16.2/tools/python/xen/migration/libxl.py 2023-07-23 20:27:33.485877743 +0200 -@@ -1,4 +1,3 @@ --#!/usr/bin/env python - # -*- coding: utf-8 -*- - - """ -diff -urN xen-4.16.2.orig/tools/python/xen/migration/public.py xen-4.16.2/tools/python/xen/migration/public.py ---- xen-4.16.2.orig/tools/python/xen/migration/public.py 2022-08-18 13:47:46.000000000 +0200 -+++ xen-4.16.2/tools/python/xen/migration/public.py 2023-07-23 20:27:33.485877743 +0200 -@@ -1,4 +1,3 @@ --#!/usr/bin/env python - # -*- coding: utf-8 -*- - - """ -diff -urN xen-4.16.2.orig/tools/python/xen/migration/tests.py xen-4.16.2/tools/python/xen/migration/tests.py ---- xen-4.16.2.orig/tools/python/xen/migration/tests.py 2022-08-18 13:47:46.000000000 +0200 -+++ xen-4.16.2/tools/python/xen/migration/tests.py 2023-07-23 20:27:33.485877743 +0200 -@@ -1,4 +1,3 @@ --#!/usr/bin/env python - # -*- coding: utf-8 -*- - - """ -@@ -26,6 +25,8 @@ - (libxc.X86_TSC_INFO_FORMAT, 24), - (libxc.HVM_PARAMS_ENTRY_FORMAT, 16), - (libxc.HVM_PARAMS_FORMAT, 8), -+ (libxc.X86_CPUID_POLICY_FORMAT, 24), -+ (libxc.X86_MSR_POLICY_FORMAT, 16), - ): - self.assertEqual(calcsize(fmt), sz) - -@@ -40,15 +41,3 @@ - (libxl.EMULATOR_HEADER_FORMAT, 8), - ): - self.assertEqual(calcsize(fmt), sz) -- -- --def test_suite(): -- suite = unittest.TestSuite() -- -- suite.addTest(unittest.makeSuite(TestLibxc)) -- suite.addTest(unittest.makeSuite(TestLibxl)) -- -- return suite -- --if __name__ == "__main__": -- unittest.main() -diff -urN xen-4.16.2.orig/tools/python/xen/migration/verify.py xen-4.16.2/tools/python/xen/migration/verify.py ---- xen-4.16.2.orig/tools/python/xen/migration/verify.py 2022-08-18 13:47:46.000000000 +0200 -+++ xen-4.16.2/tools/python/xen/migration/verify.py 2023-07-23 20:27:33.485877743 +0200 -@@ -1,4 +1,3 @@ --#!/usr/bin/env python - # -*- coding: utf-8 -*- - - """ -diff -urN xen-4.16.2.orig/tools/python/xen/migration/xl.py xen-4.16.2/tools/python/xen/migration/xl.py ---- xen-4.16.2.orig/tools/python/xen/migration/xl.py 2022-08-18 13:47:46.000000000 +0200 -+++ xen-4.16.2/tools/python/xen/migration/xl.py 2023-07-23 20:27:33.485877743 +0200 -@@ -1,4 +1,3 @@ --#!/usr/bin/env python - # -*- coding: utf-8 -*- - - """ -diff -urN xen-4.16.2.orig/tools/python/xen/util.py xen-4.16.2/tools/python/xen/util.py ---- xen-4.16.2.orig/tools/python/xen/util.py 2022-08-18 13:47:46.000000000 +0200 -+++ xen-4.16.2/tools/python/xen/util.py 2023-07-23 20:27:33.486877758 +0200 -@@ -1,4 +1,3 @@ --#!/usr/bin/env python - # -*- coding: utf-8 -*- - - import os -diff -urN xen-4.16.2.orig/tools/Rules.mk xen-4.16.2/tools/Rules.mk ---- xen-4.16.2.orig/tools/Rules.mk 2022-08-18 13:47:46.000000000 +0200 -+++ xen-4.16.2/tools/Rules.mk 2023-07-23 20:27:33.514878153 +0200 -@@ -141,7 +141,7 @@ - CFLAGS += $(EXTRA_CFLAGS_XEN_TOOLS) - - INSTALL_PYTHON_PROG = \ -- $(XEN_ROOT)/tools/python/install-wrap "$(PYTHON_PATH)" $(INSTALL_PROG) -+ $(XEN_ROOT)/tools/python/install-wrap "$(PYTHON_PATH) -s" $(INSTALL_PROG) - - %.opic: %.c - $(CC) $(CPPFLAGS) -DPIC $(CFLAGS) $(CFLAGS_$*.opic) -fPIC -c -o $@ $< $(APPEND_CFLAGS) -diff -urN xen-4.16.2.orig/tools/xenmon/xenmon.py xen-4.16.2/tools/xenmon/xenmon.py ---- xen-4.16.2.orig/tools/xenmon/xenmon.py 2022-08-18 13:47:46.000000000 +0200 -+++ xen-4.16.2/tools/xenmon/xenmon.py 2023-07-23 20:27:33.514878153 +0200 -@@ -13,12 +13,12 @@ - # This program is free software; you can redistribute it and/or modify - # it under the terms of the GNU General Public License as published by - # the Free Software Foundation; under version 2 of the License. --# -+# - # This program 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 General Public License for more details. --# -+# - # You should have received a copy of the GNU General Public License - # along with this program; If not, see <http://www.gnu.org/licenses/>. - ##################################################################### -@@ -79,7 +79,7 @@ - parser.add_option("-p", "--prefix", dest="prefix", - default = "log", help="prefix to use for output files") - parser.add_option("-t", "--time", dest="duration", -- action="store", type="int", default=10, -+ action="store", type="int", default=10, - help="stop logging to file after this much time has elapsed (in seconds). set to 0 to keep logging indefinitely") - parser.add_option("-i", "--interval", dest="interval", - action="store", type="int", default=1000, -@@ -179,7 +179,7 @@ - return [total/(float(passed)/10**9), avg] - - def stats(self, passed): -- return [self.gotten_stats(passed), self.allocated_stats(passed), self.blocked_stats(passed), -+ return [self.gotten_stats(passed), self.allocated_stats(passed), self.blocked_stats(passed), - self.waited_stats(passed), self.ec_stats(passed), self.io_stats(passed)] - - # report values over desired interval -@@ -187,13 +187,13 @@ - dominfos = {} - for i in range(0, NDOMAINS): - dominfos[i] = DomainInfo() -- -+ - passed = 1 # to prevent zero division - curid = startat - numbuckets = 0 - lost_samples = [] - ffp_samples = [] -- -+ - while passed < duration: - for i in range(0, NDOMAINS): - if dom_in_use[i]: -@@ -203,7 +203,7 @@ - dominfos[i].blocked_sum += samples[curid][3*NDOMAINS + i] - dominfos[i].exec_count += samples[curid][4*NDOMAINS + i] - dominfos[i].iocount_sum += samples[curid][5*NDOMAINS + i] -- -+ - passed += samples[curid][6*NDOMAINS] - lost_samples.append(samples[curid][6*NDOMAINS + 2]) - ffp_samples.append(samples[curid][6*NDOMAINS + 3]) -@@ -271,7 +271,7 @@ - cpu_10sec_usage = 0.0 - heartbeat = 1 - global dom_in_use, options -- -+ - # mmap the (the first chunk of the) file - shmf = open(SHM_FILE, "r+") - shm = mmap.mmap(shmf.fileno(), QOS_DATA_SIZE) -@@ -284,7 +284,7 @@ - stdscr.keypad(1) - stdscr.timeout(1000) - [maxy, maxx] = stdscr.getmaxyx() -- -+ - # display in a loop - while True: - -@@ -342,7 +342,7 @@ - cpuidx = cpuidx + 1 - - # calculate starting and ending datapoints; never look at "next" since -- # it represents live data that may be in transition. -+ # it represents live data that may be in transition. - startat = next - 1 - if next + 10 < NSAMPLES: - endat = next + 10 -@@ -374,7 +374,7 @@ - - if h1[dom][0][1] > 0 or domain_id[dom] == IDLE_DOMAIN: - # display gotten -- row += 1 -+ row += 1 - col = 2 - display_domain_id(stdscr, row, col, domain_id[dom]) - col += 4 -@@ -396,7 +396,7 @@ - - if dom != IDLE_DOMAIN: - cpu_1sec_usage = cpu_1sec_usage + h1[dom][0][1] -- -+ - # display allocated - if options.allocated: - row += 1 -@@ -454,7 +454,7 @@ - row += 1 - col = 2 - display_domain_id(stdscr, row, col, domain_id[dom]) -- -+ - col += 28 - display(stdscr, row, col, "%d/s" % h2[dom][4]) - col += 42 -@@ -490,14 +490,14 @@ - display(stdscr, row, 1, star) - display(stdscr, row, 2, TOTALS % (total_h2_cpu, total_h1_cpu)) - row += 1 --# display(stdscr, row, 2, --# "\tFFP: %d (Min: %d, Max: %d)\t\t\tFFP: %d (Min: %d, Max %d)" % -+# display(stdscr, row, 2, -+# "\tFFP: %d (Min: %d, Max: %d)\t\t\tFFP: %d (Min: %d, Max %d)" % - # (math.ceil(f2[1]), f2[0], f2[2], math.ceil(f1[1]), f1[0], f1[2]), _c.A_BOLD) - - if l1[1] > 1 : - row += 1 -- display(stdscr, row, 2, -- "\tRecords lost: %d (Min: %d, Max: %d)\t\t\tRecords lost: %d (Min: %d, Max %d)" % -+ display(stdscr, row, 2, -+ "\tRecords lost: %d (Min: %d, Max: %d)\t\t\tRecords lost: %d (Min: %d, Max %d)" % - (math.ceil(l2[1]), l2[0], l2[2], math.ceil(l1[1]), l1[0], l1[2]), _c.A_BOLD) - - # grab a char from tty input; exit if interrupt hit -@@ -505,11 +505,11 @@ - c = stdscr.getch() - except: - break -- -+ - # q = quit - if c == ord('q'): - break -- -+ - # c = cycle to a new cpu of interest - if c == ord('c'): - cpu = (cpu + 1) % ncpu -@@ -560,7 +560,7 @@ - def close(self): - if self.opened: - self.file.close() -- -+ - - def writelog(): - global options -@@ -639,7 +639,7 @@ - h1[dom][1], - h1[dom][2][0], h1[dom][2][1], h1[dom][2][2], - h1[dom][3][0], h1[dom][3][1], h1[dom][3][2], -- h1[dom][4], -+ h1[dom][4], - h1[dom][5][0], h1[dom][5][1])) - outfiles[dom].flush() - curr = time.time() -@@ -698,7 +698,7 @@ - options.mspersample > options.duration * 1000: - parser.error("option --ms_per_sample: too large (> %d ms)" % - (options.duration * 1000)) -- -+ - start_xenbaked() - if options.live: - show_livestats(options.cpu) diff --git a/xen-golang-32bit.patch b/xen-golang-32bit.patch index e6160dc..68eed15 100644 --- a/xen-golang-32bit.patch +++ b/xen-golang-32bit.patch @@ -1,37 +1,37 @@ Adjust types and sizes for 32-bit pointers ---- xen-4.14.3/tools/golang/xenlight/gengotypes.py.orig 2021-09-10 14:30:40.000000000 +0200 -+++ xen-4.14.3/tools/golang/xenlight/gengotypes.py 2021-11-07 17:39:55.516237472 +0100 -@@ -426,7 +426,7 @@ +--- xen-4.18.1/tools/golang/xenlight/gengotypes.py.orig 2024-04-22 20:08:49.947724076 +0200 ++++ xen-4.18.1/tools/golang/xenlight/gengotypes.py 2024-04-22 20:12:45.073116959 +0200 +@@ -439,7 +439,7 @@ def xenlight_golang_array_from_C(ty = No s += 'x.{0} = nil\n'.format(goname) - s += 'if n := int(xc.{0}); n > 0 {{\n'.format(clenvar) + s += 'if n := int({0}.{1}); n > 0 {{\n'.format(cvarname,clenvar) s += '{0} := '.format(cslice) -- s +='(*[1<<28]C.{0})(unsafe.Pointer(xc.{1}))[:n:n]\n'.format(ctypename, cname) -+ s +='(*[(1<<22)]C.{0})(unsafe.Pointer(xc.{1}))[:n:n]\n'.format(ctypename, cname) +- s +='(*[1<<28]C.{0})(unsafe.Pointer({1}.{2}))[:n:n]\n'.format(ctypename, cvarname, cname) ++ s +='(*[(1<<22)]C.{0})(unsafe.Pointer({1}.{2}))[:n:n]\n'.format(ctypename, cvarname, cname) s += 'x.{0} = make([]{1}, n)\n'.format(goname, gotypename) s += 'for i, v := range {0} {{\n'.format(cslice) -@@ -603,7 +603,7 @@ - s += 'xc.{0} = (*C.{1})(C.malloc(C.size_t({2}*{3})))\n'.format(cname,ctypename, +@@ -621,7 +621,7 @@ def xenlight_golang_array_to_C(ty = None + s += '{0}.{1} = (*C.{2})(C.malloc(C.size_t({3}*{4})))\n'.format(cvarname,cname,ctypename, golenvar,golenvar) - s += 'xc.{0} = C.int({1})\n'.format(clenvar,golenvar) -- s += 'c{0} := (*[1<<28]C.{1})(unsafe.Pointer(xc.{2}))[:{3}:{4}]\n'.format(goname, -+ s += 'c{0} := (*[(1<<22)]C.{1})(unsafe.Pointer(xc.{2}))[:{3}:{4}]\n'.format(goname, - ctypename,cname, + s += '{0}.{1} = C.int({2})\n'.format(cvarname,clenvar,golenvar) +- s += 'c{0} := (*[1<<28]C.{1})(unsafe.Pointer({2}.{3}))[:{4}:{5}]\n'.format(goname, ++ s += 'c{0} := (*[(1<<22)]C.{1})(unsafe.Pointer({2}.{3}))[:{4}:{5}]\n'.format(goname, + ctypename,cvarname,cname, golenvar,golenvar) - s += 'for i,v := range x.{0} {{\n'.format(goname) -@@ -613,10 +613,10 @@ + s += 'for i,v := range {0}.{1} {{\n'.format(govarname,goname) +@@ -631,10 +631,10 @@ def xenlight_golang_array_to_C(ty = None return s - s += 'if {0} := len(x.{1}); {2} > 0 {{\n'.format(golenvar,goname,golenvar) -- s += 'xc.{0} = (*C.{1})(C.malloc(C.ulong({2})*C.sizeof_{3}))\n'.format(cname,ctypename, -+ s += 'xc.{0} = (*C.{1})(C.malloc(C.size_t({2})*C.sizeof_{3}))\n'.format(cname,ctypename, + s += 'if {0} := len({1}.{2}); {3} > 0 {{\n'.format(golenvar,govarname,goname,golenvar) +- s += '{0}.{1} = (*C.{2})(C.malloc(C.ulong({3})*C.sizeof_{4}))\n'.format(cvarname,cname,ctypename, ++ s += '{0}.{1} = (*C.{2})(C.malloc(C.size_t({3})*C.sizeof_{4}))\n'.format(cvarname,cname,ctypename, golenvar,ctypename) - s += 'xc.{0} = C.int({1})\n'.format(clenvar,golenvar) -- s += 'c{0} := (*[1<<28]C.{1})(unsafe.Pointer(xc.{2}))[:{3}:{4}]\n'.format(goname, -+ s += 'c{0} := (*[(1<<22)]C.{1})(unsafe.Pointer(xc.{2}))[:{3}:{4}]\n'.format(goname, - ctypename,cname, + s += '{0}.{1} = C.int({2})\n'.format(cvarname,clenvar,golenvar) +- s += 'c{0} := (*[1<<28]C.{1})(unsafe.Pointer({2}.{3}))[:{4}:{5}]\n'.format(goname, ++ s += 'c{0} := (*[(1<<22)]C.{1})(unsafe.Pointer({2}.{3}))[:{4}:{5}]\n'.format(goname, + ctypename,cvarname,cname, golenvar,golenvar) - s += 'for i,v := range x.{0} {{\n'.format(goname) + s += 'for i,v := range {0}.{1} {{\n'.format(govarname,goname) --- xen-4.16.1/tools/golang/xenlight/xenlight.go.orig 2022-04-12 14:21:23.000000000 +0200 +++ xen-4.16.1/tools/golang/xenlight/xenlight.go 2022-09-18 15:39:56.819306319 +0200 @@ -478,7 +478,7 @@ type StringList []string diff --git a/xen-python_scripts.patch b/xen-python_scripts.patch index 7772c7e..6d4792f 100644 --- a/xen-python_scripts.patch +++ b/xen-python_scripts.patch @@ -1,35 +1,17 @@ -diff -ur xen-4.13.1/tools/misc/xencons xen-4.13.1.py/tools/misc/xencons ---- xen-4.13.1/tools/misc/xencons 2020-05-14 14:19:32.000000000 +0200 -+++ xen-4.13.1.py/tools/misc/xencons 2020-06-07 19:58:48.203256360 +0200 +--- xen-4.18.1/tools/misc/xencov_split.orig 2024-04-22 14:52:13.323970953 +0200 ++++ xen-4.18.1/tools/misc/xencov_split 2024-04-22 19:55:27.842069455 +0200 @@ -1,4 +1,4 @@ -#!/usr/bin/env python -+#!/usr/bin/python2 ++#!/usr/bin/python3 - ############################################## - # Console client for Xen guest OSes ---- xen-4.14.3/tools/misc/xencov_split.orig 2021-11-06 16:33:29.985897878 +0100 -+++ xen-4.14.3/tools/misc/xencov_split 2021-11-06 16:46:44.168262090 +0100 -@@ -1,4 +1,4 @@ --#!/usr/bin/env python -+#!/usr/bin/python2 - - import sys, os, os.path as path, struct, errno - from optparse import OptionParser -diff -ur xen-4.13.1/tools/misc/xenpvnetboot xen-4.13.1.py/tools/misc/xenpvnetboot ---- xen-4.13.1/tools/misc/xenpvnetboot 2020-05-14 14:19:32.000000000 +0200 -+++ xen-4.13.1.py/tools/misc/xenpvnetboot 2020-06-07 19:58:48.203256360 +0200 -@@ -1,4 +1,4 @@ --#!/usr/bin/env python -+#!/usr/bin/python2 - # - # Copyright (C) 2010 Oracle. All rights reserved. - # + from __future__ import print_function + from builtins import str diff -ur xen-4.13.1/tools/xentrace/xentrace_format xen-4.13.1.py/tools/xentrace/xentrace_format --- xen-4.13.1/tools/xentrace/xentrace_format 2020-05-14 14:19:32.000000000 +0200 +++ xen-4.13.1.py/tools/xentrace/xentrace_format 2020-06-07 19:58:48.203256360 +0200 @@ -1,4 +1,4 @@ -#!/usr/bin/env python -+#!/usr/bin/python2 ++#!/usr/bin/python3 # by Mark Williamson, (C) 2004 Intel Research Cambridge diff --git a/xen-systemd.patch b/xen-systemd.patch index 0ce34da..524b25e 100644 --- a/xen-systemd.patch +++ b/xen-systemd.patch @@ -1,5 +1,5 @@ ---- xen-4.16.1/tools/hotplug/Linux/systemd/xenconsoled.service.in.orig 2022-09-18 15:05:07.257293114 +0200 -+++ xen-4.16.1/tools/hotplug/Linux/systemd/xenconsoled.service.in 2022-09-18 15:07:08.493302989 +0200 +--- xen-4.18.1/tools/hotplug/Linux/systemd/xenconsoled.service.in.orig 2024-04-22 20:04:39.052416625 +0200 ++++ xen-4.18.1/tools/hotplug/Linux/systemd/xenconsoled.service.in 2024-04-22 20:06:13.978569033 +0200 @@ -7,12 +7,12 @@ ConditionPathExists=/proc/xen/capabiliti [Service] Type=simple @@ -10,7 +10,7 @@ -EnvironmentFile=-@CONFIG_DIR@/@CONFIG_LEAF_DIR@/xencommons +EnvironmentFile=-@CONFIG_DIR@/@CONFIG_LEAF_DIR@/xenconsoled ExecStartPre=/bin/grep -q control_d /proc/xen/capabilities - ExecStartPre=/bin/mkdir -p ${XENCONSOLED_LOG_DIR} + ExecStartPre=/bin/mkdir -p ${XENCONSOLED_LOG_DIR} @XEN_RUN_DIR@ -ExecStart=@sbindir@/xenconsoled -i --log=${XENCONSOLED_TRACE} --log-dir=${XENCONSOLED_LOG_DIR} $XENCONSOLED_ARGS +ExecStart=@sbindir@/xenconsoled -i --log=${XENCONSOLED_LOG} --log-dir=${XENCONSOLED_LOG_DIR} $XENCONSOLED_ARGS ================================================================ ---- gitweb: http://git.pld-linux.org/gitweb.cgi/packages/xen.git/commitdiff/77814ee866e66c882313e6caa3053c93a33f6f5b _______________________________________________ pld-cvs-commit mailing list pld-cvs-commit@lists.pld-linux.org http://lists.pld-linux.org/mailman/listinfo/pld-cvs-commit