Commit a2714e73 authored by Ihor Solodrai's avatar Ihor Solodrai Committed by Alexei Starovoitov
Browse files

selftests/bpf: Check BPFTOOL env var in detect_bpftool_path()



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: default avatarMykyta Yatsenko <yatsenko@meta.com>
Signed-off-by: default avatarIhor Solodrai <ihor.solodrai@linux.dev>
Link: https://lore.kernel.org/r/20260223191118.655185-2-ihor.solodrai@linux.dev


Signed-off-by: default avatarAlexei Starovoitov <ast@kernel.org>
parent ad90eced
Loading
Loading
Loading
Loading
+12 −1
Original line number Diff line number Diff line
@@ -14,6 +14,17 @@
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;
}