Skip to content

Latest commit

 

History

History
46 lines (28 loc) · 2.19 KB

README.md

File metadata and controls

46 lines (28 loc) · 2.19 KB

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:

  • Support for routing using IP-in-IP

Build

TL;DR

To build bird:

  • on your platform for your platform, run ./build.sh.
  • on amd64 for all platforms, run ARCH=all ./build.sh.
  • on amd64 for a specific other platform, run ARCH=<targetarch> ./build.sh.

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.

  • If ARCH is unset, it will determine it from the local platform using uname -m.
  • If ARCH is set to a supported platform, it will try to build from your local platform for that platform.
  • If ARCH is set to all, it will try to build for all supported architectures from your local platform.

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

  • amd64 / x86_64
  • arm64 / aarch64
  • ppc64le / ppc64el / powerpc64le
  • mips64el

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.