public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH] perf tools: Add support to install perf python extension
@ 2011-07-21 16:45 Jiri Olsa
  2011-07-21 17:11 ` Arnaldo Carvalho de Melo
  0 siblings, 1 reply; 8+ messages in thread
From: Jiri Olsa @ 2011-07-21 16:45 UTC (permalink / raw)
  To: acme, a.p.zijlstra, mingo, paulus; +Cc: linux-kernel, Jiri Olsa

Changing the distutils to use their own default 'build'
directory.

Such setup makes the install command simple, because using
--build-lib and --build-temp does not seem to comply with
the way the distutils' install commands expect it.

Also keeping the python/perf.so file, so it could be used
for testing as of until now.

Signed-off-by: Jiri Olsa <jolsa@redhat.com>
---
 tools/perf/Makefile |   12 ++++++------
 1 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/tools/perf/Makefile b/tools/perf/Makefile
index 940257b..9c82a56 100644
--- a/tools/perf/Makefile
+++ b/tools/perf/Makefile
@@ -178,9 +178,8 @@ strip-libs = $(filter-out -l%,$(1))
 
 $(OUTPUT)python/perf.so: $(PYRF_OBJS)
 	$(QUIET_GEN)CFLAGS='$(BASIC_CFLAGS)' $(PYTHON_WORD) util/setup.py \
-	  --quiet build_ext \
-	  --build-lib='$(OUTPUT)python' \
-	  --build-temp='$(OUTPUT)python/temp'
+	  --quiet build_ext; \
+	cp $$(find build -name 'perf.so') python
 #
 # No Perl scripts right now:
 #
@@ -504,9 +503,7 @@ else
 
   PYTHON_WORD := $(call shell-wordify,$(PYTHON))
 
-  python-clean := $(PYTHON_WORD) util/setup.py clean \
-    --build-lib='$(OUTPUT)python' \
-    --build-temp='$(OUTPUT)python/temp'
+  python-clean := $(PYTHON_WORD) util/setup.py --quiet clean -a; $(RM) -f python/perf.so
 
   ifdef NO_LIBPYTHON
     $(call disable-python)
@@ -863,6 +860,9 @@ install: all
 	$(INSTALL) scripts/python/*.py -t '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/scripts/python'
 	$(INSTALL) scripts/python/bin/* -t '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/scripts/python/bin'
 
+install-python_ext:
+	$(PYTHON_WORD) util/setup.py --quiet install --root='/$(DESTDIR_SQ)'
+
 install-doc:
 	$(MAKE) -C Documentation install
 
-- 
1.7.1


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* Re: [PATCH] perf tools: Add support to install perf python extension
  2011-07-21 16:45 [PATCH] perf tools: Add support to install perf python extension Jiri Olsa
@ 2011-07-21 17:11 ` Arnaldo Carvalho de Melo
  2011-07-21 18:47   ` Jiri Olsa
  0 siblings, 1 reply; 8+ messages in thread
From: Arnaldo Carvalho de Melo @ 2011-07-21 17:11 UTC (permalink / raw)
  To: Jiri Olsa; +Cc: a.p.zijlstra, mingo, paulus, linux-kernel

Em Thu, Jul 21, 2011 at 06:45:26PM +0200, Jiri Olsa escreveu:
> Changing the distutils to use their own default 'build'
> directory.
> 
> Such setup makes the install command simple, because using
> --build-lib and --build-temp does not seem to comply with
> the way the distutils' install commands expect it.
> 
> Also keeping the python/perf.so file, so it could be used
> for testing as of until now.

Yeah, I gave up when I couldn't get:

$ make O=/tmp/build-dir-for-perf/ -C tools/perf/ install

to work, does it now? Checking...

- Arnaldo
 
> Signed-off-by: Jiri Olsa <jolsa@redhat.com>
> ---
>  tools/perf/Makefile |   12 ++++++------
>  1 files changed, 6 insertions(+), 6 deletions(-)
> 
> diff --git a/tools/perf/Makefile b/tools/perf/Makefile
> index 940257b..9c82a56 100644
> --- a/tools/perf/Makefile
> +++ b/tools/perf/Makefile
> @@ -178,9 +178,8 @@ strip-libs = $(filter-out -l%,$(1))
>  
>  $(OUTPUT)python/perf.so: $(PYRF_OBJS)
>  	$(QUIET_GEN)CFLAGS='$(BASIC_CFLAGS)' $(PYTHON_WORD) util/setup.py \
> -	  --quiet build_ext \
> -	  --build-lib='$(OUTPUT)python' \
> -	  --build-temp='$(OUTPUT)python/temp'
> +	  --quiet build_ext; \
> +	cp $$(find build -name 'perf.so') python
>  #
>  # No Perl scripts right now:
>  #
> @@ -504,9 +503,7 @@ else
>  
>    PYTHON_WORD := $(call shell-wordify,$(PYTHON))
>  
> -  python-clean := $(PYTHON_WORD) util/setup.py clean \
> -    --build-lib='$(OUTPUT)python' \
> -    --build-temp='$(OUTPUT)python/temp'
> +  python-clean := $(PYTHON_WORD) util/setup.py --quiet clean -a; $(RM) -f python/perf.so
>  
>    ifdef NO_LIBPYTHON
>      $(call disable-python)
> @@ -863,6 +860,9 @@ install: all
>  	$(INSTALL) scripts/python/*.py -t '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/scripts/python'
>  	$(INSTALL) scripts/python/bin/* -t '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/scripts/python/bin'
>  
> +install-python_ext:
> +	$(PYTHON_WORD) util/setup.py --quiet install --root='/$(DESTDIR_SQ)'
> +
>  install-doc:
>  	$(MAKE) -C Documentation install
>  
> -- 
> 1.7.1

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH] perf tools: Add support to install perf python extension
  2011-07-21 17:11 ` Arnaldo Carvalho de Melo
