Go on OpenBSD

Go is available within the OpenBSD ports tree collection since OpenBSD 5.2. It is marked as i386- and amd64- only. See ports/lang/go for details.

OpenBSD releaseGo in ports
6.8 (Oct 18, 2020)go-1.15.2
6.7 (May 19, 2020)go-1.13.9
6.6 (Oct 17, 2019)go-1.13.1
6.5 (Apr 4, 2019)go-1.12.1
6.4 (Oct 18, 2018)go-1.11
6.3 (Apr 2, 2018)go-1.10
6.2 (Oct 9, 2017)go-1.9
6.1 (Apr 11, 2017)go-1.8
6.0 (Sep 1, 2016)go-1.6.3
5.9 (Mar 29, 2016)go-1.5.4
5.8 (Oct 18, 2015)go-1.4.2
5.7 (May 1, 2015)go-1.4.1
5.6 (Nov 1, 2014)go-1.3p0

Building from source

Kernel versionArchitecturesInitial support versionFinal support version
6.4amd64, arm, 386Go 1.11
6.2 through 6.3amd64, arm, 386Go 1.9Go 1.15.x
6.1amd64, arm, 386Go 1.8Go 1.10.8
6.0amd64, 386Go 1.4.1 *Go 1.10.8
6.0armGo 1.5Go 1.10.8
5.9amd64, 386Go 1.4.1 *Go 1.8.7
5.9armGo 1.5Go 1.8.7
5.6 through 5.8amd64, 386Go 1.4.1 *Go 1.7.6
5.5amd64, 386Go 1.3 *Go 1.7.6
5.0 through 5.4amd64, 386Go 1Go 1.2.2

* Go 1.5 or above is recommended.

Longterm support

Go aims to support the two most recent OpenBSD releases, because OpenBSD officially supports only the two most recent releases, and makes a best-effort attempt to maintain ABI support in consecutive releases.

ulimits (/etc/login.conf)

Edit /etc/login.conf so that the staff class has the proper settings. The following is a working example of the staff class:

staff:\
       :datasize-cur=infinity:\
       :datasize-max=infinity:\
       :datasize=infinity:\
       :openfiles-cur=4096:\
       :maxproc-max=512:\
       :maxproc-cur=512:\
       :ignorenologin:\
       :requirehome@:\
       :tc=default:

If the database file /etc/login.conf.db exists, you need to rebuild it with:

# cap_mkdb /etc/login.conf

Ensure that the user you intend to build Go with is in the staff login class:

# usermod -L staff your_username_here