From 345505989ce65f2486aa3afdf325cc68c28f1d55 Mon Sep 17 00:00:00 2001 From: Christopher Clark Date: Mon, 29 Jun 2020 18:54:47 -0700 Subject: xen, xen-tools: update revision to Xen 4.13 Pull to the current tip of the stable 4.13 branch and apply an upstream 4.14-release-acked patch to xen-tools for a compiler warning in kdd. Signed-off-by: Christopher Clark Signed-off-by: Bruce Ashfield --- ...0001-xen-build-temporarily-inhibit-Werror.patch | 18 +- ...-using-0-arrays-to-access-packet-contents.patch | 60 +++ .../xen/files/xen-tools-libxl-gentypes-py3.patch | 140 ------ .../xen-tools-pygrub-change-tabs-into-spaces.patch | 40 -- ...-make-python-scripts-work-with-2.6-and-up.patch | 529 --------------------- .../xen/files/xen-tools-pygrub-py3.patch | 233 --------- ...n-tools-python-fix-Wsign-compare-warnings.patch | 136 ------ .../xen-tools-update-python-scripts-to-py3.patch | 140 ------ recipes-extended/xen/xen-tools.inc | 6 + recipes-extended/xen/xen-tools_git.bb | 13 +- recipes-extended/xen/xen_git.bb | 6 +- 11 files changed, 89 insertions(+), 1232 deletions(-) create mode 100644 recipes-extended/xen/files/xen-tools-kdd-stop-using-0-arrays-to-access-packet-contents.patch delete mode 100644 recipes-extended/xen/files/xen-tools-libxl-gentypes-py3.patch delete mode 100644 recipes-extended/xen/files/xen-tools-pygrub-change-tabs-into-spaces.patch delete mode 100644 recipes-extended/xen/files/xen-tools-pygrub-make-python-scripts-work-with-2.6-and-up.patch delete mode 100644 recipes-extended/xen/files/xen-tools-pygrub-py3.patch delete mode 100644 recipes-extended/xen/files/xen-tools-python-fix-Wsign-compare-warnings.patch delete mode 100644 recipes-extended/xen/files/xen-tools-update-python-scripts-to-py3.patch (limited to 'recipes-extended') diff --git a/recipes-extended/xen/files/0001-xen-build-temporarily-inhibit-Werror.patch b/recipes-extended/xen/files/0001-xen-build-temporarily-inhibit-Werror.patch index 0f075553..6e43a4ff 100644 --- a/recipes-extended/xen/files/0001-xen-build-temporarily-inhibit-Werror.patch +++ b/recipes-extended/xen/files/0001-xen-build-temporarily-inhibit-Werror.patch @@ -4,6 +4,8 @@ Date: Thu, 18 Jun 2020 09:05:22 -0400 Subject: [PATCH] xen/build: temporarily inhibit Werror Signed-off-by: Bruce Ashfield +Rebased on Xen 4.13: +Signed-off-by: Christopher Clark --- tools/libxl/Makefile | 2 +- xen/Rules.mk | 2 +- @@ -13,8 +15,8 @@ diff --git a/tools/libxl/Makefile b/tools/libxl/Makefile index 6da342ed61..c67560e269 100644 --- a/tools/libxl/Makefile +++ b/tools/libxl/Makefile -@@ -11,7 +11,7 @@ MINOR = 0 - XLUMAJOR = 4.12 +@@ -14,7 +14,7 @@ MINOR = 0 + XLUMAJOR = 4.13 XLUMINOR = 0 -CFLAGS += -Werror -Wno-format-zero-length -Wmissing-declarations \ @@ -38,3 +40,15 @@ index a151b3f625..a05ceec1e5 100644 -- 2.19.1 +diff --git a/tools/debugger/kdd/Makefile b/tools/debugger/kdd/Makefile +index 26116949d4..a72ad3b1e0 100644 +--- a/tools/debugger/kdd/Makefile ++++ b/tools/debugger/kdd/Makefile +@@ -1,7 +1,6 @@ + XEN_ROOT = $(CURDIR)/../../.. + include $(XEN_ROOT)/tools/Rules.mk + +-CFLAGS += -Werror + CFLAGS += $(CFLAGS_libxenctrl) + CFLAGS += -DXC_WANT_COMPAT_MAP_FOREIGN_API + LDLIBS += $(LDLIBS_libxenctrl) diff --git a/recipes-extended/xen/files/xen-tools-kdd-stop-using-0-arrays-to-access-packet-contents.patch b/recipes-extended/xen/files/xen-tools-kdd-stop-using-0-arrays-to-access-packet-contents.patch new file mode 100644 index 00000000..c1b110df --- /dev/null +++ b/recipes-extended/xen/files/xen-tools-kdd-stop-using-0-arrays-to-access-packet-contents.patch @@ -0,0 +1,60 @@ +From 3471cafbdda35eacf04670881dd2aee2558b4f08 Mon Sep 17 00:00:00 2001 +From: Tim Deegan +Date: Fri, 26 Jun 2020 10:40:44 +0000 +Subject: [PATCH] kdd: stop using [0] arrays to access packet contents + +GCC 10 is unhappy about this, and we already use 64k buffers +in the only places where packets are allocated, so move the +64k size into the packet definition. + +Reported-by: Olaf Hering +Signed-off-by: Tim Deegan +Acked-by: Wei Liu +Release-acked-by: Paul Durrant +--- + tools/debugger/kdd/kdd.c | 4 ++-- + tools/debugger/kdd/kdd.h | 3 +-- + 2 files changed, 3 insertions(+), 4 deletions(-) + +diff --git a/tools/debugger/kdd/kdd.c b/tools/debugger/kdd/kdd.c +index 3ebda9b12c..866532f0c7 100644 +--- a/tools/debugger/kdd/kdd.c ++++ b/tools/debugger/kdd/kdd.c +@@ -79,11 +79,11 @@ typedef struct { + /* State of the debugger stub */ + typedef struct { + union { +- uint8_t txb[sizeof (kdd_hdr) + 65536]; /* Marshalling area for tx */ ++ uint8_t txb[sizeof (kdd_hdr)]; /* Marshalling area for tx */ + kdd_pkt txp; /* Also readable as a packet structure */ + }; + union { +- uint8_t rxb[sizeof (kdd_hdr) + 65536]; /* Marshalling area for rx */ ++ uint8_t rxb[sizeof (kdd_hdr)]; /* Marshalling area for rx */ + kdd_pkt rxp; /* Also readable as a packet structure */ + }; + unsigned int cur; /* Offset into rx where we'll put the next byte */ +diff --git a/tools/debugger/kdd/kdd.h b/tools/debugger/kdd/kdd.h +index bfb00ba5c5..b9a17440df 100644 +--- a/tools/debugger/kdd/kdd.h ++++ b/tools/debugger/kdd/kdd.h +@@ -68,7 +68,6 @@ typedef struct { + uint16_t len; /* Payload length, excl. header and trailing byte */ + uint32_t id; /* Echoed in responses */ + uint32_t sum; /* Unsigned sum of all payload bytes */ +- uint8_t payload[0]; + } PACKED kdd_hdr; + + #define KDD_PKT_CMD 0x0002 /* Debugger commands (and replies to them) */ +@@ -323,7 +322,7 @@ typedef struct { + kdd_msg msg; + kdd_reg reg; + kdd_stc stc; +- uint8_t payload[0]; ++ uint8_t payload[65536]; + }; + } PACKED kdd_pkt; + +-- +2.17.1 + diff --git a/recipes-extended/xen/files/xen-tools-libxl-gentypes-py3.patch b/recipes-extended/xen/files/xen-tools-libxl-gentypes-py3.patch deleted file mode 100644 index 23997865..00000000 --- a/recipes-extended/xen/files/xen-tools-libxl-gentypes-py3.patch +++ /dev/null @@ -1,140 +0,0 @@ -From 660d2dd863802ef464c90b32f187cb65861f8185 Mon Sep 17 00:00:00 2001 -From: Wei Liu -Date: Thu, 7 Mar 2019 12:33:38 +0000 -Subject: [PATCH] libxl: make python scripts work with python 2.6 and up - -Go through transformations suggested by 2to3 and pick the necessary -ones. - -Signed-off-by: Wei Liu -Reviewed-by: Andrew Cooper ---- - tools/libxl/gentest.py | 4 +++- - tools/libxl/gentypes.py | 12 +++++++----- - tools/libxl/idl.py | 15 ++++++++------- - 3 files changed, 18 insertions(+), 13 deletions(-) - -diff --git a/tools/libxl/gentest.py b/tools/libxl/gentest.py -index 989959fc68..1cc7eebc82 100644 ---- a/tools/libxl/gentest.py -+++ b/tools/libxl/gentest.py -@@ -1,5 +1,7 @@ - #!/usr/bin/python - -+from __future__ import print_function -+ - import os - import sys - import re -@@ -86,7 +88,7 @@ def gen_rand_init(ty, v, indent = " ", parent = None): - - if __name__ == '__main__': - if len(sys.argv) < 3: -- print >>sys.stderr, "Usage: gentest.py " -+ print("Usage: gentest.py ", file=sys.stderr) - sys.exit(1) - - random.seed(os.getenv('LIBXL_TESTIDL_SEED')) -diff --git a/tools/libxl/gentypes.py b/tools/libxl/gentypes.py -index 88e5c5f30e..6417c9dd8c 100644 ---- a/tools/libxl/gentypes.py -+++ b/tools/libxl/gentypes.py -@@ -1,5 +1,7 @@ - #!/usr/bin/python - -+from __future__ import print_function -+ - import sys - import re - -@@ -576,14 +578,14 @@ def libxl_C_enum_from_string(ty, str, e, indent = " "): - - if __name__ == '__main__': - if len(sys.argv) != 6: -- print >>sys.stderr, "Usage: gentypes.py
" -+ print("Usage: gentypes.py
", file=sys.stderr) - sys.exit(1) - - (_, idlname, header, header_private, header_json, impl) = sys.argv - - (builtins,types) = idl.parse(idlname) - -- print "outputting libxl type definitions to %s" % header -+ print("outputting libxl type definitions to %s" % header) - - f = open(header, "w") - -@@ -633,7 +635,7 @@ if __name__ == '__main__': - f.write("""#endif /* %s */\n""" % (header_define)) - f.close() - -- print "outputting libxl JSON definitions to %s" % header_json -+ print("outputting libxl JSON definitions to %s" % header_json) - - f = open(header_json, "w") - -@@ -657,7 +659,7 @@ if __name__ == '__main__': - f.write("""#endif /* %s */\n""" % header_json_define) - f.close() - -- print "outputting libxl type internal definitions to %s" % header_private -+ print("outputting libxl type internal definitions to %s" % header_private) - - f = open(header_private, "w") - -@@ -683,7 +685,7 @@ if __name__ == '__main__': - f.write("""#endif /* %s */\n""" % header_json_define) - f.close() - -- print "outputting libxl type implementations to %s" % impl -+ print("outputting libxl type implementations to %s" % impl) - - f = open(impl, "w") - f.write(""" -diff --git a/tools/libxl/idl.py b/tools/libxl/idl.py -index 2a7f3c44fe..d7367503b4 100644 ---- a/tools/libxl/idl.py -+++ b/tools/libxl/idl.py -@@ -1,3 +1,5 @@ -+from __future__ import print_function -+ - import sys - - PASS_BY_VALUE = 1 -@@ -11,7 +13,7 @@ DIR_BOTH = 3 - _default_namespace = "" - def namespace(s): - if type(s) != str: -- raise TypeError, "Require a string for the default namespace." -+ raise TypeError("Require a string for the default namespace.") - global _default_namespace - _default_namespace = s - -@@ -346,7 +348,7 @@ class OrderedDict(dict): - return [(x,self[x]) for x in self.__ordered] - - def parse(f): -- print >>sys.stderr, "Parsing %s" % f -+ print("Parsing %s" % f, file=sys.stderr) - - globs = {} - locs = OrderedDict() -@@ -362,11 +364,10 @@ def parse(f): - globs[n] = t - - try: -- execfile(f, globs, locs) -- except SyntaxError,e: -- raise SyntaxError, \ -- "Errors were found at line %d while processing %s:\n\t%s"\ -- %(e.lineno,f,e.text) -+ exec(compile(open(f).read(), f, 'exec'), globs, locs) -+ except SyntaxError as e: -+ raise SyntaxError("Errors were found at line %d while processing %s:\n\t%s" -+ % (e.lineno, f, e.text)) - - types = [t for t in locs.ordered_values() if isinstance(t,Type)] - --- -2.17.1 - diff --git a/recipes-extended/xen/files/xen-tools-pygrub-change-tabs-into-spaces.patch b/recipes-extended/xen/files/xen-tools-pygrub-change-tabs-into-spaces.patch deleted file mode 100644 index d913be20..00000000 --- a/recipes-extended/xen/files/xen-tools-pygrub-change-tabs-into-spaces.patch +++ /dev/null @@ -1,40 +0,0 @@ -From b9e1368af14ded6aee3bdf64e8329628b16291ff Mon Sep 17 00:00:00 2001 -From: Wei Liu -Date: Mon, 11 Mar 2019 12:55:29 +0000 -Subject: [PATCH] pygrub: change tabs into spaces - -Not sure why Python 2 never complained, but Python 3 does. - -Change tabs to spaces. - -Signed-off-by: Wei Liu -Reviewed-by: Andrew Cooper ---- - tools/pygrub/src/pygrub | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/tools/pygrub/src/pygrub b/tools/pygrub/src/pygrub -index 52a8965ad9..1189b1ca48 100755 ---- a/tools/pygrub/src/pygrub -+++ b/tools/pygrub/src/pygrub -@@ -858,7 +858,7 @@ if __name__ == "__main__": - output_directory = a - - if debug: -- logging.basicConfig(level=logging.DEBUG) -+ logging.basicConfig(level=logging.DEBUG) - - - try: -@@ -917,7 +917,7 @@ if __name__ == "__main__": - # IOErrors raised by fsimage.open - # RuntimeErrors raised by run_grub if no menu.lst present - if debug: -- traceback.print_exc() -+ traceback.print_exc() - fs = None - continue - --- -2.17.1 - diff --git a/recipes-extended/xen/files/xen-tools-pygrub-make-python-scripts-work-with-2.6-and-up.patch b/recipes-extended/xen/files/xen-tools-pygrub-make-python-scripts-work-with-2.6-and-up.patch deleted file mode 100644 index f4cbb670..00000000 --- a/recipes-extended/xen/files/xen-tools-pygrub-make-python-scripts-work-with-2.6-and-up.patch +++ /dev/null @@ -1,529 +0,0 @@ -From 0aabd89dcfee9ee2a6caaa2ec7a475daf5cada53 Mon Sep 17 00:00:00 2001 -From: Wei Liu -Date: Thu, 7 Mar 2019 12:45:47 +0000 -Subject: [PATCH] pygrub: make python scripts work with 2.6 and up - -Run 2to3 and pick the sensible suggestions. - -Import print_function and absolute_import so 2.6 can work. - -There has never been a curses.wrapper module according to 2.x and 3.x -doc, only a function, so "import curses.wrapper" is not correct. It -happened to work because 2.x implemented a (undocumented) module. - -We only need to import curses to make curses.wrapper available to -pygrub. - -Signed-off-by: Wei Liu -Reviewed-by: Andrew Cooper ---- - tools/pygrub/src/ExtLinuxConf.py | 19 +++++---- - tools/pygrub/src/GrubConf.py | 39 ++++++++++-------- - tools/pygrub/src/LiloConf.py | 19 +++++---- - tools/pygrub/src/pygrub | 71 ++++++++++++++++---------------- - 4 files changed, 78 insertions(+), 70 deletions(-) - -diff --git a/tools/pygrub/src/ExtLinuxConf.py b/tools/pygrub/src/ExtLinuxConf.py -index d1789bf020..9fd635b9cf 100644 ---- a/tools/pygrub/src/ExtLinuxConf.py -+++ b/tools/pygrub/src/ExtLinuxConf.py -@@ -10,9 +10,11 @@ - # along with this program; If not, see . - # - -+from __future__ import print_function, absolute_import -+ - import sys, re, os - import logging --import GrubConf -+from . import GrubConf - - class ExtLinuxImage(object): - def __init__(self, lines, path): -@@ -32,7 +34,8 @@ class ExtLinuxImage(object): - self.lines = [] - self.path = path - self.root = "" -- map(self.set_from_line, lines) -+ for line in lines: -+ self.set_from_line(line) - - def set_from_line(self, line, replace = None): - (com, arg) = GrubConf.grub_exact_split(line, 2) -@@ -67,7 +70,7 @@ class ExtLinuxImage(object): - setattr(self, "initrd", a.replace("initrd=", "")) - arg = arg.replace(a, "") - -- if com is not None and self.commands.has_key(com): -+ if com is not None and com in self.commands: - if self.commands[com] is not None: - setattr(self, self.commands[com], re.sub('^"(.+)"$', r"\1", arg.strip())) - else: -@@ -136,7 +139,7 @@ class ExtLinuxConfigFile(object): - def parse(self, buf = None): - if buf is None: - if self.filename is None: -- raise ValueError, "No config file defined to parse!" -+ raise ValueError("No config file defined to parse!") - - f = open(self.filename, 'r') - lines = f.readlines() -@@ -167,7 +170,7 @@ class ExtLinuxConfigFile(object): - - (com, arg) = GrubConf.grub_exact_split(l, 2) - com = com.lower() -- if self.commands.has_key(com): -+ if com in self.commands: - if self.commands[com] is not None: - setattr(self, self.commands[com], arg.strip()) - else: -@@ -207,8 +210,8 @@ class ExtLinuxConfigFile(object): - - if __name__ == "__main__": - if len(sys.argv) < 2: -- raise RuntimeError, "Need a configuration file to read" -+ raise RuntimeError("Need a configuration file to read") - g = ExtLinuxConfigFile(sys.argv[1]) - for i in g.images: -- print i -- print g.default -+ print(i) -+ print(g.default) -diff --git a/tools/pygrub/src/GrubConf.py b/tools/pygrub/src/GrubConf.py -index dc810d55cb..f8d3799dc0 100644 ---- a/tools/pygrub/src/GrubConf.py -+++ b/tools/pygrub/src/GrubConf.py -@@ -12,6 +12,8 @@ - # along with this program; If not, see . - # - -+from __future__ import print_function, absolute_import -+ - import os, sys - import logging - import re -@@ -44,7 +46,7 @@ def get_path(s): - return (None, s) - idx = s.find(')') - if idx == -1: -- raise ValueError, "Unable to find matching ')'" -+ raise ValueError("Unable to find matching ')'") - d = s[:idx] - return (GrubDiskPart(d), s[idx + 1:]) - -@@ -100,7 +102,8 @@ class _GrubImage(object): - " initrd: %s\n" %(self.title, self.root, self.kernel, - self.args, self.initrd)) - def _parse(self, lines): -- map(self.set_from_line, lines) -+ for line in lines: -+ self.set_from_line(line) - - def reset(self, lines): - self._root = self._initrd = self._kernel = self._args = None -@@ -141,7 +144,7 @@ class GrubImage(_GrubImage): - def set_from_line(self, line, replace = None): - (com, arg) = grub_exact_split(line, 2) - -- if self.commands.has_key(com): -+ if com in self.commands: - if self.commands[com] is not None: - setattr(self, self.commands[com], arg.strip()) - else: -@@ -177,7 +180,7 @@ class _GrubConfigFile(object): - self.parse() - - def parse(self, buf = None): -- raise RuntimeError, "unimplemented parse function" -+ raise RuntimeError("unimplemented parse function") - - def hasPasswordAccess(self): - return self.passwordAccess -@@ -201,7 +204,7 @@ class _GrubConfigFile(object): - import crypt - if crypt.crypt(password, pwd[1]) == pwd[1]: - return True -- except Exception, e: -+ except Exception as e: - self.passExc = "Can't verify password: %s" % str(e) - return False - -@@ -213,7 +216,7 @@ class _GrubConfigFile(object): - - def set(self, line): - (com, arg) = grub_exact_split(line, 2) -- if self.commands.has_key(com): -+ if com in self.commands: - if self.commands[com] is not None: - setattr(self, self.commands[com], arg.strip()) - else: -@@ -233,7 +236,7 @@ class _GrubConfigFile(object): - self._default = val - - if self._default < 0: -- raise ValueError, "default must be positive number" -+ raise ValueError("default must be positive number") - default = property(_get_default, _set_default) - - def set_splash(self, val): -@@ -265,7 +268,7 @@ class GrubConfigFile(_GrubConfigFile): - def parse(self, buf = None): - if buf is None: - if self.filename is None: -- raise ValueError, "No config file defined to parse!" -+ raise ValueError("No config file defined to parse!") - - f = open(self.filename, 'r') - lines = f.readlines() -@@ -296,7 +299,7 @@ class GrubConfigFile(_GrubConfigFile): - continue - - (com, arg) = grub_exact_split(l, 2) -- if self.commands.has_key(com): -+ if com in self.commands: - if self.commands[com] is not None: - setattr(self, self.commands[com], arg.strip()) - else: -@@ -328,7 +331,7 @@ class Grub2Image(_GrubImage): - if com == "set": - (com,arg) = grub2_handle_set(arg) - -- if self.commands.has_key(com): -+ if com in self.commands: - if self.commands[com] is not None: - setattr(self, self.commands[com], arg.strip()) - else: -@@ -364,7 +367,7 @@ class Grub2ConfigFile(_GrubConfigFile): - def parse(self, buf = None): - if buf is None: - if self.filename is None: -- raise ValueError, "No config file defined to parse!" -+ raise ValueError("No config file defined to parse!") - - f = open(self.filename, 'r') - lines = f.readlines() -@@ -398,7 +401,7 @@ class Grub2ConfigFile(_GrubConfigFile): - title_match = re.match('^menuentry ["\'](.*?)["\'] (.*){', l) - if title_match: - if img is not None: -- raise RuntimeError, "syntax error: cannot nest menuentry (%d %s)" % (len(img),img) -+ raise RuntimeError("syntax error: cannot nest menuentry (%d %s)" % (len(img),img)) - img = [] - title = title_match.group(1) - continue -@@ -413,7 +416,7 @@ class Grub2ConfigFile(_GrubConfigFile): - menu_level -= 1 - continue - else: -- raise RuntimeError, "syntax error: closing brace without menuentry" -+ raise RuntimeError("syntax error: closing brace without menuentry") - - self.add_image(Grub2Image(title, img)) - img = None -@@ -428,7 +431,7 @@ class Grub2ConfigFile(_GrubConfigFile): - if com == "set": - (com,arg) = grub2_handle_set(arg) - -- if self.commands.has_key(com): -+ if com in self.commands: - if self.commands[com] is not None: - arg_strip = arg.strip() - if arg_strip == "${saved_entry}" or arg_strip == "${next_entry}": -@@ -443,7 +446,7 @@ class Grub2ConfigFile(_GrubConfigFile): - 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) -+ raise RuntimeError("syntax error: end of file with open menuentry(%d %s)" % (len(img),img)) - - if self.hasPassword(): - self.setPasswordAccess(False) -@@ -462,12 +465,12 @@ class Grub2ConfigFile(_GrubConfigFile): - - 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" -+ raise RuntimeError('Need a grub version ("grub" or "grub2") and a grub.conf or grub.cfg to read') - if sys.argv[1] == "grub": - g = GrubConfigFile(sys.argv[2]) - elif sys.argv[1] == "grub2": - g = Grub2ConfigFile(sys.argv[2]) - else: -- raise RuntimeError, "Unknown config type %s" % sys.argv[1] -+ raise RuntimeError("Unknown config type %s" % sys.argv[1]) - for i in g.images: -- print i #, i.title, i.root, i.kernel, i.args, i.initrd -+ print(i) #, i.title, i.root, i.kernel, i.args, i.initrd -diff --git a/tools/pygrub/src/LiloConf.py b/tools/pygrub/src/LiloConf.py -index 2cb649f115..e3bfcb5244 100644 ---- a/tools/pygrub/src/LiloConf.py -+++ b/tools/pygrub/src/LiloConf.py -@@ -2,9 +2,11 @@ - #LiloConf.py - # - -+from __future__ import print_function, absolute_import -+ - import sys, re, os - import logging --import GrubConf -+from . import GrubConf - - class LiloImage(object): - def __init__(self, lines, path): -@@ -24,12 +26,13 @@ class LiloImage(object): - self.lines = [] - self.path = path - self.root = "" -- map(self.set_from_line, lines) -+ for line in lines: -+ self.set_from_line(line) - - def set_from_line(self, line, replace = None): - (com, arg) = GrubConf.grub_exact_split(line, 2) - -- if self.commands.has_key(com): -+ if com in self.commands: - if self.commands[com] is not None: - setattr(self, self.commands[com], re.sub('^"(.+)"$', r"\1", arg.strip())) - else: -@@ -97,7 +100,7 @@ class LiloConfigFile(object): - def parse(self, buf = None): - if buf is None: - if self.filename is None: -- raise ValueError, "No config file defined to parse!" -+ raise ValueError("No config file defined to parse!") - - f = open(self.filename, 'r') - lines = f.readlines() -@@ -127,7 +130,7 @@ class LiloConfigFile(object): - continue - - (com, arg) = GrubConf.grub_exact_split(l, 2) -- if self.commands.has_key(com): -+ if com in self.commands: - if self.commands[com] is not None: - setattr(self, self.commands[com], arg.strip()) - else: -@@ -170,8 +173,8 @@ class LiloConfigFile(object): - - if __name__ == "__main__": - if len(sys.argv) < 2: -- raise RuntimeError, "Need a lilo.conf to read" -+ raise RuntimeError("Need a lilo.conf to read") - g = LiloConfigFile(sys.argv[1]) - for i in g.images: -- print i #, i.title, i.root, i.kernel, i.args, i.initrd -- print g.default -+ print(i) #, i.title, i.root, i.kernel, i.args, i.initrd -+ print(g.default) -diff --git a/tools/pygrub/src/pygrub b/tools/pygrub/src/pygrub -index 1189b1ca48..dbdce315c6 100755 ---- a/tools/pygrub/src/pygrub -+++ b/tools/pygrub/src/pygrub -@@ -12,13 +12,15 @@ - # along with this program; If not, see . - # - -+from __future__ import print_function -+ - import os, sys, string, struct, tempfile, re, traceback, stat, errno - import copy - import logging - import platform - import xen.lowlevel.xc - --import curses, _curses, curses.wrapper, curses.textpad, curses.ascii -+import curses, _curses, curses.textpad, curses.ascii - import getopt - - import xenfsimage -@@ -77,7 +79,7 @@ def get_solaris_slice(file, offset): - buf = os.read(fd, 512) - os.close(fd) - if struct.unpack(">sys.stderr, "Using %s to parse %s" % (parser,f) -+ print("Using %s to parse %s" % (parser,f), file=sys.stderr) - self.cf = parser() - self.cf.filename = f - break - if self.__dict__.get('cf', None) is None: -- raise RuntimeError, "couldn't find bootloader config file in the image provided." -+ raise RuntimeError("couldn't find bootloader config file in the image provided.") - f = fs.open_file(self.cf.filename) - # limit read size to avoid pathological cases - buf = f.read(FS_READ_MAX) -@@ -628,11 +627,11 @@ def run_grub(file, entry, fs, cfg_args): - if list_entries: - for i in range(len(g.cf.images)): - img = g.cf.images[i] -- print "title: %s" % img.title -- print " root: %s" % img.root -- print " kernel: %s" % img.kernel[1] -- print " args: %s" % img.args -- print " initrd: %s" % img.initrd[1] -+ print("title: %s" % img.title) -+ print(" root: %s" % img.root) -+ print(" kernel: %s" % img.kernel[1]) -+ print(" args: %s" % img.args) -+ print(" initrd: %s" % img.initrd[1]) - - if interactive and not list_entries: - curses.wrapper(run_main) -@@ -646,7 +645,7 @@ def run_grub(file, entry, fs, cfg_args): - sel = idx - - if sel == -1: -- print "No kernel image selected!" -+ print("No kernel image selected!") - sys.exit(1) - - try: -@@ -731,7 +730,7 @@ def format_sxp(kernel, ramdisk, args): - def format_simple(kernel, ramdisk, args, sep): - for check in (kernel, ramdisk, args): - if check is not None and sep in check: -- raise RuntimeError, "simple format cannot represent delimiter-containing value" -+ raise RuntimeError("simple format cannot represent delimiter-containing value") - s = ("kernel %s" % kernel) + sep - if ramdisk: - s += ("ramdisk %s" % ramdisk) + sep -@@ -744,7 +743,7 @@ if __name__ == "__main__": - sel = None - - def usage(): -- print >> sys.stderr, "Usage: %s [-q|--quiet] [-i|--interactive] [-l|--list-entries] [-n|--not-really] [--output=] [--kernel=] [--ramdisk=] [--args=] [--entry=] [--output-directory=] [--output-format=sxp|simple|simple0] [--offset=] " %(sys.argv[0],) -+ 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] [--offset=] " %(sys.argv[0],), file=sys.stderr) - - def copy_from_image(fs, file_to_read, file_type, output_directory, - not_really): -@@ -755,8 +754,8 @@ if __name__ == "__main__": - sys.exit("The requested %s file does not exist" % file_type) - try: - datafile = fs.open_file(file_to_read) -- except Exception, e: -- print >>sys.stderr, e -+ except Exception as e: -+ print(e, file=sys.stderr) - sys.exit("Error opening %s in guest" % file_to_read) - (tfd, ret) = tempfile.mkstemp(prefix="boot_"+file_type+".", - dir=output_directory) -@@ -769,8 +768,8 @@ if __name__ == "__main__": - return ret - try: - os.write(tfd, data) -- except Exception, e: -- print >>sys.stderr, e -+ except Exception as e: -+ print(e, file=sys.stderr) - os.close(tfd) - os.unlink(ret) - del datafile -@@ -834,7 +833,7 @@ if __name__ == "__main__": - try: - part_offs = [ int(a) ] - except ValueError: -- print "offset value must be an integer" -+ print("offset value must be an integer") - usage() - sys.exit(1) - elif o in ("--entry",): -@@ -847,13 +846,13 @@ if __name__ == "__main__": - debug = True - elif o in ("--output-format",): - if a not in ["sxp", "simple", "simple0"]: -- print "unknown output format %s" % a -+ print("unknown output format %s" % a) - usage() - sys.exit(1) - output_format = a - elif o in ("--output-directory",): - if not os.path.isdir(a): -- print "%s is not an existing directory" % a -+ print("%s is not an existing directory" % a) - sys.exit(1) - output_directory = a - -@@ -862,8 +861,8 @@ if __name__ == "__main__": - - - try: -- os.makedirs(output_directory, 0700) -- except OSError,e: -+ os.makedirs(output_directory, 0o700) -+ except OSError as e: - if (e.errno == errno.EEXIST) and os.path.isdir(output_directory): - pass - else: -@@ -877,10 +876,10 @@ if __name__ == "__main__": - # debug - if isconfig: - chosencfg = run_grub(file, entry, fs, incfg["args"]) -- print " kernel: %s" % chosencfg["kernel"] -+ print(" kernel: %s" % chosencfg["kernel"]) - if chosencfg["ramdisk"]: -- print " initrd: %s" % chosencfg["ramdisk"] -- print " args: %s" % chosencfg["args"] -+ print(" initrd: %s" % chosencfg["ramdisk"]) -+ print(" args: %s" % chosencfg["args"]) - sys.exit(0) - - # if boot filesystem is set then pass to fsimage.open -@@ -926,7 +925,7 @@ if __name__ == "__main__": - - # Did looping through partitions find us a kernel? - if fs is None: -- raise RuntimeError, "Unable to find partition containing kernel" -+ raise RuntimeError("Unable to find partition containing kernel") - - bootcfg["kernel"] = copy_from_image(fs, chosencfg["kernel"], "kernel", - output_directory, not_really) --- -2.17.1 - diff --git a/recipes-extended/xen/files/xen-tools-pygrub-py3.patch b/recipes-extended/xen/files/xen-tools-pygrub-py3.patch deleted file mode 100644 index e486646f..00000000 --- a/recipes-extended/xen/files/xen-tools-pygrub-py3.patch +++ /dev/null @@ -1,233 +0,0 @@ -From 83a204e6951c6358f995da3b60dd61224e9d41ac Mon Sep 17 00:00:00 2001 -From: Wei Liu -Date: Tue, 5 Mar 2019 14:13:17 +0000 -Subject: [PATCH] pygrub/fsimage: make it work with python 3 - -With the help of two porting guides and cpython source code: - -1. Use PyBytes to replace PyString counterparts. -2. Use PyVarObject_HEAD_INIT. -3. Remove usage of Py_FindMethod. -4. Use new module initialisation routine. - -For #3, Py_FindMethod was removed, yet an alternative wasn't -documented. The code is the result of reverse-engineering cpython -commit 6116d4a1d1 - -https://docs.python.org/3/howto/cporting.html -http://python3porting.com/cextensions.html - -Signed-off-by: Wei Liu -Reviewed-by: Andrew Cooper ---- - tools/pygrub/src/fsimage/fsimage.c | 123 ++++++++++++++++------------- - 1 file changed, 69 insertions(+), 54 deletions(-) - -diff --git a/tools/pygrub/src/fsimage/fsimage.c b/tools/pygrub/src/fsimage/fsimage.c -index 780207791c..2ebbbe35df 100644 ---- a/tools/pygrub/src/fsimage/fsimage.c -+++ b/tools/pygrub/src/fsimage/fsimage.c -@@ -26,12 +26,6 @@ - #include - #include - --#if (PYTHON_API_VERSION >= 1011) --#define PY_PAD 0L,0L,0L,0L,0L,0L,0L,0L,0L,0L,0L,0L,0L,0L,0L,0L,0L,0L,0L,0L,0L,0L,0L,0L --#else --#define PY_PAD 0L,0L,0L,0L --#endif -- - typedef struct fsimage_fs { - PyObject_HEAD - fsi_t *fs; -@@ -59,12 +53,24 @@ fsimage_file_read(fsimage_file_t *file, PyObject *args, PyObject *kwargs) - - bufsize = size ? size : 4096; - -- if ((buffer = PyString_FromStringAndSize(NULL, bufsize)) == NULL) -+ buffer = -+#if PY_MAJOR_VERSION < 3 -+ PyString_FromStringAndSize(NULL, bufsize); -+#else -+ PyBytes_FromStringAndSize(NULL, bufsize); -+#endif -+ -+ if (buffer == NULL) - return (NULL); - - while (1) { - int err; -- void *buf = PyString_AS_STRING(buffer) + bytesread; -+ void *buf = -+#if PY_MAJOR_VERSION < 3 -+ PyString_AS_STRING(buffer) + bytesread; -+#else -+ PyBytes_AS_STRING(buffer) + bytesread; -+#endif - - err = fsi_pread_file(file->file, buf, bufsize, - bytesread + offset); -@@ -84,12 +90,20 @@ fsimage_file_read(fsimage_file_t *file, PyObject *args, PyObject *kwargs) - if (bufsize == 0) - break; - } else { -+#if PY_MAJOR_VERSION < 3 - if (_PyString_Resize(&buffer, bytesread + bufsize) < 0) -+#else -+ if (_PyBytes_Resize(&buffer, bytesread + bufsize) < 0) -+#endif - return (NULL); - } - } - -+#if PY_MAJOR_VERSION < 3 - _PyString_Resize(&buffer, bytesread); -+#else -+ _PyBytes_Resize(&buffer, bytesread); -+#endif - return (buffer); - } - -@@ -106,11 +120,13 @@ static struct PyMethodDef fsimage_file_methods[] = { - { NULL, NULL, 0, NULL } - }; - -+#if PY_MAJOR_VERSION < 3 - static PyObject * - fsimage_file_getattr(fsimage_file_t *file, char *name) - { - return (Py_FindMethod(fsimage_file_methods, (PyObject *)file, name)); - } -+#endif - - static void - fsimage_file_dealloc(fsimage_file_t *file) -@@ -123,29 +139,18 @@ fsimage_file_dealloc(fsimage_file_t *file) - - static char fsimage_file_type__doc__[] = "Filesystem image file"; - PyTypeObject fsimage_file_type = { -- PyObject_HEAD_INIT(&PyType_Type) -- 0, /* ob_size */ -- "xenfsimage.file", /* tp_name */ -- sizeof(fsimage_file_t), /* tp_size */ -- 0, /* tp_itemsize */ -- (destructor) fsimage_file_dealloc, /* tp_dealloc */ -- 0, /* tp_print */ -- (getattrfunc) fsimage_file_getattr, /* tp_getattr */ -- 0, /* tp_setattr */ -- 0, /* tp_compare */ -- 0, /* tp_repr */ -- 0, /* tp_as_number */ -- 0, /* tp_as_sequence */ -- 0, /* tp_as_mapping */ -- 0, /* tp_hash */ -- 0, /* tp_call */ -- 0, /* tp_str */ -- 0, /* tp_getattro */ -- 0, /* tp_setattro */ -- 0, /* tp_as_buffer */ -- Py_TPFLAGS_DEFAULT, /* tp_flags */ -- fsimage_file_type__doc__, -- PY_PAD -+ PyVarObject_HEAD_INIT(&PyType_Type, 0) -+ .tp_name = "xenfsimage.file", -+ .tp_basicsize = sizeof(fsimage_file_t), -+ .tp_dealloc = (destructor) fsimage_file_dealloc, -+#if PY_MAJOR_VERSION < 3 -+ .tp_getattr = (getattrfunc) fsimage_file_getattr, -+#endif -+ .tp_flags = Py_TPFLAGS_DEFAULT, -+ .tp_doc = fsimage_file_type__doc__, -+#if PY_MAJOR_VERSION >= 3 -+ .tp_methods = fsimage_file_methods, -+#endif - }; - - static PyObject * -@@ -208,11 +213,13 @@ static struct PyMethodDef fsimage_fs_methods[] = { - { NULL, NULL, 0, NULL } - }; - -+#if PY_MAJOR_VERSION < 3 - static PyObject * - fsimage_fs_getattr(fsimage_fs_t *fs, char *name) - { - return (Py_FindMethod(fsimage_fs_methods, (PyObject *)fs, name)); - } -+#endif - - static void - fsimage_fs_dealloc (fsimage_fs_t *fs) -@@ -225,29 +232,18 @@ fsimage_fs_dealloc (fsimage_fs_t *fs) - PyDoc_STRVAR(fsimage_fs_type__doc__, "Filesystem image"); - - PyTypeObject fsimage_fs_type = { -- PyObject_HEAD_INIT(&PyType_Type) -- 0, /* ob_size */ -- "xenfsimage.fs", /* tp_name */ -- sizeof(fsimage_fs_t), /* tp_size */ -- 0, /* tp_itemsize */ -- (destructor) fsimage_fs_dealloc, /* tp_dealloc */ -- 0, /* tp_print */ -- (getattrfunc) fsimage_fs_getattr, /* tp_getattr */ -- 0, /* tp_setattr */ -- 0, /* tp_compare */ -- 0, /* tp_repr */ -- 0, /* tp_as_number */ -- 0, /* tp_as_sequence */ -- 0, /* tp_as_mapping */ -- 0, /* tp_hash */ -- 0, /* tp_call */ -- 0, /* tp_str */ -- 0, /* tp_getattro */ -- 0, /* tp_setattro */ -- 0, /* tp_as_buffer */ -- Py_TPFLAGS_DEFAULT, /* tp_flags */ -- fsimage_fs_type__doc__, -- PY_PAD -+ PyVarObject_HEAD_INIT(&PyType_Type, 0) -+ .tp_name = "xenfsimage.fs", -+ .tp_basicsize = sizeof(fsimage_fs_t), -+ .tp_dealloc = (destructor) fsimage_fs_dealloc, -+#if PY_MAJOR_VERSION < 3 -+ .tp_getattr = (getattrfunc) fsimage_fs_getattr, -+#endif -+ .tp_flags = Py_TPFLAGS_DEFAULT, -+ .tp_doc = fsimage_fs_type__doc__, -+#if PY_MAJOR_VERSION >= 3 -+ .tp_methods = fsimage_fs_methods, -+#endif - }; - - static PyObject * -@@ -309,8 +305,27 @@ static struct PyMethodDef fsimage_module_methods[] = { - { NULL, NULL, 0, NULL } - }; - -+#if PY_MAJOR_VERSION >= 3 -+static struct PyModuleDef fsimage_module_def = { -+ PyModuleDef_HEAD_INIT, -+ .m_name = "xenfsimage", -+ .m_size = -1, -+ .m_methods = fsimage_module_methods, -+}; -+#endif -+ - PyMODINIT_FUNC -+#if PY_MAJOR_VERSION >= 3 -+PyInit_xenfsimage(void) -+#else - initxenfsimage(void) -+#endif - { -+#if PY_MAJOR_VERSION < 3 - Py_InitModule("xenfsimage", fsimage_module_methods); -+#else -+ if (PyType_Ready(&fsimage_fs_type) < 0 || PyType_Ready(&fsimage_file_type) < 0) -+ return NULL; -+ return PyModule_Create(&fsimage_module_def); -+#endif - } --- -2.17.1 - diff --git a/recipes-extended/xen/files/xen-tools-python-fix-Wsign-compare-warnings.patch b/recipes-extended/xen/files/xen-tools-python-fix-Wsign-compare-warnings.patch deleted file mode 100644 index b32c5d06..00000000 --- a/recipes-extended/xen/files/xen-tools-python-fix-Wsign-compare-warnings.patch +++ /dev/null @@ -1,136 +0,0 @@ -From 88d703a361d34d75f81fc6d30b31d0abc8aa17eb Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= - -Date: Fri, 9 Aug 2019 03:01:36 +0100 -Subject: [PATCH] python: fix -Wsign-compare warnings -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Specifically: -xen/lowlevel/xc/xc.c: In function ‘pyxc_domain_create’: -xen/lowlevel/xc/xc.c:147:24: error: comparison of integer expressions of different signedness: ‘int’ and ‘long unsigned int’ [-Werror=sign-compare] - 147 | for ( i = 0; i < sizeof(xen_domain_handle_t); i++ ) - | ^ -xen/lowlevel/xc/xc.c: In function ‘pyxc_domain_sethandle’: -xen/lowlevel/xc/xc.c:312:20: error: comparison of integer expressions of different signedness: ‘int’ and ‘long unsigned int’ [-Werror=sign-compare] - 312 | for ( i = 0; i < sizeof(xen_domain_handle_t); i++ ) - | ^ -xen/lowlevel/xc/xc.c: In function ‘pyxc_domain_getinfo’: -xen/lowlevel/xc/xc.c:391:24: error: comparison of integer expressions of different signedness: ‘int’ and ‘long unsigned int’ [-Werror=sign-compare] - 391 | for ( j = 0; j < sizeof(xen_domain_handle_t); j++ ) - | ^ -xen/lowlevel/xc/xc.c: In function ‘pyxc_get_device_group’: -xen/lowlevel/xc/xc.c:677:20: error: comparison of integer expressions of different signedness: ‘int’ and ‘uint32_t’ {aka ‘unsigned int’} [-Werror=sign-compare] - 677 | for ( i = 0; i < num_sdevs; i++ ) - | ^ -xen/lowlevel/xc/xc.c: In function ‘pyxc_physinfo’: -xen/lowlevel/xc/xc.c:988:20: error: comparison of integer expressions of different signedness: ‘int’ and ‘long unsigned int’ [-Werror=sign-compare] - 988 | for ( i = 0; i < sizeof(pinfo.hw_cap)/4; i++ ) - | ^ -xen/lowlevel/xc/xc.c:994:20: error: comparison of integer expressions of different signedness: ‘int’ and ‘long unsigned int’ [-Werror=sign-compare] - 994 | for ( i = 0; i < ARRAY_SIZE(virtcaps_bits); i++ ) - | ^ -xen/lowlevel/xc/xc.c:998:24: error: comparison of integer expressions of different signedness: ‘int’ and ‘long unsigned int’ [-Werror=sign-compare] - 998 | for ( i = 0; i < ARRAY_SIZE(virtcaps_bits); i++ ) - | ^ -xen/lowlevel/xs/xs.c: In function ‘xspy_ls’: -xen/lowlevel/xs/xs.c:191:23: error: comparison of integer expressions of different signedness: ‘int’ and ‘unsigned int’ [-Werror=sign-compare] - 191 | for (i = 0; i < xsval_n; i++) - | ^ -xen/lowlevel/xs/xs.c: In function ‘xspy_get_permissions’: -xen/lowlevel/xs/xs.c:297:23: error: comparison of integer expressions of different signedness: ‘int’ and ‘unsigned int’ [-Werror=sign-compare] - 297 | for (i = 0; i < perms_n; i++) { - | ^ -cc1: all warnings being treated as errors - -Use size_t for loop iterators where it's compared with sizeof() or -similar construct. - -Signed-off-by: Marek Marczykowski-Górecki -Acked-by: Ian Jackson - -Modified to apply to Xen 4.12.2 by Christopher Clark -Signed-off-by: Christopher Clark ---- - tools/python/xen/lowlevel/xc/xc.c | 13 ++++++++----- - tools/python/xen/lowlevel/xs/xs.c | 4 ++-- - 2 files changed, 10 insertions(+), 7 deletions(-) - -diff --git a/tools/python/xen/lowlevel/xc/xc.c b/tools/python/xen/lowlevel/xc/xc.c -index 522cbe3b9c..188bfa34da 100644 ---- a/tools/python/xen/lowlevel/xc/xc.c -+++ b/tools/python/xen/lowlevel/xc/xc.c -@@ -117,7 +117,8 @@ static PyObject *pyxc_domain_create(XcObject *self, - PyObject *kwds) - { - uint32_t dom = 0, target = 0; -- int ret, i; -+ int ret; -+ size_t i; - PyObject *pyhandle = NULL; - struct xen_domctl_createdomain config = { - .handle = { -@@ -295,7 +296,7 @@ static PyObject *pyxc_vcpu_setaffinity(XcObject *self, - - static PyObject *pyxc_domain_sethandle(XcObject *self, PyObject *args) - { -- int i; -+ size_t i; - uint32_t dom; - PyObject *pyhandle; - xen_domain_handle_t handle; -@@ -336,7 +337,8 @@ static PyObject *pyxc_domain_getinfo(XcObject *self, - PyObject *list, *info_dict, *pyhandle; - - uint32_t first_dom = 0; -- int max_doms = 1024, nr_doms, i, j; -+ int max_doms = 1024, nr_doms, i; -+ size_t j; - xc_dominfo_t *info; - - static char *kwd_list[] = { "first_dom", "max_doms", NULL }; -@@ -631,7 +633,8 @@ static PyObject *pyxc_get_device_group(XcObject *self, - { - uint32_t sbdf; - uint32_t max_sdevs, num_sdevs; -- int domid, seg, bus, dev, func, rc, i; -+ int domid, seg, bus, dev, func, rc; -+ size_t i; - PyObject *Pystr; - char *group_str; - char dev_str[9]; -@@ -971,7 +974,7 @@ static PyObject *pyxc_physinfo(XcObject *self) - { - xc_physinfo_t pinfo; - char cpu_cap[128], virt_caps[128], *p; -- int i; -+ size_t i; - const char *virtcap_names[] = { "hvm", "hvm_directio" }; - - if ( xc_physinfo(self->xc_handle, &pinfo) != 0 ) -diff --git a/tools/python/xen/lowlevel/xs/xs.c b/tools/python/xen/lowlevel/xs/xs.c -index 9a0acfc25c..ea50f86bc3 100644 ---- a/tools/python/xen/lowlevel/xs/xs.c -+++ b/tools/python/xen/lowlevel/xs/xs.c -@@ -186,7 +186,7 @@ static PyObject *xspy_ls(XsHandle *self, PyObject *args) - Py_END_ALLOW_THREADS - - if (xsval) { -- int i; -+ size_t i; - PyObject *val = PyList_New(xsval_n); - for (i = 0; i < xsval_n; i++) - #if PY_MAJOR_VERSION >= 3 -@@ -276,7 +276,7 @@ static PyObject *xspy_get_permissions(XsHandle *self, PyObject *args) - struct xs_handle *xh = xshandle(self); - struct xs_permissions *perms; - unsigned int perms_n = 0; -- int i; -+ size_t i; - - xs_transaction_t th; - char *thstr; --- -2.17.1 - diff --git a/recipes-extended/xen/files/xen-tools-update-python-scripts-to-py3.patch b/recipes-extended/xen/files/xen-tools-update-python-scripts-to-py3.patch deleted file mode 100644 index 455072ba..00000000 --- a/recipes-extended/xen/files/xen-tools-update-python-scripts-to-py3.patch +++ /dev/null @@ -1,140 +0,0 @@ -From a9047a722ba5de38e7c1d762ffcfb74c36725fe2 Mon Sep 17 00:00:00 2001 -From: Andrew Cooper -Date: Mon, 11 Mar 2019 19:18:40 +0000 -Subject: [PATCH] tools/xen-foreign: Update python scripts to be Py3 compatible - -The issues are: - * dict.has_key() was completely removed in Py3 - * dict.keys() is an iterable rather than list in Py3, so .sort() doesn't work. - * list.sort(cmp=) was deprecated in Py2.4 and removed in Py3. - -The has_key() issue is trivially fixed by switching to using the in keyword. -The sorting issue could be trivially fixed, but take the opportunity to -improve the code. - -The reason for the sorting is to ensure that "unsigned long" gets replaced -before "long", and the only reason sorting is necessary is because -inttypes[arch] is needlessly a dictionary. Update inttypes[arch] to be a list -of tuples rather than a dictionary, and process them in list order. - -Reported-by: George Dunlap -Signed-off-by: Andrew Cooper -Acked-by: Wei Liu ---- - tools/include/xen-foreign/mkchecker.py | 2 +- - tools/include/xen-foreign/mkheader.py | 58 +++++++++++++------------- - 2 files changed, 29 insertions(+), 31 deletions(-) - -diff --git a/tools/include/xen-foreign/mkchecker.py b/tools/include/xen-foreign/mkchecker.py -index fdad869a91..199b0eebbc 100644 ---- a/tools/include/xen-foreign/mkchecker.py -+++ b/tools/include/xen-foreign/mkchecker.py -@@ -37,7 +37,7 @@ for struct in structs: - f.write('\tprintf("%%-25s |", "%s");\n' % struct); - for a in archs: - s = struct + "_" + a; -- if compat_arches.has_key(a): -+ if a in compat_arches: - compat = compat_arches[a] - c = struct + "_" + compat; - else: -diff --git a/tools/include/xen-foreign/mkheader.py b/tools/include/xen-foreign/mkheader.py -index 97e0c7a984..fb268f0dce 100644 ---- a/tools/include/xen-foreign/mkheader.py -+++ b/tools/include/xen-foreign/mkheader.py -@@ -17,13 +17,13 @@ header = {}; - footer = {}; - - #arm --inttypes["arm32"] = { -- "unsigned long" : "__danger_unsigned_long_on_arm32", -- "long" : "__danger_long_on_arm32", -- "xen_pfn_t" : "uint64_t", -- "xen_ulong_t" : "uint64_t", -- "uint64_t" : "__align8__ uint64_t", --}; -+inttypes["arm32"] = [ -+ ("unsigned long", "__danger_unsigned_long_on_arm32"), -+ ("long", "__danger_long_on_arm32"), -+ ("xen_pfn_t", "uint64_t"), -+ ("xen_ulong_t", "uint64_t"), -+ ("uint64_t", "__align8__ uint64_t"), -+] - header["arm32"] = """ - #define __arm___ARM32 1 - #if defined(__GNUC__) && !defined(__STRICT_ANSI__) -@@ -38,13 +38,13 @@ footer["arm32"] = """ - #undef __DECL_REG - """ - --inttypes["arm64"] = { -- "unsigned long" : "__danger_unsigned_long_on_arm64", -- "long" : "__danger_long_on_arm64", -- "xen_pfn_t" : "uint64_t", -- "xen_ulong_t" : "uint64_t", -- "uint64_t" : "__align8__ uint64_t", --}; -+inttypes["arm64"] = [ -+ ("unsigned long", "__danger_unsigned_long_on_arm64"), -+ ("long", "__danger_long_on_arm64"), -+ ("xen_pfn_t", "uint64_t"), -+ ("xen_ulong_t", "uint64_t"), -+ ("uint64_t", "__align8__ uint64_t"), -+] - header["arm64"] = """ - #define __aarch64___ARM64 1 - #if defined(__GNUC__) && !defined(__STRICT_ANSI__) -@@ -60,12 +60,12 @@ footer["arm64"] = """ - """ - - # x86_32 --inttypes["x86_32"] = { -- "unsigned long" : "uint32_t", -- "long" : "uint32_t", -- "xen_pfn_t" : "uint32_t", -- "xen_ulong_t" : "uint32_t", --}; -+inttypes["x86_32"] = [ -+ ("unsigned long", "uint32_t"), -+ ("long", "uint32_t"), -+ ("xen_pfn_t", "uint32_t"), -+ ("xen_ulong_t", "uint32_t"), -+] - header["x86_32"] = """ - #define __DECL_REG_LO8(which) uint32_t e ## which ## x - #define __DECL_REG_LO16(name) uint32_t e ## name -@@ -79,12 +79,12 @@ footer["x86_32"] = """ - """; - - # x86_64 --inttypes["x86_64"] = { -- "unsigned long" : "__align8__ uint64_t", -- "long" : "__align8__ uint64_t", -- "xen_pfn_t" : "__align8__ uint64_t", -- "xen_ulong_t" : "__align8__ uint64_t", --}; -+inttypes["x86_64"] = [ -+ ("unsigned long", "__align8__ uint64_t"), -+ ("long", "__align8__ uint64_t"), -+ ("xen_pfn_t", "__align8__ uint64_t"), -+ ("xen_ulong_t", "__align8__ uint64_t"), -+] - header["x86_64"] = """ - #if defined(__GNUC__) && !defined(__STRICT_ANSI__) - # define __DECL_REG(name) union { uint64_t r ## name, e ## name; } -@@ -205,10 +205,8 @@ for struct in structs: - output = re.sub("\\b(%s)_t\\b" % struct, "\\1_%s_t" % arch, output); - - # replace: integer types --integers = inttypes[arch].keys(); --integers.sort(lambda a, b: cmp(len(b),len(a))); --for type in integers: -- output = re.sub("\\b%s\\b" % type, inttypes[arch][type], output); -+for old, new in inttypes[arch]: -+ output = re.sub("\\b%s\\b" % old, new, output) - - # print results - f = open(outfile, "w"); --- -2.17.1 - diff --git a/recipes-extended/xen/xen-tools.inc b/recipes-extended/xen/xen-tools.inc index 154e2244..2feed007 100644 --- a/recipes-extended/xen/xen-tools.inc +++ b/recipes-extended/xen/xen-tools.inc @@ -65,6 +65,7 @@ RRECOMMENDS_${PN} = " \ ${PN}-flask \ ${PN}-hvmloader \ ${PN}-shim \ + ${PN}-ucode \ ${PN}-xenpaging \ " @@ -202,6 +203,7 @@ PACKAGES = " \ ${PN}-scripts-network \ ${PN}-shim \ ${PN}-staticdev \ + ${PN}-ucode \ ${PN}-volatiles \ ${PN}-xcutils \ ${PN}-xencommons \ @@ -529,6 +531,10 @@ FILES_${PN}-shim = " \ ${libdir}/xen/boot/xen-shim \ " +FILES_${PN}-ucode = "\ + ${sbindir}/xen-ucode \ + " + FILES_${PN}-volatiles = "\ ${sysconfdir}/default/volatiles/99_xen \ ${sysconfdir}/tmpfiles.d/xen.conf \ diff --git a/recipes-extended/xen/xen-tools_git.bb b/recipes-extended/xen/xen-tools_git.bb index de9acc0e..5f41915a 100644 --- a/recipes-extended/xen/xen-tools_git.bb +++ b/recipes-extended/xen/xen-tools_git.bb @@ -1,21 +1,16 @@ -SRCREV ?= "a5fcafbfbee55261853fba07149c1c795f2baf58" +SRCREV ?= "9f7e8bac4ca279b3bfccb5f3730fb2e5398c95ab" -XEN_REL ?= "4.12" +XEN_REL ?= "4.13" XEN_BRANCH ?= "stable-${XEN_REL}" SRC_URI = " \ git://xenbits.xen.org/xen.git;branch=${XEN_BRANCH} \ file://0001-python-pygrub-pass-DISTUTILS-xen.4.12.patch \ - file://xen-tools-update-python-scripts-to-py3.patch \ - file://xen-tools-libxl-gentypes-py3.patch \ - file://xen-tools-python-fix-Wsign-compare-warnings.patch \ - file://xen-tools-pygrub-change-tabs-into-spaces.patch \ - file://xen-tools-pygrub-make-python-scripts-work-with-2.6-and-up.patch \ - file://xen-tools-pygrub-py3.patch \ file://0001-xen-build-temporarily-inhibit-Werror.patch \ + file://xen-tools-kdd-stop-using-0-arrays-to-access-packet-contents.patch \ " -LIC_FILES_CHKSUM ?= "file://COPYING;md5=bbb4b1bdc2c3b6743da3c39d03249095" +LIC_FILES_CHKSUM ?= "file://COPYING;md5=4295d895d4b5ce9d070263d52f030e49" PV = "${XEN_REL}+git${SRCPV}" diff --git a/recipes-extended/xen/xen_git.bb b/recipes-extended/xen/xen_git.bb index a7475ac3..142bdcc4 100644 --- a/recipes-extended/xen/xen_git.bb +++ b/recipes-extended/xen/xen_git.bb @@ -1,11 +1,11 @@ -SRCREV ?= "a5fcafbfbee55261853fba07149c1c795f2baf58" +SRCREV ?= "9f7e8bac4ca279b3bfccb5f3730fb2e5398c95ab" -XEN_REL ?= "4.12" +XEN_REL ?= "4.13" XEN_BRANCH ?= "stable-${XEN_REL}" SRC_URI = "git://xenbits.xen.org/xen.git;branch=${XEN_BRANCH}" -LIC_FILES_CHKSUM ?= "file://COPYING;md5=bbb4b1bdc2c3b6743da3c39d03249095" +LIC_FILES_CHKSUM ?= "file://COPYING;md5=4295d895d4b5ce9d070263d52f030e49" PV = "${XEN_REL}+git${SRCPV}" -- cgit v1.2.3-54-g00ecf