Re: [RFC PATCH v4 03/29] perf tools: Move linux/{list.h,poison.h} to tools/include

From: Arnaldo Carvalho de Melo
Date: Wed May 27 2015 - 09:15:23 EST


Em Wed, May 27, 2015 at 05:19:38AM +0000, Wang Nan escreveu:
> This patch moves list.h from tools/perf/util/include/linux/list.h
> to tools/include/linux/list.h to enable other libraries use macros in
> it, like libbpf which will be introduced by further patches. Since
> list.h depend on poison.h, poison.h is also moved.

> Both file use relative path, so one '..' is removed for each header
> to make them suit for new directory.

I'll apply this, but when doing these moves, one has to worry that these
build targets continue working:

[acme@ssdandy linux]$ make help | grep perf
perf-tar-src-pkg - Build perf-4.1.0-rc2.tar source tarball
perf-targz-src-pkg - Build perf-4.1.0-rc2.tar.gz source tarball
perf-tarbz2-src-pkg - Build perf-4.1.0-rc2.tar.bz2 source tarball
perf-tarxz-src-pkg - Build perf-4.1.0-rc2.tar.xz source tarball
[acme@ssdandy linux]$

To explain what they are for, here is how they are used:

[acme@ssdandy linux]$ ls -la *.gz
ls: cannot access *.gz: No such file or directory
[acme@ssdandy linux]$ make perf-targz-src-pkg
TAR
[acme@ssdandy linux]$ ls -la *.gz
-rw-rw-r--. 1 acme acme 1014070 May 27 10:07 perf-4.1.0-rc2.tar.gz
[acme@ssdandy linux]$ mkdir -p /tmp/on-some-other-machine-we-do/
[acme@ssdandy linux]$ mv perf-4.1.0-rc2.tar.gz /tmp/on-some-other-machine-we-do/
[acme@ssdandy linux]$ cd /tmp/on-some-other-machine-we-do/
[acme@ssdandy on-some-other-machine-we-do]$ tar xf perf-4.1.0-rc2.tar.gz
[acme@ssdandy on-some-other-machine-we-do]$ ls
perf-4.1.0-rc2 perf-4.1.0-rc2.tar.gz
[acme@ssdandy on-some-other-machine-we-do]$ cd perf-4.1.0-rc2/
[acme@ssdandy perf-4.1.0-rc2]$ ls
arch HEAD include lib PERF-VERSION-FILE tools
[acme@ssdandy perf-4.1.0-rc2]$ make -C tools/perf
make: Entering directory `/tmp/on-some-other-machine-we-do/perf-4.1.0-rc2/tools/perf'
BUILD: Doing 'make -j8' parallel build

Auto-detecting system features:
... dwarf: [ on ]
... glibc: [ on ]
... gtk2: [ on ]
... libaudit: [ on ]
... libbfd: [ on ]
... libelf: [ on ]
... libnuma: [ on ]
... libperl: [ on ]
... libpython: [ on ]
... libslang: [ on ]
... libunwind: [ on ]
... libdw-dwarf-unwind: [ on ]
... zlib: [ on ]
... lzma: [ on ]

CC util/abspath.o
CC arch/common.o
CC ui/setup.o
CC fs/fs.o
CC event-parse.o
PERF_VERSION = 4.1.rc2.g6bbda4
GEN common-cmds.h
CC fd/array.o
CC ui/gtk/browser.o
In file included from /usr/include/linux/kernel.h:4:0,
from util/util.h:73,
from util/cache.h:5,
from util/abspath.c:1:
/usr/include/linux/sysinfo.h:8:2: error: unknown type name â__kernel_long_tâ
__kernel_long_t uptime; /* Seconds since boot */
^
/usr/include/linux/sysinfo.h:9:2: error: unknown type name â__kernel_ulong_tâ
__kernel_ulong_t loads[3]; /* 1, 5, and 15 minute load averages */
^
/usr/include/linux/sysinfo.h:10:2: error: unknown type name â__kernel_ulong_tâ
__kernel_ulong_t totalram; /* Total usable main memory size */

<BIG, BIG SNIP>
^
cc1: all warnings being treated as errors
make[3]: *** [ui/gtk/hists.o] Error 1
make[2]: *** [ui/gtk] Error 2
make[1]: *** [gtk-in.o] Error 2
LD libtraceevent-in.o
LD plugin_scsi-in.o
LINK libtraceevent.a
LINK plugin_scsi.so
LD plugin_xen-in.o
LINK plugin_xen.so
make: *** [all] Error 2
make: Leaving directory `/tmp/on-some-other-machine-we-do/perf-4.1.0-rc2/tools/perf'
[acme@ssdandy perf-4.1.0-rc2]$

