All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] tools: perf: Fix test build error when bindir contains double slash
@ 2015-07-27 16:46 Pawel Moll
  2015-07-27 18:24 ` [PATCH] perf tests: Adding build test for having ending slash in " Jiri Olsa
  0 siblings, 1 reply; 5+ messages in thread
From: Pawel Moll @ 2015-07-27 16:46 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo, Peter Zijlstra, Ingo Molnar, Jiri Olsa,
	Namhyung Kim, Adrian Hunter
  Cc: linux-kernel, Pawel Moll

When building with a prefix ending with a slash, for example:

	$ make prefix=/usr/local/

one of the perf tests fail to compile due to BUILD_STR macro mishandling
bindir_SQ string containing with two slashes:

	-DBINDIR="BUILD_STR(/usr/local//bin)"

with the following error:

	  CC       tests/attr.o
	tests/attr.c: In function ‘test__attr’:
	tests/attr.c:168:50: error: expected ‘)’ before ‘;’ token
	  snprintf(path_perf, PATH_MAX, "%s/perf", BINDIR);
                                                  ^
	tests/attr.c:176:1: error: expected ‘;’ before ‘}’ token
	 }
	 ^
	tests/attr.c:176:1: error: control reaches end of non-void function [-Werror=return-type]
	 }
	 ^
	cc1: all warnings being treated as errors

This patch works around the problem by "cleaning" the bindir string
using make's realpath function.

Signed-off-by: Pawel Moll <pawel.moll@arm.com>
---
 tools/perf/config/Makefile | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tools/perf/config/Makefile b/tools/perf/config/Makefile
index b4a9c29..59e8376 100644
--- a/tools/perf/config/Makefile
+++ b/tools/perf/config/Makefile
@@ -638,7 +638,7 @@ ifndef DESTDIR
 prefix ?= $(HOME)
 endif
 bindir_relative = bin
-bindir = $(prefix)/$(bindir_relative)
+bindir = $(realpath $(prefix)/$(bindir_relative))
 mandir = share/man
 infodir = share/info
 perfexecdir = libexec/perf-core
-- 
2.1.4


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

* [PATCH] perf tests: Adding build test for having ending slash in double slash
  2015-07-27 16:46 [PATCH] tools: perf: Fix test build error when bindir contains double slash Pawel Moll
@ 2015-07-27 18:24 ` Jiri Olsa
  2015-07-28 12:40   ` Pawel Moll
  2015-07-31 13:55   ` [tip:perf/core] perf tests: Adding build test for having ending " tip-bot for Jiri Olsa
  0 siblings, 2 replies; 5+ messages in thread
From: Jiri Olsa @ 2015-07-27 18:24 UTC (permalink / raw)
  To: Pawel Moll
  Cc: Arnaldo Carvalho de Melo, Peter Zijlstra, Ingo Molnar,
	Namhyung Kim, Adrian Hunter, linux-kernel

On Mon, Jul 27, 2015 at 05:46:33PM +0100, Pawel Moll wrote:
> When building with a prefix ending with a slash, for example:
> 
> 	$ make prefix=/usr/local/
> 
> one of the perf tests fail to compile due to BUILD_STR macro mishandling
> bindir_SQ string containing with two slashes:

hum, I can find this.. is it known issue with stringification?

> 
> 	-DBINDIR="BUILD_STR(/usr/local//bin)"
> 
> with the following error:
> 
> 	  CC       tests/attr.o
> 	tests/attr.c: In function ‘test__attr’:
> 	tests/attr.c:168:50: error: expected ‘)’ before ‘;’ token
> 	  snprintf(path_perf, PATH_MAX, "%s/perf", BINDIR);
>                                                   ^
> 	tests/attr.c:176:1: error: expected ‘;’ before ‘}’ token
> 	 }
> 	 ^
> 	tests/attr.c:176:1: error: control reaches end of non-void function [-Werror=return-type]
> 	 }
> 	 ^
> 	cc1: all warnings being treated as errors
> 
> This patch works around the problem by "cleaning" the bindir string
> using make's realpath function.

I'm getting install error with your patch:

