tools/bpftool: use version from the kernel source tree
Bpftool determines it's own version based on the kernel version, which is picked from the linux/version.h header. It's strange to use the version of the installed kernel headers, and makes much more sense to use the version of the actual source tree, where bpftool sources are. Fix this by building kernelversion target and use the resulting string as bpftool version. Example: before: $ bpftool version bpftool v4.14.6 after: $ bpftool version bpftool v4.15.0-rc3 $bpftool version --json {"version":"4.15.0-rc3"} Signed-off-by: Roman Gushchin <guro@fb.com> Reviewed-by: Jakub Kicinski <jakub.kicinski@netronome.com> Cc: Alexei Starovoitov <ast@kernel.org> Cc: Daniel Borkmann <daniel@iogearbox.net> Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
This commit is contained in:
Родитель
6bb8824732
Коммит
4bfe3bd3cc
|
@ -23,6 +23,8 @@ endif
|
||||||
|
|
||||||
LIBBPF = $(BPF_PATH)libbpf.a
|
LIBBPF = $(BPF_PATH)libbpf.a
|
||||||
|
|
||||||
|
BPFTOOL_VERSION=$(shell make --no-print-directory -sC ../../.. kernelversion)
|
||||||
|
|
||||||
$(LIBBPF): FORCE
|
$(LIBBPF): FORCE
|
||||||
$(Q)$(MAKE) -C $(BPF_DIR) OUTPUT=$(OUTPUT) $(OUTPUT)libbpf.a FEATURES_DUMP=$(FEATURE_DUMP_EXPORT)
|
$(Q)$(MAKE) -C $(BPF_DIR) OUTPUT=$(OUTPUT) $(OUTPUT)libbpf.a FEATURES_DUMP=$(FEATURE_DUMP_EXPORT)
|
||||||
|
|
||||||
|
@ -38,6 +40,7 @@ CC = gcc
|
||||||
CFLAGS += -O2
|
CFLAGS += -O2
|
||||||
CFLAGS += -W -Wall -Wextra -Wno-unused-parameter -Wshadow
|
CFLAGS += -W -Wall -Wextra -Wno-unused-parameter -Wshadow
|
||||||
CFLAGS += -D__EXPORTED_HEADERS__ -I$(srctree)/tools/include/uapi -I$(srctree)/tools/include -I$(srctree)/tools/lib/bpf -I$(srctree)/kernel/bpf/
|
CFLAGS += -D__EXPORTED_HEADERS__ -I$(srctree)/tools/include/uapi -I$(srctree)/tools/include -I$(srctree)/tools/lib/bpf -I$(srctree)/kernel/bpf/
|
||||||
|
CFLAGS += -DBPFTOOL_VERSION='"$(BPFTOOL_VERSION)"'
|
||||||
LIBS = -lelf -lbfd -lopcodes $(LIBBPF)
|
LIBS = -lelf -lbfd -lopcodes $(LIBBPF)
|
||||||
|
|
||||||
INSTALL ?= install
|
INSTALL ?= install
|
||||||
|
|
|
@ -38,7 +38,6 @@
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <getopt.h>
|
#include <getopt.h>
|
||||||
#include <linux/bpf.h>
|
#include <linux/bpf.h>
|
||||||
#include <linux/version.h>
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
@ -95,21 +94,13 @@ static int do_help(int argc, char **argv)
|
||||||
|
|
||||||
static int do_version(int argc, char **argv)
|
static int do_version(int argc, char **argv)
|
||||||
{
|
{
|
||||||
unsigned int version[3];
|
|
||||||
|
|
||||||
version[0] = LINUX_VERSION_CODE >> 16;
|
|
||||||
version[1] = LINUX_VERSION_CODE >> 8 & 0xf;
|
|
||||||
version[2] = LINUX_VERSION_CODE & 0xf;
|
|
||||||
|
|
||||||
if (json_output) {
|
if (json_output) {
|
||||||
jsonw_start_object(json_wtr);
|
jsonw_start_object(json_wtr);
|
||||||
jsonw_name(json_wtr, "version");
|
jsonw_name(json_wtr, "version");
|
||||||
jsonw_printf(json_wtr, "\"%u.%u.%u\"",
|
jsonw_printf(json_wtr, "\"%s\"", BPFTOOL_VERSION);
|
||||||
version[0], version[1], version[2]);
|
|
||||||
jsonw_end_object(json_wtr);
|
jsonw_end_object(json_wtr);
|
||||||
} else {
|
} else {
|
||||||
printf("%s v%u.%u.%u\n", bin_name,
|
printf("%s v%s\n", bin_name, BPFTOOL_VERSION);
|
||||||
version[0], version[1], version[2]);
|
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
Загрузка…
Ссылка в новой задаче