From patchwork Sat Jul 11 16:28:19 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: John Soo X-Patchwork-Id: 23171 Return-Path: X-Original-To: patchwork@mira.cbaines.net Delivered-To: patchwork@mira.cbaines.net Received: by mira.cbaines.net (Postfix, from userid 113) id 8AC7827BBE3; Sat, 11 Jul 2020 17:29:10 +0100 (BST) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on mira.cbaines.net X-Spam-Level: X-Spam-Status: No, score=-2.8 required=5.0 tests=BAYES_00,DKIM_SIGNED, MAILING_LIST_MULTI,RCVD_IN_MSPIKE_H4,RCVD_IN_MSPIKE_WL,T_DKIM_INVALID, URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.2 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mira.cbaines.net (Postfix) with ESMTP id 3C9C927BBE3 for ; Sat, 11 Jul 2020 17:29:08 +0100 (BST) Received: from localhost ([::1]:52504 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1juIN9-00023n-R6 for patchwork@mira.cbaines.net; Sat, 11 Jul 2020 12:29:07 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:56046) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1juIN3-00023X-UP for guix-patches@gnu.org; Sat, 11 Jul 2020 12:29:01 -0400 Received: from debbugs.gnu.org ([209.51.188.43]:33300) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1juIN3-0002Pt-Kq for guix-patches@gnu.org; Sat, 11 Jul 2020 12:29:01 -0400 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1juIN3-0000CN-I8 for guix-patches@gnu.org; Sat, 11 Jul 2020 12:29:01 -0400 X-Loop: help-debbugs@gnu.org Subject: [bug#42227] BPF in linux-libre Resent-From: John Soo Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Sat, 11 Jul 2020 16:29:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 42227 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: To: Mathieu Othacehe Cc: 42227@debbugs.gnu.org Received: via spool by 42227-submit@debbugs.gnu.org id=B42227.1594484920733 (code B ref 42227); Sat, 11 Jul 2020 16:29:01 +0000 Received: (at 42227) by debbugs.gnu.org; 11 Jul 2020 16:28:40 +0000 Received: from localhost ([127.0.0.1]:44846 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1juIMe-0000Bg-6m for submit@debbugs.gnu.org; Sat, 11 Jul 2020 12:28:40 -0400 Received: from mail-pl1-f173.google.com ([209.85.214.173]:44921) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1juIMY-0000BR-Ph for 42227@debbugs.gnu.org; Sat, 11 Jul 2020 12:28:34 -0400 Received: by mail-pl1-f173.google.com with SMTP id w17so3480865ply.11 for <42227@debbugs.gnu.org>; Sat, 11 Jul 2020 09:28:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=asu-edu.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version; bh=/byqWv/ezmWal3vJAbecPt7lzlFcqKZM2IUzZXal6ds=; b=SIkro7OPV/UL2srhN4xZtgWAliOJnEDnhlkSphfH4uK9fPl27f4hr4uTDeP78CQ8wT e0y82VnsiVc5fTMqWtoaGpz2ry8ALRsRiSIkpzHDwd0+/mdtio5yNy6JeX7QiEVli7d2 Gi7DAYfHH+kglmYUDf6YgdPXkfXsPJT1YMYE+4NJnGjLr3ekzMPpOXM38rnfGtPiUmIf mXzIPIwCcPvWtX5QUkOBF/xFRWOE6hFTJwPXRTuL184aRn3MGPsaO0IF1GRe7DKjOoaI CSm5EnP5C/7r51fPxjCvdA6reHvryPMiNc/hJlPovOn5Hm1KP3oHVm/z9AuCROMFkFEd cUYg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:references:date:in-reply-to :message-id:user-agent:mime-version; bh=/byqWv/ezmWal3vJAbecPt7lzlFcqKZM2IUzZXal6ds=; b=FzMhvG2+665OSwxaUMU3SVoLfOqyK0WrWJ3jClSpAgs9+YJ9YwUF8wfhXoSCuibAlT 7Ck0uLivF8Fp4/WW2fjvyYNXIoZMbwqw8CLB7PEnbaAEK5TSvcDwigzWhef7bIn9aFLA uvTIB1hyrTugcmXai+pVboVfZ270kP5X8PYV/LobOiP/HL1krANyHR0QKptBuATGtSmp X3NJkFGqGKwsRNJiaO5u7e/6hN4CVdZk2nnSQ9xV6WvsZDDvZJILlLppau2aGkkTDeBn Nl8H0J9EfoPsWu6qI6SohVLoH3632nCNYSnSHMixGYBa4XQYcaWibopWbQzI4m0o/YGU zkYQ== X-Gm-Message-State: AOAM530cATBbLogJlz0wQ+gy/UiXplsDjdehgFiZwSu0HEYV7NdwkCGZ klYd5z6inwJLQFL/RbQ54jtgJz1g6xc= X-Google-Smtp-Source: ABdhPJz/9FYzkV9OFXPmLP1LSlwAX+pMMTPbpLbEvW6Ho/LuYsNQHGqd1dixiumjGjZE+QTKJqzqsQ== X-Received: by 2002:a17:902:9886:: with SMTP id s6mr40339096plp.112.1594484904444; Sat, 11 Jul 2020 09:28:24 -0700 (PDT) Received: from ecenter ([2600:1700:83b0:8bd0::6a0]) by smtp.gmail.com with ESMTPSA id w29sm9276305pfq.128.2020.07.11.09.28.22 (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Sat, 11 Jul 2020 09:28:23 -0700 (PDT) From: John Soo References: <44046537-51AD-4BD7-8442-41738C4D8C98@asu.edu> <87lfkqknla.fsf@gnu.org> <87h7vdd6ms.fsf@asu.edu> <87wo46uhdr.fsf@gnu.org> <87zh8wph7h.fsf@asu.edu> <87wo3uxfrq.fsf@gnu.org> <871rlsegf2.fsf@asu.edu> <87h7umjruz.fsf@gnu.org> <87zh8dlbeu.fsf@asu.edu> <87d0587p1o.fsf@gnu.org> Date: Sat, 11 Jul 2020 09:28:19 -0700 In-Reply-To: <87d0587p1o.fsf@gnu.org> (Mathieu Othacehe's message of "Mon, 06 Jul 2020 15:26:11 +0200") Message-ID: <87r1ti9fto.fsf@asu.edu> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.3 (gnu/linux) MIME-Version: 1.0 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: guix-patches@gnu.org List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-patches-bounces+patchwork=mira.cbaines.net@gnu.org Sender: "Guix-patches" X-getmail-retrieved-from-mailbox: Patches Hi Mathieu, > Hey John, > > I'll take more time to review patches 4 and 5. However, while trying > some of the examples packaged by BCC, I have the following error: > > mathieu@meru:~/guix-master$ /gnu/store/rv51f9n1w9i92m9qsg9k3ilsy3hyhjf3-bcc-0.15.0/share/bcc/tools/execsnoop > Traceback (most recent call last): > File "/gnu/store/rv51f9n1w9i92m9qsg9k3ilsy3hyhjf3-bcc-0.15.0/share/bcc/tools/execsnoop", line 21, in > from bcc import BPF > ModuleNotFoundError: No module named 'bcc' > > I think an additional wrapping is necessary. Could you please have a > look? I'm also removing help-guix, and opening a proper guix-patches > ticket. I wrapped the PYTHONPATH around the various provided python tools. I also found a spare path that required patching. I am not sure this fixes every tool but I did get a few to work now. Thanks for attaching guix-patches. I also added debugfs as a requirement for a bpf system. To use it %bpf-file-systems can be used in place of %base-file-systems in the operating system definition. Thanks, John From f17d7242b3821b6a5600bfd5e9a0f75fa4054d60 Mon Sep 17 00:00:00 2001 From: John Soo Date: Sat, 13 Jun 2020 23:16:56 -0700 Subject: [PATCH 4/4] gnu: Add bpftrace. * gnu/packages/linux.scm (bpftrace): New variable. * gnu/packages/patches/bpftrace-disable-bfd-disasm.patch: Disable bfd disassembly for bpftrace. * gnu/local.mk (dist_patch_DATA): Add bpftrace-disable-bfd-disasm.patch. --- gnu/local.mk | 1 + gnu/packages/linux.scm | 48 +++++++++++++++++++ .../patches/bpftrace-disable-bfd-disasm.patch | 15 ++++++ 3 files changed, 64 insertions(+) create mode 100644 gnu/packages/patches/bpftrace-disable-bfd-disasm.patch diff --git a/gnu/local.mk b/gnu/local.mk index a277e63fa4..5c9d39663f 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -819,6 +819,7 @@ dist_patch_DATA = \ %D%/packages/patches/bitcoin-core-python-compat.patch \ %D%/packages/patches/blender-2.79-newer-ffmpeg.patch \ %D%/packages/patches/blender-2.79-python-3.7-fix.patch \ + %D%/packages/patches/bpftrace-disable-bfd-disasm.patch \ %D%/packages/patches/busybox-1.31.1-fix-build-with-glibc-2.31.patch \ %D%/packages/patches/byobu-writable-status.patch \ %D%/packages/patches/calibre-no-updates-dialog.patch \ diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index b3922b0770..8f19ca11d2 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -7314,3 +7314,51 @@ makes use of extended BPF (Berkeley Packet Filters), formally known as eBPF, a new feature that was first added to Linux 3.15. Much of what BCC uses requires Linux 4.1 and above.") (license license:asl2.0))) + +(define-public bpftrace + (package + (name "bpftrace") + (version "0.10.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/iovisor/bpftrace") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "023ardywbw5w8815j2ny9rrp2xlpxndqaa7v2njjm8109p7ilsdn")) + (patches (search-patches "bpftrace-disable-bfd-disasm.patch")))) + (build-system cmake-build-system) + (native-inputs + `(("bison" ,bison) + ("flex" ,flex))) + (inputs + `(("bcc" ,bcc) + ("clang-toolchain" ,clang-toolchain) + ("elfutils" ,elfutils) + ;; FIXME: Tests require googletest but clone repository + ;; ("googletest" ,googletest) + ("libbpf" ,libbpf) + ("linux-libre-headers" ,linux-libre-headers))) + (arguments + `(#:tests? #f ; FIXME: Enable when googletest from guix is used + #:configure-flags + '(;; FIXME: Make tests not clone the googletest repository + "-DBUILD_TESTING=OFF" + ;; FIXME: libbfd misses some link dependencies + ;; When fixed, remove patch + "-DHAVE_BFD_DISASM=OFF"))) + (home-page "https://github.com/iovisor/bpftrace") + (synopsis "High-level tracing language for Linux eBPF") + (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. bpftrace was +created by Alastair Robertson.") + (license license:asl2.0))) diff --git a/gnu/packages/patches/bpftrace-disable-bfd-disasm.patch b/gnu/packages/patches/bpftrace-disable-bfd-disasm.patch new file mode 100644 index 0000000000..8565d8d851 --- /dev/null +++ b/gnu/packages/patches/bpftrace-disable-bfd-disasm.patch @@ -0,0 +1,15 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index e89a6a9..a594786 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -126,10 +126,6 @@ find_package(LibBpf) + find_package(LibBfd) + find_package(LibOpcodes) + +-if(${LIBBFD_FOUND} AND ${LIBOPCODES_FOUND}) +- set(HAVE_BFD_DISASM TRUE) +-endif() +- + include(CheckIncludeFile) + check_include_file("sys/sdt.h" HAVE_SYSTEMTAP_SYS_SDT_H) + -- 2.27.0