[jolsa@krava perf]$ rm -rf /tmp/krava/ && make install prefix=/tmp/krava

SNIP

  LINK     perf
  INSTALL  binaries
  INSTALL  tests
install: cannot create directory ‘’: No such file or directory
install: target ‘’ is not a directory: No such file or directory
ln: failed to access ‘/perf’: No such file or directory
Makefile.perf:492: recipe for target 'install-tools' failed
make[1]: *** [install-tools] Error 1
make[1]: *** Waiting for unfinished jobs....
Makefile:87: recipe for target 'install' failed
make: *** [install] Error 2

somethings wrong with install targets dealing with bindir_SQ

anyway, attaching test case for your issue

thanks,
jirka


---
Pawel Moll reported build issue for having extra slash (/)
at the end of the prefix variable.

  $ make prefix=/usr/local/

    CC       tests/attr.o
  tests/attr.c: In function ‘test__attr’:
  tests/attr.c:168:50: error: expected ‘)’ before ‘;’ token
    snprintf(path_perf, PATH_MAX, "%s/perf", BINDIR);
                                                ^
  tests/attr.c:176:1: error: expected ‘;’ before ‘}’ token
   }
   ^
  tests/attr.c:176:1: error: control reaches end of non-void function [-Werror=return-type]
   }
   ^
  cc1: all warnings being treated as errors

Adding automated test case for this.

Reported-by: Pawel Moll <pawel.moll@arm.com>
Link: http://lkml.kernel.org/n/tip-uk97po64cp149se3ll28gqel@git.kernel.org
Signed-off-by: Jiri Olsa <jolsa@kernel.org>
---
 tools/perf/tests/make | 13 +++++++++----
 1 file changed, 9 insertions(+), 4 deletions(-)

diff --git a/tools/perf/tests/make b/tools/perf/tests/make
index 729112f4cfaa..ba31c4bd441d 100644
--- a/tools/perf/tests/make
+++ b/tools/perf/tests/make
@@ -58,7 +58,8 @@ make_install_man    := install-man
 make_install_html   := install-html
 make_install_info   := install-info
 make_install_pdf    := install-pdf
-make_install_prefix := install prefix=/tmp/krava
+make_install_prefix       := install prefix=/tmp/krava
+make_install_prefix_slash := install prefix=/tmp/krava/
 make_static         := LDFLAGS=-static
 
 # all the NO_* variable combined
@@ -101,6 +102,7 @@ run += make_util_pmu_bison_o
 run += make_install
 run += make_install_bin
 run += make_install_prefix
+run += make_install_prefix_slash
 # FIXME 'install-*' commented out till they're fixed
 # run += make_install_doc
 # run += make_install_man
@@ -175,11 +177,14 @@ test_make_install_O     := $(call test_dest_files,$(installed_files_all))
 test_make_install_bin   := $(call test_dest_files,$(installed_files_bin))
 test_make_install_bin_O := $(call test_dest_files,$(installed_files_bin))
 
-# We prefix all installed files for make_install_prefix
+# We prefix all installed files for make_install_prefix(_slash)
 # with '/tmp/krava' to match installed/prefix-ed files.
 installed_files_all_prefix := $(addprefix /tmp/krava/,$(installed_files_all))
-test_make_install_prefix   := $(call test_dest_files,$(installed_files_all_prefix))
-test_make_install_prefix_O := $(call test_dest_files,$(installed_files_all_prefix))
+test_make_install_prefix   :=  $(call test_dest_files,$(installed_files_all_prefix))
+test_make_install_prefix_O :=  $(call test_dest_files,$(installed_files_all_prefix))
+
+test_make_install_prefix_slash   := $(test_make_install_prefix)
+test_make_install_prefix_slash_O := $(test_make_install_prefix_O)
 
 # FIXME nothing gets installed
 test_make_install_man    := test -f $$TMP_DEST/share/man/man1/perf.1
-- 
2.4.3


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

* Re: [PATCH] perf tests: Adding build test for having ending slash in double slash
  2015-07-27 18:24 ` [PATCH] perf tests: Adding build test for having ending slash in " Jiri Olsa
@ 2015-07-28 12:40   ` Pawel Moll
  2015-07-28 13:44     ` Pawel Moll
  2015-07-31 13:55   ` [tip:perf/core] perf tests: Adding build test for having ending " tip-bot for Jiri Olsa
  1 sibling, 1 reply; 5+ messages in thread
