Skip to contentSkip to conversation

perf: Fix undefined PyVarObject_HEAD_INIT in python 2.5

PATCH Superseded Frederic Weisbecker 2 participants 6 messages Feb 25, 2011 – Mar 4, 2011 perf events

lore
Share & tools
lore
#0 lore raw

PATCH 1/2 perf: Fix undefined PyVarObject_HEAD_INIT in python 2.5

PyVarObject_HEAD_INIT is undefined in python 2.5, resulting in a build crash:

util/python.c:81: attention : déclaration implicite de la fonction « «PyVarObject_HEAD_INIT» » util/python.c:82: erreur: request for member «tp_name» in something not a structure or union util/python.c:117: erreur: request for member «tp_name» in something not a structure or union util/python.c:146: erreur: request for member «tp_name» in something not a structure or union util/python.c:177: erreur: request for member «tp_name» in something not a structure or union util/python.c:290: erreur: request for member «tp_name» in something not a structure or union util/python.c:359: erreur: request for member «tp_name» in something not a structure or union util/python.c:532: erreur: request for member «tp_name» in something not a structure or union util/python.c:761: erreur: request for member «tp_name» in something not a structure or union
error: command 'gcc' failed with exit status 1
make: *** [python/perf.so] Erreur 1

We can fix that by defining PyVarObject_HEAD_INIT as a wrapper on PyObject_HEAD_INIT, thanks to a trick found on biopython:
https://github.com/biopython/biopython/commit/d4eaf57946c7b4c32eca8d18821edf32f83e300d

Cc Ingo Molnar <[email protected]>
Cc Peter Zijlstra <[email protected]>
Cc Stephane Eranian <[email protected]>
Cc Tom Zanussi <[email protected]>
Cc Arnaldo Carvalho de Melo <[email protected]>
---
 tools/perf/util/python.c |    6 ++++++
 1 files changed, 6 insertions(+), 0 deletions(-)
tools/perf/util/python.c +6 -0
index 5317ef2..7f8edce 100644
@@ -8,6 +8,12 @@
 #include "cpumap.h"
 #include "thread_map.h"
 
