[packages/xen/DEVEL-4.18] - updated to 4.18.1; new sonames, ocaml libxenlight and libxentoollog are gone
qboosh
qboosh at pld-linux.org
Tue Apr 23 07:05:09 CEST 2024
commit 77814ee866e66c882313e6caa3053c93a33f6f5b
Author: Jakub Bogusz <qboosh at 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='katzj at 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=- at CONFIG_DIR@/@CONFIG_LEAF_DIR@/xencommons
+EnvironmentFile=- at 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
More information about the pld-cvs-commit
mailing list