@ 2011-07-21 18:47   ` Jiri Olsa
  2011-07-21 19:04     ` Arnaldo Carvalho de Melo
  0 siblings, 1 reply; 8+ messages in thread
From: Jiri Olsa @ 2011-07-21 18:47 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo; +Cc: a.p.zijlstra, mingo, paulus, linux-kernel

On Thu, Jul 21, 2011 at 02:11:48PM -0300, Arnaldo Carvalho de Melo wrote:
> Em Thu, Jul 21, 2011 at 06:45:26PM +0200, Jiri Olsa escreveu:
> > Changing the distutils to use their own default 'build'
> > directory.
> > 
> > Such setup makes the install command simple, because using
> > --build-lib and --build-temp does not seem to comply with
> > the way the distutils' install commands expect it.
> > 
> > Also keeping the python/perf.so file, so it could be used
> > for testing as of until now.
> 
> Yeah, I gave up when I couldn't get:
> 
> $ make O=/tmp/build-dir-for-perf/ -C tools/perf/ install
> 
> to work, does it now? Checking...

nope, I added install-python_ext since it installs to the
python system lib area, and it could break standard install

I think there's a way to install python modules under $HOME,
maybe we could do that if no DESTDIR is specified..
I can add it later ;)

thanks,
jirka

> 
> - Arnaldo
>  
> > Signed-off-by: Jiri Olsa <jolsa@redhat.com>
> > ---
> >  tools/perf/Makefile |   12 ++++++------
> >  1 files changed, 6 insertions(+), 6 deletions(-)
> > 
> > diff --git a/tools/perf/Makefile b/tools/perf/Makefile
> > index 940257b..9c82a56 100644
> > --- a/tools/perf/Makefile
> > +++ b/tools/perf/Makefile
> > @@ -178,9 +178,8 @@ strip-libs = $(filter-out -l%,$(1))
> >  
> >  $(OUTPUT)python/perf.so: $(PYRF_OBJS)
> >  	$(QUIET_GEN)CFLAGS='$(BASIC_CFLAGS)' $(PYTHON_WORD) util/setup.py \
> > -	  --quiet build_ext \
> > -	  --build-lib='$(OUTPUT)python' \
> > -	  --build-temp='$(OUTPUT)python/temp'
> > +	  --quiet build_ext; \
> > +	cp $$(find build -name 'perf.so') python
> >  #
> >  # No Perl scripts right now:
> >  #
> > @@ -504,9 +503,7 @@ else
> >  
> >    PYTHON_WORD := $(call shell-wordify,$(PYTHON))
> >  
> > -  python-clean := $(PYTHON_WORD) util/setup.py clean \
> > -    --build-lib='$(OUTPUT)python' \
> > -    --build-temp='$(OUTPUT)python/temp'
> > +  python-clean := $(PYTHON_WORD) util/setup.py --quiet clean -a; $(RM) -f python/perf.so
> >  
> >    ifdef NO_LIBPYTHON
> >      $(call disable-python)
> > @@ -863,6 +860,9 @@ install: all
> >  	$(INSTALL) scripts/python/*.py -t '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/scripts/python'
> >  	$(INSTALL) scripts/python/bin/* -t '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/scripts/python/bin'
> >  
> > +install-python_ext:
> > +	$(PYTHON_WORD) util/setup.py --quiet install --root='/$(DESTDIR_SQ)'
> > +
> >  install-doc:
> >  	$(MAKE) -C Documentation install
> >  
> > -- 
> > 1.7.1

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH] perf tools: Add support to install perf python extension
  2011-07-21 18:47   ` Jiri Olsa
@ 2011-07-21 19:04     ` Arnaldo Carvalho de Melo
  2011-07-21 19:41       ` Jiri Olsa
  0 siblings, 1 reply; 8+ messages in thread
From: Arnaldo Carvalho de Melo @ 2011-07-21 19:04 UTC (permalink / raw)
  To: Jiri Olsa; +Cc: a.p.zijlstra, mingo, paulus, linux-kernel

Em Thu, Jul 21, 2011 at 08:47:15PM +0200, Jiri Olsa escreveu:
> On Thu, Jul 21, 2011 at 02:11:48PM -0300, Arnaldo Carvalho de Melo wrote:
> > Em Thu, Jul 21, 2011 at 06:45:26PM +0200, Jiri Olsa escreveu:
> > > Changing the distutils to use their own default 'build'
> > > directory.
> > > 
> > > Such setup makes the install command simple, because using
> > > --build-lib and --build-temp does not seem to comply with
> > > the way the distutils' install commands expect it.
> > > 
> > > Also keeping the python/perf.so file, so it could be used
> > > for testing as of until now.
> > 
> > Yeah, I gave up when I couldn't get:
> > 
> > $ make O=/tmp/build-dir-for-perf/ -C tools/perf/ install
> > 
> > to work, does it now? Checking...
> 
> nope, I added install-python_ext since it installs to the
> python system lib area, and it could break standard install

But where is that it picks the binaries built? The problem I was
experiencing was that it wasn't obeying O=, just using the source dir
as the build dir, effectively building it again, in a different place.
 
> I think there's a way to install python modules under $HOME,
> maybe we could do that if no DESTDIR is specified..
> I can add it later ;)

Right, but this is not what I was talking about :-)

- Arnaldo

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH] perf tools: Add support to install perf python extension
  2011-07-21 19:04     ` Arnaldo Carvalho de Melo
@ 2011-07-21 19:41       ` Jiri Olsa
  2011-07-21 21:16         ` Arnaldo Carvalho de Melo
  0 siblings, 1 reply; 8+ messages in thread
From: Jiri Olsa @ 2011-07-21 19:41 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo; +Cc: a.p.zijlstra, mingo, paulus, linux-kernel

On Thu, Jul 21, 2011 at 04:04:07PM -0300, Arnaldo Carvalho de Melo wrote:
> Em Thu, Jul 21, 2011 at 08:47:15PM +0200, Jiri Olsa escreveu:
> > On Thu, Jul 21, 2011 at 02:11:48PM -0300, Arnaldo Carvalho de Melo wrote:
> > > Em Thu, Jul 21, 2011 at 06:45:26PM +0200, Jiri Olsa escreveu:
> > > > Changing the distutils to use their own default 'build'
> > > > directory.
> > > > 
> > > > Such setup makes the install command simple, because using
> > > > --build-lib and --build-temp does not seem to comply with
> > > > the way the distutils' install commands expect it.
> > > > 
> > > > Also keeping the python/perf.so file, so it could be used
> > > > for testing as of until now.
> > > 
> > > Yeah, I gave up when I couldn't get:
> > > 
> > > $ make O=/tmp/build-dir-for-perf/ -C tools/perf/ install
> > > 
> > > to work, does it now? Checking...
> > 
> > nope, I added install-python_ext since it installs to the
> > python system lib area, and it could break standard install
> 
> But where is that it picks the binaries built? The problem I was
> experiencing was that it wasn't obeying O=, just using the source dir

I haven't checked the 'O=' that much.. will do :)

> as the build dir, effectively building it again, in a different place.

I dont have that much experince with python, but here's what I found:
(might be missing something..)

build_ext command
- build_ext will by default create a 'build' directory and 
  put all the stuff in - temp and final dirs/binary
- you can overload this with build-lib/build-temp options

install command
- install does not have option to specify the build-lib directory
  (but it has the --root option that we need)
- so running just install assumes you have used default 'build'
  directory and if it does not exist it starts rebuild
- there's another command install_lib, which let's you specify
  the build-lib.. BUT it wont let you specify the --root option ;)

There's possibility to use setup.cfg file and generate/put options
for each command, so at the end we could choose what directory to use.

Also there might be a way to overload distutils class and put our
specific options to this new class..

As I checked some of python extension packages, some of them
do not use distutils at all.. can't imagine why ;)

jirka

>  
> > I think there's a way to install python modules under $HOME,
> > maybe we could do that if no DESTDIR is specified..
> > I can add it later ;)
> 
> Right, but this is not what I was talking about :-)
> 
> - Arnaldo

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH] perf tools: Add support to install perf python extension
  2011-07-21 19:41       ` Jiri Olsa
@ 2011-07-21 21:16         ` Arnaldo Carvalho de Melo
  2011-07-22 11:33           ` [PATCHv2] " Jiri Olsa
  0 siblings, 1 reply; 8+ messages in thread
From: Arnaldo Carvalho de Melo @ 2011-07-21 21:16 UTC (permalink / raw)
  To: Jiri Olsa; +Cc: a.p.zijlstra, mingo, paulus, linux-kernel

Em Thu, Jul 21, 2011 at 09:41:50PM +0200, Jiri Olsa escreveu:
> On Thu, Jul 21, 2011 at 04:04:07PM -0300, Arnaldo Carvalho de Melo wrote:
> > Em Thu, Jul 21, 2011 at 08:47:15PM +0200, Jiri Olsa escreveu:
> > > nope, I added install-python_ext since it installs to the
> > > python system lib area, and it could break standard install

> > But where is that it picks the binaries built? The problem I was
> > experiencing was that it wasn't obeying O=, just using the source dir
 
> I haven't checked the 'O=' that much.. will do :)
 
> > as the build dir, effectively building it again, in a different place.
 
> I dont have that much experince with python, but here's what I found:
> (might be missing something..)

<SNIP>
 
> Also there might be a way to overload distutils class and put our
> specific options to this new class..
 
> As I checked some of python extension packages, some of them
> do not use distutils at all.. can't imagine why ;)

Ok, we're on the same page with that ';)' ;)

I'd love to use what is 'pythonic', i.e. whatever the python people
think we should use and don't bother with all the module
build/install details, but since we want to have O= working...

- Arnaldo

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [PATCHv2] perf tools: Add support to install perf python extension
  2011-07-21 21:16         ` Arnaldo Carvalho de Melo
@ 2011-07-22 11:33           ` Jiri Olsa
  2011-08-10  8:27             ` [tip:perf/urgent] " tip-bot for Jiri Olsa
  0 siblings, 1 reply; 8+ messages in thread
From: Jiri Olsa @ 2011-07-22 11:33 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo; +Cc: a.p.zijlstra, mingo, paulus, linux-kernel

On Thu, Jul 21, 2011 at 06:16:10PM -0300, Arnaldo Carvalho de Melo wrote:
> Em Thu, Jul 21, 2011 at 09:41:50PM +0200, Jiri Olsa escreveu:
> > On Thu, Jul 21, 2011 at 04:04:07PM -0300, Arnaldo Carvalho de Melo wrote:
> > > Em Thu, Jul 21, 2011 at 08:47:15PM +0200, Jiri Olsa escreveu:
> > > > nope, I added install-python_ext since it installs to the
> > > > python system lib area, and it could break standard install
> 
> > > But where is that it picks the binaries built? The problem I was
> > > experiencing was that it wasn't obeying O=, just using the source dir
>  
> > I haven't checked the 'O=' that much.. will do :)
>  
> > > as the build dir, effectively building it again, in a different place.
>  
> > I dont have that much experince with python, but here's what I found:
> > (might be missing something..)
> 
> <SNIP>
>  
> > Also there might be a way to overload distutils class and put our
> > specific options to this new class..
>  
> > As I checked some of python extension packages, some of them
> > do not use distutils at all.. can't imagine why ;)
> 
> Ok, we're on the same page with that ';)' ;)
> 
> I'd love to use what is 'pythonic', i.e. whatever the python people
> think we should use and don't bother with all the module
> build/install details, but since we want to have O= working...

attached new version, working for me with the O= settings

jirka


---
Subject: [PATCH] perf tools: Add support to install perf python extension

Adding install-python_ext target to install python extension
related files.  Installation directory is governed by python
distutils package and follows the DESTDIR variable settings.

Also moving python extension build output into '$(O)python_ext_build'
directory and making it configurable via PYTHON_EXTBUILD variable.

Keeping the '$(O)python/perf.so' file, so it could be used
for testing as of until now.

Signed-off-by: Jiri Olsa <jolsa@redhat.com>
---
 tools/perf/Makefile      |   19 +++++++++++++------
 tools/perf/util/setup.py |   21 ++++++++++++++++++++-
 2 files changed, 33 insertions(+), 7 deletions(-)

diff --git a/tools/perf/Makefile b/tools/perf/Makefile
index 940257b..2b44a53 100644
--- a/tools/perf/Makefile
+++ b/tools/perf/Makefile
@@ -178,9 +178,9 @@ strip-libs = $(filter-out -l%,$(1))
 
 $(OUTPUT)python/perf.so: $(PYRF_OBJS)
 	$(QUIET_GEN)CFLAGS='$(BASIC_CFLAGS)' $(PYTHON_WORD) util/setup.py \
-	  --quiet build_ext \
-	  --build-lib='$(OUTPUT)python' \
-	  --build-temp='$(OUTPUT)python/temp'
+	  --quiet build_ext; \
+	mkdir -p $(OUTPUT)python && \
+	cp $(PYTHON_EXTBUILD_LIB)perf.so $(OUTPUT)python/
 #
 # No Perl scripts right now:
 #
@@ -504,9 +504,13 @@ else
 
   PYTHON_WORD := $(call shell-wordify,$(PYTHON))
 
-  python-clean := $(PYTHON_WORD) util/setup.py clean \
-    --build-lib='$(OUTPUT)python' \
-    --build-temp='$(OUTPUT)python/temp'
+  # python extension build directories
+  PYTHON_EXTBUILD     := $(OUTPUT)python_ext_build/
+  PYTHON_EXTBUILD_LIB := $(PYTHON_EXTBUILD)lib/
+  PYTHON_EXTBUILD_TMP := $(PYTHON_EXTBUILD)tmp/
+  export PYTHON_EXTBUILD_LIB PYTHON_EXTBUILD_TMP
+
+  python-clean := rm -rf $(PYTHON_EXTBUILD) $(OUTPUT)python/perf.so
 
   ifdef NO_LIBPYTHON
     $(call disable-python)
@@ -863,6 +867,9 @@ install: all
 	$(INSTALL) scripts/python/*.py -t '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/scripts/python'
 	$(INSTALL) scripts/python/bin/* -t '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/scripts/python/bin'
 
+install-python_ext:
+	$(PYTHON_WORD) util/setup.py --quiet install --root='/$(DESTDIR_SQ)'
+
 install-doc:
 	$(MAKE) -C Documentation install
 
diff --git a/tools/perf/util/setup.py b/tools/perf/util/setup.py
index bbc982f..95d3700 100644
--- a/tools/perf/util/setup.py
+++ b/tools/perf/util/setup.py
@@ -3,9 +3,27 @@
 from distutils.core import setup, Extension
 from os import getenv
 
+from distutils.command.build_ext   import build_ext   as _build_ext
+from distutils.command.install_lib import install_lib as _install_lib
+
+class build_ext(_build_ext):
+    def finalize_options(self):
+        _build_ext.finalize_options(self)
+        self.build_lib  = build_lib
+        self.build_temp = build_tmp
+
+class install_lib(_install_lib):
+    def finalize_options(self):
+        _install_lib.finalize_options(self)
+        self.build_dir = build_lib
+
+
 cflags = ['-fno-strict-aliasing', '-Wno-write-strings']
 cflags += getenv('CFLAGS', '').split()
 
+build_lib = getenv('PYTHON_EXTBUILD_LIB')
+build_tmp = getenv('PYTHON_EXTBUILD_TMP')
+
 perf = Extension('perf',
 		  sources = ['util/python.c', 'util/ctype.c', 'util/evlist.c',
 			     'util/evsel.c', 'util/cpumap.c', 'util/thread_map.c',
@@ -21,4 +39,5 @@ setup(name='perf',
       author_email='acme@redhat.com',
       license='GPLv2',
       url='http://perf.wiki.kernel.org',
-      ext_modules=[perf])
+      ext_modules=[perf],
+      cmdclass={'build_ext': build_ext, 'install_lib': install_lib})
-- 
1.7.1


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [tip:perf/urgent] perf tools: Add support to install perf python extension
  2011-07-22 11:33           ` [PATCHv2] " Jiri Olsa
@ 2011-08-10  8:27             ` tip-bot for Jiri Olsa
  0 siblings, 0 replies; 8+ messages in thread
From: tip-bot for Jiri Olsa @ 2011-08-10  8:27 UTC (permalink / raw)
  To: linux-tip-commits
  Cc: acme, linux-kernel, paulus, hpa, mingo, a.p.zijlstra, jolsa, tglx,
	mingo

Commit-ID:  9941c96ad869d10f7e34e03990ce450ab8fcb83d
Gitweb:     http://git.kernel.org/tip/9941c96ad869d10f7e34e03990ce450ab8fcb83d
Author:     Jiri Olsa <jolsa@redhat.com>
AuthorDate: Fri, 22 Jul 2011 13:33:07 +0200
Committer:  Arnaldo Carvalho de Melo <acme@redhat.com>
CommitDate: Mon, 8 Aug 2011 12:54:26 -0300

perf tools: Add support to install perf python extension

Adding install-python_ext target to install python extension related
files.  Installation directory is governed by python distutils package
and follows the DESTDIR variable settings.

Also moving python extension build output into '$(O)python_ext_build'
directory and making it configurable via PYTHON_EXTBUILD variable.

Keeping the '$(O)python/perf.so' file, so it could be used for testing
as of until now.

Cc: Ingo Molnar <mingo@elte.hu>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/r/20110722113307.GA1931@jolsa.brq.redhat.com
Signed-off-by: Jiri Olsa <jolsa@redhat.com>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/perf/Makefile      |   19 +++++++++++++------
 tools/perf/util/setup.py |   21 ++++++++++++++++++++-
 2 files changed, 33 insertions(+), 7 deletions(-)

diff --git a/tools/perf/Makefile b/tools/perf/Makefile
index 5bf48fc..822f967 100644
--- a/tools/perf/Makefile
+++ b/tools/perf/Makefile
@@ -178,9 +178,9 @@ strip-libs = $(filter-out -l%,$(1))
 
 $(OUTPUT)python/perf.so: $(PYRF_OBJS)
 	$(QUIET_GEN)CFLAGS='$(BASIC_CFLAGS)' $(PYTHON_WORD) util/setup.py \
-	  --quiet build_ext \
-	  --build-lib='$(OUTPUT)python' \
-	  --build-temp='$(OUTPUT)python/temp'
+	  --quiet build_ext; \
+	mkdir -p $(OUTPUT)python && \
+	cp $(PYTHON_EXTBUILD_LIB)perf.so $(OUTPUT)python/
 #
 # No Perl scripts right now:
 #
@@ -506,9 +506,13 @@ else
 
   PYTHON_WORD := $(call shell-wordify,$(PYTHON))
 
-  python-clean := $(PYTHON_WORD) util/setup.py clean \
-    --build-lib='$(OUTPUT)python' \
-    --build-temp='$(OUTPUT)python/temp'
+  # python extension build directories
+  PYTHON_EXTBUILD     := $(OUTPUT)python_ext_build/
+  PYTHON_EXTBUILD_LIB := $(PYTHON_EXTBUILD)lib/
+  PYTHON_EXTBUILD_TMP := $(PYTHON_EXTBUILD)tmp/
+  export PYTHON_EXTBUILD_LIB PYTHON_EXTBUILD_TMP
+
+  python-clean := rm -rf $(PYTHON_EXTBUILD) $(OUTPUT)python/perf.so
 
   ifdef NO_LIBPYTHON
     $(call disable-python)
@@ -865,6 +869,9 @@ install: all
 	$(INSTALL) scripts/python/*.py -t '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/scripts/python'
 	$(INSTALL) scripts/python/bin/* -t '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/scripts/python/bin'
 
+install-python_ext:
+	$(PYTHON_WORD) util/setup.py --quiet install --root='/$(DESTDIR_SQ)'
+
 install-doc:
 	$(MAKE) -C Documentation install
 
diff --git a/tools/perf/util/setup.py b/tools/perf/util/setup.py
index bbc982f..95d3700 100644
--- a/tools/perf/util/setup.py
+++ b/tools/perf/util/setup.py
@@ -3,9 +3,27 @@
 from distutils.core import setup, Extension
 from os import getenv
 
+from distutils.command.build_ext   import build_ext   as _build_ext
+from distutils.command.install_lib import install_lib as _install_lib
+
+class build_ext(_build_ext):
+    def finalize_options(self):
+        _build_ext.finalize_options(self)
+        self.build_lib  = build_lib
+        self.build_temp = build_tmp
+
+class install_lib(_install_lib):
+    def finalize_options(self):
+        _install_lib.finalize_options(self)
+        self.build_dir = build_lib
+
+
 cflags = ['-fno-strict-aliasing', '-Wno-write-strings']
 cflags += getenv('CFLAGS', '').split()
 
+build_lib = getenv('PYTHON_EXTBUILD_LIB')
+build_tmp = getenv('PYTHON_EXTBUILD_TMP')
+
 perf = Extension('perf',
 		  sources = ['util/python.c', 'util/ctype.c', 'util/evlist.c',
 			     'util/evsel.c', 'util/cpumap.c', 'util/thread_map.c',
@@ -21,4 +39,5 @@ setup(name='perf',
       author_email='acme@redhat.com',
       license='GPLv2',
       url='http://perf.wiki.kernel.org',
-      ext_modules=[perf])
+      ext_modules=[perf],
+      cmdclass={'build_ext': build_ext, 'install_lib': install_lib})

^ permalink raw reply related	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2011-08-10  8:27 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-07-21 16:45 [PATCH] perf tools: Add support to install perf python extension Jiri Olsa
2011-07-21 17:11 ` Arnaldo Carvalho de Melo
2011-07-21 18:47   ` Jiri Olsa
2011-07-21 19:04     ` Arnaldo Carvalho de Melo
2011-07-21 19:41       ` Jiri Olsa
2011-07-21 21:16         ` Arnaldo Carvalho de Melo
2011-07-22 11:33           ` [PATCHv2] " Jiri Olsa
2011-08-10  8:27             ` [tip:perf/urgent] " tip-bot for Jiri Olsa

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox