]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commit
mgr: set argv for python in PyModuleRegistry
authorKefu Chai <tchaikov@gmail.com>
Sat, 3 Feb 2024 11:49:13 +0000 (19:49 +0800)
committerKefu Chai <tchaikov@gmail.com>
Sat, 22 Jun 2024 01:21:52 +0000 (09:21 +0800)
commit07773617f339a2779aa7cf910c0361c937ffe4c2
tree86871eb77e0785dc6df424a9e454221b8c293035
parent4cf9b36c66fd64f2dc50f4e1acca3fe93e29b3f2
mgr: set argv for python in PyModuleRegistry

before this change, we setup the progname for Python interpreter,
but setup the argv for it in PyModule. and we are using deprecated
API to initialize Python interpreter.

in this change, let's do this in a single place for better
maintainability. also, take this opportunity, to use the non-deprecated
API to initialize interpreter on Python >= 3.8.

this silence the warning when compiling ceph-mgr with CPython 3.12:
```
/var/ssd/ceph/src/mgr/PyModule.cc: In member function ‘int PyModule::load(PyThreadState*)’:
/var/ssd/ceph/src/mgr/PyModule.cc:363:20: warning: ‘void PySys_SetArgv(int, wchar_t**)’ is deprecated [-Wdeprecated-declarations]
  363 |       PySys_SetArgv(1, (wchar_t**)argv);
      |       ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/python3.12/Python.h:96,
                 from /var/ssd/ceph/src/mgr/BaseMgrModule.h:4,
                 from /var/ssd/ceph/src/mgr/PyModule.cc:14:
/usr/include/python3.12/sysmodule.h:13:38: note: declared here
   13 | Py_DEPRECATED(3.11) PyAPI_FUNC(void) PySys_SetArgv(int, wchar_t **);
      |                                      ^~~~~~~~~~~~~
```

Signed-off-by: Kefu Chai <tchaikov@gmail.com>
src/mgr/PyModule.cc
src/mgr/PyModuleRegistry.cc