From: Pawel Moll @ 2015-07-28 12:40 UTC (permalink / raw)
  To: Jiri Olsa
  Cc: Arnaldo Carvalho de Melo, Peter Zijlstra, Ingo Molnar,
	Namhyung Kim, Adrian Hunter, linux-kernel@vger.kernel.org

On Mon, 2015-07-27 at 19:24 +0100, Jiri Olsa wrote:
> I'm getting install error with your patch:
> 
> [jolsa@krava perf]$ rm -rf /tmp/krava/ && make install prefix=/tmp/krava
> 
> SNIP
> 
>   LINK     perf
>   INSTALL  binaries
>   INSTALL  tests
> install: cannot create directory ‘’: No such file or directory
> install: target ‘’ is not a directory: No such file or directory
> ln: failed to access ‘/perf’: No such file or directory
> Makefile.perf:492: recipe for target 'install-tools' failed
> make[1]: *** [install-tools] Error 1
> make[1]: *** Waiting for unfinished jobs....
> Makefile:87: recipe for target 'install' failed
> make: *** [install] Error 2
> 
> somethings wrong with install targets dealing with bindir_SQ

Interesting. Building from a perf-tar-src-pkg tarball works:

$ rm -rf /tmp/krava/ && make install prefix=/tmp/krava
[...]
  LINK     perf
  LINK     libperf-gtk.so
  INSTALL  GTK UI
  INSTALL  binaries
  INSTALL  tests
  INSTALL  libexec
  INSTALL  perf-archive
  INSTALL  perf-with-kcore
  INSTALL  perl-scripts
  INSTALL  python-scripts
  INSTALL  perf_completion-script

but it breaks indeed the way you pointed out when building in-tree...

Having a look now.

Pawel


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

* Re: [PATCH] perf tests: Adding build test for having ending slash in double slash
  2015-07-28 12:40   ` Pawel Moll
@ 2015-07-28 13:44     ` Pawel Moll
  0 siblings, 0 replies; 5+ messages in thread
From: Pawel Moll @ 2015-07-28 13:44 UTC (permalink / raw)
  To: Jiri Olsa
  Cc: Arnaldo Carvalho de Melo, Peter Zijlstra, Ingo Molnar,
	Namhyung Kim, Adrian Hunter, linux-kernel@vger.kernel.org

On Tue, 2015-07-28 at 13:40 +0100, Pawel Moll wrote:
> Interesting. Building from a perf-tar-src-pkg tarball works:
> 
> $ rm -rf /tmp/krava/ && make install prefix=/tmp/krava
> [...]
>   LINK     perf
>   LINK     libperf-gtk.so
>   INSTALL  GTK UI
>   INSTALL  binaries
>   INSTALL  tests
>   INSTALL  libexec
>   INSTALL  perf-archive
>   INSTALL  perf-with-kcore
>   INSTALL  perl-scripts
>   INSTALL  python-scripts
>   INSTALL  perf_completion-script
> 
> but it breaks indeed the way you pointed out when building in-tree...

Ignore what I said above. The real issue is that $(realpath PATH)
returns nothing if PATH does not actually exist. Didn't know that...

Will send v2 soon.

Pawel


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

* [tip:perf/core] perf tests: Adding build test for having ending double slash
  2015-07-27 18:24 ` [PATCH] perf tests: Adding build test for having ending slash in " Jiri Olsa
  2015-07-28 12:40   ` Pawel Moll
