Skip to content

Commit

Permalink
dev-util/bcc: Version bump to 0.10.0
Browse files Browse the repository at this point in the history
Had to drop the patch to unbundle libbpf, the upstream build system
makes too many assumptions about it's presence.

Copyright: Sony Interactive Entertainment Inc.
Package-Manager: Portage-2.3.67, Repoman-2.3.14
Signed-off-by: Patrick McLean <[email protected]>
  • Loading branch information
patrick-mclean authored and chutz committed Jun 14, 2019
1 parent 1677a68 commit 05f1e15
Show file tree
Hide file tree
Showing 3 changed files with 269 additions and 0 deletions.
2 changes: 2 additions & 0 deletions dev-util/bcc/Manifest
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
DIST bcc-0.10.0.tar.gz 2052430 BLAKE2B 562aa95d34ba329ce966bca3164af45fe6d78487e5f0d370a0a90c5d91af75b4adcc5aa1e6578bf598e55dc51394c5a218fc19e2b57b2f7241cc3fe1f3a4e513 SHA512 92ba0f57d22af610ac81661526fed8bec80d502bcbc8aa5048ba7c50911247c020832db23afdcf9b555b142cd387c228cf7baa0ddc94067165403e362227f235
DIST bcc-0.6.0.tar.gz 1986593 BLAKE2B 514c2c781eb94d99560232d8050b5664ce3565622b236e78cd111be27b3482849965600a1d574f59243917672f00bb3cef65cab63103f6c4a5cf62024c683d9b SHA512 1a8edf6da22f3119a74cf43f03ec83b97ed2f6fc18828d750d8a695ac1451b6b3209e5d2cf48bc87f53fa9447e8813a018a58d31588d477e4aa364a2d0217e80
DIST bcc-0.7.0.tar.gz 2009289 BLAKE2B 370b553521289d983d1165633e76a5e405250b9b09dbf3e78c127d232908e73facce06097ce4dbf0bbccda929b6715a9b7460affe123556087c8ca00b8d62c0b SHA512 ebe6c4cbecba2d587c69af71ddc8cb451b2b8e1d49ef887f291c813320c2c60d49357500fc2751d5b418df2be1d02763c385d89de6efa6e10f049c25acf01b4e
DIST bcc-0.9.0-linux-5-bpf.patch.xz 28524 BLAKE2B f0369e50eabd7b1eb9a492b9652cd7647c7c7fda3b01db1e7f2bf716e76357d07d67193b31189b98309e26895ac3dd5c755d4cef6bc592e4674f40710c33539c SHA512 fc5b828a5826da2cf1e1a76758c635f5443d202aecbe3f269d78abcaa0117ad7658bea6c43e7b60e1ecc6bcc65bd19b100217758a1203d278ddb03c5837c43f1
DIST bcc-0.9.0.tar.gz 2036984 BLAKE2B cebbeb57f06af90442d28be1633a54c198bf796786c4fcca3a83dea03bc76949f958dd24f7d85feb2e3402576410f965754f3d031076486b7d378493c56035e8 SHA512 373080181380ec3bcb13469e29ff1f792e924a2df00a614da4647ed54060ad216525dd0f49c5d0afba7946a6d2f4e3475af97250a33db825945af3d165294091
DIST libbpf-0.0.3.tar.gz 127328 BLAKE2B eaa1be54f0a7fcc6fd41eb2adaad2f405f76db3bd7c7466a5484ead1cca5a9fe775e331838cd5645d7399cb5b1a5b2fcb3814fb45643660fd3f7d84b9986bae6 SHA512 ee489d968cd9a20a1f091dcd2696d3807ab0db2a001613684402de2c696391eea033f3bd961eaf1d0df95c1e15f4f0ccfb7003ff98c3f08f24a7e9a8db22cdad
85 changes: 85 additions & 0 deletions dev-util/bcc/bcc-0.10.0.ebuild
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
# Copyright 1999-2019 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

EAPI=7

PYTHON_COMPAT=( python2_7 python3_{5,6,7} )

inherit cmake-utils linux-info python-single-r1 python-utils-r1

EGIT_COMMIT="v${PV}"
LIBBPF_VER="0.0.3"

