2015-07-28 14:10:29

by Pawel Moll

[permalink] [raw]
Subject: [PATCH v2] tools: perf: Fix test build error when bindir contains double slash

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 abspath function.

Signed-off-by: Pawel Moll <[email protected]>
---
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..e8d987a 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 = $(abspath $(prefix)/$(bindir_relative))
mandir = share/man
infodir = share/info
perfexecdir = libexec/perf-core
--
2.1.4


2015-07-28 14:46:07

by Jiri Olsa

[permalink] [raw]
Subject: Re: [PATCH v2] tools: perf: Fix test build error when bindir contains double slash

On Tue, Jul 28, 2015 at 03:10:13PM +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:
>
> -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 abspath function.

nice ;-)

Acked-by: Jiri Olsa <[email protected]>

thanks,
jirka

2015-07-28 16:04:32

by Arnaldo Carvalho de Melo

[permalink] [raw]
Subject: Re: [PATCH v2] tools: perf: Fix test build error when bindir contains double slash

Em Tue, Jul 28, 2015 at 04:46:00PM +0200, Jiri Olsa escreveu:
> On Tue, Jul 28, 2015 at 03:10:13PM +0100, Pawel Moll wrote:
> > When building with a prefix ending with a slash, for example:
> >
> > This patch works around the problem by "cleaning" the bindir string
> > using make's abspath function.
>
> nice ;-)
>
> Acked-by: Jiri Olsa <[email protected]>

Applied.

- Arnaldo

Subject: [tip:perf/core] perf tools: Fix test build error when bindir contains double slash

Commit-ID: 0927beeca5f9d1a7978f8da9c9d28647859816d3
Gitweb: http://git.kernel.org/tip/0927beeca5f9d1a7978f8da9c9d28647859816d3
Author: Pawel Moll <[email protected]>
AuthorDate: Tue, 28 Jul 2015 15:10:13 +0100
Committer: Arnaldo Carvalho de Melo <[email protected]>
CommitDate: Tue, 28 Jul 2015 13:03:49 -0300

perf tools: Fix test build error when bindir contains double slash

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 abspath function.

Signed-off-by: Pawel Moll <[email protected]>
Acked-by: Jiri Olsa <[email protected]>
Cc: Adrian Hunter <[email protected]>
Cc: Namhyung Kim <[email protected]>
Cc: Peter Zijlstra <[email protected]>
Link: http://lkml.kernel.org/r/[email protected]
Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>
---
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 094ddae..d31fac1 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 = $(abspath $(prefix)/$(bindir_relative))
mandir = share/man
infodir = share/info
perfexecdir = libexec/perf-core