@ 2015-07-31 13:55   ` tip-bot for Jiri Olsa
  1 sibling, 0 replies; 5+ messages in thread
From: tip-bot for Jiri Olsa @ 2015-07-31 13:55 UTC (permalink / raw)
  To: linux-tip-commits
  Cc: jolsa, acme, namhyung, adrian.hunter, hpa, mingo, tglx, jolsa,
	a.p.zijlstra, linux-kernel, pawel.moll

Commit-ID:  aa53c09e90a19c215549bd1ca970fddcb7c0c001
Gitweb:     http://git.kernel.org/tip/aa53c09e90a19c215549bd1ca970fddcb7c0c001
Author:     Jiri Olsa <jolsa@redhat.com>
AuthorDate: Mon, 27 Jul 2015 20:24:17 +0200
Committer:  Arnaldo Carvalho de Melo <acme@redhat.com>
CommitDate: Thu, 30 Jul 2015 12:23:08 -0300

perf tests: Adding build test for having ending double slash

Pawel Moll reported build issue for having extra slash (/) at the end of
the prefix variable.

  $ make prefix=/usr/local/

    CC       tests/attr.o
  tests/attr.c: In function ‘test__attr’:
  tests/attr.c:168:50: error: expected ‘)’ before ‘;’ token
    snprintf(path_perf, PATH_MAX, "%s/perf", BINDIR);
                                                ^
  tests/attr.c:176:1: error: expected ‘;’ before ‘}’ token
   }
   ^
  tests/attr.c:176:1: error: control reaches end of non-void function [-Werror=return-type]
   }
   ^
  cc1: all warnings being treated as errors

Adding automated test case for this.

Reported-by: Pawel Moll <pawel.moll@arm.com>
Signed-off-by: Jiri Olsa <jolsa@kernel.org>
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/r/20150727182417.GD20509@krava.brq.redhat.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/perf/tests/make | 13 +++++++++----
 1 file changed, 9 insertions(+), 4 deletions(-)

diff --git a/tools/perf/tests/make b/tools/perf/tests/make
index 729112f..ba31c4b 100644
--- a/tools/perf/tests/make
+++ b/tools/perf/tests/make
@@ -58,7 +58,8 @@ make_install_man    := install-man
 make_install_html   := install-html
 make_install_info   := install-info
 make_install_pdf    := install-pdf
-make_install_prefix := install prefix=/tmp/krava
+make_install_prefix       := install prefix=/tmp/krava
+make_install_prefix_slash := install prefix=/tmp/krava/
 make_static         := LDFLAGS=-static
 
 # all the NO_* variable combined
@@ -101,6 +102,7 @@ run += make_util_pmu_bison_o
 run += make_install
 run += make_install_bin
 run += make_install_prefix
+run += make_install_prefix_slash
 # FIXME 'install-*' commented out till they're fixed
 # run += make_install_doc
 # run += make_install_man
@@ -175,11 +177,14 @@ test_make_install_O     := $(call test_dest_files,$(installed_files_all))
 test_make_install_bin   := $(call test_dest_files,$(installed_files_bin))
 test_make_install_bin_O := $(call test_dest_files,$(installed_files_bin))
 
-# We prefix all installed files for make_install_prefix
+# We prefix all installed files for make_install_prefix(_slash)
 # with '/tmp/krava' to match installed/prefix-ed files.
 installed_files_all_prefix := $(addprefix /tmp/krava/,$(installed_files_all))
-test_make_install_prefix   := $(call test_dest_files,$(installed_files_all_prefix))
-test_make_install_prefix_O := $(call test_dest_files,$(installed_files_all_prefix))
+test_make_install_prefix   :=  $(call test_dest_files,$(installed_files_all_prefix))
+test_make_install_prefix_O :=  $(call test_dest_files,$(installed_files_all_prefix))
+
+test_make_install_prefix_slash   := $(test_make_install_prefix)
+test_make_install_prefix_slash_O := $(test_make_install_prefix_O)
 
 # FIXME nothing gets installed
 test_make_install_man    := test -f $$TMP_DEST/share/man/man1/perf.1

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

end of thread, other threads:[~2015-07-31 13:55 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-07-27 16:46 [PATCH] tools: perf: Fix test build error when bindir contains double slash Pawel Moll
2015-07-27 18:24 ` [PATCH] perf tests: Adding build test for having ending slash in " Jiri Olsa
2015-07-28 12:40   ` Pawel Moll
2015-07-28 13:44     ` Pawel Moll
2015-07-31 13:55   ` [tip:perf/core] perf tests: Adding build test for having ending " tip-bot for Jiri Olsa

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.