forked from Minki/linux
perf test: Check for linking problems in the python binding
It just will add the O= builddir to PYTHONPATH and try to 'use perf', which will, in verbose mode show the python backtrace with the missing symbols, such as in the problem fixed in the patch after this one: # perf test -v 15 15: Try 'use perf' in python, checking link problems : --- start --- Traceback (most recent call last): File "<stdin>", line 1, in <module> ImportError: /home/acme/git/build/perf//python/perf.so: undefined symbol: test_attr__enabled ---- end ---- Try 'use perf' in python, checking link problems: FAILED! # Loooong overdue, done. Cc: David Ahern <dsahern@gmail.com> Cc: Frederic Weisbecker <fweisbec@gmail.com> Cc: Jiri Olsa <jolsa@redhat.com> Cc: Mike Galbraith <efault@gmx.de> Cc: Namhyung Kim <namhyung@gmail.com> Cc: Paul Mackerras <paulus@samba.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Stephane Eranian <eranian@google.com> Link: http://lkml.kernel.org/n/tip-zmd2oq9gz6t1u145ub7qm2nv@git.kernel.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
parent
56e52e8536
commit
54359d3340
@ -488,6 +488,7 @@ LIB_OBJS += $(OUTPUT)tests/evsel-roundtrip-name.o
|
|||||||
LIB_OBJS += $(OUTPUT)tests/evsel-tp-sched.o
|
LIB_OBJS += $(OUTPUT)tests/evsel-tp-sched.o
|
||||||
LIB_OBJS += $(OUTPUT)tests/pmu.o
|
LIB_OBJS += $(OUTPUT)tests/pmu.o
|
||||||
LIB_OBJS += $(OUTPUT)tests/hists_link.o
|
LIB_OBJS += $(OUTPUT)tests/hists_link.o
|
||||||
|
LIB_OBJS += $(OUTPUT)tests/python-use.o
|
||||||
|
|
||||||
BUILTIN_OBJS += $(OUTPUT)builtin-annotate.o
|
BUILTIN_OBJS += $(OUTPUT)builtin-annotate.o
|
||||||
BUILTIN_OBJS += $(OUTPUT)builtin-bench.o
|
BUILTIN_OBJS += $(OUTPUT)builtin-bench.o
|
||||||
@ -955,6 +956,9 @@ $(OUTPUT)tests/attr.o: tests/attr.c $(OUTPUT)PERF-CFLAGS
|
|||||||
'-DBINDIR="$(bindir_SQ)"' \
|
'-DBINDIR="$(bindir_SQ)"' \
|
||||||
$<
|
$<
|
||||||
|
|
||||||
|
$(OUTPUT)tests/python-use.o: tests/python-use.c $(OUTPUT)PERF-CFLAGS
|
||||||
|
$(QUIET_CC)$(CC) -o $@ -c $(ALL_CFLAGS) -DPYTHONPATH='"$(OUTPUT)/python"' $<
|
||||||
|
|
||||||
$(OUTPUT)util/config.o: util/config.c $(OUTPUT)PERF-CFLAGS
|
$(OUTPUT)util/config.o: util/config.c $(OUTPUT)PERF-CFLAGS
|
||||||
$(QUIET_CC)$(CC) -o $@ -c $(ALL_CFLAGS) -DETC_PERFCONFIG='"$(ETC_PERFCONFIG_SQ)"' $<
|
$(QUIET_CC)$(CC) -o $@ -c $(ALL_CFLAGS) -DETC_PERFCONFIG='"$(ETC_PERFCONFIG_SQ)"' $<
|
||||||
|
|
||||||
|
@ -72,6 +72,10 @@ static struct test {
|
|||||||
.desc = "Test matching and linking mutliple hists",
|
.desc = "Test matching and linking mutliple hists",
|
||||||
.func = test__hists_link,
|
.func = test__hists_link,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
.desc = "Try 'use perf' in python, checking link problems",
|
||||||
|
.func = test__python_use,
|
||||||
|
},
|
||||||
{
|
{
|
||||||
.func = NULL,
|
.func = NULL,
|
||||||
},
|
},
|
||||||
|
23
tools/perf/tests/python-use.c
Normal file
23
tools/perf/tests/python-use.c
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
/*
|
||||||
|
* Just test if we can load the python binding.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include "tests.h"
|
||||||
|
|
||||||
|
extern int verbose;
|
||||||
|
|
||||||
|
int test__python_use(void)
|
||||||
|
{
|
||||||
|
char *cmd;
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
if (asprintf(&cmd, "echo \"import sys ; sys.path.append('%s'); import perf\" | python %s",
|
||||||
|
PYTHONPATH, verbose ? "" : "2> /dev/null") < 0)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
ret = system(cmd) ? -1 : 0;
|
||||||
|
free(cmd);
|
||||||
|
return ret;
|
||||||
|
}
|
@ -16,5 +16,6 @@ int test__attr(void);
|
|||||||
int test__dso_data(void);
|
int test__dso_data(void);
|
||||||
int test__parse_events(void);
|
int test__parse_events(void);
|
||||||
int test__hists_link(void);
|
int test__hists_link(void);
|
||||||
|
int test__python_use(void);
|
||||||
|
|
||||||
#endif /* TESTS_H */
|
#endif /* TESTS_H */
|
||||||
|
Loading…
Reference in New Issue
Block a user