* [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).