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.