DESCRIPTION="Tools for BPF-based Linux IO analysis, networking, monitoring, and more"
HOMEPAGE="https://iovisor.github.io/bcc/"

# This bundles libbpf, I tried to unbundle it, but I am not good enough
# with cmake to do it. Patches accepted...
SRC_URI="https://github.com/iovisor/bcc/archive/${EGIT_COMMIT}.tar.gz -> ${P}.tar.gz
https://github.com/libbpf/libbpf/archive/${LIBBPF_VER}.tar.gz -> libbpf-${LIBBPF_VER}.tar.gz"

LICENSE="Apache-2.0"
SLOT="0"
KEYWORDS="~amd64 ~arm64 ~x86"
IUSE="+luajit test"
REQUIRED_USE="${PYTHON_REQUIRED_USE}"

RDEPEND=">=sys-kernel/linux-headers-4.18
>=dev-libs/elfutils-0.166:=
sys-devel/clang:=
>=sys-devel/llvm-3.7.1:=[llvm_targets_BPF(+)]
luajit? ( dev-lang/luajit )
${PYTHON_DEPS}"
DEPEND="${RDEPEND}
test? (
|| (
net-misc/iputils[arping]
net-analyzer/arping
)
net-analyzer/netperf
net-misc/iperf:*
)"
BDEPEND="dev-util/cmake
virtual/pkgconfig"

