1 |
commit: 8ba9e3e616b62ef293d2223b347e2cea6e25b1eb |
2 |
Author: Patrick McLean <patrick.mclean <AT> sony <DOT> com> |
3 |
AuthorDate: Tue Mar 12 02:15:59 2019 +0000 |
4 |
Commit: Patrick McLean <chutzpah <AT> gentoo <DOT> org> |
5 |
CommitDate: Tue Mar 12 02:15:59 2019 +0000 |
6 |
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=8ba9e3e6 |
7 |
|
8 |
dev-util/bpftrace: New package |
9 |
|
10 |
Copyright: Sony Interactive Entertainment Inc. |
11 |
Package-Manager: Portage-2.3.62, Repoman-2.3.12 |
12 |
Signed-off-by: Patrick McLean <chutzpah <AT> gentoo.org> |
13 |
|
14 |
dev-util/bpftrace/Manifest | 1 + |
15 |
dev-util/bpftrace/bpftrace-0.9_pre20190311.ebuild | 58 +++++++++++ |
16 |
dev-util/bpftrace/bpftrace-9999.ebuild | 58 +++++++++++ |
17 |
.../files/bpftrace-0.9_pre20190311-bcc-0.9.patch | 13 +++ |
18 |
.../bpftrace-0.9_pre20190311-install-libs.patch | 111 +++++++++++++++++++++ |
19 |
dev-util/bpftrace/files/bpftrace-mandir.patch | 22 ++++ |
20 |
dev-util/bpftrace/metadata.xml | 10 ++ |
21 |
7 files changed, 273 insertions(+) |
22 |
|
23 |
diff --git a/dev-util/bpftrace/Manifest b/dev-util/bpftrace/Manifest |
24 |
new file mode 100644 |
25 |
index 00000000000..fbf71324c93 |
26 |
--- /dev/null |
27 |
+++ b/dev-util/bpftrace/Manifest |
28 |
@@ -0,0 +1 @@ |
29 |
+DIST bpftrace-0.9_pre20190311.tar.xz 613856 BLAKE2B 7f670647305e61d9a11a87be44bc2228fee6b474bd920b460ecd6375f23d371e2cc8b0bb22eb4473807b92fc44c4f13eb3be72d048f75f3f59e814c201eddba6 SHA512 7091b16ef1dafdc75dd8e6f172da68ea31d0a89ad42192dc86ced6d22a3c200a385a3e63f5a829cfad42ee5ba44e806b50ac450d17a96ef438ed5668d5b0c55f |
30 |
|
31 |
diff --git a/dev-util/bpftrace/bpftrace-0.9_pre20190311.ebuild b/dev-util/bpftrace/bpftrace-0.9_pre20190311.ebuild |
32 |
new file mode 100644 |
33 |
index 00000000000..1f874815e93 |
34 |
--- /dev/null |
35 |
+++ b/dev-util/bpftrace/bpftrace-0.9_pre20190311.ebuild |
36 |
@@ -0,0 +1,58 @@ |
37 |
+# Copyright 2019 Gentoo Authors |
38 |
+# Distributed under the terms of the GNU General Public License v2 |
39 |
+ |
40 |
+EAPI=7 |
41 |
+ |
42 |
+inherit toolchain-funcs cmake-utils |
43 |
+ |
44 |
+DESCRIPTION="High-level tracing language for eBPF" |
45 |
+HOMEPAGE="https://github.com/iovisor/bpftrace" |
46 |
+ |
47 |
+if [[ ${PV} =~ 9{4,} ]]; then |
48 |
+ inherit git-r3 |
49 |
+ EGIT_REPO_URI="https://github.com/iovisor/${PN}" |
50 |
+ BDEPEND="" |
51 |
+else |
52 |
+ SRC_URI="mirror://gentoo/${P}.tar.xz" |
53 |
+ #SRC_URI="https://github.com/iovisor/${PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz" |
54 |
+ KEYWORDS="~amd64 ~x86" |
55 |
+ BDEPEND="app-arch/xz-utils " |
56 |
+fi |
57 |
+ |
58 |
+LICENSE="Apache-2.0" |
59 |
+SLOT="0" |
60 |
+IUSE="test" |
61 |
+ |
62 |
+COMMON_DEPEND="sys-devel/clang:= |
63 |
+ >=sys-devel/llvm-3.7.1:=[llvm_targets_BPF(+)] |
64 |
+ >=dev-util/bcc-0.9.0:= |
65 |
+ virtual/libelf" |
66 |
+DEPEND="${COMMON_DEPEND} |
67 |
+ test? ( dev-cpp/gtest )" |
68 |
+RDEPEND="${COMMON_DEPEND}" |
69 |
+BDEPEND+="dev-util/cmake |
70 |
+ sys-devel/flex |
71 |
+ sys-devel/bison" |
72 |
+ |
73 |
+PATCHES=( |
74 |
+ "${FILESDIR}/bpftrace-0.9_pre20190311-bcc-0.9.patch" |
75 |
+ "${FILESDIR}/bpftrace-0.9_pre20190311-install-libs.patch" |
76 |
+ "${FILESDIR}/bpftrace-mandir.patch" |
77 |
+) |
78 |
+ |
79 |
+# lots of fixing needed |
80 |
+RESTRICT="test" |
81 |
+ |
82 |
+src_prepare() { |
83 |
+ cmake-utils_src_prepare |
84 |
+} |
85 |
+ |
86 |
+src_configure() { |
87 |
+ local -a mycmakeargs |
88 |
+ mycmakeargs=( |
89 |
+ "-DSTATIC_LINKING:BOOL=OFF" |
90 |
+ "-DBUILD_TESTING:BOOL=OFF" |
91 |
+ ) |
92 |
+ |
93 |
+ cmake-utils_src_configure |
94 |
+} |
95 |
|
96 |
diff --git a/dev-util/bpftrace/bpftrace-9999.ebuild b/dev-util/bpftrace/bpftrace-9999.ebuild |
97 |
new file mode 100644 |
98 |
index 00000000000..1f874815e93 |
99 |
--- /dev/null |
100 |
+++ b/dev-util/bpftrace/bpftrace-9999.ebuild |
101 |
@@ -0,0 +1,58 @@ |
102 |
+# Copyright 2019 Gentoo Authors |
103 |
+# Distributed under the terms of the GNU General Public License v2 |
104 |
+ |
105 |
+EAPI=7 |
106 |
+ |
107 |
+inherit toolchain-funcs cmake-utils |
108 |
+ |
109 |
+DESCRIPTION="High-level tracing language for eBPF" |
110 |
+HOMEPAGE="https://github.com/iovisor/bpftrace" |
111 |
+ |
112 |
+if [[ ${PV} =~ 9{4,} ]]; then |
113 |
+ inherit git-r3 |
114 |
+ EGIT_REPO_URI="https://github.com/iovisor/${PN}" |
115 |
+ BDEPEND="" |
116 |
+else |
117 |
+ SRC_URI="mirror://gentoo/${P}.tar.xz" |
118 |
+ #SRC_URI="https://github.com/iovisor/${PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz" |
119 |
+ KEYWORDS="~amd64 ~x86" |
120 |
+ BDEPEND="app-arch/xz-utils " |
121 |
+fi |
122 |
+ |
123 |
+LICENSE="Apache-2.0" |
124 |
+SLOT="0" |
125 |
+IUSE="test" |
126 |
+ |
127 |
+COMMON_DEPEND="sys-devel/clang:= |
128 |
+ >=sys-devel/llvm-3.7.1:=[llvm_targets_BPF(+)] |
129 |
+ >=dev-util/bcc-0.9.0:= |
130 |
+ virtual/libelf" |
131 |
+DEPEND="${COMMON_DEPEND} |
132 |
+ test? ( dev-cpp/gtest )" |
133 |
+RDEPEND="${COMMON_DEPEND}" |
134 |
+BDEPEND+="dev-util/cmake |
135 |
+ sys-devel/flex |
136 |
+ sys-devel/bison" |
137 |
+ |
138 |
+PATCHES=( |
139 |
+ "${FILESDIR}/bpftrace-0.9_pre20190311-bcc-0.9.patch" |
140 |
+ "${FILESDIR}/bpftrace-0.9_pre20190311-install-libs.patch" |
141 |
+ "${FILESDIR}/bpftrace-mandir.patch" |
142 |
+) |
143 |
+ |
144 |
+# lots of fixing needed |
145 |
+RESTRICT="test" |
146 |
+ |
147 |
+src_prepare() { |
148 |
+ cmake-utils_src_prepare |
149 |
+} |
150 |
+ |
151 |
+src_configure() { |
152 |
+ local -a mycmakeargs |
153 |
+ mycmakeargs=( |
154 |
+ "-DSTATIC_LINKING:BOOL=OFF" |
155 |
+ "-DBUILD_TESTING:BOOL=OFF" |
156 |
+ ) |
157 |
+ |
158 |
+ cmake-utils_src_configure |
159 |
+} |
160 |
|
161 |
diff --git a/dev-util/bpftrace/files/bpftrace-0.9_pre20190311-bcc-0.9.patch b/dev-util/bpftrace/files/bpftrace-0.9_pre20190311-bcc-0.9.patch |
162 |
new file mode 100644 |
163 |
index 00000000000..0f3706fadf5 |
164 |
--- /dev/null |
165 |
+++ b/dev-util/bpftrace/files/bpftrace-0.9_pre20190311-bcc-0.9.patch |
166 |
@@ -0,0 +1,13 @@ |
167 |
+diff --git a/src/attached_probe.cpp b/src/attached_probe.cpp |
168 |
+index d7905cd..adbd40c 100644 |
169 |
+--- a/src/attached_probe.cpp |
170 |
++++ b/src/attached_probe.cpp |
171 |
+@@ -376,7 +376,7 @@ void AttachedProbe::load_prog() |
172 |
+ void AttachedProbe::attach_kprobe() |
173 |
+ { |
174 |
+ int perf_event_fd = bpf_attach_kprobe(progfd_, attachtype(probe_.type), |
175 |
+- eventname().c_str(), probe_.attach_point.c_str(), 0); |
176 |
++ eventname().c_str(), probe_.attach_point.c_str(), 0, -1); |
177 |
+ |
178 |
+ if (perf_event_fd < 0) { |
179 |
+ if (probe_.orig_name != probe_.name) { |
180 |
|
181 |
diff --git a/dev-util/bpftrace/files/bpftrace-0.9_pre20190311-install-libs.patch b/dev-util/bpftrace/files/bpftrace-0.9_pre20190311-install-libs.patch |
182 |
new file mode 100644 |
183 |
index 00000000000..68bd8255944 |
184 |
--- /dev/null |
185 |
+++ b/dev-util/bpftrace/files/bpftrace-0.9_pre20190311-install-libs.patch |
186 |
@@ -0,0 +1,111 @@ |
187 |
+diff --git a/CMakeLists.txt b/CMakeLists.txt |
188 |
+index 8ff6e1f..a276ba2 100644 |
189 |
+--- a/CMakeLists.txt |
190 |
++++ b/CMakeLists.txt |
191 |
+@@ -43,9 +43,10 @@ find_package(FLEX REQUIRED) |
192 |
+ bison_target(bison_parser src/parser.yy ${CMAKE_BINARY_DIR}/parser.tab.cc) |
193 |
+ flex_target(flex_lexer src/lexer.l ${CMAKE_BINARY_DIR}/lex.yy.cc) |
194 |
+ add_flex_bison_dependency(flex_lexer bison_parser) |
195 |
+-add_library(parser ${BISON_bison_parser_OUTPUTS} ${FLEX_flex_lexer_OUTPUTS}) |
196 |
+-target_compile_options(parser PRIVATE "-w") |
197 |
+-target_include_directories(parser PUBLIC src src/ast ${CMAKE_BINARY_DIR}) |
198 |
++add_library(bpftraceparser ${BISON_bison_parser_OUTPUTS} ${FLEX_flex_lexer_OUTPUTS}) |
199 |
++target_compile_options(bpftraceparser PRIVATE "-w") |
200 |
++target_include_directories(bpftraceparser PUBLIC src src/ast ${CMAKE_BINARY_DIR}) |
201 |
++install(TARGETS bpftraceparser LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}) |
202 |
+ |
203 |
+ include(CheckSymbolExists) |
204 |
+ set(CMAKE_REQUIRED_DEFINITIONS -D_GNU_SOURCE) |
205 |
+diff --git a/resources/CMakeLists.txt b/resources/CMakeLists.txt |
206 |
+index b8b0d96..0803c1e 100644 |
207 |
+--- a/resources/CMakeLists.txt |
208 |
++++ b/resources/CMakeLists.txt |
209 |
+@@ -1,6 +1,7 @@ |
210 |
+-add_library(resources headers.cpp) |
211 |
++add_library(bpftraceresources headers.cpp) |
212 |
+ |
213 |
+-target_include_directories(resources PUBLIC ../src) |
214 |
++target_include_directories(bpftraceresources PUBLIC ../src) |
215 |
++install(TARGETS bpftraceresources LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}) |
216 |
+ |
217 |
+ function(embed_headers output) |
218 |
+ file(WRITE ${output} "#include \"headers.h\"\n\nnamespace bpftrace {\n") |
219 |
+diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt |
220 |
+index b47f66d..36de26b 100644 |
221 |
+--- a/src/CMakeLists.txt |
222 |
++++ b/src/CMakeLists.txt |
223 |
+@@ -27,7 +27,8 @@ endif(HAVE_BCC_CREATE_MAP) |
224 |
+ if(HAVE_GET_CURRENT_CGROUP_ID) |
225 |
+ target_compile_definitions(bpftrace PRIVATE HAVE_GET_CURRENT_CGROUP_ID) |
226 |
+ endif(HAVE_GET_CURRENT_CGROUP_ID) |
227 |
+-target_link_libraries(bpftrace arch ast parser resources) |
228 |
++target_link_libraries(bpftrace bpftracearch bpftraceast bpftraceparser |
229 |
++ bpftraceresources) |
230 |
+ |
231 |
+ if (STATIC_LINKING) |
232 |
+ target_link_libraries(bpftrace ${LIBBCC_LIBRARIES}) |
233 |
+diff --git a/src/arch/CMakeLists.txt b/src/arch/CMakeLists.txt |
234 |
+index 425926e..13b5d31 100644 |
235 |
+--- a/src/arch/CMakeLists.txt |
236 |
++++ b/src/arch/CMakeLists.txt |
237 |
+@@ -1,5 +1,7 @@ |
238 |
+ if(CMAKE_HOST_SYSTEM_PROCESSOR STREQUAL "aarch64") |
239 |
+- add_library(arch aarch64.cpp) |
240 |
++ add_library(bpftracearch aarch64.cpp) |
241 |
+ else() |
242 |
+- add_library(arch x86_64.cpp) |
243 |
++ add_library(bpftracearch x86_64.cpp) |
244 |
+ endif() |
245 |
++ |
246 |
++install(TARGETS bpftracearch LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}) |
247 |
+diff --git a/src/ast/CMakeLists.txt b/src/ast/CMakeLists.txt |
248 |
+index 64db7b9..1a2eb6e 100644 |
249 |
+--- a/src/ast/CMakeLists.txt |
250 |
++++ b/src/ast/CMakeLists.txt |
251 |
+@@ -1,4 +1,4 @@ |
252 |
+-add_library(ast |
253 |
++add_library(bpftraceast |
254 |
+ ast.cpp |
255 |
+ codegen_llvm.cpp |
256 |
+ irbuilderbpf.cpp |
257 |
+@@ -6,12 +6,13 @@ add_library(ast |
258 |
+ semantic_analyser.cpp |
259 |
+ ) |
260 |
+ |
261 |
+-target_include_directories(ast PUBLIC ${CMAKE_SOURCE_DIR}/src) |
262 |
+-target_include_directories(ast PUBLIC ${CMAKE_SOURCE_DIR}/src/ast) |
263 |
+-target_include_directories(ast PUBLIC ${CMAKE_BINARY_DIR}) |
264 |
+-target_link_libraries(ast arch) |
265 |
++target_include_directories(bpftraceast PUBLIC ${CMAKE_SOURCE_DIR}/src) |
266 |
++target_include_directories(bpftraceast PUBLIC ${CMAKE_SOURCE_DIR}/src/ast) |
267 |
++target_include_directories(bpftraceast PUBLIC ${CMAKE_BINARY_DIR}) |
268 |
++target_link_libraries(bpftraceast bpftracearch) |
269 |
+ |
270 |
+-add_dependencies(ast parser) |
271 |
++add_dependencies(bpftraceast bpftraceparser) |
272 |
++install(TARGETS bpftraceast LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}) |
273 |
+ |
274 |
+ if (STATIC_LINKING) |
275 |
+ set(clang_libs |
276 |
+@@ -31,16 +32,16 @@ if (STATIC_LINKING) |
277 |
+ clangSerialization |
278 |
+ clangToolingCore) |
279 |
+ llvm_map_components_to_libnames(llvm_libs bpfcodegen ipo irreader mcjit orcjit ${LLVM_TARGETS_TO_BUILD}) |
280 |
+- target_link_libraries(ast ${clang_libs}) |
281 |
+- target_link_libraries(ast ${llvm_libs}) |
282 |
++ target_link_libraries(bpftraceast ${clang_libs}) |
283 |
++ target_link_libraries(bpftraceast ${llvm_libs}) |
284 |
+ else() |
285 |
+ find_library(found_LLVM LLVM HINTS ${LLVM_LIBRARY_DIRS}) |
286 |
+ if(found_LLVM) |
287 |
+- target_link_libraries(ast LLVM) |
288 |
++ target_link_libraries(bpftraceast LLVM) |
289 |
+ else() |
290 |
+ llvm_map_components_to_libnames(_llvm_libs bpfcodegen ipo irreader mcjit orcjit ${LLVM_TARGETS_TO_BUILD}) |
291 |
+ llvm_expand_dependencies(llvm_libs ${_llvm_libs}) |
292 |
+- target_link_libraries(ast ${llvm_libs}) |
293 |
++ target_link_libraries(bpftraceast ${llvm_libs}) |
294 |
+ endif() |
295 |
+- target_link_libraries(ast libclang) |
296 |
++ target_link_libraries(bpftraceast libclang) |
297 |
+ endif() |
298 |
|
299 |
diff --git a/dev-util/bpftrace/files/bpftrace-mandir.patch b/dev-util/bpftrace/files/bpftrace-mandir.patch |
300 |
new file mode 100644 |
301 |
index 00000000000..d18c1e2f321 |
302 |
--- /dev/null |
303 |
+++ b/dev-util/bpftrace/files/bpftrace-mandir.patch |
304 |
@@ -0,0 +1,22 @@ |
305 |
+diff --git a/man/man8/CMakeLists.txt b/man/man8/CMakeLists.txt |
306 |
+index 45cfe5d..d13229e 100644 |
307 |
+--- a/man/man8/CMakeLists.txt |
308 |
++++ b/man/man8/CMakeLists.txt |
309 |
+@@ -1,12 +1,12 @@ |
310 |
+-find_program(GZIP gzip) |
311 |
++find_program(CAT cat) |
312 |
+ file(GLOB FILES *.8) |
313 |
+ set(GZFILES "") |
314 |
+ foreach(FIL ${FILES}) |
315 |
+ get_filename_component(NAME ${FIL} NAME) |
316 |
+- add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${NAME}.gz |
317 |
+- COMMAND ${GZIP} -c ${FIL} > ${CMAKE_CURRENT_BINARY_DIR}/${NAME}.gz |
318 |
++ add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${NAME} |
319 |
++ COMMAND ${CAT} ${FIL} > ${CMAKE_CURRENT_BINARY_DIR}/${NAME} |
320 |
+ DEPENDS ${FIL}) |
321 |
+- list(APPEND GZFILES "${CMAKE_CURRENT_BINARY_DIR}/${NAME}.gz") |
322 |
++ list(APPEND GZFILES "${CMAKE_CURRENT_BINARY_DIR}/${NAME}") |
323 |
+ endforeach() |
324 |
+ add_custom_target(man ALL DEPENDS ${GZFILES}) |
325 |
+-install(FILES ${GZFILES} DESTINATION man/man8) |
326 |
++install(FILES ${GZFILES} DESTINATION share/man/man8) |
327 |
|
328 |
diff --git a/dev-util/bpftrace/metadata.xml b/dev-util/bpftrace/metadata.xml |
329 |
new file mode 100644 |
330 |
index 00000000000..777f99f832c |
331 |
--- /dev/null |
332 |
+++ b/dev-util/bpftrace/metadata.xml |
333 |
@@ -0,0 +1,10 @@ |
334 |
+<?xml version="1.0" encoding="UTF-8"?> |
335 |
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd"> |
336 |
+<pkgmetadata> |
337 |
+ <maintainer type="person"> |
338 |
+ <email>chutzpah@g.o</email> |
339 |
+ </maintainer> |
340 |
+ <upstream> |
341 |
+ <remote-id type="github">iovisor/bpftrace</remote-id> |
342 |
+ </upstream> |
343 |
+</pkgmetadata> |