Homeworld's Build Process - sipb/homeworld GitHub Wiki
(You may wish to refer to the official build documentation for this.)
First, build Go. The Go 1.8.3 compiler is written in Go, so it is necessary to bootstrap by building Go 1.4, which is written in C. The compiled binary can then be used to build Go 1.8.3. These steps are taken care of by the build.sh script.
Next, build acbuild. It's a tool used to build App Container Images. This is taken care of by the build.sh script.
[acbuild appears to be unmaintained? Presumably for rkt, which uses ACI?]
Now, we need to build a set of Debian packages. They are:
- admin-tools: this is the tool (Spire) used by administrators to set up and maintain the cluster.
- apt-setup: this package contains the configuration needed to install and update packages from the apt repository.
- bootstrap-registry: this package contains the necessary webserver to run on homeworld.mit.edu to support ACI autodiscovery.
- etcd: this contains the etcd daemon and client.
- hyperkube: an all-in-one Kubernetes executable, which dispatches to many smaller component programs, depending on which one is requested.
- keysystem: the daemons and tools used as part of The Keysystem.
- knc (Kerberised NetCat): netcat is a tool that transfers data over TCP/IP. knc does this, but with Kerberos authentication. Used by the keysystem.
- rkt: the container manager used by homeworld.
- services: the actual scripts and systemd units for running services directly on cluster nodes.
build-all.sh
calls build-package.sh
for each package, which sets up the build environment with functions from common/package-build-helpers.sh
, then calls sbuild
through build(), also from common/package-build-helpers.sh.
For that we must install and configure sbuild
.
$ sudo apt-get install sbuild gnupg. #Install sbuild and GPG
$ sudo sbuild-createchroot --include=eatmydata,ccache,gnupg stretch /srv/chroot/stretch http://deb.debian.org/debian # Create the debian stretch chroot.
$ sudo sbuild-adduser $LOGNAME #Add user to schroot
Most of the time, a build procedure is provided in inner-build.sh, which sbuild runs as instructed in debian/rules.
[insert the rest of the build procedure here]