+/* Define PyVarObject_HEAD_INIT for python 2.5 */
+#ifndef PyVarObject_HEAD_INIT
+#define PyVarObject_HEAD_INIT(type, size) \
+	PyObject_HEAD_INIT(type) size,
+#endif
+
 struct throttle_event {
 	struct perf_event_header header;
 	u64			 time;
Signature · 1 line
1.7.3.2
#1 lore raw

PATCH 2/2 perf: Fix missing strndup declaration

<ctype.h> is included first without _GNU_SOURCE, so it ends up including <string.h> without declaring strndup(). And further <string.h> declarations, even with _GNU_SOURCE defined, are of course without effect.

Therefore:

util/strfilter.c: Dans la fonction «strfilter_node__new» :
util/strfilter.c:134: attention : déclaration implicite de la fonction « «strndup» » util/strfilter.c:134: attention : incompatible implicit declaration of built-in function «strndup»
make: *** [util/strfilter.o] Erreur 1

Just don't include ctype.h as it doesn't appear to be necessary anyway.

Cc Ingo Molnar <[email protected]>
Cc Peter Zijlstra <[email protected]>
Cc Stephane Eranian <[email protected]>
Cc Tom Zanussi <[email protected]>
Cc Arnaldo Carvalho de Melo <[email protected]>
---
 tools/perf/util/strfilter.c |    1 -
 1 files changed, 0 insertions(+), 1 deletions(-)
tools/perf/util/strfilter.c +0 -1
index 4064b7d..834c8eb 100644
@@ -1,4 +1,3 @@
-#include <ctype.h>
 #include "util.h"
 #include "string.h"
 #include "strfilter.h"
Signature · 1 line
1.7.3.2
#2 lore raw
In reply to Frederic Weisbecker

tools/perf/util/python.c line 15

Quoted 10 lines · Frederic Weisbecker

+++ b/tools/perf/util/python.c

tools/perf/util/python.c +5 -0
@@ -8,6 +8,12 @@
 #include "cpumap.h"
 #include "thread_map.h"
 
+/* Define PyVarObject_HEAD_INIT for python 2.5 */
+#ifndef PyVarObject_HEAD_INIT
+#define PyVarObject_HEAD_INIT(type, size) \
+	PyObject_HEAD_INIT(type) size,
+#endif

Just a code readability nit - there's really no reason not to write this as:

#ifndef PyVarObject_HEAD_INIT

 # define PyVarObject_HEAD_INIT(type, size) PyObject_HEAD_INIT(type) size,
 #endif

Thanks,

Ingo

#3 lore raw

PATCH v2 1/1 perf: Fix undefined PyVarObject_HEAD_INIT in python 2.5

PyVarObject_HEAD_INIT is undefined in python 2.5, resulting in a build crash:

util/python.c:81: attention : déclaration implicite de la fonction « «PyVarObject_HEAD_INIT» » util/python.c:82: erreur: request for member «tp_name» in something not a structure or union util/python.c:117: erreur: request for member «tp_name» in something not a structure or union util/python.c:146: erreur: request for member «tp_name» in something not a structure or union util/python.c:177: erreur: request for member «tp_name» in something not a structure or union util/python.c:290: erreur: request for member «tp_name» in something not a structure or union util/python.c:359: erreur: request for member «tp_name» in something not a structure or union util/python.c:532: erreur: request for member «tp_name» in something not a structure or union util/python.c:761: erreur: request for member «tp_name» in something not a structure or union
error: command 'gcc' failed with exit status 1
make: *** [python/perf.so] Erreur 1

We can fix that by defining PyVarObject_HEAD_INIT as a wrapper on PyObject_HEAD_INIT, thanks to a trick found on biopython:
https://github.com/biopython/biopython/commit/d4eaf57946c7b4c32eca8d18821edf32f83e300d

Cc Ingo Molnar <[email protected]>
Cc Peter Zijlstra <[email protected]>
Cc Stephane Eranian <[email protected]>
Cc Tom Zanussi <[email protected]>
Cc Arnaldo Carvalho de Melo <[email protected]>
---
 tools/perf/util/python.c |    5 +++++
 1 files changed, 5 insertions(+), 0 deletions(-)
tools/perf/util/python.c +5 -0
index 5317ef2..a9f2d7e 100644
@@ -8,6 +8,11 @@
 #include "cpumap.h"
 #include "thread_map.h"
 
+/* Define PyVarObject_HEAD_INIT for python 2.5 */
+#ifndef PyVarObject_HEAD_INIT
+# define PyVarObject_HEAD_INIT(type, size) PyObject_HEAD_INIT(type) size,
+#endif
+
 struct throttle_event {
 	struct perf_event_header header;
 	u64			 time;
Signature · 1 line
1.7.3.2
#4 lore raw

[GIT PULL] perf updates

Ingo,

Please pull the perf/core branch that can be found at:

git://git.kernel.org/pub/scm/linux/kernel/git/frederic/random-tracing.git
perf/core

Thanks,
Frederic
---

Frederic Weisbecker (2):
perf: Fix missing strndup declaration
perf: Fix undefined PyVarObject_HEAD_INIT in python 2.5

 tools/perf/util/python.c    |    5 +++++
 tools/perf/util/strfilter.c |    1 -
 2 files changed, 5 insertions(+), 1 deletions(-)
#5 lore raw

Re: [GIT PULL] perf updates

Quoted 11 lines · Frederic Weisbecker

Ingo,

Please pull the perf/core branch that can be found at:

git://git.kernel.org/pub/scm/linux/kernel/git/frederic/random-tracing.git
perf/core

Thanks,
Frederic
---

Quoted 8 lines

Frederic Weisbecker (2):
perf: Fix missing strndup declaration
perf: Fix undefined PyVarObject_HEAD_INIT in python 2.5

 tools/perf/util/python.c    |    5 +++++
 tools/perf/util/strfilter.c |    1 -
 2 files changed, 5 insertions(+), 1 deletions(-)

Pulled, thanks a lot Frederic!

Ingo