S=${WORKDIR}/${PN}-${EGIT_COMMIT#v}

PATCHES=(
"${FILESDIR}/bcc-0.9.0-no-luajit-automagic-dep.patch"
)

# tests need root access
RESTRICT="test"

pkg_pretend() {
local CONFIG_CHECK="~BPF ~BPF_SYSCALL ~NET_CLS_BPF ~NET_ACT_BPF
~BPF_JIT ~BPF_EVENTS ~DEBUG_INFO ~FUNCTION_TRACER ~KALLSYMS_ALL
~KPROBES"

check_extra_config
}

pkg_setup() {
python-single-r1_pkg_setup
}

src_prepare() {
rmdir src/cc/libbpf || die
mv "${WORKDIR}"/libbpf-${LIBBPF_VER} src/cc/libbpf || die

cmake-utils_src_prepare
}

src_configure() {
local mycmakeargs=(
-DREVISION=${PV%%_*}
$(usex luajit '-DWITH_LUAJIT=1' '' '' '')
)

cmake-utils_src_configure
}

src_install() {
cmake-utils_src_install
python_fix_shebang "${ED}"
}
182 changes: 182 additions & 0 deletions dev-util/bcc/files/bcc-0.10.0-system-libbpf.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,182 @@
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 94aac856..bd454226 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -9,12 +9,6 @@ endif()

enable_testing()

-# populate submodules (libbpf)
-if(NOT EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/src/cc/libbpf/src)
- execute_process(COMMAND git submodule update --init --recursive
- WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
-endif()
-
include(cmake/GetGitRevisionDescription.cmake)
include(cmake/version.cmake)
include(CMakeDependentOption)
@@ -61,6 +55,9 @@ FOREACH(DIR ${LLVM_INCLUDE_DIRS})
include_directories("${DIR}/../tools/clang/include")
ENDFOREACH()

+find_package(PkgConfig)
+pkg_check_modules(LIBBPF REQUIRED libbpf)
+
# Set to a string path if system places kernel lib directory in
# non-default location.
if(NOT DEFINED BCC_KERNEL_MODULES_DIR)
diff --git a/examples/cpp/CMakeLists.txt b/examples/cpp/CMakeLists.txt
index 906c9aaf..210f0f75 100644
--- a/examples/cpp/CMakeLists.txt
+++ b/examples/cpp/CMakeLists.txt
@@ -3,7 +3,7 @@

include_directories(${CMAKE_SOURCE_DIR}/src/cc)
include_directories(${CMAKE_SOURCE_DIR}/src/cc/api)
-include_directories(${CMAKE_SOURCE_DIR}/src/cc/libbpf/include/uapi)
+include_directories(${LIBBPF_INCLUDE_DIRS})

option(INSTALL_CPP_EXAMPLES "Install C++ examples. Those binaries are statically linked and can take plenty of disk space" OFF)

diff --git a/examples/cpp/pyperf/CMakeLists.txt b/examples/cpp/pyperf/CMakeLists.txt
index 6f963c66..e8dd66f6 100644
--- a/examples/cpp/pyperf/CMakeLists.txt
+++ b/examples/cpp/pyperf/CMakeLists.txt
@@ -3,7 +3,7 @@

include_directories(${CMAKE_SOURCE_DIR}/src/cc)
include_directories(${CMAKE_SOURCE_DIR}/src/cc/api)
-include_directories(${CMAKE_SOURCE_DIR}/src/cc/libbpf/include/uapi)
+include_directories(${LIBBPF_INCLUDE_DIRS})

add_executable(PyPerf PyPerf.cc PyPerfUtil.cc PyPerfBPFProgram.cc PyPerfLoggingHelper.cc PyPerfDefaultPrinter.cc Py36Offsets.cc)
target_link_libraries(PyPerf bcc-static)
diff --git a/introspection/CMakeLists.txt b/introspection/CMakeLists.txt
index 88df6e84..de8a6464 100644
--- a/introspection/CMakeLists.txt
+++ b/introspection/CMakeLists.txt
@@ -3,11 +3,11 @@

include_directories(${CMAKE_SOURCE_DIR}/src/cc)
include_directories(${CMAKE_SOURCE_DIR}/src/cc/api)
-include_directories(${CMAKE_SOURCE_DIR}/src/cc/libbpf/include/uapi)
+include_directories(${LIBBPF_INCLUDE_DIRS})

option(INSTALL_INTROSPECTION "Install BPF introspection tools" ON)

add_executable(bps bps.c)
-target_link_libraries(bps bpf-static)
+target_link_libraries(bps ${LIBBPF_LIBRARIES})

install (TARGETS bps DESTINATION share/bcc/introspection)
diff --git a/src/cc/CMakeLists.txt b/src/cc/CMakeLists.txt
index bd34fd48..dfbeb596 100644
--- a/src/cc/CMakeLists.txt
+++ b/src/cc/CMakeLists.txt
@@ -10,8 +10,7 @@ include_directories(${CMAKE_CURRENT_SOURCE_DIR}/frontends/clang)
include_directories(${LLVM_INCLUDE_DIRS})
include_directories(${LIBELF_INCLUDE_DIRS})
# todo: if check for kernel version
-include_directories(${CMAKE_CURRENT_SOURCE_DIR}/libbpf/include)
-include_directories(${CMAKE_CURRENT_SOURCE_DIR}/libbpf/include/uapi)
+include_directories(${LIBBPF_INCLUDE_DIRS})
add_definitions(${LLVM_DEFINITIONS})
configure_file(libbcc.pc.in ${CMAKE_CURRENT_BINARY_DIR}/libbcc.pc @ONLY)

@@ -28,13 +27,6 @@ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DLLVM_MAJOR_VERSION=${CMAKE_MATCH_1}")

include(static_libstdc++)

-file(GLOB libbpf_sources "libbpf/src/*.c")
-add_library(bpf-static STATIC libbpf.c perf_reader.c ${libbpf_sources})
-set_target_properties(bpf-static PROPERTIES OUTPUT_NAME bcc_bpf)
-add_library(bpf-shared SHARED libbpf.c perf_reader.c ${libbpf_sources})
-set_target_properties(bpf-shared PROPERTIES VERSION ${REVISION_LAST} SOVERSION 0)
-set_target_properties(bpf-shared PROPERTIES OUTPUT_NAME bcc_bpf)
-
set(bcc_common_sources bcc_common.cc bpf_module.cc bcc_btf.cc exported_files.cc)
if (${LLVM_PACKAGE_VERSION} VERSION_EQUAL 6 OR ${LLVM_PACKAGE_VERSION} VERSION_GREATER 6)
set(bcc_common_sources ${bcc_common_sources} bcc_debug.cc)
@@ -79,12 +71,12 @@ set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${llvm_lib_exclude_f

# bcc_common_libs_for_a for archive libraries
# bcc_common_libs_for_s for shared libraries
-set(bcc_common_libs_for_a b_frontend clang_frontend bpf-static
+set(bcc_common_libs_for_a b_frontend clang_frontend
-Wl,--whole-archive ${clang_libs} ${llvm_libs} -Wl,--no-whole-archive
- ${LIBELF_LIBRARIES})
+ ${LIBELF_LIBRARIES} ${LIBBPF_LIBRARIES})
set(bcc_common_libs_for_s ${bcc_common_libs_for_a})
-set(bcc_common_libs_for_lua b_frontend clang_frontend bpf-static
- ${clang_libs} ${llvm_libs} ${LIBELF_LIBRARIES})
+set(bcc_common_libs_for_lua b_frontend clang_frontend
+ ${clang_libs} ${llvm_libs} ${LIBELF_LIBRARIES} ${LIBBPF_LIBRARIES})

if(ENABLE_CPP_API)
add_subdirectory(api)
@@ -111,8 +103,7 @@ set(bcc-lua-static ${bcc-lua-static} ${bcc_common_libs_for_lua})
install(TARGETS bcc-shared LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
install(FILES ${bcc_table_headers} DESTINATION include/bcc)
install(FILES ${bcc_api_headers} DESTINATION include/bcc)
-install(DIRECTORY libbpf/include/uapi/linux/ DESTINATION include/bcc/compat/linux FILES_MATCHING PATTERN "*.h")
+#install(DIRECTORY libbpf/include/uapi/linux/ DESTINATION include/bcc/compat/linux FILES_MATCHING PATTERN "*.h")
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libbcc.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
endif(ENABLE_CLANG_JIT)
install(FILES ${bcc_common_headers} DESTINATION include/bcc)
-install(TARGETS bpf-shared LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
diff --git a/src/cc/bcc_btf.cc b/src/cc/bcc_btf.cc
index 12816757..29e4c707 100644
--- a/src/cc/bcc_btf.cc
+++ b/src/cc/bcc_btf.cc
@@ -19,8 +19,8 @@
#include <string.h>
#include "linux/btf.h"
#include "libbpf.h"
-#include "libbpf/src/libbpf.h"
-#include "libbpf/src/btf.h"
+#include <bpf/libbpf.h>
+#include <bpf/btf.h>
#include <vector>

#define BCC_MAX_ERRNO 4095
diff --git a/src/cc/bpf_module.cc b/src/cc/bpf_module.cc
index 836c458f..eb03ce59 100644
--- a/src/cc/bpf_module.cc
+++ b/src/cc/bpf_module.cc
@@ -43,7 +43,7 @@
#include "exported_files.h"
#include "libbpf.h"
#include "bcc_btf.h"
-#include "libbpf/src/bpf.h"
+#include <bpf/bpf.h>

namespace ebpf {

diff --git a/src/cc/libbpf.c b/src/cc/libbpf.c
index 63f4894e..83147dbe 100644
--- a/src/cc/libbpf.c
+++ b/src/cc/libbpf.c
@@ -52,8 +52,8 @@
// TODO: Remove this when CentOS 6 support is not needed anymore
#include "setns.h"

-#include "libbpf/src/bpf.h"
-#include "libbpf/src/libbpf.h"
+#include <bpf/bpf.h>
+#include <bpf/libbpf.h>

// TODO: remove these defines when linux-libc-dev exports them properly

diff --git a/tests/cc/CMakeLists.txt b/tests/cc/CMakeLists.txt
index a47abe14..ae710eb4 100644
--- a/tests/cc/CMakeLists.txt
+++ b/tests/cc/CMakeLists.txt
@@ -3,7 +3,7 @@

include_directories(${CMAKE_SOURCE_DIR}/src/cc)
include_directories(${CMAKE_SOURCE_DIR}/src/cc/api)
-include_directories(${CMAKE_SOURCE_DIR}/src/cc/libbpf/include/uapi)
+include_directories(${LIBBPF_INCLUDE_DIRS})

add_executable(test_static test_static.c)
target_link_libraries(test_static bcc-static)

0 comments on commit 05f1e15

Please sign in to comment.