]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
perf python: Remove python 2 scripting support
authorIan Rogers <irogers@google.com>
Tue, 19 Nov 2024 01:16:23 +0000 (17:16 -0800)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Wed, 18 Dec 2024 19:24:32 +0000 (16:24 -0300)
Python2 was deprecated 4 years ago, remove support and workarounds.

Signed-off-by: Ian Rogers <irogers@google.com>
Acked-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Andi Kleen <ak@linux.intel.com>
Cc: Athira Rajeev <atrajeev@linux.vnet.ibm.com>
Cc: Colin Ian King <colin.i.king@gmail.com>
Cc: Dapeng Mi <dapeng1.mi@linux.intel.com>
Cc: Howard Chu <howardchu95@gmail.com>
Cc: Ilya Leoshkevich <iii@linux.ibm.com>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: James Clark <james.clark@linaro.org>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Josh Poimboeuf <jpoimboe@redhat.com>
Cc: Kan Liang <kan.liang@linux.intel.com>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Michael Petlan <mpetlan@redhat.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Richter <tmricht@linux.ibm.com>
Cc: Veronika Molnarova <vmolnaro@redhat.com>
Cc: Weilin Wang <weilin.wang@intel.com>
Link: https://lore.kernel.org/r/20241119011644.971342-2-irogers@google.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/perf/scripts/python/Perf-Trace-Util/Context.c
tools/perf/util/python.c
tools/perf/util/scripting-engines/trace-event-python.c

index 01f54d6724a5f83c7f6d30b3b0f228fa11e9bf3f..d742daaa5d5a223ff8ca7bb775f7e060543d1810 100644 (file)
 #include "../../../util/srcline.h"
 #include "../../../util/srccode.h"
 
-#if PY_MAJOR_VERSION < 3
-#define _PyCapsule_GetPointer(arg1, arg2) \
-  PyCObject_AsVoidPtr(arg1)
-#define _PyBytes_FromStringAndSize(arg1, arg2) \
-  PyString_FromStringAndSize((arg1), (arg2))
-#define _PyUnicode_AsUTF8(arg) \
-  PyString_AsString(arg)
-
-PyMODINIT_FUNC initperf_trace_context(void);
-#else
 #define _PyCapsule_GetPointer(arg1, arg2) \
   PyCapsule_GetPointer((arg1), (arg2))
 #define _PyBytes_FromStringAndSize(arg1, arg2) \
@@ -42,7 +32,6 @@ PyMODINIT_FUNC initperf_trace_context(void);
   PyUnicode_AsUTF8(arg)
 
 PyMODINIT_FUNC PyInit_perf_trace_context(void);
