kepler
kepler copied to clipboard
Makefile missing a tool to build Kepler binary locally
What happened?
When running the make tools command inside a cloned Kepler repo before building, it runs successfully. However, then when attempting to build the binary locally using make build, I received the error:
Error: exec: "llvm-strip": executable file not found in $PATH
exit status 1
pkg/bpf/gen.go:3: running "go": exit status 1
make: *** [Makefile:178: generate] Error 1
What did you expect to happen?
It was my impression that the make tools command would install/check for all packages needed to install and/or build Kepler. If this is not the purpose of this command, then the documentation should perhaps be updated to include llvm as a separate dependency for the user to consider.
How can we reproduce it (as minimally and precisely as possible)?
Clone Kepler repo, then run make tools and make build or make _build_local on a system that does not already have llvm installed. The error was immediately resolved by running:
sudo dnf install llvm
Anything else we need to know?
Additionally, the make tools command itself is not included in the Makefile's help section. This may constitute a separate issue.
Kepler image tag
Kubernetes version
$ kubectl version
Client Version: v1.30.2
Kustomize Version: v5.0.4-0.20230601165947-6ce0bf390ce3
...
</details>
### Cloud provider or bare metal
<details>
Bare metal
</details>
### OS version
<details>
```console
# On Linux:
$ cat /etc/os-release
NAME="Fedora Linux"
VERSION="40 (Workstation Edition)"
ID=fedora
VERSION_ID=40
VERSION_CODENAME=""
PLATFORM_ID="platform:f40"
PRETTY_NAME="Fedora Linux 40 (Workstation Edition)"
ANSI_COLOR="0;38;2;60;110;180"
LOGO=fedora-logo-icon
CPE_NAME="cpe:/o:fedoraproject:fedora:40"
DEFAULT_HOSTNAME="fedora"
HOME_URL="https://fedoraproject.org/"
DOCUMENTATION_URL="https://docs.fedoraproject.org/en-US/fedora/f40/system-administrators-guide/"
SUPPORT_URL="https://ask.fedoraproject.org/"
BUG_REPORT_URL="https://bugzilla.redhat.com/"
REDHAT_BUGZILLA_PRODUCT="Fedora"
REDHAT_BUGZILLA_PRODUCT_VERSION=40
REDHAT_SUPPORT_PRODUCT="Fedora"
REDHAT_SUPPORT_PRODUCT_VERSION=40
SUPPORT_END=2025-05-13
VARIANT="Workstation Edition"
VARIANT_ID=workstation
$ uname -a
Linux 6.7.5-200.fc39.x86_64 #1 SMP PREEMPT_DYNAMIC Sat Feb 17 17:20:08 UTC 2024 x86_64 GNU/Linux
Install tools
Kepler deployment config
For on kubernetes:
$ KEPLER_NAMESPACE=kepler
# provide kepler configmap
$ kubectl get configmap kepler-cfm -n ${KEPLER_NAMESPACE}
# paste output here
# provide kepler deployment description
$ kubectl describe deployment kepler-exporter -n ${KEPLER_NAMESPACE}
For standalone:
put your Kepler command argument here
Container runtime (CRI) and version (if applicable)
Related plugins (CNI, CSI, ...) and versions (if applicable)
@arthurus-rex llvm is required by cillium to compile/build bpf program used by kepler. so it is a dependency for building kepler. for building kepler container images the builder image already provided llvm. for local building we need to install llvm same as we need to install golang.
the make tools target only installs a set of tools required by repo in LOCAL_BIN ( which is $PROJECT_ROOT/tmp/bin) installing llvm is not same as installing a tool, it is a bit more involved as it depends on distro, arch etc. so it is better depend on your OS's package manger and install it manually.