Name:           bpftrace
Version:        0.19.1
Release:        2
Summary:        High-level tracing language for Linux eBPF
License:        ASL 2.0

URL:            https://github.com/iovisor/bpftrace
Source0:        %{url}/archive/refs/tags/v%{version}.tar.gz

# Arches will be included as upstream support is added and dependencies are
# satisfied in the respective arches
ExclusiveArch:  x86_64 %{power64} aarch64 riscv64 loongarch64

BuildRequires:  gcc-c++ bison flex cmake elfutils-libelf-devel
BuildRequires:  zlib-devel llvm-devel clang clang-tools-extra clang-devel llvm-test
BuildRequires:  bcc-devel >= 0.19.0-1
BuildRequires:  libbpf-devel libbpf-static
BuildRequires:  binutils-devel
BuildRequires:  cereal-devel libdwarf-devel rubygem-asciidoctor

%description
bpftrace is a high-level tracing language for Linux enhanced Berkeley Packet
Filter (eBPF) available in recent Linux kernels (4.x). bpftrace uses LLVM as a
backend to compile scripts to BPF-bytecode and makes use of BCC for
interacting with the Linux BPF system, as well as existing Linux tracing
capabilities: kernel dynamic tracing (kprobes), user-level dynamic tracing
(uprobes), and tracepoints. The BPFtrace language is inspired by awk and C,
and predecessor tracers such as DTrace and SystemTap.


%prep
%autosetup -p1


%build
%cmake . \
        -DCMAKE_BUILD_TYPE=RelWithDebInfo \
        -DLIBBFD_LIBRARIES="${LIBBFD}" \
        -DBUILD_TESTING:BOOL=OFF \
        -DBUILD_SHARED_LIBS:BOOL=OFF \
        -DENABLE_LLVM_SHARED=1 \
        -DUSE_SYSTEM_BPF_BCC:BOOL=ON
%make_build


%install
%global __os_install_post %{nil}
%global _find_debuginfo_opts -g
%make_install

find %{buildroot}%{_datadir}/%{name}/tools -type f -exec \
  sed -i -e '1s=^#!/usr/bin/env %{name}\([0-9.]\+\)\?$=#!%{_bindir}/%{name}=' {} \;

%files
%doc README.md CONTRIBUTING-TOOLS.md
%doc docs/reference_guide.md docs/tutorial_one_liners.md
%license LICENSE
%dir %{_datadir}/%{name}
%dir %{_datadir}/%{name}/tools
%dir %{_datadir}/%{name}/tools/doc
%dir %{_datadir}/%{name}/tools/old
%{_bindir}/%{name}
%{_bindir}/%{name}-aotrt
%{_mandir}/man8/*
%attr(0755,-,-) %{_datadir}/%{name}/tools/*.bt
%attr(0755,-,-) %{_datadir}/%{name}/tools/old/*.bt
%{_datadir}/%{name}/tools/doc/*.txt


%changelog
* Tue Oct 29 2024 Wenlong Zhang <zhangwenlong@loongson.cn> - 0.19.1-2
- fix build error on loongarch64

* Mon Jan 08 2024 Paul Thomas <paulthomas100199@gmail.com> - 0.19.1-1
- update to version 0.19.1

* Tue Aug 15 2023 wulei <wu_lei@hoperun.com> - 0.16.0-3
- Fix cannot convert 'bfd*' to 'bfd_architecture'

* Sat Jul 15 2023 cf-zhao <zhaochuanfeng@huawei.com> - 0.16.0-2
- Fix issue after clang and llvm upgrade.

* Thu Mar 02 2023 Ge Wang <wangge20@h-partners.com> - 0.16.0-1
- Update to version 0.16.0

* Tue Feb 14 2023 laokz <zhangkai@iscas.ac.cn> - 0.15.0-3
- add riscv64 to supported arch

* Fri Feb 10 2023 caodongxia <caodongxia@h-partners.com> - 0.15.0-2
- Adapt to bcc >= 0.25.0

* Mon Aug 15 2022 jinzhiguang <jinzhiguang@kylinos.cn> - 0.15.0-1
- update to 0.15.0

* Thu Jun 9 2022 LemmyHuang <huangliming5@huawei.com> - 0.14.1-3
- fix abort on startup caused by llvm compiler

* Sat May 7 2022 liyanan <liyanan32@h-partners.com> - 0.14.1-2
- Fix 'bpftrace symbols are stripped'

* Fri Apr 22 2022 yaoxin <yaoxin30@h-partners.com> - 0.14.1-1
- Update to 0.14.1

* Mon Jan 10 2022 liyanan <liyanan32@huawei.com> - 0.13.0-1
- update to 0.13.0

* Mon Nov 9 2020 wutao <wutao61@huawei.com> - 0.10.0-2
- fix build error

* Thu May 07 2020 openEuler Buildteam <buildteam@openeuler.org> - 0.10.0-1
- Package init
