projectcalico / bird

Calico's fork of the BIRD protocol stack
90 stars 86 forks source link

Slack Status IRC Channel

Calico BIRD

This is a fork of the BIRD internet routing daemon which provides the following additional function used by Calico:

Build

TL;DR

To build bird:

Details

bird can be built for one platform - your local one, by default - or for all supported platforms.

When you run the build script - build.sh - it tries to determine what platforms you want to build it for by looking at the environment variable ARCH.

As of this writing, the supported architectures are as follows. Multiple entries on each line are aliases:

How the Build Works

The build works as follows.

If you are building natively, it builds an alpine-linux-based build image from Dockerfile. It then runs a container bind-mounting the source directory as /code, builds the binaries statically linked, and saves them to ./dist/<arch>/.

If you are cross-building, it builds a debian-linux-based build image from Dockerfile-all. It then runs a container bind-mounting the source directory /code, builds the binaries statically linked for each architecture, and saves themt to ./dist/<arch>/.

In the list of architectures above, the first name in the alias as the one used for dist/<arch>, no matter what architecture you entered. Thus if you use ARCH=x86_64 ./build.sh, the binaries will be under dist/amd64/. If you use ARCH=all, it will create for each.