blob: 4ce41de3b56f5a10f875e546532c9c3325b117f6 [file] [log] [blame]
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.