Build the python interface I experienced some problems, the following
changes fixed those problems.
Andreas Platschek (2):
trace-cmd: Makefile - link all trace-* objects into ctracecmd.so
trace-cmd: python interface: add global variables to swig interface
Makefile | 3 ++-
ctracecmd.i | 2 ++
2 files changed, 4 insertions(+), 1 deletion(-)
--
1.7.10.4
Since trace-read.o is now linked into the python library, the global
variable silence_warnings and show_status (defined in trace-cmd.c for
trace-cmd) used in trace-read.c are also defined in the swig interface.
This way the two variables are exposed to python as
tracecmd.cvar.silence_warnings and tracecmd.cvar.show_status .
If this is not done, running tracecmd.py will fail due to undefined
symbols:
root@wheezy:/home/andi/working_git/trace-cmd# python tracecmd.py
Traceback (most recent call last):
File "tracecmd.py", line 22, in <module>
from ctracecmd import *
ImportError: /home/andi/working_git/trace-cmd/ctracecmd.so: undefined symbol: silence_warnings
Signed-off-by: Andreas Platschek <[email protected]>
---
ctracecmd.i | 2 ++
1 file changed, 2 insertions(+)
diff --git a/ctracecmd.i b/ctracecmd.i
index e91d068..7800470 100644
--- a/ctracecmd.i
+++ b/ctracecmd.i
@@ -35,6 +35,8 @@ static int python_callback(struct trace_seq *s,
void *context);
static int skip_output = 0;
+int silence_warnings;
+int show_status;
static void py_supress_trace_output(void)
{
--
1.7.10.4
Got a few undefined symbols when using the Python interface to trace-cmd,
the first one was:
root@wheezy:~/trace-cmd# python tracecmd.py
Traceback (most recent call last):
File "tracecmd.py", line 22, in <module>
from ctracecmd import *
ImportError: /home/andi/working_git/trace-cmd/ctracecmd.so: undefined symbol: get_file_content
linking the objects that contain those symbols fixes the problem.
Signed-off-by: Andreas Platschek <[email protected]>
---
Makefile | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/Makefile b/Makefile
index 62cb25b..f86cb77 100644
--- a/Makefile
+++ b/Makefile
@@ -344,7 +344,8 @@ TCMD_LIB_OBJS = $(PEVENT_LIB_OBJS) trace-util.o trace-input.o trace-ftrace.o \
trace-output.o trace-record.o trace-recorder.o \
trace-restore.o trace-usage.o trace-blk-hack.o \
kbuffer-parse.o event-plugin.o trace-hooks.o \
- trace-msg.o
+ trace-msg.o trace-stat.o trace-listen.o trace-stream.o \
+ trace-read.o trace-profile.o trace-hash.o
PLUGIN_OBJS =
PLUGIN_OBJS += plugin_jbd2.o
--
1.7.10.4
On Mon, 14 Nov 2016 11:55:42 +0000
Andreas Platschek <[email protected]> wrote:
> Got a few undefined symbols when using the Python interface to trace-cmd,
> the first one was:
>
> root@wheezy:~/trace-cmd# python tracecmd.py
> Traceback (most recent call last):
> File "tracecmd.py", line 22, in <module>
> from ctracecmd import *
> ImportError: /home/andi/working_git/trace-cmd/ctracecmd.so: undefined symbol: get_file_content
>
> linking the objects that contain those symbols fixes the problem.
>
> Signed-off-by: Andreas Platschek <[email protected]>
> ---
> Makefile | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/Makefile b/Makefile
> index 62cb25b..f86cb77 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -344,7 +344,8 @@ TCMD_LIB_OBJS = $(PEVENT_LIB_OBJS) trace-util.o trace-input.o trace-ftrace.o \
> trace-output.o trace-record.o trace-recorder.o \
> trace-restore.o trace-usage.o trace-blk-hack.o \
> kbuffer-parse.o event-plugin.o trace-hooks.o \
> - trace-msg.o
> + trace-msg.o trace-stat.o trace-listen.o trace-stream.o \
> + trace-read.o trace-profile.o trace-hash.o
Actually, I can't do this. The files in the library are licensed under
LGPL, but these files you added are all GPL.
There's a reason I separated them as such. I guess we may be able to
move things out of the files if they are properly authored. That is, if
I wrote them. Some code I took and used in trace-cmd came from GPL v2
code, so those must remain GPL v2.
-- Steve
>
> PLUGIN_OBJS =
> PLUGIN_OBJS += plugin_jbd2.o