========================================================================

This is because:

[acme@ssdandy perf-4.1.0-rc2]$ ls -la tools/include/linux/kernel.h
ls: cannot access tools/include/linux/kernel.h: No such file or directory

You forgot to add this file to tools/perf/MANIFEST, that which effect would
be equivalent to:

[acme@ssdandy perf-4.1.0-rc2]$ cp ~acme/git/linux/tools/include/linux/kernel.h tools/include/linux/kernel.h
[acme@ssdandy perf-4.1.0-rc2]$ make -C tools/perf
make: Entering directory `/tmp/on-some-other-machine-we-do/perf-4.1.0-rc2/tools/perf'
BUILD: Doing 'make -j8' parallel build
CC arch/common.o
CC util/abspath.o
CC ui/gtk/browser.o
CC util/alias.o

<SNIP>

LD util/scripting-engines/libperf-in.o
LD util/libperf-in.o
LD libperf-in.o
AR libperf.a
LINK perf
LINK libperf-gtk.so
make: Leaving directory `/tmp/on-some-other-machine-we-do/perf-4.1.0-rc2/tools/perf'
[acme@ssdandy perf-4.1.0-rc2]$
[acme@ssdandy perf-4.1.0-rc2]$ tools/perf/perf --version
perf version 4.1.rc2.g6bbda4
[acme@ssdandy perf-4.1.0-rc2]$ ls -la tools/perf/perf
-rwxrwxr-x. 1 acme acme 11495170 May 27 10:12 tools/perf/perf
[acme@ssdandy perf-4.1.0-rc2]$ strip tools/perf/perf
[acme@ssdandy perf-4.1.0-rc2]$ ls -la tools/perf/perf
-rwxrwxr-x. 1 acme acme 2441888 May 27 10:13 tools/perf/perf
[acme@ssdandy perf-4.1.0-rc2]$

========================================================================

This, BTW, would have been caught if you had run:

make -C tools/perf build-test

One of the last tests will do this packaging and building, alerting you that
something is missing.

I am doing this for the two patches in this series that moves things to tools,

Regards,

- Arnaldo

> Signed-off-by: Wang Nan <wangnan0@xxxxxxxxxx>
> ---
> tools/{perf/util => }/include/linux/list.h | 6 +++---
> tools/include/linux/poison.h | 1 +
> tools/perf/util/include/linux/poison.h | 1 -
> 3 files changed, 4 insertions(+), 4 deletions(-)
> rename tools/{perf/util => }/include/linux/list.h (90%)
> create mode 100644 tools/include/linux/poison.h
> delete mode 100644 tools/perf/util/include/linux/poison.h
>
> diff --git a/tools/perf/util/include/linux/list.h b/tools/include/linux/list.h
> similarity index 90%
> rename from tools/perf/util/include/linux/list.h
> rename to tools/include/linux/list.h
> index 76ddbc7..76b014c 100644
> --- a/tools/perf/util/include/linux/list.h
> +++ b/tools/include/linux/list.h
> @@ -1,10 +1,10 @@
> #include <linux/kernel.h>
> #include <linux/types.h>
>
> -#include "../../../../include/linux/list.h"
> +#include "../../../include/linux/list.h"
>
> -#ifndef PERF_LIST_H
> -#define PERF_LIST_H
> +#ifndef TOOLS_LIST_H
> +#define TOOLS_LIST_H
> /**
> * list_del_range - deletes range of entries from list.
> * @begin: first element in the range to delete from the list.
> diff --git a/tools/include/linux/poison.h b/tools/include/linux/poison.h
> new file mode 100644
> index 0000000..0c27bdf
> --- /dev/null
> +++ b/tools/include/linux/poison.h
> @@ -0,0 +1 @@
> +#include "../../../include/linux/poison.h"
> diff --git a/tools/perf/util/include/linux/poison.h b/tools/perf/util/include/linux/poison.h
> deleted file mode 100644
> index fef6dbc..0000000
> --- a/tools/perf/util/include/linux/poison.h
> +++ /dev/null
> @@ -1 +0,0 @@
> -#include "../../../../include/linux/poison.h"
> --
> 1.8.3.4
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/