[Buildroot] [PATCH 1/1] package/runc: add an option to build a non-static runc

James Peach jorgar at gmail.com
Fri Oct 25 21:19:55 UTC 2019



> On Oct 26, 2019, at 3:45 AM, Peter Korsgaard <peter at korsgaard.com> wrote:
> 
>>>>>> "James" == James Peach <jorgar at gmail.com> writes:
> 
>> From: James Peach <jpeach at apache.org>
>> The systemd cgroup driver is compiled out of static builds of
>> runc so some users will need a non-static build.
> 
> What does that driver exactly do?

Instead of setting up the container by directly manipulating cgroupfs files, runc will call systemd DBUS APIs

> What distributions enable this?

I see that runc is linked dynamically on Fedora. Using the systemd cgroups driver is a pretty common recommendation for Kuberneted clusters (the option is plumbed through Kubelet, cri-o and containerd).

>> Add an option to control whether the runc should be static or not,
>> and default it to true for compatibility with existing
>> configurations.
> 
> Does this then work when running a different libc inside/outside the
> containers?
> 
> If yes, what is the advantage of linking runc statically?

I don’t know why this package was originally linking statically, which was why I kept the default. I didn’t want to break someone’s use case that I didn’t know about :)

Your question make we go check upstream, and the build tag was introduced to fix a build warning about a dependency on dlopen:

https://github.com/opencontainers/runc/commit/e9944d0f4cebd26f27fdb7407740c32a9194c386

However, I don’t think that upstream needs this any more so maybe I can remove the build tag from the systemd integration.



> 
> 
>> Signed-off-by: James Peach <jpeach at apache.org>
>> ---
>> package/runc/Config.in | 11 +++++++++++
>> package/runc/runc.mk   |  6 +++++-
>> 2 files changed, 16 insertions(+), 1 deletion(-)
> 
>> diff --git package/runc/Config.in package/runc/Config.in
>> index f181ee334f..ea932120b8 100644
>> --- package/runc/Config.in
>> +++ package/runc/Config.in
>> @@ -10,6 +10,17 @@ config BR2_PACKAGE_RUNC
> 
>> 	  https://github.com/opencontainers/runc
> 
>> +if BR2_PACKAGE_RUNC
>> +
>> +config BR2_PACKAGE_RUNC_STATIC
>> +	bool "static runc binary"
>> +	default y
>> +	help
>> +	  Whether to make a static build of runc. This must be false
>> +	  for runc to be able to use the systemd cgroups driver.
>> +
>> +endif
>> +
>> comment "runc needs a glibc or musl toolchain w/ threads"
>> 	depends on BR2_PACKAGE_HOST_GO_TARGET_ARCH_SUPPORTS && \
>> 		BR2_PACKAGE_HOST_GO_TARGET_CGO_LINKING_SUPPORTS
>> diff --git package/runc/runc.mk package/runc/runc.mk
>> index b858742905..4128afd53a 100644
>> --- package/runc/runc.mk
>> +++ package/runc/runc.mk
>> @@ -13,7 +13,11 @@ RUNC_WORKSPACE = Godeps/_workspace
> 
>> RUNC_LDFLAGS = -X main.gitCommit=$(RUNC_VERSION)
> 
>> -RUNC_TAGS = cgo static_build
>> +RUNC_TAGS = cgo
>> +
>> +ifeq ($(BR2_PACKAGE_RUNC_STATIC),y)
>> +RUNC_TAGS += static_build
>> +endif
> 
>> ifeq ($(BR2_PACKAGE_LIBSECCOMP),y)
>> RUNC_TAGS += seccomp
>> -- 
>> 2.21.0
> 
>> _______________________________________________
>> buildroot mailing list
>> buildroot at busybox.net
>> http://lists.busybox.net/mailman/listinfo/buildroot
> 
> -- 
> Bye, Peter Korsgaard




More information about the buildroot mailing list