wm: doc

ref: aaeb28aa8e5cf5a9fb58b4525d724ad4661f5abd
dir: /go.ms/

View raw version
.TL 
Installing Go on Plan 9
.SH 
amd64
.PP
.P1
mkdir -p /sys/lib/go
cd /sys/lib/go
hget https://go.dev/dl/go1.23.0.plan9-amd64.tar.gz | tar xz
mv go amd64-1.23.0
.P2

Add this to the beginning of your user's lib/profile:
.P1
GOROOT=/sys/lib/go/amd64-1.23.0
bind -b $GOROOT/bin /bin
.P2

After restarting, your Go installation should be commplete.

.SH
arm64
.PP 
Installing go on arm64 plan 9 is unsupported by the go language and team but a fork of golang is avaliable which supports it. You will need a non-arm64 system with go running on it to cross-compile for plan9 arm64. These instructions will assume you are on a linux machine with a Go toolchain already installed.

On linux:
.P1
git clone https://github.com/psilva261/go-arm64.plan9.git
cd go-arm64.plan9/src
export GOOS=plan9
export GOARCH=arm64
export GOROOT_FINAL=/sys/lib/go/arm64.plan9
bash ./make.bash
cd ../bin
mv plan9_arm64/* .
cd ../..
tar xzvf go9.tgz go-arm64.plan9/**/*
.P2

.PP
Now you need to transfer the go9.tgz archive to your Plan 9 machine. You can do this with 9P.

On Plan 9: 
.P1
mkdir share
aux/listen1 -tv tcp!*!9999 /bin/exportfs -r share
.P2

On Linux with Plan 9 from User Space where 9serverip is the IP address of your Plan 9 system:
.P1
mkdir ~/share
9pfuse tcp!9serverip!9999 ~/share
cp go9.tgz ~/share/
.P2

On Plan 9:
.P1
mkdir -p /sys/lib/go
cd /sys/lib/go
tar xvf /usr/glenda/share/go9.tgz
mv go-arm64.plan9 arm64.plan9
.P2

Add the following to your user's lib/profile;
.P1
GOROOT=/sys/lib/go/arm64.plan9
bind -b $GOROOT/bin /bin
.P2