Re: libbpf distro packaging
From: Andrii Nakryiko <hidden>
Date: 2019-08-13 18:24:12
On Tue, Aug 13, 2019 at 5:26 AM Jiri Olsa [off-list ref] wrote:
On Mon, Aug 12, 2019 at 07:04:12PM +0000, Julia Kartseva wrote:quoted
I would like to bring up libbpf publishing discussion started at [1]. The present state of things is that libbpf is built from kernel tree, e.g. [2] For Debian and [3] for Fedora whereas the better way would be having a package built from github mirror. The advantages of the latter: - Consistent, ABI matching versioning across distros - The mirror has integration tests - No need in kernel tree to build a package - Changes can be merged directly to github w/o waiting them to be merged through bpf-next -> net-next -> main There is a PR introducing a libbpf.spec which can be used as a starting point: [4] Any comments regarding the spec itself can be posted there. In the future it may be used as a source of truth. Please consider switching libbpf packaging to the github mirror instead of the kernel tree. Thanks [1] https://lists.iovisor.org/g/iovisor-dev/message/1521 [2] https://packages.debian.org/sid/libbpf4.19 [3] http://rpmfind.net/linux/RPM/fedora/devel/rawhide/x86_64/l/libbpf-5.3.0-0.rc2.git0.1.fc31.x86_64.html [4] https://github.com/libbpf/libbpf/pull/64hi, Fedora has libbpf as kernel-tools subpackage, so I think we'd need to create new package and deprecate the current but I like the ABI stability by using github .. how's actually the sync (in both directions) with kernel sources going on?
Sync is always in one direction, from kernel sources into Github repo. Right now it's triggered by a human (usually me), but we are using a script that automates entire process (see https://github.com/libbpf/libbpf/blob/master/scripts/sync-kernel.sh). It cherry-pick relevant commits from kernel, transforms them to match Github's file layout and re-applies those changes to Github repo. There is never a sync from Github back to kernel, but Github repo contains some extra stuff that's not in kernel. E.g., the script I mentioned, plus Github's Makefile is different, because it can't rely on kernel's kbuild setup.
thanks, jirka