All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/1] tools/python: move lowlevel packages one level up
  2022-04-21 14:31 [PATCH 0/1] Adjust odd Python bindings Elliott Mitchell
@ 2022-04-21  2:23 ` Elliott Mitchell
  2022-04-22  1:17 ` [PATCH 0/1] Adjust odd Python bindings Marek Marczykowski-Górecki
  1 sibling, 0 replies; 4+ messages in thread
From: Elliott Mitchell @ 2022-04-21  2:23 UTC (permalink / raw)
  To: xen-devel; +Cc: Wei Liu, Anthony PERARD, Marek Marczykowski-Górecki

Prior to this a Python script first needed to import 3 levels of
packages, then invoke xen.lowlevel.$tool.$tool() to get a handle.  Now
only 2 levels of packages, then xen.lowlevel.$tool() gets a handle.

Signed-off-by: Elliott Mitchell <ehem+xen@m5p.com>
---
 tools/pygrub/src/pygrub                 |  4 ++--
 tools/python/setup.py                   | 12 ++++++------
 tools/python/xen/lowlevel/{xc => }/xc.c |  0
 tools/python/xen/lowlevel/{xs => }/xs.c |  0
 4 files changed, 8 insertions(+), 8 deletions(-)
 rename tools/python/xen/lowlevel/{xc => }/xc.c (100%)
 rename tools/python/xen/lowlevel/{xs => }/xs.c (100%)

diff --git a/tools/pygrub/src/pygrub b/tools/pygrub/src/pygrub
index ce7ab0eb8c..6b1989c7d8 100755
--- a/tools/pygrub/src/pygrub
+++ b/tools/pygrub/src/pygrub
@@ -18,7 +18,7 @@ import os, sys, string, struct, tempfile, re, traceback, stat, errno
 import copy
 import logging
 import platform
-import xen.lowlevel.xc
+import xen.lowlevel
 
 import curses, _curses, curses.textpad, curses.ascii
 import getopt
@@ -669,7 +669,7 @@ def run_grub(file, entry, fs, cfg_args):
     return grubcfg
 
 def supports64bitPVguest():
-    xc = xen.lowlevel.xc.xc()
+    xc = xen.lowlevel.xc()
     caps = xc.xeninfo()['xen_caps'].split(" ")
     for cap in caps:
         if cap == "xen-3.0-x86_64":
diff --git a/tools/python/setup.py b/tools/python/setup.py
index 8c95db7769..77546335b8 100644
--- a/tools/python/setup.py
+++ b/tools/python/setup.py
@@ -17,28 +17,28 @@ PATH_LIBXENCTRL = XEN_ROOT + "/tools/libs/ctrl"
 PATH_LIBXENGUEST = XEN_ROOT + "/tools/libs/guest"
 PATH_XENSTORE = XEN_ROOT + "/tools/libs/store"
 
-xc = Extension("xc",
+xc = Extension("xen.lowlevel.xc",
                extra_compile_args = extra_compile_args,
                include_dirs       = [ PATH_XEN,
                                       PATH_LIBXENTOOLLOG + "/include",
                                       PATH_LIBXENEVTCHN + "/include",
                                       PATH_LIBXENCTRL + "/include",
                                       PATH_LIBXENGUEST + "/include",
-                                      "xen/lowlevel/xc" ],
+                                      "xen/lowlevel" ],
                library_dirs       = [ PATH_LIBXENCTRL, PATH_LIBXENGUEST ],
                libraries          = [ "xenctrl", "xenguest" ],
                depends            = [ PATH_LIBXENCTRL + "/libxenctrl.so", PATH_LIBXENGUEST + "/libxenguest.so" ],
                extra_link_args    = SHLIB_libxenctrl + SHLIB_libxenguest,
-               sources            = [ "xen/lowlevel/xc/xc.c" ])
+               sources            = [ "xen/lowlevel/xc.c" ])
 
-xs = Extension("xs",
+xs = Extension("xen.lowlevel.xs",
                extra_compile_args = extra_compile_args,
-               include_dirs       = [ PATH_XEN, PATH_XENSTORE + "/include", "xen/lowlevel/xs" ],
+               include_dirs       = [ PATH_XEN, PATH_XENSTORE + "/include", "xen/lowlevel" ],
                library_dirs       = [ PATH_XENSTORE ],
                libraries          = [ "xenstore" ],
                depends            = [ PATH_XENSTORE + "/libxenstore.so" ],
                extra_link_args    = SHLIB_libxenstore,
-               sources            = [ "xen/lowlevel/xs/xs.c" ])
+               sources            = [ "xen/lowlevel/xs.c" ])
 
 plat = os.uname()[0]
 modules = [ xc, xs ]
diff --git a/tools/python/xen/lowlevel/xc/xc.c b/tools/python/xen/lowlevel/xc.c
similarity index 100%
rename from tools/python/xen/lowlevel/xc/xc.c
rename to tools/python/xen/lowlevel/xc.c
diff --git a/tools/python/xen/lowlevel/xs/xs.c b/tools/python/xen/lowlevel/xs.c
similarity index 100%
rename from tools/python/xen/lowlevel/xs/xs.c
rename to tools/python/xen/lowlevel/xs.c
-- 
2.30.2



^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [PATCH 0/1] Adjust odd Python bindings
@ 2022-04-21 14:31 Elliott Mitchell
  2022-04-21  2:23 ` [PATCH 1/1] tools/python: move lowlevel packages one level up Elliott Mitchell
  2022-04-22  1:17 ` [PATCH 0/1] Adjust odd Python bindings Marek Marczykowski-Górecki
  0 siblings, 2 replies; 4+ messages in thread
