summaryrefslogtreecommitdiff
path: root/dev-util/perf
diff options
context:
space:
mode:
Diffstat (limited to 'dev-util/perf')
-rw-r--r--dev-util/perf/Manifest6
-rw-r--r--dev-util/perf/files/perf-5.1.15-fix-clang8.patch17
-rw-r--r--dev-util/perf/files/perf-5.4.20-binutil-libs-2.34.patch60
-rw-r--r--dev-util/perf/files/perf-5.4.6-fix-clang9.patch17
-rw-r--r--dev-util/perf/files/perf-5.4.7-propagate-cflags.patch44
-rw-r--r--dev-util/perf/metadata.xml48
-rw-r--r--dev-util/perf/perf-5.10.16.ebuild (renamed from dev-util/perf/perf-5.7-r1.ebuild)77
-rw-r--r--dev-util/perf/perf-5.11.ebuild (renamed from dev-util/perf/perf-5.4.20.ebuild)118
8 files changed, 134 insertions, 253 deletions
diff --git a/dev-util/perf/Manifest b/dev-util/perf/Manifest
index 9d23c4e598be..7742d4dac10e 100644
--- a/dev-util/perf/Manifest
+++ b/dev-util/perf/Manifest
@@ -1,6 +1,6 @@
-DIST linux-5.4.tar.xz 109441440 BLAKE2B 193bc4a3147e147d5529956164ec4912fad5d5c6fb07f909ff1056e57235834173194afc686993ccd785c1ff15804de0961b625f3008cca0e27493efc8f27b13 SHA512 9f60f77e8ab972b9438ac648bed17551c8491d6585a5e85f694b2eaa4c623fbc61eb18419b2656b6795eac5deec0edaa04547fc6723fbda52256bd7f3486898f
-DIST linux-5.7.tar.xz 112690468 BLAKE2B b2b71e231507429b178b6b89be546c4a3ee2757f5d2c58b6137d383f16034a587225a75a9dbca6a01a433056ebe078487132c224e909a2971c9634687e47b1d1 SHA512 45bde01593f6147c8c169b9e46b4b56eee998142552ae0ff82f1dd21b1fd54f3b32f6283f6bd77ea717d374672167849e468c157f235d2f12f7d7816e4623bf6
+DIST linux-5.10.tar.xz 116606704 BLAKE2B b923d7b66309224f42f35f8a5fa219421b0a9362d2adacdadd8d96251f61f7230878ea297a269a7f3b3c56830f0b177e068691e1d7f88501a05653b0a13274d1 SHA512 95bc137d0cf9148da6a9d1f1a878698dc27b40f68e22c597544010a6c591ce1b256f083489d3ff45ff77753289b535135590194d88ef9f007d0ddab3d74de70e
+DIST linux-5.11.tar.xz 117619104 BLAKE2B 81300c27bd5476387a83123aaeb4163c73eb61e9245806c23660cb5e6a4fa88ffc9def027031335fa0270fc4080506cd415990014364e3a98b9d2e8c58a29524 SHA512 a567ec133018bb5ec00c60281479b466c26e02137a93a9c690e83997947df02b6fd94e76e8df748f6d70ceb58a19bacc3b1467de10b7a1fad2763db32b3f1330
DIST linux-5.8.tar.xz 114459324 BLAKE2B 7bd97f8fa4527840754434414c07283e89731dc8ebb1e95fa5bc1469a60af1122582c0d3b6e262e77882f023190068df3537bd8b65964b3caa820bb2c8e579c7 SHA512 45a53ecf351096ef6e98242cca4228b8da9b9139ecc6963695791ea6fb7a9484a4e1c19dcca7ce7cbfdfa49de0451b70973bb078f12bdae9cbaddbc3f8092556
DIST linux-5.9.tar.xz 115507140 BLAKE2B e8d11472d63a9f8409ca12a2e8c97c6963a3d4516b5a398b627d6ece565584526f9b5a1377a2fa4bd184c09c7db94c987428bc5d52df0c788464a67e9e8d6dcb SHA512 d3d92ce4246bad74c9a784212f160d98449b1e8793970c2c308276568d852b8effe0528686bdb87d55d691f09a826abf7938d69bdd4759ce65ddd5c05ffe4eca
-DIST patch-5.4.20.xz 776552 BLAKE2B bad2a95ed8521ac5c379fe91e16d60b2a38de19b9239755084621e5230677b232ec4cf9e2e8161c0022daff43fdbb37d5b5b5bfdc9e932ef3a860bcd17f640f8 SHA512 65fbcdbd41e35c17601ff15bbe33933be2ab7a694aa181a0b802cc11c1c653c9b688dbb382076cbad05983a0c07467955c035ae25f5175f7ce5bc24339303d77
+DIST patch-5.10.16.xz 498880 BLAKE2B 14061b505285f24938fb955ccc7f9fbd78ccc0b1026bffb17a89fdad08ea54bfee7bbb841123d9af4d0720a960a27c649c39852af7e2be8a286af926c7bce9c0 SHA512 be9cfe1ae6697956ca7476cedc212a8cbd9da2c3c72096a89afaaf73c5b6655fd04d458f96c472f680c5513c0ea3e4449c4092a958425b6040f0c7774453cd2f
DIST patch-5.9.9.xz 502816 BLAKE2B 104fa2ecaac3c543662b891de22cb881a917320317d58dcaeb6b6826e3f0296126ab5177cc7a44a438c15d3ae9cab116ff6926cce9d5e4d310df99fca0d9b909 SHA512 87852bc4d08cd5e82c7de9a8c8d50c1b4c67eed7157bfe1034d279370ff21a194f082f126d49812f84ec726100c5d97b3d908994e92c2cbfd231a4ac851babe3
diff --git a/dev-util/perf/files/perf-5.1.15-fix-clang8.patch b/dev-util/perf/files/perf-5.1.15-fix-clang8.patch
deleted file mode 100644
index 743f4b017b14..000000000000
--- a/dev-util/perf/files/perf-5.1.15-fix-clang8.patch
+++ /dev/null
@@ -1,17 +0,0 @@
-https://bugs.gentoo.org/678652
-Created-By: Maciej S. Szmigiero <mail@maciej.szmigiero.name>
----
---- a/tools/build/feature/test-clang.cpp 2018-12-24 00:55:59.000000000 +0100
-+++ b/tools/build/feature/test-clang.cpp 2019-04-06 16:05:56.828757243 +0200
-@@ -1,10 +1,10 @@
- // SPDX-License-Identifier: GPL-2.0
--#include "clang/Basic/VirtualFileSystem.h"
- #include "clang/Driver/Driver.h"
- #include "clang/Frontend/TextDiagnosticPrinter.h"
- #include "llvm/ADT/IntrusiveRefCntPtr.h"
- #include "llvm/Support/ManagedStatic.h"
- #include "llvm/Support/raw_ostream.h"
-+#include "llvm/Support/VirtualFileSystem.h"
-
- using namespace clang;
- using namespace clang::driver;
diff --git a/dev-util/perf/files/perf-5.4.20-binutil-libs-2.34.patch b/dev-util/perf/files/perf-5.4.20-binutil-libs-2.34.patch
deleted file mode 100644
index 9fa191f720a9..000000000000
--- a/dev-util/perf/files/perf-5.4.20-binutil-libs-2.34.patch
+++ /dev/null
@@ -1,60 +0,0 @@
-From 0ada120c883d4f1f6aafd01cf0fbb10d8bbba015 Mon Sep 17 00:00:00 2001
-From: Changbin Du <changbin.du@gmail.com>
-Date: Tue, 28 Jan 2020 23:29:38 +0800
-Subject: perf: Make perf able to build with latest libbfd
-
-libbfd has changed the bfd_section_* macros to inline functions
-bfd_section_<field> since 2019-09-18. See below two commits:
- o http://www.sourceware.org/ml/gdb-cvs/2019-09/msg00064.html
- o https://www.sourceware.org/ml/gdb-cvs/2019-09/msg00072.html
-
-This fix make perf able to build with both old and new libbfd.
-
-Signed-off-by: Changbin Du <changbin.du@gmail.com>
-Acked-by: Jiri Olsa <jolsa@redhat.com>
-Cc: Peter Zijlstra <peterz@infradead.org>
-Link: http://lore.kernel.org/lkml/20200128152938.31413-1-changbin.du@gmail.com
-Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
----
- tools/perf/util/srcline.c | 16 +++++++++++++++-
- 1 file changed, 15 insertions(+), 1 deletion(-)
-
-diff --git a/tools/perf/util/srcline.c b/tools/perf/util/srcline.c
-index 6ccf6f6..5b7d6c1 100644
---- a/tools/perf/util/srcline.c
-+++ b/tools/perf/util/srcline.c
-@@ -193,16 +193,30 @@ static void find_address_in_section(bfd *abfd, asection *section, void *data)
- bfd_vma pc, vma;
- bfd_size_type size;
- struct a2l_data *a2l = data;
-+ flagword flags;
-
- if (a2l->found)
- return;
-
-- if ((bfd_get_section_flags(abfd, section) & SEC_ALLOC) == 0)
-+#ifdef bfd_get_section_flags
-+ flags = bfd_get_section_flags(abfd, section);
-+#else
-+ flags = bfd_section_flags(section);
-+#endif
-+ if ((flags & SEC_ALLOC) == 0)
- return;
-
- pc = a2l->addr;
-+#ifdef bfd_get_section_vma
- vma = bfd_get_section_vma(abfd, section);
-+#else
-+ vma = bfd_section_vma(section);
-+#endif
-+#ifdef bfd_get_section_size
- size = bfd_get_section_size(section);
-+#else
-+ size = bfd_section_size(section);
-+#endif
-
- if (pc < vma || pc >= vma + size)
- return;
---
-cgit v1.1
-
diff --git a/dev-util/perf/files/perf-5.4.6-fix-clang9.patch b/dev-util/perf/files/perf-5.4.6-fix-clang9.patch
deleted file mode 100644
index 614e62f676d2..000000000000
--- a/dev-util/perf/files/perf-5.4.6-fix-clang9.patch
+++ /dev/null
@@ -1,17 +0,0 @@
-https://bugs.gentoo.org/695726
-Created-By: Maciej S. Szmigiero <mail@maciej.szmigiero.name>
-Created-By: Dennis Schridde <devurandom@gmx.net>
---- a/tools/perf/util/c++/clang.cpp.orig 2019-12-20 16:39:21.015363866 +0100
-+++ b/tools/perf/util/c++/clang.cpp 2019-12-20 16:40:04.051639185 +0100
-@@ -71,7 +71,11 @@
- CompilerInstance Clang;
- Clang.createDiagnostics();
-
-+#if CLANG_VERSION_MAJOR < 9
- Clang.setVirtualFileSystem(&*VFS);
-+#else
-+ Clang.createFileManager(&*VFS);
-+#endif
-
- #if CLANG_VERSION_MAJOR < 4
- IntrusiveRefCntPtr<CompilerInvocation> CI =
diff --git a/dev-util/perf/files/perf-5.4.7-propagate-cflags.patch b/dev-util/perf/files/perf-5.4.7-propagate-cflags.patch
deleted file mode 100644
index b1a9bcc25a1e..000000000000
--- a/dev-util/perf/files/perf-5.4.7-propagate-cflags.patch
+++ /dev/null
@@ -1,44 +0,0 @@
-From 55542113c690a567e728e40d4181d7d037fc21b0 Mon Sep 17 00:00:00 2001
-From: Jiri Olsa <jolsa@kernel.org>
-Date: Fri, 11 Oct 2019 14:21:55 +0200
-Subject: perf tools: Propagate CFLAGS to libperf
-
-Andi reported that 'make DEBUG=1' does not propagate to the libbperf
-code. It's true also for the other flags. Changing the code to propagate
-the global build flags to libperf compilation.
-
-Reported-by: Andi Kleen <ak@linux.intel.com>
-Signed-off-by: Jiri Olsa <jolsa@kernel.org>
-Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
-Cc: Michael Petlan <mpetlan@redhat.com>
-Cc: Namhyung Kim <namhyung@kernel.org>
-Cc: Peter Zijlstra <peterz@infradead.org>
-Link: http://lore.kernel.org/lkml/20191011122155.15738-1-jolsa@kernel.org
-Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
----
- tools/perf/lib/core.c | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-(limited to 'tools/perf/lib/core.c')
-
-diff --git a/tools/perf/lib/core.c b/tools/perf/lib/core.c
-index d0b9ae422b9f..58fc894b76c5 100644
---- a/tools/perf/lib/core.c
-+++ b/tools/perf/lib/core.c
-@@ -5,11 +5,12 @@
- #include <stdio.h>
- #include <stdarg.h>
- #include <unistd.h>
-+#include <linux/compiler.h>
- #include <perf/core.h>
- #include <internal/lib.h>
- #include "internal.h"
-
--static int __base_pr(enum libperf_print_level level, const char *format,
-+static int __base_pr(enum libperf_print_level level __maybe_unused, const char *format,
- va_list args)
- {
- return vfprintf(stderr, format, args);
---
-cgit 1.2-0.3.lf.el7
-
diff --git a/dev-util/perf/metadata.xml b/dev-util/perf/metadata.xml
index 279962a1a529..d7cef6bd478f 100644
--- a/dev-util/perf/metadata.xml
+++ b/dev-util/perf/metadata.xml
@@ -1,42 +1,44 @@
<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<!DOCTYPE pkgmetadata SYSTEM "https://liguros.gitlab.io/dtd/metadata.dtd">
<pkgmetadata>
- <maintainer type="person">
- <email>naota@gentoo.org</email>
- </maintainer>
- <maintainer type="person">
- <email>dlan@gentoo.org</email>
- <name>Yixun Lan</name>
- </maintainer>
- <maintainer type="person">
- <email>amadio@gentoo.org</email>
- <name>Guilherme Amadio</name>
- </maintainer>
- <use>
- <flag name="clang">Enable builtin clang and LLVM support</flag>
- <flag name="demangle">
+ <maintainer type="person">
+ <email>naota@gentoo.org</email>
+ </maintainer>
+ <maintainer type="person">
+ <email>dlan@gentoo.org</email>
+ <name>Yixun Lan</name>
+ </maintainer>
+ <maintainer type="person">
+ <email>amadio@gentoo.org</email>
+ <name>Guilherme Amadio</name>
+ </maintainer>
+
+ <use>
+ <flag name="clang">Enable builtin clang and LLVM support</flag>
+ <flag name="demangle">
Enable C++ symbol name demangling, using libbfd from
<pkg>sys-devel/binutils</pkg>. When this flag is enabled, the
package will have to be rebuilt after every version bump of
binutils.
</flag>
- <flag name="doc">
+ <flag name="doc">
Build documentation and man pages. With this USE flag disabled,
the --help parameter for perf and its sub-tools will not be
available. This is optional because it depends on a few
documentation handling tools that are not always welcome on user
systems.
</flag>
- <flag name="libpfm">Enable <pkg>dev-libs/libpfm</pkg> support</flag>
- <flag name="numa">Enable NUMA support</flag>
- <flag name="perl">
+ <flag name="libpfm">Enable <pkg>dev-libs/libpfm</pkg> support</flag>
+ <flag name="numa">Enable NUMA support</flag>
+ <flag name="perl">
Add support for Perl as a scripting language for perf tools.
</flag>
- <flag name="systemtap">
+ <flag name="systemtap">
Add support to define SDT event in perf tools.
</flag>
- <flag name="unwind">
+ <flag name="unwind">
Use sys-libs/libunwind for frame unwinding support.
</flag>
- </use>
-</pkgmetadata>
+ </use>
+ <origin>gentoo-staging</origin>
+</pkgmetadata> \ No newline at end of file
diff --git a/dev-util/perf/perf-5.7-r1.ebuild b/dev-util/perf/perf-5.10.16.ebuild
index 78b82ea748de..1cacf0b8e36a 100644
--- a/dev-util/perf/perf-5.7-r1.ebuild
+++ b/dev-util/perf/perf-5.10.16.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2020 Gentoo Authors
+# Copyright 1999-2021 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=7
@@ -6,9 +6,6 @@ EAPI=7
PYTHON_COMPAT=( python3_{6,7,8,9,10} )
inherit bash-completion-r1 estack eutils llvm toolchain-funcs prefix python-r1 linux-info
-MY_PV="${PV/_/-}"
-MY_PV="${MY_PV/-pre/-git}"
-
DESCRIPTION="Userland tools for Linux Performance Counters"
HOMEPAGE="https://perf.wiki.kernel.org/"
@@ -34,11 +31,22 @@ SRC_URI+=" https://www.kernel.org/pub/linux/kernel/v${LINUX_V}/${LINUX_SOURCES}"
LICENSE="GPL-2"
SLOT="0"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~mips ~ppc ~ppc64 ~x86 ~amd64-linux ~x86-linux"
-IUSE="audit clang crypt debug +demangle +doc gtk java lzma numa perl python slang systemtap unwind zlib"
+KEYWORDS="~amd64 ~arm ~arm64 ~mips ~ppc ~ppc64 ~x86 ~amd64-linux ~x86-linux"
+IUSE="audit clang crypt debug +demangle +doc gtk java libpfm lzma numa perl python slang systemtap unwind zlib"
# TODO babeltrace
REQUIRED_USE="python? ( ${PYTHON_REQUIRED_USE} )"
+BDEPEND="
+ ${LINUX_PATCH+dev-util/patchutils}
+ sys-devel/bison
+ sys-devel/flex
+ doc? (
+ app-text/asciidoc
+ app-text/sgml-common
+ app-text/xmlto
+ sys-process/time
+ )"
+
RDEPEND="audit? ( sys-process/audit )
crypt? ( dev-libs/openssl:0= )
clang? (
@@ -48,6 +56,7 @@ RDEPEND="audit? ( sys-process/audit )
demangle? ( sys-libs/binutils-libs:= )
gtk? ( x11-libs/gtk+:2 )
java? ( virtual/jre:* )
+ libpfm? ( dev-libs/libpfm )
lzma? ( app-arch/xz-utils )
numa? ( sys-process/numactl )
perl? ( dev-lang/perl:= )
@@ -57,24 +66,25 @@ RDEPEND="audit? ( sys-process/audit )
unwind? ( sys-libs/libunwind )
zlib? ( sys-libs/zlib )
dev-libs/elfutils"
+
DEPEND="${RDEPEND}
>=sys-kernel/linux-headers-4.19
- ${LINUX_PATCH+dev-util/patchutils}
- sys-devel/bison
- sys-devel/flex
java? ( virtual/jdk )
- doc? (
- app-text/asciidoc
- app-text/sgml-common
- app-text/xmlto
- sys-process/time
- )"
+"
S_K="${WORKDIR}/linux-${LINUX_VER}"
S="${S_K}/tools/perf"
CONFIG_CHECK="~PERF_EVENTS ~KALLSYMS"
+pkg_pretend() {
+ if ! use doc ; then
+ ewarn "Without the doc USE flag you won't get any documentation nor man pages."
+ ewarn "And without man pages, you won't get any --help output for perf and its"
+ ewarn "sub-tools."
+ fi
+}
+
pkg_setup() {
use clang && LLVM_MAX_SLOT=9 llvm_pkg_setup
}
@@ -126,7 +136,8 @@ src_prepare() {
"${S}"/Makefile.perf "${S_K}"/tools/lib/bpf/Makefile || die
# Avoid the call to make kernelversion
- echo "#define PERF_VERSION \"${MY_PV}\"" > PERF-VERSION-FILE
+ sed -i -e '/PERF-VERSION-GEN/d' Makefile.perf || die
+ echo "#define PERF_VERSION \"${PV}\"" > PERF-VERSION-FILE
# The code likes to compile local assembly files which lack ELF markings.
find -name '*.S' -exec sed -i '$a.section .note.GNU-stack,"",%progbits' {} +
@@ -149,7 +160,7 @@ perf_make() {
local arch=$(tc-arch-kernel)
local java_dir
- use java && java_dir="/etc/java-config-2/current-system-vm"
+ use java && java_dir="${EPREFIX}/etc/java-config-2/current-system-vm"
# FIXME: NO_CORESIGHT
# FIXME: NO_LIBBABELTRACE
emake V=1 VF=1 \
@@ -157,23 +168,26 @@ perf_make() {
CC="$(tc-getCC)" CXX="$(tc-getCXX)" AR="$(tc-getAR)" LD="$(tc-getLD)" NM="$(tc-getNM)" \
PKG_CONFIG="$(tc-getPKG_CONFIG)" \
prefix="${EPREFIX}/usr" bindir_relative="bin" \
+ tipdir="share/doc/${PF}" \
EXTRA_CFLAGS="${CFLAGS}" \
ARCH="${arch}" \
JDIR="${java_dir}" \
LIBCLANGLLVM=$(usex clang 1 "") \
+ LIBPFM4=$(usex libpfm 1 "") \
NO_AUXTRACE="" \
NO_BACKTRACE="" \
NO_CORESIGHT=1 \
NO_DEMANGLE=$(puse demangle) \
- NO_GTK2=$(puse gtk) \
+ GTK2=$(usex gtk 1 "") \
+ feature-gtk2-infobar=$(usex gtk 1 "") \
NO_JVMTI=$(puse java) \
NO_LIBAUDIT=$(puse audit) \
NO_LIBBABELTRACE=1 \
NO_LIBBIONIC=1 \
- NO_LIBBPF="" \
+ NO_LIBBPF= \
NO_LIBCRYPTO=$(puse crypt) \
- NO_LIBDW_DWARF_UNWIND="" \
- NO_LIBELF="" \
+ NO_LIBDW_DWARF_UNWIND= \
+ NO_LIBELF= \
NO_LIBNUMA=$(puse numa) \
NO_LIBPERL=$(puse perl) \
NO_LIBPYTHON=$(puse python) \
@@ -208,30 +222,29 @@ src_install() {
}
perf_make -f Makefile.perf install DESTDIR="${D}"
+
if use python; then
python_foreach_impl _install_python_ext
fi
- rm -rv "${ED}"/usr/share/doc/perf-tip || die
-
if use gtk; then
- mv "${ED}"/usr/$(get_libdir)/libperf-gtk.so \
+ local libdir
+ libdir="$(get_libdir)"
+ # on some arches it ends up in lib even on 64bit, ppc64 for instance.
+ [[ -f "${ED}"/usr/lib/libperf-gtk.so ]] && libdir="lib"
+ mv "${ED}"/usr/${libdir}/libperf-gtk.so \
"${ED}"/usr/libexec/perf-core || die
fi
dodoc CREDITS
dodoc *txt Documentation/*.txt
+
+ # perf needs this decompressed to print out tips for users
+ docompress -x /usr/share/doc/${PF}/tips.txt
+
if use doc ; then
HTML_DOCS="Documentation/*.html" einstalldocs
doman Documentation/*.1
fi
}
-
-pkg_postinst() {
- if ! use doc ; then
- elog "Without the doc USE flag you won't get any documentation nor man pages."
- elog "And without man pages, you won't get any --help output for perf and its"
- elog "sub-tools."
- fi
-}
diff --git a/dev-util/perf/perf-5.4.20.ebuild b/dev-util/perf/perf-5.11.ebuild
index faffbe39b09a..1cacf0b8e36a 100644
--- a/dev-util/perf/perf-5.4.20.ebuild
+++ b/dev-util/perf/perf-5.11.ebuild
@@ -1,13 +1,10 @@
-# Copyright 1999-2020 Gentoo Authors
+# Copyright 1999-2021 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=7
PYTHON_COMPAT=( python3_{6,7,8,9,10} )
-inherit bash-completion-r1 estack eutils toolchain-funcs python-r1 linux-info
-
-MY_PV="${PV/_/-}"
-MY_PV="${MY_PV/-pre/-git}"
+inherit bash-completion-r1 estack eutils llvm toolchain-funcs prefix python-r1 linux-info
DESCRIPTION="Userland tools for Linux Performance Counters"
HOMEPAGE="https://perf.wiki.kernel.org/"
@@ -34,20 +31,32 @@ SRC_URI+=" https://www.kernel.org/pub/linux/kernel/v${LINUX_V}/${LINUX_SOURCES}"
LICENSE="GPL-2"
SLOT="0"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~mips ~ppc ~ppc64 ~x86 ~amd64-linux ~x86-linux"
-IUSE="audit clang crypt debug +demangle +doc gtk java lzma numa perl python slang systemtap unwind zlib"
+KEYWORDS="~amd64 ~arm ~arm64 ~mips ~ppc ~ppc64 ~x86 ~amd64-linux ~x86-linux"
+IUSE="audit clang crypt debug +demangle +doc gtk java libpfm lzma numa perl python slang systemtap unwind zlib"
# TODO babeltrace
REQUIRED_USE="python? ( ${PYTHON_REQUIRED_USE} )"
+BDEPEND="
+ ${LINUX_PATCH+dev-util/patchutils}
+ sys-devel/bison
+ sys-devel/flex
+ doc? (
+ app-text/asciidoc
+ app-text/sgml-common
+ app-text/xmlto
+ sys-process/time
+ )"
+
RDEPEND="audit? ( sys-process/audit )
crypt? ( dev-libs/openssl:0= )
clang? (
- sys-devel/clang:*
- sys-devel/llvm:*
+ <sys-devel/clang-10:*
+ <sys-devel/llvm-10:*
)
demangle? ( sys-libs/binutils-libs:= )
gtk? ( x11-libs/gtk+:2 )
java? ( virtual/jre:* )
+ libpfm? ( dev-libs/libpfm )
lzma? ( app-arch/xz-utils )
numa? ( sys-process/numactl )
perl? ( dev-lang/perl:= )
@@ -57,28 +66,33 @@ RDEPEND="audit? ( sys-process/audit )
unwind? ( sys-libs/libunwind )
zlib? ( sys-libs/zlib )
dev-libs/elfutils"
+
DEPEND="${RDEPEND}
>=sys-kernel/linux-headers-4.19
- ${LINUX_PATCH+dev-util/patchutils}
- sys-devel/bison
- sys-devel/flex
java? ( virtual/jdk )
- doc? (
- app-text/asciidoc
- app-text/sgml-common
- app-text/xmlto
- sys-process/time
- )"
+"
S_K="${WORKDIR}/linux-${LINUX_VER}"
S="${S_K}/tools/perf"
CONFIG_CHECK="~PERF_EVENTS ~KALLSYMS"
+pkg_pretend() {
+ if ! use doc ; then
+ ewarn "Without the doc USE flag you won't get any documentation nor man pages."
+ ewarn "And without man pages, you won't get any --help output for perf and its"
+ ewarn "sub-tools."
+ fi
+}
+
+pkg_setup() {
+ use clang && LLVM_MAX_SLOT=9 llvm_pkg_setup
+}
+
src_unpack() {
local paths=(
tools/arch tools/build tools/include tools/lib tools/perf tools/scripts
- include lib "arch/*/lib"
+ scripts include lib "arch/*/lib"
)
# We expect the tar implementation to support the -j option (both
@@ -102,26 +116,6 @@ src_unpack() {
[[ ${a} == ${LINUX_PATCH} ]] && continue
unpack ${a}
done
-
- # support clang8
- echo $(clang-major-version)
- if use clang; then
- local old_CC=${CC}
- CC=${CHOST}-clang
- if [[ $(clang-major-version) -ge 8 ]]; then
- pushd "${S_K}" >/dev/null || die
- eapply \
- "${FILESDIR}/perf-5.1.15-fix-clang8.patch" \
- "${FILESDIR}/perf-5.4.6-fix-clang9.patch"
- popd || die
- fi
- CC=${old_CC}
- fi
-
- pushd "${S_K}" >/dev/null || die
- eapply "${FILESDIR}/perf-5.4.7-propagate-cflags.patch"
- eapply "${FILESDIR}/perf-5.4.20-binutil-libs-2.34.patch"
- popd || die
}
src_prepare() {
@@ -142,10 +136,16 @@ src_prepare() {
"${S}"/Makefile.perf "${S_K}"/tools/lib/bpf/Makefile || die
# Avoid the call to make kernelversion
- echo "#define PERF_VERSION \"${MY_PV}\"" > PERF-VERSION-FILE
+ sed -i -e '/PERF-VERSION-GEN/d' Makefile.perf || die
+ echo "#define PERF_VERSION \"${PV}\"" > PERF-VERSION-FILE
# The code likes to compile local assembly files which lack ELF markings.
find -name '*.S' -exec sed -i '$a.section .note.GNU-stack,"",%progbits' {} +
+
+ # Fix shebang to use python from prefix
+ if [[ -n "${EPREFIX}" ]]; then
+ hprefixify ${S_K}/scripts/bpf_helpers_doc.py
+ fi
}
puse() { usex $1 "" no; }
@@ -160,29 +160,34 @@ perf_make() {
local arch=$(tc-arch-kernel)
local java_dir
- use java && java_dir="/etc/java-config-2/current-system-vm"
+ use java && java_dir="${EPREFIX}/etc/java-config-2/current-system-vm"
# FIXME: NO_CORESIGHT
# FIXME: NO_LIBBABELTRACE
emake V=1 VF=1 \
- CC="$(tc-getCC)" CXX="$(tc-getCXX)" AR="$(tc-getAR)" LD="$(tc-getLD)" \
+ HOSTCC="$(tc-getBUILD_CC)" HOSTLD="$(tc-getBUILD_LD)" \
+ CC="$(tc-getCC)" CXX="$(tc-getCXX)" AR="$(tc-getAR)" LD="$(tc-getLD)" NM="$(tc-getNM)" \
+ PKG_CONFIG="$(tc-getPKG_CONFIG)" \
prefix="${EPREFIX}/usr" bindir_relative="bin" \
+ tipdir="share/doc/${PF}" \
EXTRA_CFLAGS="${CFLAGS}" \
ARCH="${arch}" \
JDIR="${java_dir}" \
LIBCLANGLLVM=$(usex clang 1 "") \
+ LIBPFM4=$(usex libpfm 1 "") \
NO_AUXTRACE="" \
NO_BACKTRACE="" \
NO_CORESIGHT=1 \
NO_DEMANGLE=$(puse demangle) \
- NO_GTK2=$(puse gtk) \
+ GTK2=$(usex gtk 1 "") \
+ feature-gtk2-infobar=$(usex gtk 1 "") \
NO_JVMTI=$(puse java) \
NO_LIBAUDIT=$(puse audit) \
NO_LIBBABELTRACE=1 \
NO_LIBBIONIC=1 \
- NO_LIBBPF="" \
+ NO_LIBBPF= \
NO_LIBCRYPTO=$(puse crypt) \
- NO_LIBDW_DWARF_UNWIND="" \
- NO_LIBELF="" \
+ NO_LIBDW_DWARF_UNWIND= \
+ NO_LIBELF= \
NO_LIBNUMA=$(puse numa) \
NO_LIBPERL=$(puse perl) \
NO_LIBPYTHON=$(puse python) \
@@ -217,30 +222,29 @@ src_install() {
}
perf_make -f Makefile.perf install DESTDIR="${D}"
+
if use python; then
python_foreach_impl _install_python_ext
fi
- rm -rv "${ED}"/usr/share/doc/perf-tip || die
-
if use gtk; then
- mv "${ED}"/usr/$(get_libdir)/libperf-gtk.so \
+ local libdir
+ libdir="$(get_libdir)"
+ # on some arches it ends up in lib even on 64bit, ppc64 for instance.
+ [[ -f "${ED}"/usr/lib/libperf-gtk.so ]] && libdir="lib"
+ mv "${ED}"/usr/${libdir}/libperf-gtk.so \
"${ED}"/usr/libexec/perf-core || die
fi
dodoc CREDITS
dodoc *txt Documentation/*.txt
+
+ # perf needs this decompressed to print out tips for users
+ docompress -x /usr/share/doc/${PF}/tips.txt
+
if use doc ; then
HTML_DOCS="Documentation/*.html" einstalldocs
doman Documentation/*.1
fi
}
-
-pkg_postinst() {
- if ! use doc ; then
- elog "Without the doc USE flag you won't get any documentation nor man pages."
- elog "And without man pages, you won't get any --help output for perf and its"
- elog "sub-tools."
- fi
-}