| The linux-ppc64-sid buildlets run on PPC64 VMs at osuosl.org (OSU Open Source Lab). |
| |
| This runs debian sid, and replaces the linux-ppc64-osuosl builders running ubuntu 16. |
| |
| Filing tickets: https://support.osuosl.org/ |
| Ticket username: bradfitz@golang.org |
| Ticket password: go/pw-osuosl-ppc64 |
| |
| Machines: |
| |
| * go-be-debian-1: (30 GB RAM, 50 GB disk, 20 cores, POWER8) |
| |
| ssh -i ~/.ssh/id_ed25519_golang1 debian@140.211.10.88 |
| (key from go/go-builders-ssh) |
| |
| Linux go-be-debian-1 5.10.0-1-powerpc64 #1 SMP Debian 5.10.4-1 (2020-12-31) ppc64 GNU/Linux |
| |
| # Setting up the debian ppc64 builder for containerized CI |
| |
| Copy the files and folders inside this directory onto the CI which preserving |
| the directory structure. |
| |
| There are 3 main tasks, in chronological order: |
| - install debian packaging tools |
| - build/install debian upstream's golang-defaults and docker.io package for ppc64 |
| - install rundockerbuilder and systemd unit file, and start the service |
| |
| Since this is a rolling distro, these steps may change with time. |
| |
| ## Building and installing docker.io |
| |
| Install golang-1.19-go, git and the debian packaging tools. The following |
| is a list of commands which could be used to create the docker.io package. |
| Note, these may change with time as this is a rolling distro. |
| |
| ``` |
| mkdir ~/debs |
| cd ~/debs |
| git clone https://salsa.debian.org/go-team/compiler/golang-defaults.git |
| cd golang-defaults |
| git am ~/deb-patches/golang-defaults-hack.patch |
| debuild -us -uc -tc |
| cd ~/debs |
| dpkg -i gccgo-go_1.19~1_ppc64.deb |
| |
| # Build docker. Note, the version used is/was the tips of master. |
| # One day it will not be, and the git checkout command will need updated. |
| git clone https://salsa.debian.org/docker-team/docker.git |
| cd docker |
| git am ~/deb-patches/docker-hack.patch |
| origtarz --unpack |
| DEB_BUILD_OPTIONS="nocheck nostrip" debuild -us -uc -tc |
| cd ~/debs/ |
| dpkg -i docker.io_20.10.17+dfsg1-1_ppc64.deb |
| sudo usermod -aG docker $USER |
| ``` |
| |
| ## Debian sid base image |
| |
| Run build-sid.sh inside ~/sid-image |
| |
| Use the build-sid.sh script to generate a small ppc64 debian rootfs |
| |
| ## Buildlet image |
| |
| from ~/buildlet-image, run `sudo docker build --tag=golang/buildlet-stage0 .` |
| to generate the docker image used to run the CI. |
| |
| ## Installing and starting rundockerbuildlet |
| |
| Build cmd/rundockerbuildlet from this repo for GOOS=linux GOARCH=ppc64, and |
| copy it to ~/ |
| |
| Run the following to install the command and systemd unit files to start |
| running the service: |
| |
| ``` |
| sudo install ~/rundockerbuildlet /usr/local/bin/rundockerbuildlet |
| sudo systemctl enable /etc/systemd/user/rundockerbuildlet.service || true |
| sudo systemctl daemon-reload || true |
| sudo systemctl restart docker.service |
| sudo systemctl restart rundockerbuildlet.service |
| ``` |
| |
| # Warnings and other notes |
| |
| - Do not update the kernel (yet), #54547 causes big problems. The docker.io |
| packages need rebuilt when the go1.19 packages are updated to include this |
| fix. Likewise, the bootstrap toolchain for CI will need to be updated to |
| the latest go1.18 release (the oldest toolchain with this fix). |
| |
| - Following the above, grub is set to boot from the older kernel. This |
| will need updated if new kernel packages are installed or removed. |
| |
| - Likewise, the kernel should boot with the `systemd.unified_cgroup_hierarchy=0` |
| option. This is needed to run docker (more) reliably on ppc64. |