| 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 | |
| * go-be-p10-1 : (30 GB RAM, 50 GB disk, 20 cores, POWER10) | |
| ssh -i ~/.ssh/id_ed25519_golang1 debian@go-be-p10-1.osuosl.org | |
| (key from go/go-builders-ssh) | |
| Linux go-be-p10-1 6.1.0-7-powerpc64 #1 SMP Debian 6.1.20-2 (2023-04-08) 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 golang-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. | |
| # Also, dependencies need to be installed. debuild will indicate those. | |
| 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 | |
| - (P9 VM) 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). | |
| - (P9 VM) Following the above, grub is set to boot from the older kernel. This | |
| will need updated if new kernel packages are installed or removed. | |
| - (P10 VM) Use Dockerfile.p10 to build the golang testing container. This is | |
| needed until the minimum bootstrap version is 1.20 or newer. |