From: Elliott Mitchell @ 2022-04-21 14:31 UTC (permalink / raw)
  To: xen-devel; +Cc: Wei Liu, Anthony PERARD, Marek Marczykowski-Górecki

First off, this isn't properly tested.  I know it compiles, but that may
not mean much when this encounters the Real World.

I'm doing initial exploration for a project involving Xen.  Python seems
a good language for the project, so I'm trying out the Python bindings
for Xen.

What I've noticed is the bindings seem wrong.  Importing xen.lowlevel.xc,
then creating a xen.lowlevel.xc.xc() object has too many layers.  The
extra ".xc" is a distinct mismatch for comparable tools.  As such I'm
trying to get rid of the duplicated layer for both xc and xs.

The Python documentation indicates the name given to Extension() should
be the full name, not just the package name.  As such that is being
adjusted too.

I haven't yet done testing beyond confirming this builds, since further
checking will take some time to do...

I'm unsure how widely the Python bindings are used.  Certainly they were
used for PyGRUB.  Have any other projects used them so far?  What I'm
doing is likely to be contributed to the Xen Project, and I suspect the
existence of other projects would be known...

Elliott Mitchell (1):
  tools/python: move lowlevel packages one level up

 tools/pygrub/src/pygrub                 |  4 ++--
 tools/python/setup.py                   | 12 ++++++------
 tools/python/xen/lowlevel/{xc => }/xc.c |  0
 tools/python/xen/lowlevel/{xs => }/xs.c |  0
 4 files changed, 8 insertions(+), 8 deletions(-)
 rename tools/python/xen/lowlevel/{xc => }/xc.c (100%)
 rename tools/python/xen/lowlevel/{xs => }/xs.c (100%)

-- 
2.30.2



^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH 0/1] Adjust odd Python bindings
  2022-04-21 14:31 [PATCH 0/1] Adjust odd Python bindings Elliott Mitchell
  2022-04-21  2:23 ` [PATCH 1/1] tools/python: move lowlevel packages one level up Elliott Mitchell
@ 2022-04-22  1:17 ` Marek Marczykowski-Górecki
  2022-04-22 19:59   ` Elliott Mitchell
  1 sibling, 1 reply; 4+ messages in thread
From: Marek Marczykowski-Górecki @ 2022-04-22  1:17 UTC (permalink / raw)
  To: Elliott Mitchell; +Cc: xen-devel, Wei Liu, Anthony PERARD

[-- Attachment #1: Type: text/plain, Size: 743 bytes --]

On Thu, Apr 21, 2022 at 07:31:26AM -0700, Elliott Mitchell wrote:
> I'm unsure how widely the Python bindings are used.  Certainly they were
> used for PyGRUB.  Have any other projects used them so far?  What I'm
> doing is likely to be contributed to the Xen Project, and I suspect the
> existence of other projects would be known...

Yes, Python bindings are used outside of xen.git. I'm aware of few
places in Qubes OS, but I expect there are other users too. So, I'm
afraid breaking the current import method isn't really an option. What
you could try, is to make both versions work at the same time, but TBH
I'm not sure how to do that with C extension.

-- 
Best Regards,
Marek Marczykowski-Górecki
Invisible Things Lab

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH 0/1] Adjust odd Python bindings
  2022-04-22  1:17 ` [PATCH 0/1] Adjust odd Python bindings Marek Marczykowski-Górecki
@ 2022-04-22 19:59   ` Elliott Mitchell
  0 siblings, 0 replies; 4+ messages in thread
From: Elliott Mitchell @ 2022-04-22 19:59 UTC (permalink / raw)
  To: Marek Marczykowski-G??recki; +Cc: xen-devel, Wei Liu, Anthony PERARD

On Fri, Apr 22, 2022 at 03:17:23AM +0200, Marek Marczykowski-G??recki wrote:
> On Thu, Apr 21, 2022 at 07:31:26AM -0700, Elliott Mitchell wrote:
> > I'm unsure how widely the Python bindings are used.  Certainly they were
> > used for PyGRUB.  Have any other projects used them so far?  What I'm
> > doing is likely to be contributed to the Xen Project, and I suspect the
> > existence of other projects would be known...
> 
> Yes, Python bindings are used outside of xen.git. I'm aware of few
> places in Qubes OS, but I expect there are other users too. So, I'm
> afraid breaking the current import method isn't really an option. What
> you could try, is to make both versions work at the same time, but TBH
> I'm not sure how to do that with C extension.

Simplest would have been to address this in 2004, when the Python
bindings had insignificant usage.  Another handy time when things could
have been broken was the Python 2->3 transition.  Yet now both of those
points have passed.

I suspect this could be done by adding some Python code to an __init__.py
file.  Simply redirect attempts to load the old path to the new path.

Other thing I noted is the Python documentation indicates the first
argument to Extension() was wrong.


-- 
(\___(\___(\______          --=> 8-) EHM <=--          ______/)___/)___/)
 \BS (    |         ehem+sigmsg@m5p.com  PGP 87145445         |    )   /
  \_CS\   |  _____  -O #include <stddisclaimer.h> O-   _____  |   /  _/
8A19\___\_|_/58D2 7E3D DDF4 7BA6 <-PGP-> 41D1 B375 37D0 8714\_|_/___/5445




^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2022-04-22 20:00 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-04-21 14:31 [PATCH 0/1] Adjust odd Python bindings Elliott Mitchell
2022-04-21  2:23 ` [PATCH 1/1] tools/python: move lowlevel packages one level up Elliott Mitchell
2022-04-22  1:17 ` [PATCH 0/1] Adjust odd Python bindings Marek Marczykowski-Górecki
2022-04-22 19:59   ` Elliott Mitchell

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.