linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] perf: Fix version when building out of tree
@ 2013-11-06  0:53 David Ahern
  2013-11-06  5:36 ` Ingo Molnar
  0 siblings, 1 reply; 6+ messages in thread
From: David Ahern @ 2013-11-06  0:53 UTC (permalink / raw)
  To: acme, linux-kernel; +Cc: David Ahern, Ingo Molnar, Namhyung Kim, Jiri Olsa

When building perf out of tree
    make perf-tar-src-pkg
    tar -xf perf-<ver>.tar -C /tmp
    cd /tmp/perf<ver>
    make -C tools/perf

you get the warning message:
    make[1]: *** No rule to make target `kernelversion'.  Stop.

Fix by saving the perf version in the tar file and using that for the
out of tree builds.

Suggested-by: Ingo Molnar <mingo@kernel.org>
Signed-off-by: David Ahern <dsahern@gmail.com>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Jiri Olsa <jolsa@redhat.com>
---
 scripts/package/Makefile         |    4 +++-
 tools/perf/util/PERF-VERSION-GEN |   16 +++++++++++++++-
 2 files changed, 18 insertions(+), 2 deletions(-)

diff --git a/scripts/package/Makefile b/scripts/package/Makefile
index a4f31c900fa6..e44653986e0a 100644
--- a/scripts/package/Makefile
+++ b/scripts/package/Makefile
@@ -115,7 +115,9 @@ git --git-dir=$(srctree)/.git archive --prefix=$(perf-tar)/         \
 	-o $(perf-tar).tar;                                         \
 mkdir -p $(perf-tar);                                               \
 git --git-dir=$(srctree)/.git rev-parse HEAD > $(perf-tar)/HEAD;    \
