[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] python3 issues



On Mon, Mar 25, 2019 at 10:20:05PM +0000, YOUNG, MICHAEL A. wrote:
> I have been testing the python3 changes committed to xen and found a few 
> issues. There are a couple of ocaml python build scripts that don't work 
> for me with python3, and I needed a few fixes to get pygrub to work, 
> mostly due to the change from strings to bytes. I am attaching the patch I 
> put together in testing to get these things to work to illustrate where 
> the problems are and in case it is useful to others, though I believe at 
> least some of it isn't compatible with python2.

My fault. Somehow all my local testing and project's CIs failed to catch
these files.

Thanks for fixing these.  I will turn it into a proper patch, put your
SoB there and submit it.

> 
>       Michael Young

> --- xen-4.12.0-rc5/tools/ocaml/libs/xentoollog/genlevels.py.orig      
> 2019-03-06 14:42:49.000000000 +0000
> +++ xen-4.12.0-rc5/tools/ocaml/libs/xentoollog/genlevels.py   2019-03-13 
> 21:33:59.805930989 +0000
> @@ -1,6 +1,7 @@
>  #!/usr/bin/python
>  
>  import sys
> +from functools import reduce

We should have from __future__ import print_function here to be python2
compatible.

>  
>  def read_levels():
>       f = open('../../../libs/toollog/include/xentoollog.h', 'r')
> @@ -86,14 +87,14 @@
>  def autogen_header(open_comment, close_comment):
>      s = open_comment + " AUTO-GENERATED FILE DO NOT EDIT " + close_comment + 
> "\n"
>      s += open_comment + " autogenerated by \n"
> -    s += reduce(lambda x,y: x + " ", range(len(open_comment + " ")), "")
> +    s += reduce(lambda x,y: x + " ", list(range(len(open_comment + " "))), 
> "")

I don't think list is required here. reduce should work with generator
just fine.

>      s += "%s" % " ".join(sys.argv)
>      s += "\n " + close_comment + "\n\n"
>      return s
>  
>  if __name__ == '__main__':
>       if len(sys.argv) < 3:
> -             print >>sys.stderr, "Usage: genlevels.py <mli> <ml> <c-inc>"
> +             print("Usage: genlevels.py <mli> <ml> <c-inc>", file=sys.stderr)
>               sys.exit(1)
>  
>       levels, olevels = read_levels()
> --- xen-4.12.0-rc5/tools/ocaml/libs/xl/genwrap.py.orig        2019-03-06 
> 14:42:49.000000000 +0000
> +++ xen-4.12.0-rc5/tools/ocaml/libs/xl/genwrap.py     2019-03-13 
> 21:34:00.674962832 +0000
> @@ -3,6 +3,7 @@
>  import sys,os
>  
>  import idl
> +from functools import reduce

Same here as above.
>          if ty.init_fn is not None:
> --- xen-4.12.0-rc6/tools/pygrub/src/GrubConf.py.orig  2019-03-24 
> 22:44:05.502581989 +0000
> +++ xen-4.12.0-rc6/tools/pygrub/src/GrubConf.py       2019-03-24 
> 22:49:14.025934786 +0000
> @@ -230,10 +230,10 @@
>      def _get_default(self):
>          return self._default
>      def _set_default(self, val):
> -        if val == "saved":
> +        if val == "saved" or not val.isdecimal():
>              self._default = 0
>          else:
> -            self._default = val
> +            self._default = int(val)
>  
>          if self._default < 0:
>              raise ValueError("default must be positive number")
> --- xen-4.12.0-rc6/tools/pygrub/src/pygrub.orig       2019-03-24 
> 22:44:05.503582025 +0000
> +++ xen-4.12.0-rc6/tools/pygrub/src/pygrub    2019-03-24 22:48:24.446113809 
> +0000
> @@ -457,7 +457,7 @@
>          # limit read size to avoid pathological cases
>          buf = f.read(FS_READ_MAX)
>          del f
> -        self.cf.parse(buf)
> +        self.cf.parse(buf.decode())

Hmm... This could be a bit problematic for 2 compatibility. I will need
some time to check the documents.

Wei.

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.