diff options
Diffstat (limited to 'dynamic-layers/meta-python')
8 files changed, 404 insertions, 0 deletions
diff --git a/dynamic-layers/meta-python/recipes-devtools/bcc/bcc/0001-CMakeLists.txt-override-the-PY_CMD_ESCAPED.patch b/dynamic-layers/meta-python/recipes-devtools/bcc/bcc/0001-CMakeLists.txt-override-the-PY_CMD_ESCAPED.patch new file mode 100644 index 0000000..3e0a6aa --- /dev/null +++ b/dynamic-layers/meta-python/recipes-devtools/bcc/bcc/0001-CMakeLists.txt-override-the-PY_CMD_ESCAPED.patch | |||
@@ -0,0 +1,41 @@ | |||
1 | From 4f64ed40e1ffea7ea278627f30a01018e57dcbcf Mon Sep 17 00:00:00 2001 | ||
2 | From: Mingli Yu <mingli.yu@windriver.com> | ||
3 | Date: Wed, 9 Sep 2020 05:48:19 +0000 | ||
4 | Subject: [PATCH] CMakeLists.txt: override the PY_CMD_ESCAPED | ||
5 | |||
6 | Override the PY_CMD_ESCAPED as the PY_CMD_ESCAPED is constructed by | ||
7 | the full path of the python3. In some cases, the path is so long and | ||
8 | result in the PY_CMD_ESCAPED exceeds 255 characters and comes below | ||
9 | do_configure error: | ||
10 | | CMake Error at src/python/CMakeLists.txt:18 (configure_file): | ||
11 | | configure_file Problem configuring file | ||
12 | | | ||
13 | | CMake Error: Could not open file for write in copy operation /buildarea1/test/wr_build/wr1020_20200909_bcc/bcc_long_Kernel/auto-standalone_next/200827/lxbuilds/Intel-Snow-Ridge-NS_platform_up/intel-x86-64-standard-glibc-std/wrlinux/build/tmp-glibc/work/corei7-64-wrs-linux/bcc/0.15.0-r0/build/src/python/bcc--buildarea1-test-wr_build-wr1020_20200909_bcc-bcc_long_Kernel-auto-standalone_next-200827-lxbuilds-Intel-Snow-Ridge-NS_platform_up-intel-x86-64-standard-glibc-std-wrlinux-build-tmp-glibc-work-corei7-64-wrs-linux-bcc-0.15.0-r0-recipe-sysroot-native-usr-bin-python3-native-python3/bcc/version.py.tmp | ||
14 | |||
15 | Upstream-Status: Pending | ||
16 | |||
17 | Signed-off-by: Mingli Yu <mingli.yu@windriver.com> | ||
18 | --- | ||
19 | src/python/CMakeLists.txt | 4 ++-- | ||
20 | 1 file changed, 2 insertions(+), 2 deletions(-) | ||
21 | |||
22 | --- a/src/python/CMakeLists.txt | ||
23 | +++ b/src/python/CMakeLists.txt | ||
24 | @@ -12,7 +12,7 @@ file(GLOB_RECURSE PYTHON_INCLUDES RELATI | ||
25 | |||
26 | foreach(PY_CMD ${PYTHON_CMD}) | ||
27 | string(REPLACE "/" "-" PY_CMD_ESCAPED ${PY_CMD}) | ||
28 | - set(PY_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/bcc-${PY_CMD_ESCAPED}) | ||
29 | + set(PY_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/bcc-python3) | ||
30 | |||
31 | foreach(PY_SRC ${PYTHON_SOURCES}) | ||
32 | configure_file(${PY_SRC} ${PY_DIRECTORY}/${PY_SRC} COPYONLY) | ||
33 | @@ -31,7 +31,7 @@ foreach(PY_CMD ${PYTHON_CMD}) | ||
34 | DEPENDS ${PYTHON_SOURCES} ${PYTHON_INCLUDES} | ||
35 | COMMENT "Building sdist for ${PY_CMD}" | ||
36 | ) | ||
37 | - add_custom_target(bcc_py_${PY_CMD_ESCAPED} ALL DEPENDS ${PIP_INSTALLABLE}) | ||
38 | + add_custom_target(bcc_py_python3 ALL DEPENDS ${PIP_INSTALLABLE}) | ||
39 | |||
40 | install( | ||
41 | CODE " | ||
diff --git a/dynamic-layers/meta-python/recipes-devtools/bcc/bcc/0001-Vendor-just-enough-extra-headers-to-allow-libbpf-to-.patch b/dynamic-layers/meta-python/recipes-devtools/bcc/bcc/0001-Vendor-just-enough-extra-headers-to-allow-libbpf-to-.patch new file mode 100644 index 0000000..c3c787d --- /dev/null +++ b/dynamic-layers/meta-python/recipes-devtools/bcc/bcc/0001-Vendor-just-enough-extra-headers-to-allow-libbpf-to-.patch | |||
@@ -0,0 +1,124 @@ | |||
1 | From 6cffc195eca6b53a12865d325ff97e7b5ba8f22b Mon Sep 17 00:00:00 2001 | ||
2 | From: Daniel Thompson <daniel.thompson@linaro.org> | ||
3 | Date: Thu, 19 May 2022 09:14:20 +0000 | ||
4 | Subject: [PATCH] Vendor just enough extra headers to allow libbpf to be | ||
5 | de-vendored | ||
6 | |||
7 | Currently it is not possible to build the bcc recipe when we de-vendor | ||
8 | libbpf and adopt the packaged version. Ironically this is due to the | ||
9 | deliberate vendoring of some depreciated btf code that is being removed | ||
10 | upstream because bcc was the only user! In other words the vendored code | ||
11 | doesn't work the de-vendored libbpf because also ends up de-vendoring | ||
12 | one of the Linux uapi headers. | ||
13 | |||
14 | This is obviously an OE specific issue (due to the current combination | ||
15 | of linux headers, libbpf and bcc). It's a bit of a mess and the right | ||
16 | solution is probably to update the system UAPI headers but I am committing | ||
17 | this for now simply so I can easily show why we must de-vendor libbpf in | ||
18 | the first place! | ||
19 | |||
20 | Upstream-Status: Inappropriate [other] | ||
21 | |||
22 | Signed-off-by: Daniel Thompson <daniel.thompson@linaro.org> | ||
23 | --- | ||
24 | src/cc/bcc_btf.cc | 87 +++++++++++++++++++++++++++++++++++++++++++++++ | ||
25 | 1 file changed, 87 insertions(+) | ||
26 | |||
27 | diff --git a/src/cc/bcc_btf.cc b/src/cc/bcc_btf.cc | ||
28 | index 7f551ae8..cca3c6c3 100644 | ||
29 | --- a/src/cc/bcc_btf.cc | ||
30 | +++ b/src/cc/bcc_btf.cc | ||
31 | @@ -33,6 +33,93 @@ | ||
32 | |||
33 | namespace btf_ext_vendored { | ||
34 | |||
35 | +#ifdef HAVE_EXTERNAL_LIBBPF | ||
36 | +/* | ||
37 | + * When we de-vendor libbpf we end up picking up an older version of | ||
38 | + * [uapi/]linux/bpf.h which misses out some of the data structures needed | ||
39 | + * to compile this file. Annoyingly the code that doesn't compile it | ||
40 | + * a result of de-vendoring | ||
41 | + * | ||
42 | + * This section is a minimized re-vendoring to fix that. It is not robust | ||
43 | + * against version skew: When the system linux/bpf.h is updated then this | ||
44 | + * will break the build and the patch can be dropped. | ||
45 | + */ | ||
46 | + | ||
47 | +/* bpf_core_relo_kind encodes which aspect of captured field/type/enum value | ||
48 | + * has to be adjusted by relocations. It is emitted by llvm and passed to | ||
49 | + * libbpf and later to the kernel. | ||
50 | + */ | ||
51 | +enum bpf_core_relo_kind { | ||
52 | + BPF_CORE_FIELD_BYTE_OFFSET = 0, /* field byte offset */ | ||
53 | + BPF_CORE_FIELD_BYTE_SIZE = 1, /* field size in bytes */ | ||
54 | + BPF_CORE_FIELD_EXISTS = 2, /* field existence in target kernel */ | ||
55 | + BPF_CORE_FIELD_SIGNED = 3, /* field signedness (0 - unsigned, 1 - signed) */ | ||
56 | + BPF_CORE_FIELD_LSHIFT_U64 = 4, /* bitfield-specific left bitshift */ | ||
57 | + BPF_CORE_FIELD_RSHIFT_U64 = 5, /* bitfield-specific right bitshift */ | ||
58 | + BPF_CORE_TYPE_ID_LOCAL = 6, /* type ID in local BPF object */ | ||
59 | + BPF_CORE_TYPE_ID_TARGET = 7, /* type ID in target kernel */ | ||
60 | + BPF_CORE_TYPE_EXISTS = 8, /* type existence in target kernel */ | ||
61 | + BPF_CORE_TYPE_SIZE = 9, /* type size in bytes */ | ||
62 | + BPF_CORE_ENUMVAL_EXISTS = 10, /* enum value existence in target kernel */ | ||
63 | + BPF_CORE_ENUMVAL_VALUE = 11, /* enum value integer value */ | ||
64 | +}; | ||
65 | + | ||
66 | +/* | ||
67 | + * "struct bpf_core_relo" is used to pass relocation data form LLVM to libbpf | ||
68 | + * and from libbpf to the kernel. | ||
69 | + * | ||
70 | + * CO-RE relocation captures the following data: | ||
71 | + * - insn_off - instruction offset (in bytes) within a BPF program that needs | ||
72 | + * its insn->imm field to be relocated with actual field info; | ||
73 | + * - type_id - BTF type ID of the "root" (containing) entity of a relocatable | ||
74 | + * type or field; | ||
75 | + * - access_str_off - offset into corresponding .BTF string section. String | ||
76 | + * interpretation depends on specific relocation kind: | ||
77 | + * - for field-based relocations, string encodes an accessed field using | ||
78 | + * a sequence of field and array indices, separated by colon (:). It's | ||
79 | + * conceptually very close to LLVM's getelementptr ([0]) instruction's | ||
80 | + * arguments for identifying offset to a field. | ||
81 | + * - for type-based relocations, strings is expected to be just "0"; | ||
82 | + * - for enum value-based relocations, string contains an index of enum | ||
83 | + * value within its enum type; | ||
84 | + * - kind - one of enum bpf_core_relo_kind; | ||
85 | + * | ||
86 | + * Example: | ||
87 | + * struct sample { | ||
88 | + * int a; | ||
89 | + * struct { | ||
90 | + * int b[10]; | ||
91 | + * }; | ||
92 | + * }; | ||
93 | + * | ||
94 | + * struct sample *s = ...; | ||
95 | + * int *x = &s->a; // encoded as "0:0" (a is field #0) | ||
96 | + * int *y = &s->b[5]; // encoded as "0:1:0:5" (anon struct is field #1, | ||
97 | + * // b is field #0 inside anon struct, accessing elem #5) | ||
98 | + * int *z = &s[10]->b; // encoded as "10:1" (ptr is used as an array) | ||
99 | + * | ||
100 | + * type_id for all relocs in this example will capture BTF type id of | ||
101 | + * `struct sample`. | ||
102 | + * | ||
103 | + * Such relocation is emitted when using __builtin_preserve_access_index() | ||
104 | + * Clang built-in, passing expression that captures field address, e.g.: | ||
105 | + * | ||
106 | + * bpf_probe_read(&dst, sizeof(dst), | ||
107 | + * __builtin_preserve_access_index(&src->a.b.c)); | ||
108 | + * | ||
109 | + * In this case Clang will emit field relocation recording necessary data to | ||
110 | + * be able to find offset of embedded `a.b.c` field within `src` struct. | ||
111 | + * | ||
112 | + * [0] https://llvm.org/docs/LangRef.html#getelementptr-instruction | ||
113 | + */ | ||
114 | +struct bpf_core_relo { | ||
115 | + __u32 insn_off; | ||
116 | + __u32 type_id; | ||
117 | + __u32 access_str_off; | ||
118 | + enum bpf_core_relo_kind kind; | ||
119 | +}; | ||
120 | +#endif /* HAVE_EXTERNAL_LIBBPF */ | ||
121 | + | ||
122 | /* The minimum bpf_func_info checked by the loader */ | ||
123 | struct bpf_func_info_min { | ||
124 | uint32_t insn_off; | ||
diff --git a/dynamic-layers/meta-python/recipes-devtools/bcc/bcc/0001-python-CMakeLists.txt-Remove-check-for-host-etc-debi.patch b/dynamic-layers/meta-python/recipes-devtools/bcc/bcc/0001-python-CMakeLists.txt-Remove-check-for-host-etc-debi.patch new file mode 100644 index 0000000..3ca7fdd --- /dev/null +++ b/dynamic-layers/meta-python/recipes-devtools/bcc/bcc/0001-python-CMakeLists.txt-Remove-check-for-host-etc-debi.patch | |||
@@ -0,0 +1,35 @@ | |||
1 | From cb3f032b55b32c50201862b26c76ea18ad37cb39 Mon Sep 17 00:00:00 2001 | ||
2 | From: Ovidiu Panait <ovidiu.panait@windriver.com> | ||
3 | Date: Thu, 30 Jan 2020 14:19:33 +0200 | ||
4 | Subject: [PATCH] python/CMakeLists.txt: Remove check for host | ||
5 | /etc/debian_version | ||
6 | |||
7 | Fix the following error that occurs during do_install when using the native | ||
8 | version of python3: | ||
9 | usage: setup.py [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...] | ||
10 | or: setup.py --help [cmd1 cmd2 ...] | ||
11 | or: setup.py --help-commands | ||
12 | or: setup.py cmd --help | ||
13 | |||
14 | error: option --install-layout not recognized | ||
15 | |||
16 | Upstream-Status: Inappropriate [oe-specific] | ||
17 | |||
18 | Signed-off-by: Ovidiu Panait <ovidiu.panait@windriver.com> | ||
19 | --- | ||
20 | src/python/CMakeLists.txt | 4 ---- | ||
21 | 1 file changed, 4 deletions(-) | ||
22 | |||
23 | --- a/src/python/CMakeLists.txt | ||
24 | +++ b/src/python/CMakeLists.txt | ||
25 | @@ -5,10 +5,6 @@ if(NOT PYTHON_CMD) | ||
26 | set(PYTHON_CMD "python3") | ||
27 | endif() | ||
28 | |||
29 | -if(EXISTS "/etc/debian_version") | ||
30 | - set(PYTHON_FLAGS "${PYTHON_FLAGS} --install-layout deb") | ||
31 | -endif() | ||
32 | - | ||
33 | file(GLOB_RECURSE PYTHON_SOURCES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} | ||
34 | ${CMAKE_CURRENT_SOURCE_DIR}/*.py) | ||
35 | file(GLOB_RECURSE PYTHON_INCLUDES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} | ||
diff --git a/dynamic-layers/meta-python/recipes-devtools/bcc/bcc/0001-tests-cc-Use-c-14-standard.patch b/dynamic-layers/meta-python/recipes-devtools/bcc/bcc/0001-tests-cc-Use-c-14-standard.patch new file mode 100644 index 0000000..dcd9dc1 --- /dev/null +++ b/dynamic-layers/meta-python/recipes-devtools/bcc/bcc/0001-tests-cc-Use-c-14-standard.patch | |||
@@ -0,0 +1,29 @@ | |||
1 | From 9f45e12ad4689ca2c41844b77c6d789d21509a13 Mon Sep 17 00:00:00 2001 | ||
2 | From: Khem Raj <raj.khem@gmail.com> | ||
3 | Date: Mon, 6 Mar 2023 13:26:11 -0800 | ||
4 | Subject: [PATCH] tests/cc: Use c++14 standard | ||
5 | |||
6 | default c++ standard was bumped to c++17 when using clang16+ compiler | ||
7 | via 907b89cc9, however, tests which use check tool is not yet ported | ||
8 | to work with c++17 standard, therefore use c++14 on tests | ||
9 | |||
10 | Upstream-Status: Submitted [https://github.com/iovisor/bcc/pull/4506] | ||
11 | Signed-off-by: Khem Raj <raj.khem@gmail.com> | ||
12 | Cc: Hengqi Chen <chenhengqi@outlook.com> | ||
13 | --- | ||
14 | tests/cc/CMakeLists.txt | 4 ++++ | ||
15 | 1 file changed, 4 insertions(+) | ||
16 | |||
17 | --- a/tests/cc/CMakeLists.txt | ||
18 | +++ b/tests/cc/CMakeLists.txt | ||
19 | @@ -27,6 +27,10 @@ if(${LLVM_PACKAGE_VERSION} VERSION_EQUAL | ||
20 | set(CMAKE_CXX_STANDARD 14) | ||
21 | endif() | ||
22 | |||
23 | +if(${LLVM_PACKAGE_VERSION} VERSION_EQUAL 16 OR ${LLVM_PACKAGE_VERSION} VERSION_GREATER 16) | ||
24 | +set(CMAKE_CXX_STANDARD 14) | ||
25 | +endif() | ||
26 | + | ||
27 | if(ENABLE_USDT) | ||
28 | set(TEST_LIBBCC_SOURCES | ||
29 | test_libbcc.cc | ||
diff --git a/dynamic-layers/meta-python/recipes-devtools/bcc/bcc/0001-tools-trace.py-Fix-failing-to-exit.patch b/dynamic-layers/meta-python/recipes-devtools/bcc/bcc/0001-tools-trace.py-Fix-failing-to-exit.patch new file mode 100644 index 0000000..6ac7219 --- /dev/null +++ b/dynamic-layers/meta-python/recipes-devtools/bcc/bcc/0001-tools-trace.py-Fix-failing-to-exit.patch | |||
@@ -0,0 +1,41 @@ | |||
1 | From a9f59fc8605de1bcca0b6c2d8132585f40c3b9bc Mon Sep 17 00:00:00 2001 | ||
2 | From: He Zhe <zhe.he@windriver.com> | ||
3 | Date: Thu, 13 Aug 2020 11:25:58 +0800 | ||
4 | Subject: [PATCH] tools/trace.py: Fix failing to exit | ||
5 | |||
6 | Class Probe::print_event is used as a callback of a ctypes wrapper. With | ||
7 | Yocto latest python v3.8.5, the exception raised by exit() is ignored and | ||
8 | thus trace cannot exit. Use os._exit(0) instead. | ||
9 | |||
10 | $ /usr/share/bcc/tools/trace do_sys_open -M 1 | ||
11 | PID TID COMM FUNC | ||
12 | 3740 3740 irqbalance do_sys_open | ||
13 | Exception ignored on calling ctypes callback function: | ||
14 | <function PerfEventArray.open_perf_buffer.<locals>.raw_cb at 0x7f7c9efea280> | ||
15 | Traceback (most recent call last): | ||
16 | File "/usr/lib64/python3.8/site-packages/bcc/table.py", line 685, in raw_cb_ | ||
17 | callback(cpu, data, size) | ||
18 | File "/usr/share/bcc/tools/trace", line 630, in print_event | ||
19 | exit() | ||
20 | File "/usr/lib64/python3.8/sitebuiltins.py", line 26, in __call_ | ||
21 | raise SystemExit(code) | ||
22 | SystemExit: None | ||
23 | |||
24 | Upstream-Status: Pending | ||
25 | |||
26 | Signed-off-by: He Zhe <zhe.he@windriver.com> | ||
27 | --- | ||
28 | tools/trace.py | 2 +- | ||
29 | 1 file changed, 1 insertion(+), 1 deletion(-) | ||
30 | |||
31 | --- a/tools/trace.py | ||
32 | +++ b/tools/trace.py | ||
33 | @@ -671,7 +671,7 @@ BPF_PERF_OUTPUT(%s); | ||
34 | if self.aggregate: | ||
35 | self.print_aggregate_events() | ||
36 | sys.stdout.flush() | ||
37 | - exit() | ||
38 | + os._exit(0) | ||
39 | |||
40 | def attach(self, bpf, verbose): | ||
41 | if len(self.library) == 0: | ||
diff --git a/dynamic-layers/meta-python/recipes-devtools/bcc/bcc/ptest_wrapper.sh b/dynamic-layers/meta-python/recipes-devtools/bcc/bcc/ptest_wrapper.sh new file mode 100644 index 0000000..92d0156 --- /dev/null +++ b/dynamic-layers/meta-python/recipes-devtools/bcc/bcc/ptest_wrapper.sh | |||
@@ -0,0 +1,16 @@ | |||
1 | #!/bin/sh | ||
2 | # Simple OE specific wrapper for bcc python tests | ||
3 | |||
4 | name=$1 | ||
5 | kind=$2 | ||
6 | cmd=$3 | ||
7 | shift 3 | ||
8 | |||
9 | case $kind in | ||
10 | simple|sudo) | ||
11 | $cmd "$@" | ||
12 | ;; | ||
13 | *) | ||
14 | echo "Invalid kind $kind of test $name" | ||
15 | exit 1 | ||
16 | esac | ||
diff --git a/dynamic-layers/meta-python/recipes-devtools/bcc/bcc/run-ptest b/dynamic-layers/meta-python/recipes-devtools/bcc/bcc/run-ptest new file mode 100644 index 0000000..a27f697 --- /dev/null +++ b/dynamic-layers/meta-python/recipes-devtools/bcc/bcc/run-ptest | |||
@@ -0,0 +1,42 @@ | |||
1 | #!/bin/sh | ||
2 | |||
3 | cd tests || exit 1 | ||
4 | |||
5 | PASS_CNT=0 | ||
6 | FAIL_CNT=0 | ||
7 | FAILED="" | ||
8 | |||
9 | print_test_result() { | ||
10 | if [ $? -eq 0 ]; then | ||
11 | echo PASS: "$1" | ||
12 | PASS_CNT=$((PASS_CNT + 1)) | ||
13 | else | ||
14 | echo FAIL: "$1" | ||
15 | FAIL_CNT=$((FAIL_CNT + 1)) | ||
16 | FAILED="$FAILED $1;" | ||
17 | fi | ||
18 | } | ||
19 | |||
20 | # Run CC tests, set IFS as test names have spaces | ||
21 | IFS=$(printf '\n\t') | ||
22 | for test_name in $(./cc/test_libbcc_no_libbpf --list-test-names-only); do | ||
23 | ./cc/test_libbcc_no_libbpf "$test_name" > /dev/null 2>&1 | ||
24 | print_test_result "cc $test_name" | ||
25 | done | ||
26 | unset IFS | ||
27 | |||
28 | # Run python tests, skip namespace tests as they currently don't work | ||
29 | if cmake -DCMAKE_TESTING_ENABLED=ON -DTEST_WRAPPER="$(pwd)/ptest_wrapper.sh" python > /dev/null 2>&1; then | ||
30 | for test_name in $(awk -F '[( ]' '/^add_test/ && !/namespace/ {print $2}' CTestTestfile.cmake); do | ||
31 | ctest -Q -R "$test_name" | ||
32 | print_test_result "python $test_name" | ||
33 | done | ||
34 | else | ||
35 | print_test_result "cmake error, couldn't start python tests" | ||
36 | fi | ||
37 | |||
38 | echo "#### bcc tests summary ####" | ||
39 | echo "# TOTAL: $((PASS_CNT + FAIL_CNT))" | ||
40 | echo "# PASS: $PASS_CNT" | ||
41 | echo "# FAIL: $FAIL_CNT ($FAILED)" | ||
42 | echo "###########################" | ||
diff --git a/dynamic-layers/meta-python/recipes-devtools/bcc/bcc_0.28.0.bb b/dynamic-layers/meta-python/recipes-devtools/bcc/bcc_0.28.0.bb new file mode 100644 index 0000000..105995d --- /dev/null +++ b/dynamic-layers/meta-python/recipes-devtools/bcc/bcc_0.28.0.bb | |||
@@ -0,0 +1,76 @@ | |||
1 | SUMMARY = "BPF Compiler Collection (BCC)" | ||
2 | HOMEPAGE = "https://github.com/iovisor/bcc" | ||
3 | LICENSE = "Apache-2.0" | ||
4 | LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=e3fc50a88d0a364313df4b21ef20c29e" | ||
5 | |||
6 | inherit cmake python3native manpages ptest | ||
7 | |||
8 | DEPENDS += "bison-native \ | ||
9 | flex-native \ | ||
10 | zip-native \ | ||
11 | flex \ | ||
12 | elfutils \ | ||
13 | ${LUAJIT} \ | ||
14 | clang \ | ||
15 | libbpf \ | ||
16 | python3-setuptools-native \ | ||
17 | " | ||
18 | |||
19 | LUAJIT ?= "luajit" | ||
20 | LUAJIT:powerpc64le = "" | ||
21 | LUAJIT:powerpc64 = "" | ||
22 | LUAJIT:riscv64 = "" | ||
23 | |||
24 | RDEPENDS:${PN} += "bash python3 python3-core python3-setuptools xz" | ||
25 | RDEPENDS:${PN}-ptest = "cmake python3 python3-distutils python3-netaddr python3-pyroute2" | ||
26 | |||
27 | SRC_URI = "gitsm://github.com/iovisor/bcc;branch=master;protocol=https \ | ||
28 | file://0001-python-CMakeLists.txt-Remove-check-for-host-etc-debi.patch \ | ||
29 | file://0001-tools-trace.py-Fix-failing-to-exit.patch \ | ||
30 | file://0001-CMakeLists.txt-override-the-PY_CMD_ESCAPED.patch \ | ||
31 | file://0001-Vendor-just-enough-extra-headers-to-allow-libbpf-to-.patch \ | ||
32 | file://0001-tests-cc-Use-c-14-standard.patch \ | ||
33 | file://run-ptest \ | ||
34 | file://ptest_wrapper.sh \ | ||
35 | " | ||
36 | |||
37 | SRCREV = "8422cd449ad2e60414a4508aa4a150a9db39c4a3" | ||
38 | |||
39 | PV .= "+git${SRCPV}" | ||
40 | |||
41 | S = "${WORKDIR}/git" | ||
42 | |||
43 | PACKAGECONFIG ??= "examples" | ||
44 | PACKAGECONFIG:remove:libc-musl = "examples" | ||
45 | |||
46 | PACKAGECONFIG[manpages] = "-DENABLE_MAN=ON,-DENABLE_MAN=OFF," | ||
47 | PACKAGECONFIG[examples] = "-DENABLE_EXAMPLES=ON,-DENABLE_EXAMPLES=OFF," | ||
48 | |||
49 | EXTRA_OECMAKE = " \ | ||
50 | -DCMAKE_USE_LIBBPF_PACKAGE=ON \ | ||
51 | -DENABLE_LLVM_SHARED=ON \ | ||
52 | -DENABLE_CLANG_JIT=ON \ | ||
53 | -DLLVM_PACKAGE_VERSION=${LLVMVERSION} \ | ||
54 | -DPYTHON_CMD=${PYTHON} \ | ||
55 | -DPYTHON_FLAGS=--install-lib=${PYTHON_SITEPACKAGES_DIR} \ | ||
56 | " | ||
57 | |||
58 | do_install:append() { | ||
59 | sed -e 's@#!/usr/bin/env python@#!/usr/bin/env python3@g' \ | ||
60 | -i $(find ${D}${datadir}/${PN} -type f) | ||
61 | sed -e 's@#!/usr/bin/python.*@#!/usr/bin/env python3@g' \ | ||
62 | -i $(find ${D}${datadir}/${PN} -type f) | ||
63 | } | ||
64 | |||
65 | do_install_ptest() { | ||
66 | install -d ${D}${PTEST_PATH}/tests/cc | ||
67 | install ${B}/tests/cc/test_libbcc_no_libbpf ${B}/tests/cc/libusdt_test_lib.so ${D}${PTEST_PATH}/tests/cc | ||
68 | cp -rf ${S}/tests/python ${D}${PTEST_PATH}/tests/python | ||
69 | install ${WORKDIR}/ptest_wrapper.sh ${D}${PTEST_PATH}/tests | ||
70 | install ${S}/examples/networking/simulation.py ${D}${PTEST_PATH}/tests/python | ||
71 | } | ||
72 | |||
73 | FILES:${PN} += "${PYTHON_SITEPACKAGES_DIR}" | ||
74 | FILES:${PN}-doc += "${datadir}/${PN}/man" | ||
75 | |||
76 | COMPATIBLE_HOST = "(x86_64.*|aarch64.*|powerpc64.*|riscv64.*)-linux" | ||