-tar rf $(perf-tar).tar $(perf-tar)/HEAD;                            \
+(cd $(srctree)/tools/perf;                                          \
+util/PERF-VERSION-GEN short ../../$(perf-tar)/ 2>/dev/null);        \
+tar rf $(perf-tar).tar $(perf-tar)/HEAD $(perf-tar)/PERF-VERSION-FILE; \
 rm -r $(perf-tar);                                                  \
 $(if $(findstring tar-src,$@),,                                     \
 $(if $(findstring bz2,$@),bzip2,                                    \
diff --git a/tools/perf/util/PERF-VERSION-GEN b/tools/perf/util/PERF-VERSION-GEN
index 15a77b7c0e36..142d7dcccfd2 100755
--- a/tools/perf/util/PERF-VERSION-GEN
+++ b/tools/perf/util/PERF-VERSION-GEN
@@ -1,5 +1,12 @@
 #!/bin/sh
 
+SHORT_FORM=no
+
+if [ "$1" = "short" ]  ; then
+	SHORT_FORM=yes
+	shift
+fi
+
 if [ $# -eq 1 ]  ; then
 	OUTPUT=$1
 fi
@@ -19,6 +26,9 @@ if test -d ../../.git -o -f ../../.git
 then
 	TAG=$(git describe --abbrev=0 --match "v[0-9].[0-9]*" 2>/dev/null )
 	CID=$(git log -1 --abbrev=4 --pretty=format:"%h" 2>/dev/null) && CID="-g$CID"
+elif test -f ../../PERF-VERSION-FILE
+then
+	TAG=$(cat ../../PERF-VERSION-FILE)
 fi
 if test -z "$TAG"
 then
@@ -41,7 +51,11 @@ else
 fi
 test "$VN" = "$VC" || {
 	echo >&2 "PERF_VERSION = $VN"
-	echo "#define PERF_VERSION \"$VN\"" >$GVF
+	if [ "$SHORT_FORM" = "yes" ]; then
+		echo "$VN" >$GVF
+	else
+		echo "#define PERF_VERSION \"$VN\"" >$GVF
+	fi
 }
 
 
-- 
1.7.10.1


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

* Re: [PATCH] perf: Fix version when building out of tree
  2013-11-06  0:53 [PATCH] perf: Fix version when building out of tree David Ahern
@ 2013-11-06  5:36 ` Ingo Molnar
  2013-11-06 14:54   ` David Ahern
  0 siblings, 1 reply; 6+ messages in thread
From: Ingo Molnar @ 2013-11-06  5:36 UTC (permalink / raw)
  To: David Ahern; +Cc: acme, linux-kernel, Namhyung Kim, Jiri Olsa


* David Ahern <dsahern@gmail.com> wrote:

> When building perf out of tree
>     make perf-tar-src-pkg
>     tar -xf perf-<ver>.tar -C /tmp
>     cd /tmp/perf<ver>
>     make -C tools/perf
> 
> you get the warning message:
>     make[1]: *** No rule to make target `kernelversion'.  Stop.
> 
> Fix by saving the perf version in the tar file and using that for the
> out of tree builds.
> 
> Suggested-by: Ingo Molnar <mingo@kernel.org>
> Signed-off-by: David Ahern <dsahern@gmail.com>
> Cc: Ingo Molnar <mingo@kernel.org>
> Cc: Namhyung Kim <namhyung@kernel.org>
> Cc: Jiri Olsa <jolsa@redhat.com>
> ---
>  scripts/package/Makefile         |    4 +++-
>  tools/perf/util/PERF-VERSION-GEN |   16 +++++++++++++++-
>  2 files changed, 18 insertions(+), 2 deletions(-)
> 
> diff --git a/scripts/package/Makefile b/scripts/package/Makefile
> index a4f31c900fa6..e44653986e0a 100644
> --- a/scripts/package/Makefile
> +++ b/scripts/package/Makefile
> @@ -115,7 +115,9 @@ git --git-dir=$(srctree)/.git archive --prefix=$(perf-tar)/         \
>  	-o $(perf-tar).tar;                                         \
>  mkdir -p $(perf-tar);                                               \
>  git --git-dir=$(srctree)/.git rev-parse HEAD > $(perf-tar)/HEAD;    \
> -tar rf $(perf-tar).tar $(perf-tar)/HEAD;                            \
> +(cd $(srctree)/tools/perf;                                          \
> +util/PERF-VERSION-GEN short ../../$(perf-tar)/ 2>/dev/null);        \
> +tar rf $(perf-tar).tar $(perf-tar)/HEAD $(perf-tar)/PERF-VERSION-FILE; \
>  rm -r $(perf-tar);                                                  \
>  $(if $(findstring tar-src,$@),,                                     \
>  $(if $(findstring bz2,$@),bzip2,                                    \
> diff --git a/tools/perf/util/PERF-VERSION-GEN b/tools/perf/util/PERF-VERSION-GEN
> index 15a77b7c0e36..142d7dcccfd2 100755
> --- a/tools/perf/util/PERF-VERSION-GEN
> +++ b/tools/perf/util/PERF-VERSION-GEN
> @@ -1,5 +1,12 @@
>  #!/bin/sh
>  
> +SHORT_FORM=no
> +
> +if [ "$1" = "short" ]  ; then
> +	SHORT_FORM=yes
> +	shift
> +fi
> +
>  if [ $# -eq 1 ]  ; then
>  	OUTPUT=$1
>  fi
> @@ -19,6 +26,9 @@ if test -d ../../.git -o -f ../../.git
>  then
>  	TAG=$(git describe --abbrev=0 --match "v[0-9].[0-9]*" 2>/dev/null )
>  	CID=$(git log -1 --abbrev=4 --pretty=format:"%h" 2>/dev/null) && CID="-g$CID"
> +elif test -f ../../PERF-VERSION-FILE
> +then
> +	TAG=$(cat ../../PERF-VERSION-FILE)
>  fi
>  if test -z "$TAG"
>  then
> @@ -41,7 +51,11 @@ else
>  fi
>  test "$VN" = "$VC" || {
>  	echo >&2 "PERF_VERSION = $VN"
> -	echo "#define PERF_VERSION \"$VN\"" >$GVF
> +	if [ "$SHORT_FORM" = "yes" ]; then
> +		echo "$VN" >$GVF
> +	else
> +		echo "#define PERF_VERSION \"$VN\"" >$GVF
> +	fi
>  }

I think you could avoid the 'short' complication altogether by doing 
something like this:

> +elif test -f ../../PERF-VERSION-FILE
> +then
> +	TAG=$(cut -d' ' -f3 ../../PERF-VERSION-FILE)

That extracts 'TAG' as a true sha1 and makes GVF correct on out of tree 
builds as well.

haven't tested it though.

Thanks,

	Ingo

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

* Re: [PATCH] perf: Fix version when building out of tree
  2013-11-06  5:36 ` Ingo Molnar
@ 2013-11-06 14:54   ` David Ahern
  2013-11-07  8:30     ` Ingo Molnar
  0 siblings, 1 reply; 6+ messages in thread
From: David Ahern @ 2013-11-06 14:54 UTC (permalink / raw)
  To: Ingo Molnar; +Cc: acme, linux-kernel, Namhyung Kim, Jiri Olsa

On 11/5/13, 10:36 PM, Ingo Molnar wrote:
> I think you could avoid the 'short' complication altogether by doing
> something like this:
>
>> +elif test -f ../../PERF-VERSION-FILE
>> +then
>> +	TAG=$(cut -d' ' -f3 ../../PERF-VERSION-FILE)
>
> That extracts 'TAG' as a true sha1 and makes GVF correct on out of tree
> builds as well.

Certainly. I was trying to make PERF-VERSION-FILE readable as a 
standalone file -- a better version descriptor than HEAD file.

David




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

* Re: [PATCH] perf: Fix version when building out of tree
  2013-11-06 14:54   ` David Ahern
@ 2013-11-07  8:30     ` Ingo Molnar
  2013-11-07 14:30       ` David Ahern
  0 siblings, 1 reply; 6+ messages in thread
From: Ingo Molnar @ 2013-11-07  8:30 UTC (permalink / raw)
  To: David Ahern; +Cc: acme, linux-kernel, Namhyung Kim, Jiri Olsa


* David Ahern <dsahern@gmail.com> wrote:

> On 11/5/13, 10:36 PM, Ingo Molnar wrote:
> >I think you could avoid the 'short' complication altogether by doing
> >something like this:
> >
> >>+elif test -f ../../PERF-VERSION-FILE
> >>+then
> >>+	TAG=$(cut -d' ' -f3 ../../PERF-VERSION-FILE)
> >
> >That extracts 'TAG' as a true sha1 and makes GVF correct on out of tree
> >builds as well.
> 
> Certainly. I was trying to make PERF-VERSION-FILE readable as a 
> standalone file -- a better version descriptor than HEAD file.

Do you mean that instead of:

  comet:~/tip/tools/perf> cat PERF-VERSION-FILE 
  #define PERF_VERSION "3.12.g953bfb"

we should put a plain version into it? (the 'short' form you introduced 
earlier)

And then this:

  Makefile.perf:  $(QUIET_CC)$(CC) -include $(OUTPUT)PERF-VERSION-FILE \

Could be replaced with:

  Makefile.perf:  $(QUIET_CC)$(CC) -D $(shell cat $(OUTPUT)PERF-VERSION-FILE) \

or so?

Thanks,

	Ingo

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

* Re: [PATCH] perf: Fix version when building out of tree
  2013-11-07  8:30     ` Ingo Molnar
@ 2013-11-07 14:30       ` David Ahern
  2013-11-11 11:50         ` Ingo Molnar
  0 siblings, 1 reply; 6+ messages in thread
From: David Ahern @ 2013-11-07 14:30 UTC (permalink / raw)
  To: Ingo Molnar; +Cc: acme, linux-kernel, Namhyung Kim, Jiri Olsa

On 11/7/13, 1:30 AM, Ingo Molnar wrote:
>
> * David Ahern <dsahern@gmail.com> wrote:
>
>> On 11/5/13, 10:36 PM, Ingo Molnar wrote:
>>> I think you could avoid the 'short' complication altogether by doing
>>> something like this:
>>>
>>>> +elif test -f ../../PERF-VERSION-FILE
>>>> +then
>>>> +	TAG=$(cut -d' ' -f3 ../../PERF-VERSION-FILE)
>>>
>>> That extracts 'TAG' as a true sha1 and makes GVF correct on out of tree
>>> builds as well.
>>
>> Certainly. I was trying to make PERF-VERSION-FILE readable as a
>> standalone file -- a better version descriptor than HEAD file.
>
> Do you mean that instead of:
>
>    comet:~/tip/tools/perf> cat PERF-VERSION-FILE
>    #define PERF_VERSION "3.12.g953bfb"

no. I was thinking instead of
cat PERF-VERSION-FILE
#define PERF_VERSION "3.12.g953bfb"

you have
cat PERF-VERSION-FILE
3.12.g953bfb

But remember this is a new PERF-VERSION-FILE at the top of tree -- just 
like the HEAD file that contains the top commit id. Both are generated 
as part of the make perf-tar-src-pkg to keep track of the origin of the 
source. The new file becomes the basis of $(OUTPUT)PERF-VERSION-FILE.

> we should put a plain version into it? (the 'short' form you introduced
> earlier)
>
> And then this:
>
>    Makefile.perf:  $(QUIET_CC)$(CC) -include $(OUTPUT)PERF-VERSION-FILE \
>
> Could be replaced with:
>
>    Makefile.perf:  $(QUIET_CC)$(CC) -D $(shell cat $(OUTPUT)PERF-VERSION-FILE) \
>
> or so?

something like that could be done too.

David

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

* Re: [PATCH] perf: Fix version when building out of tree
  2013-11-07 14:30       ` David Ahern
@ 2013-11-11 11:50         ` Ingo Molnar
  0 siblings, 0 replies; 6+ messages in thread
From: Ingo Molnar @ 2013-11-11 11:50 UTC (permalink / raw)
  To: David Ahern; +Cc: acme, linux-kernel, Namhyung Kim, Jiri Olsa


* David Ahern <dsahern@gmail.com> wrote:

> On 11/7/13, 1:30 AM, Ingo Molnar wrote:
> >
> >* David Ahern <dsahern@gmail.com> wrote:
> >
> >>On 11/5/13, 10:36 PM, Ingo Molnar wrote:
> >>>I think you could avoid the 'short' complication altogether by doing
> >>>something like this:
> >>>
> >>>>+elif test -f ../../PERF-VERSION-FILE
> >>>>+then
> >>>>+	TAG=$(cut -d' ' -f3 ../../PERF-VERSION-FILE)
> >>>
> >>>That extracts 'TAG' as a true sha1 and makes GVF correct on out of tree
> >>>builds as well.
> >>
> >>Certainly. I was trying to make PERF-VERSION-FILE readable as a
> >>standalone file -- a better version descriptor than HEAD file.
> >
> >Do you mean that instead of:
> >
> >   comet:~/tip/tools/perf> cat PERF-VERSION-FILE
> >   #define PERF_VERSION "3.12.g953bfb"
> 
> no. I was thinking instead of
> cat PERF-VERSION-FILE
> #define PERF_VERSION "3.12.g953bfb"
> 
> you have
> cat PERF-VERSION-FILE
> 3.12.g953bfb
> 
> But remember this is a new PERF-VERSION-FILE at the top of tree --
> just like the HEAD file that contains the top commit id. Both are
> generated as part of the make perf-tar-src-pkg to keep track of the
> origin of the source. The new file becomes the basis of
> $(OUTPUT)PERF-VERSION-FILE.

Hm, I think this is confusing.

I think this should be a special file name, only generated into the 
tarball, one which never shows up in a regular build.

It must be possible to build perf in a read-only source repository (with 
O= pointing elsewhere) for example.

Thanks,

	Ingo

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

end of thread, other threads:[~2013-11-11 11:51 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-11-06  0:53 [PATCH] perf: Fix version when building out of tree David Ahern
2013-11-06  5:36 ` Ingo Molnar
2013-11-06 14:54   ` David Ahern
2013-11-07  8:30     ` Ingo Molnar
2013-11-07 14:30       ` David Ahern
2013-11-11 11:50         ` Ingo Molnar

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).