28 August 2017

bootstrapping go

System: Slackware Linux (version 14.0)
CPUs: Intel(R) Atom(TM) CPU N270 @1.60GHz
Deps: go1.4-bootstrap-20170531.tar.gz,
go1.9.2.src.tar.gz

I haven't tested V. Batts Slackbuild (unmodified or modified) on the
Slackware Linux version for which it was written, namely 14.2; this
post uses version 14.0. For linux/386 cgo is enabled by default.

Go 1.4 was the last version where the toolchain was written in C.

This entry will compile 1.4 and then use that to bootstrap 1.9.2.

https://golang.org/doc/install/source
go1.4-bootstrap-20170531.tar.gz

Download and extract the above file into root's home directory,
rename the folder, then cd into go1.4/src and run make.bash.

bash-4.2# tar xvf go1.4-bootstrap-20170531.tar.gz

...

bash-4.2# mv go go1.4
bash-4.2# cd go1.4/src
bash-4.2# ./make.bash

...

Installed Go for linux/386 in /root/go1.4
Installed commands in /root/go1.4/bin
bash-4.2# exit

http://slackbuilds.org/repository/14.2/development/google-go-lang/
google-go-lang.tar.gz

Download and extract the above file into root's home directory,
and then edit the google-go-lang.SlackBuild file as follows.

- VERSION=${VERSION:-1.8.3}
+ VERSION=${VERSION:-1.9.2}

- export GOROOT_BOOTSTRAP="/usr" # gcc 5+ is go1.4 API, so we'll bootstrap with it
+ # export GOROOT_BOOTSTRAP="/usr" # gcc 5+ is go1.4 API, so we'll bootstrap with it

chmod 0755 $PKG/etc/profile.d/go.sh
+
+ find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
+  | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true

https://golang.org/dl/
go1.9.2.src.tar.gz

Download the above file, then copy it into ~/google-go-lang
and build.

bash-4.2# cd google-go-lang
bash-4.2# ./google-go-lang.SlackBuild

...

Slackware package /tmp/google-go-lang-1.9.2-i586-1_SBo.tgz created.

bash-4.2# cd ..
bash-4.2# rm -r go1.4
bash-4.2# rm -r google-go-lang
bash-4.2# rm -r /tmp/SBo
bash-4.2# installpkg /tmp/google-go-lang-1.9.2-i586-1_SBo.tgz
Verifying package google-go-lang-1.9.2-i586-1_SBo.tgz.
Installing package google-go-lang-1.9.2-i586-1_SBo.tgz:
PACKAGE DESCRIPTION:
# google-go-lang (Google's Go Language kit with gc tool chain)
#
# The Go programming language is an open source project to make
# programmers more productive. Go is expressive, concise, clean, and
# efficient. Its concurrency mechanisms make it easy to write programs
# that get the most out of multicore and networked machines, while its
# novel type system enables flexible and modular program construction.
#
Package google-go-lang-1.9.2-i586-1_SBo.tgz installed.

bash-4.2# exit

The makepkg script called by the Slackbuild will output a warning about
about issue6550.gz, this is expected, the file is used by gunzip_test.go.

Reboot and test your installation.

https://golang.org/doc/install/source#testing

Go 1.9 release notes
Minor revisions

https://golang.org/doc/install/gccgo#Releases

CL 994044CL 4639077CL 4808043

Running thereafter the following command will install the net and tools sub-repositories
in $GOPATH.

sh-4.2$ go get -u golang.org/x/tools/...
sh-4.2$ exit

An alternate file tree with stripped 'tools' subrepo and 'gonum' repo executables is available on this Page.

Legal, CL 60090, CL 76971