-#endif
 
 static struct scripting_context *get_args(PyObject *args, const char *name, PyObject **arg2)
 {
@@ -213,12 +202,6 @@ static PyMethodDef ContextMethods[] = {
        { NULL, NULL, 0, NULL}
 };
 
-#if PY_MAJOR_VERSION < 3
-PyMODINIT_FUNC initperf_trace_context(void)
-{
-       (void) Py_InitModule("perf_trace_context", ContextMethods);
-}
-#else
 PyMODINIT_FUNC PyInit_perf_trace_context(void)
 {
        static struct PyModuleDef moduledef = {
@@ -240,4 +223,3 @@ PyMODINIT_FUNC PyInit_perf_trace_context(void)
 
        return mod;
 }
-#endif
index 2096cdbaa53b4ce470a606f0a6e566b3c1bab7a2..ea6dbe6e4317507294ddc47f812d48f6c8ff1959 100644 (file)
 #include <internal/lib.h>
 #include "../builtin.h"
 
-#if PY_MAJOR_VERSION < 3
-#define _PyUnicode_FromString(arg) \
-  PyString_FromString(arg)
-#define _PyUnicode_AsString(arg) \
-  PyString_AsString(arg)
-#define _PyUnicode_FromFormat(...) \
-  PyString_FromFormat(__VA_ARGS__)
-#define _PyLong_FromLong(arg) \
-  PyInt_FromLong(arg)
-
-#else
-
 #define _PyUnicode_FromString(arg) \
   PyUnicode_FromString(arg)
 #define _PyUnicode_FromFormat(...) \
   PyUnicode_FromFormat(__VA_ARGS__)
 #define _PyLong_FromLong(arg) \
   PyLong_FromLong(arg)
-#endif
 
-#ifndef Py_TYPE
-#define Py_TYPE(ob) (((PyObject*)(ob))->ob_type)
-#endif
-
-/* Define PyVarObject_HEAD_INIT for python 2.5 */
-#ifndef PyVarObject_HEAD_INIT
-# define PyVarObject_HEAD_INIT(type, size) PyObject_HEAD_INIT(type) size,
-#endif
-
-#if PY_MAJOR_VERSION < 3
-PyMODINIT_FUNC initperf(void);
-#else
 PyMODINIT_FUNC PyInit_perf(void);
-#endif
 
 #define member_def(type, member, ptype, help) \
        { #member, ptype, \
@@ -117,7 +91,7 @@ static PyObject *pyrf_mmap_event__repr(struct pyrf_event *pevent)
                     pevent->event.mmap.pgoff, pevent->event.mmap.filename) < 0) {
                ret = PyErr_NoMemory();
        } else {
-               ret = _PyUnicode_FromString(s);
+               ret = PyUnicode_FromString(s);
                free(s);
        }
        return ret;
@@ -148,7 +122,7 @@ static PyMemberDef pyrf_task_event__members[] = {
 
 static PyObject *pyrf_task_event__repr(struct pyrf_event *pevent)
 {
-       return _PyUnicode_FromFormat("{ type: %s, pid: %u, ppid: %u, tid: %u, "
+       return PyUnicode_FromFormat("{ type: %s, pid: %u, ppid: %u, tid: %u, "
                                   "ptid: %u, time: %" PRI_lu64 "}",
                                   pevent->event.header.type == PERF_RECORD_FORK ? "fork" : "exit",
                                   pevent->event.fork.pid,
@@ -181,7 +155,7 @@ static PyMemberDef pyrf_comm_event__members[] = {
 
 static PyObject *pyrf_comm_event__repr(struct pyrf_event *pevent)
 {
-       return _PyUnicode_FromFormat("{ type: comm, pid: %u, tid: %u, comm: %s }",
+       return PyUnicode_FromFormat("{ type: comm, pid: %u, tid: %u, comm: %s }",
                                   pevent->event.comm.pid,
                                   pevent->event.comm.tid,
                                   pevent->event.comm.comm);
@@ -212,7 +186,7 @@ static PyObject *pyrf_throttle_event__repr(struct pyrf_event *pevent)
 {
        struct perf_record_throttle *te = (struct perf_record_throttle *)(&pevent->event.header + 1);
 
-       return _PyUnicode_FromFormat("{ type: %sthrottle, time: %" PRI_lu64 ", id: %" PRI_lu64
+       return PyUnicode_FromFormat("{ type: %sthrottle, time: %" PRI_lu64 ", id: %" PRI_lu64
                                   ", stream_id: %" PRI_lu64 " }",
                                   pevent->event.header.type == PERF_RECORD_THROTTLE ? "" : "un",
                                   te->time, te->id, te->stream_id);
@@ -247,7 +221,7 @@ static PyObject *pyrf_lost_event__repr(struct pyrf_event *pevent)
                     pevent->event.lost.id, pevent->event.lost.lost) < 0) {
                ret = PyErr_NoMemory();
        } else {
-               ret = _PyUnicode_FromString(s);
+               ret = PyUnicode_FromString(s);
                free(s);
        }
        return ret;
@@ -274,7 +248,7 @@ static PyMemberDef pyrf_read_event__members[] = {
 
 static PyObject *pyrf_read_event__repr(struct pyrf_event *pevent)
 {
-       return _PyUnicode_FromFormat("{ type: read, pid: %u, tid: %u }",
+       return PyUnicode_FromFormat("{ type: read, pid: %u, tid: %u }",
                                   pevent->event.read.pid,
                                   pevent->event.read.tid);
        /*
@@ -309,7 +283,7 @@ static PyObject *pyrf_sample_event__repr(struct pyrf_event *pevent)
        if (asprintf(&s, "{ type: sample }") < 0) {
                ret = PyErr_NoMemory();
        } else {
-               ret = _PyUnicode_FromString(s);
+               ret = PyUnicode_FromString(s);
                free(s);
        }
        return ret;
@@ -343,7 +317,7 @@ tracepoint_field(struct pyrf_event *pe, struct tep_format_field *field)
                }
                if (field->flags & TEP_FIELD_IS_STRING &&
                    is_printable_array(data + offset, len)) {
-                       ret = _PyUnicode_FromString((char *)data + offset);
+                       ret = PyUnicode_FromString((char *)data + offset);
                } else {
                        ret = PyByteArray_FromStringAndSize((const char *) data + offset, len);
                        field->flags &= ~TEP_FIELD_IS_STRING;
@@ -432,7 +406,7 @@ static PyObject *pyrf_context_switch_event__repr(struct pyrf_event *pevent)
                     !!(pevent->event.header.misc & PERF_RECORD_MISC_SWITCH_OUT)) < 0) {
                ret = PyErr_NoMemory();
        } else {
-               ret = _PyUnicode_FromString(s);
+               ret = PyUnicode_FromString(s);
                free(s);
        }
        return ret;
@@ -918,17 +892,8 @@ static PyObject *pyrf_evlist__get_pollfd(struct pyrf_evlist *pevlist,
 
        for (i = 0; i < evlist->core.pollfd.nr; ++i) {
                PyObject *file;
-#if PY_MAJOR_VERSION < 3
-               FILE *fp = fdopen(evlist->core.pollfd.entries[i].fd, "r");
-
-               if (fp == NULL)
-                       goto free_list;
-
-               file = PyFile_FromFile(fp, "perf", "r", NULL);
-#else
                file = PyFile_FromFd(evlist->core.pollfd.entries[i].fd, "perf", "r", -1,
                                     NULL, NULL, NULL, 0);
-#endif
                if (file == NULL)
                        goto free_list;
 
@@ -1234,9 +1199,9 @@ static PyObject *pyrf__tracepoint(struct pyrf_evsel *pevsel,
 
        tp_format = trace_event__tp_format(sys, name);
        if (IS_ERR(tp_format))
-               return _PyLong_FromLong(-1);
+               return PyLong_FromLong(-1);
 
-       return _PyLong_FromLong(tp_format->id);
+       return PyLong_FromLong(tp_format->id);
 #endif // HAVE_LIBTRACEEVENT
 }
 
@@ -1250,18 +1215,11 @@ static PyMethodDef perf__methods[] = {
        { .ml_name = NULL, }
 };
 
-#if PY_MAJOR_VERSION < 3
-PyMODINIT_FUNC initperf(void)
-#else
 PyMODINIT_FUNC PyInit_perf(void)
-#endif
 {
        PyObject *obj;
        int i;
        PyObject *dict;
-#if PY_MAJOR_VERSION < 3
-       PyObject *module = Py_InitModule("perf", perf__methods);
-#else
        static struct PyModuleDef moduledef = {
                PyModuleDef_HEAD_INIT,
                "perf",                 /* m_name */
@@ -1274,7 +1232,6 @@ PyMODINIT_FUNC PyInit_perf(void)
                NULL,                   /* m_free */
        };
        PyObject *module = PyModule_Create(&moduledef);
-#endif
 
        if (module == NULL ||
            pyrf_event__setup_types() < 0 ||
@@ -1282,11 +1239,7 @@ PyMODINIT_FUNC PyInit_perf(void)
            pyrf_evsel__setup_types() < 0 ||
            pyrf_thread_map__setup_types() < 0 ||
            pyrf_cpu_map__setup_types() < 0)
-#if PY_MAJOR_VERSION < 3
-               return;
-#else
                return module;
-#endif
 
        /* The page_size is placed in util object. */
        page_size = sysconf(_SC_PAGE_SIZE);
@@ -1335,7 +1288,7 @@ PyMODINIT_FUNC PyInit_perf(void)
                goto error;
 
        for (i = 0; perf__constants[i].name != NULL; i++) {
-               obj = _PyLong_FromLong(perf__constants[i].value);
+               obj = PyLong_FromLong(perf__constants[i].value);
                if (obj == NULL)
                        goto error;
                PyDict_SetItemString(dict, perf__constants[i].name, obj);
@@ -1345,9 +1298,7 @@ PyMODINIT_FUNC PyInit_perf(void)
 error:
        if (PyErr_Occurred())
                PyErr_SetString(PyExc_ImportError, "perf: Init failed!");
-#if PY_MAJOR_VERSION >= 3
        return module;
-#endif
 }
 
 
index 231233639b5dc09c83430c9127ff9e8aa5f31b03..b1b5e94537e4b5831b19922748bb445b275d37d3 100644 (file)
 #include "mem-events.h"
 #include "util/perf_regs.h"
 
-#if PY_MAJOR_VERSION < 3
-#define _PyUnicode_FromString(arg) \
-  PyString_FromString(arg)
-#define _PyUnicode_FromStringAndSize(arg1, arg2) \
-  PyString_FromStringAndSize((arg1), (arg2))
-#define _PyBytes_FromStringAndSize(arg1, arg2) \
-  PyString_FromStringAndSize((arg1), (arg2))
-#define _PyLong_FromLong(arg) \
-  PyInt_FromLong(arg)
-#define _PyLong_AsLong(arg) \
-  PyInt_AsLong(arg)
-#define _PyCapsule_New(arg1, arg2, arg3) \
-  PyCObject_FromVoidPtr((arg1), (arg2))
-
-PyMODINIT_FUNC initperf_trace_context(void);
-#else
 #define _PyUnicode_FromString(arg) \
   PyUnicode_FromString(arg)
 #define _PyUnicode_FromStringAndSize(arg1, arg2) \
@@ -88,7 +72,6 @@ PyMODINIT_FUNC initperf_trace_context(void);
   PyCapsule_New((arg1), (arg2), (arg3))
 
 PyMODINIT_FUNC PyInit_perf_trace_context(void);
-#endif
 
 #ifdef HAVE_LIBTRACEEVENT
 #define TRACE_EVENT_TYPE_MAX                           \
@@ -181,17 +164,7 @@ static int get_argument_count(PyObject *handler)
 {
        int arg_count = 0;
 
-       /*
-        * The attribute for the code object is func_code in Python 2,
-        * whereas it is __code__ in Python 3.0+.
-        */
-       PyObject *code_obj = PyObject_GetAttrString(handler,
-               "func_code");
-       if (PyErr_Occurred()) {
-               PyErr_Clear();
-               code_obj = PyObject_GetAttrString(handler,
-                       "__code__");
-       }
+       PyObject *code_obj = code_obj = PyObject_GetAttrString(handler, "__code__");
        PyErr_Clear();
        if (code_obj) {
                PyObject *arg_count_obj = PyObject_GetAttrString(code_obj,
@@ -1903,12 +1876,6 @@ static void set_table_handlers(struct tables *tables)
        tables->synth_handler = get_handler("synth_data");
 }
 
-#if PY_MAJOR_VERSION < 3
-static void _free_command_line(const char **command_line, int num)
-{
-       free(command_line);
-}
-#else
 static void _free_command_line(wchar_t **command_line, int num)
 {
        int i;
@@ -1916,7 +1883,6 @@ static void _free_command_line(wchar_t **command_line, int num)
                PyMem_RawFree(command_line[i]);
        free(command_line);
 }
-#endif
 
 
 /*
@@ -1926,30 +1892,12 @@ static int python_start_script(const char *script, int argc, const char **argv,
                               struct perf_session *session)
 {
        struct tables *tables = &tables_global;
-#if PY_MAJOR_VERSION < 3
-       const char **command_line;
-#else
        wchar_t **command_line;
-#endif
-       /*
-        * Use a non-const name variable to cope with python 2.6's
-        * PyImport_AppendInittab prototype
-        */
-       char buf[PATH_MAX], name[19] = "perf_trace_context";
+       char buf[PATH_MAX];
        int i, err = 0;
        FILE *fp;
 
        scripting_context->session = session;
-#if PY_MAJOR_VERSION < 3
-       command_line = malloc((argc + 1) * sizeof(const char *));
-       if (!command_line)
-               return -1;
-
-       command_line[0] = script;
-       for (i = 1; i < argc + 1; i++)
-               command_line[i] = argv[i - 1];
-       PyImport_AppendInittab(name, initperf_trace_context);
-#else
        command_line = malloc((argc + 1) * sizeof(wchar_t *));
        if (!command_line)
                return -1;
@@ -1957,15 +1905,10 @@ static int python_start_script(const char *script, int argc, const char **argv,
        command_line[0] = Py_DecodeLocale(script, NULL);
        for (i = 1; i < argc + 1; i++)
                command_line[i] = Py_DecodeLocale(argv[i - 1], NULL);
-       PyImport_AppendInittab(name, PyInit_perf_trace_context);
-#endif
+       PyImport_AppendInittab("perf_trace_context", PyInit_perf_trace_context);
        Py_Initialize();
 
-#if PY_MAJOR_VERSION < 3
-       PySys_SetArgv(argc + 1, (char **)command_line);
-#else
        PySys_SetArgv(argc + 1, command_line);
-#endif
 
        fp = fopen(script, "r");
        if (!fp) {