]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph-client.git/commitdiff
selftests/bpf: Check BPFTOOL env var in detect_bpftool_path()
authorIhor Solodrai <ihor.solodrai@linux.dev>
Mon, 23 Feb 2026 19:11:17 +0000 (11:11 -0800)
committerAlexei Starovoitov <ast@kernel.org>
Tue, 24 Feb 2026 16:19:49 +0000 (08:19 -0800)
The bpftool_maps_access and bpftool_metadata tests may fail on BPF CI
with "command not found", depending on a workflow.
This happens because detect_bpftool_path() only checks two hardcoded
relative paths:
  - ./tools/sbin/bpftool
  - ../tools/sbin/bpftool

Add support for a BPFTOOL environment variable that allows specifying
the exact path to the bpftool binary.

Acked-by: Mykyta Yatsenko <yatsenko@meta.com>
Signed-off-by: Ihor Solodrai <ihor.solodrai@linux.dev>
Link: https://lore.kernel.org/r/20260223191118.655185-2-ihor.solodrai@linux.dev
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
tools/testing/selftests/bpf/bpftool_helpers.c

index 595a636fa13ba014d0a3d6824b3b8e95804c5e24..929fc257f4313d63f09221651ace1c21150dfe19 100644 (file)
 static int detect_bpftool_path(char *buffer, size_t size)
 {
        char tmp[BPFTOOL_PATH_MAX_LEN];
+       const char *env_path;
+
+       /* First, check if BPFTOOL environment variable is set */
+       env_path = getenv("BPFTOOL");
+       if (env_path && access(env_path, X_OK) == 0) {
+               strscpy(buffer, env_path, size);
+               return 0;
+       } else if (env_path) {
+               fprintf(stderr, "bpftool '%s' doesn't exist or is not executable\n", env_path);
+               return 1;
+       }
 
        /* Check default bpftool location (will work if we are running the
         * default flavor of test_progs)
@@ -33,7 +44,7 @@ static int detect_bpftool_path(char *buffer, size_t size)
                return 0;
        }
 
-       /* Failed to find bpftool binary */
+       fprintf(stderr, "Failed to detect bpftool path, use BPFTOOL env var to override\n");
        return 1;
 }