odigos-io/opentelemetry-go-instrumentation

Include bpf includes within the project

ocampeau opened this issue · 2 comments

Feature request

Maybe the project can come with its own include directory containing all standard bpf header files required to build the project, which would make it much easier for everybody to just build the binary locally without bothering about bpf dependencies.

Use case

After cloning the project, the make build command failed because I did not have my bpf include files in /usr/include/bpf.

Luckily, I had a personal project on my machine using libbpf, and so I just copied some of my include files to /usr/include/bpf and it worked. But for some other people less familiar with bpf who just wants to try this amazing tool (still in early stage, but looks quite promising) it might be a blocker.

Is this feature request gets accepted, I can submit a PR.

That sounds like a great idea. I'll be happy to accept a PR.
By the way, there is a Dockerfile that you can use to build the project inside a docker container.

Great! I'll try to have a PR ready soon.

Also, I just took a look at the Dockerfile, and I was not aware of the libbpf-devel package (or libbpf-dev on Debian). That's awesome. It makes it much easier to have the header files. I was used to link libbpf from the kernel source tree.

I still see some advantages though to have an include directory within the project that would include all files from libbpf-devel package (and possibly more).

The most obvious to me is to make it possible to build the binary from within the project without any external dependencies. Another advantage I see is for versioning: to make sure anyone building the project locally are doing it against the same version of the bpf header files.

I'll submit a PR soon.