[Buildroot] [PATCH 1/1] pkg-golang: Allow per package/target CGO_ENABLED setting
camh at xdna.net
Fri Apr 12 21:48:05 UTC 2019
On Sat, 13 Apr 2019 at 07:29, Cam Hutchison <camh at xdna.net> wrote:
> On Tue, 9 Apr 2019 at 13:22, Christian Stewart <christian at paral.in> wrote:
> > Fwiw, I'm also integrating kubernetes with buildroot at the moment. I
> don't see where cgo is required in this way.
> > I'd be happy to compare notes if you'd like?
> My local BR2_EXTERNAL kubernetes config is at
> Feel free to take anything from there that is useful.
Also, here are my notes I made at the time. Perhaps they might be useful:
* Success building kubelet from buildroot
+ I think I've done that before, but I will next try other components
the same pattern
+ Kubernetes buildroot config directly uses go to build binaries, does not
use kube Makefile or build scripts.
* Success with kube-proxy and kubeadm
* kube-proxy, kubelet and kubeadm are the node binaries, all successfully
from a single buildroot invocation. All were built with CGO_ENABLED=1.
kube-proxy and kubeadm would normally be build with CGO_ENABLED=0 using
kube build scripts (KUBE_STATIC_LIBRARIES)
* The buildroot golang support does not allow mixed CGO_ENABLED builds of
different binaries. The value for CGO_ENABLED seems to be hard-coded at
toolchain build time. I should investigate what it would take to build
CGO_ENABLED=0 and CGO_ENABLED=1 together in the toolchain.
* kube-apiserver build failed. It needs openapi generated files. I had
that the openapi generation stuff was for docs - not so. I will have to
what needs to be done to hook in the generated files build too. Shouldn't
too hard as the go compiler can build both host and target binaries, so we
don't need a second host-targetting go compiler.
* Extending the KUBERNETES_BUILD_CMDS to run `make generated_files` worked
* kube-apiserver is not linking, emitting the error `direct call too far`.
override the go.mk to force CGO_ENABLED=0, it works. The kube build script
builds a bunch of components with CGO_ENABLED=0, but the buildroot golang
infra does not support setting CGO_ENABLED - it is hard-coded based on
whether the toolchain has threads (BR2_TOOLCHAIN_HAS_THREADS). I will need
to somehow override that.
* Everything builds now (including hyperkube) using the right CGO settings
the right targets.
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the buildroot