ebpf_exporter

Форк
0
/
Makefile 
85 строк · 2.6 Кб
1
.DEFAULT_GOAL := build
2

3
BUILD_VAR_PREFIX := github.com/prometheus/common/version
4
BUILD_USER := $(shell id -u -n)@$(shell hostname)
5
BUILD_DATE := $(shell date --iso-8601=seconds)
6

7
ifeq (yes,$(shell which git > /dev/null && test -e .git && echo yes))
8
BUILD_VERSION := $(shell git describe --tags)
9
BUILD_BRANCH := $(shell git rev-parse --abbrev-ref HEAD)
10
BUILD_REVISION := $(shell git rev-parse --short HEAD)
11
else
12
BUILD_VERSION := unknown
13
BUILD_BRANCH := unknown
14
BUILD_REVISION := unknown
15
endif
16

17
GO_LDFLAGS_VARS := -X $(BUILD_VAR_PREFIX).Version=$(BUILD_VERSION) \
18
	-X $(BUILD_VAR_PREFIX).Branch=$(BUILD_BRANCH) \
19
	-X $(BUILD_VAR_PREFIX).Revision=$(BUILD_REVISION) \
20
	-X $(BUILD_VAR_PREFIX).BuildUser=$(BUILD_USER) \
21
	-X $(BUILD_VAR_PREFIX).BuildDate=$(BUILD_DATE)
22

23
CLANG_FORMAT_FILES = ${wildcard examples/*.c examples/*.h benchmark/probes/*.c benchmark/probes/*.h}
24

25
# * cachestat fails to attach in newer kernels (see code)
26
# * kfree_skb doesn't load in ci, possibly due to older verifier
27
# * llcstat requires real hardware to attach perf events, which is not present in ci
28
# * pci doesn't load in ci, possibly due to older verifier
29
# * unix-socket-backlog requires a newer kernel than we have in ci
30
CONFIGS_TO_IGNORE_IN_CHECK := cachestat kfree_skb llcstat pci unix-socket-backlog
31
CONFIGS_TO_CHECK := $(filter-out $(CONFIGS_TO_IGNORE_IN_CHECK), ${patsubst examples/%.yaml, %, ${wildcard examples/*.yaml}})
32

33
export CGO_LDFLAGS := -l bpf
34

35
include Makefile.libbpf
36

37
GO_TEST_ARGS = -v
38
# On aarch64 it's unavailable: FATAL: ThreadSanitizer: unsupported VMA range
39
ifneq ($(shell uname -m),aarch64)
40
GO_TEST_ARGS += -race
41
endif
42

43
.PHONY: lint
44
lint:
45
	go mod verify
46
	golangci-lint run ./...
47

48
.PHONY: jsonschema
49
jsonschema:
50
	./scripts/jsonschema.sh
51

52
.PHONY: clang-format-check
53
clang-format-check:
54
	./scripts/clang-format-check.sh $(CLANG_FORMAT_FILES)
55

56
.PHONY: test
57
test: $(LIBBPF_DEPS)
58
	go test -ldflags='-extldflags "-static"' $(GO_TEST_ARGS) ./...
59

60
.PHONY: test-privileged
61
test-privileged:
62
	sudo go test $(GO_TEST_ARGS) ./cgroup
63

64
.PHONY: config-check
65
config-check:
66
	sudo ./ebpf_exporter --capabilities.keep=none --config.check --config.strict --config.dir=examples --config.names=$(shell echo $(CONFIGS_TO_CHECK) | tr ' ' ',')
67

68
.PHONY: build
69
build: build-static
70

71
.PHONY: build-static
72
build-static:
73
	$(MAKE) build-binary GO_LDFLAGS='-extldflags "-static"'
74

75
.PHONY: build-dynamic
76
build-dynamic:
77
	$(MAKE) build-binary
78

79
.PHONY: build-binary
80
build-binary: $(LIBBPF_DEPS)
81
	go build -o ebpf_exporter -v -ldflags="$(GO_LDFLAGS) $(GO_LDFLAGS_VARS)" ./cmd/ebpf_exporter
82

83
.PHONY: syscalls
84
syscalls:
85
	go run ./scripts/mksyscalls --strace.version v6.4
86

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.