From: Andrew Gerrand
diff --git a/doc/install-source.html b/doc/install-source.html
new file mode 100644
index 0000000000..7c4ab8155a
--- /dev/null
+++ b/doc/install-source.html
@@ -0,0 +1,475 @@
+
+
+ Go is an open source project, distributed under a
+BSD-style license.
+This document explains how to check out the sources,
+build them on your own machine, and run them.
+
+There are two official Go compiler tool chains.
+This document focuses on the
+The Go compilers support three instruction sets.
+There are important differences in the quality of the compilers for the different
+architectures.
+
+Except for things like low-level operating system interface code, the run-time
+support is the same in all ports and includes a mark-and-sweep garbage
+collector, efficient array and string slicing, and support for efficient
+goroutines, such as stacks that grow and shrink on demand.
+
+The compilers can target the FreeBSD, Linux, NetBSD, OpenBSD, OS X (Darwin),
+and Windows operating systems.
+The full set of supported combinations is listed in the discussion of
+environment variables below.
+
+The Go tool chain is written in C.
+To build it, you need a C compiler installed.
+
+On OS X, a C compiler can be installed as part of
+Xcode.
+
+On Ubuntu/Debian, use
+TODO: add Windows compiler info
+
+To perform the next step you must have Mercurial installed. (Check that you
+have an
+On Ubuntu/Debian,
+the Mercurial in your distribution's
+package repository is most likely old and broken.
+You might try this first:
+
+If that fails, try installing manually from the
+Mercurial Download
+page.Introduction
+
+gc Go
+compiler and tools (6g, 8g etc.).
+For information on how to use gccgo, a more traditional
+compiler using the GCC back end, see
+Setting up and using gccgo.
+
+
+
+amd64 (a.k.a. x86-64); 6g,6l,6c,6a
+gccgo can do noticeably better sometimes).
+386 (a.k.a. x86 or x86-32); 8g,8l,8c,8a
+amd64 port.
+arm (a.k.a. ARM); 5g,5l,5c,5a
+Install C tools, if needed
+
+sudo apt-get install gcc libc6-dev.
+If you want to build 32-bit binaries on a 64-bit system you'll also need the
+libc6-dev-i386 package.
+Install Mercurial, if needed
+
+hg command.) This suffices to install Mercurial on most
+systems:
+
+sudo easy_install mercurial==2.0
+
+
+apt-get install python-setuptools python-dev build-essential
+
+
+Mercurial versions 1.7.x and up require the configuration of +Certification Authorities +(CAs). Error messages of the form: +
+ ++warning: code.google.com certificate with fingerprint b1:af: ... bc not verified (check hostfingerprints or web.cacerts config setting) ++ +
+when using Mercurial indicate that the CAs are missing.
+Check your Mercurial version (hg --version) and
+configure the CAs
+if necessary.
+
+
Go will install to a directory named go.
+Change to the directory that will be its parent
+and make sure the go directory does not exist.
+Then check out the repository:
+$ hg clone -u release https://code.google.com/p/go ++ +
+To build the Go distribution, run +
+ ++$ cd go/src +$ ./all.bash ++ +
+(To build under Windows use all.bat.)
+
+If all goes well, it will finish by printing output like: +
+ ++ALL TESTS PASSED + +--- +Installed Go for linux/amd64 in /home/you/go. +Installed commands in /home/you/go/bin. +*** You need to add /home/you/go/bin to your $PATH. *** +The compiler is 6g. ++ +
+where the details on the last few lines reflect the operating system, +architecture, and root directory used during the install. +
+ ++For more information about ways to control the build, see the discussion of +environment variables below. +
++Check that Go is installed correctly by building a simple program. +
+ +
+Create a file named hello.go and put the following program in it:
+
+package main
+
+import "fmt"
+
+func main() {
+ fmt.Printf("hello, world\n")
+}
+
+
+
+Then run it with the go tool:
+
+$ go run hello.go +hello, world ++ +
+If you see the "hello, world" message then Go is installed correctly. +
+ + ++Start by taking A Tour of Go +or reading the Go Tutorial. +
+ ++For more detail about the process of building and testing Go programs +read How to Write Go Code. +
+ ++Build a web application by following the Wiki +Codelab. +
+ ++Read Effective Go to learn about writing +idiomatic Go code. +
+ ++For the full story, consult Go's extensive +documentation. +
+ + +
+For real-time help, there may be users or developers on
+#go-nuts on the Freenode IRC server.
+
+The official mailing list for discussion of the Go language is +Go Nuts. +
+ ++Bugs can be reported using the Go issue tracker. +
+ ++For those who wish to keep up with development, +there is another mailing list, golang-checkins, +that receives a message summarizing each checkin to the Go repository. +
+ + +
+The Go project maintains two stable tags in its Mercurial repository:
+release and weekly.
+The weekly tag is updated about once a week, and should be used by
+those who want to track the project's development.
+The release tag is given, less often, to those weekly releases
+that have proven themselves to be robust.
+
+Most Go users will want to keep their Go installation at the latest
+release tag.
+New releases are announced on the
+golang-announce
+mailing list.
+
+To update an existing tree to the latest release, you can run: +
+ ++$ cd go/src +$ hg pull +$ hg update release +$ ./all.bash ++ +
+To use the weekly tag run hg update weekly instead.
+
+The Go compilation environment can be customized by environment variables. +None are required by the build, but you may wish to set them +to override the defaults. +
+ +$GOROOT
+
+ The root of the Go tree, often $HOME/go.
+ This defaults to the parent of the directory where all.bash is run.
+ If you choose not to set $GOROOT, you must
+ run gomake instead of make or gmake
+ when developing Go programs using the conventional makefiles.
+
$GOROOT_FINAL
+
+ The value assumed by installed binaries and scripts when
+ $GOROOT is not set.
+ It defaults to the value used for $GOROOT.
+ If you want to build the Go tree in one location
+ but move it elsewhere after the build, set
+ $GOROOT_FINAL to the eventual location.
+
$GOOS and $GOARCH
+
+ The name of the target operating system and compilation architecture.
+ These default to the values of $GOHOSTOS and
+ $GOHOSTARCH respectively (described below).
+
+
+ Choices for $GOOS are
+ darwin (Mac OS X 10.5 and above), freebsd,
+ linux, netbsd, openbsd,
+ plan9, and windows.
+ Choices for $GOARCH are
+ amd64 (64-bit x86, the most mature port),
+ 386 (32-bit x86), and arm (32-bit ARM).
+ The valid combinations of $GOOS and $GOARCH are:
+
$GOOS | $GOARCH | + | |
|---|---|---|---|
darwin | 386 |
+ ||
darwin | amd64 |
+ ||
freebsd | 386 |
+ ||
freebsd | amd64 |
+ ||
linux | 386 |
+ ||
linux | amd64 |
+ ||
linux | arm |
+ ||
netbsd | 386 |
+ ||
netbsd | amd64 |
+ ||
openbsd | 386 |
+ ||
openbsd | amd64 |
+ ||
plan9 | 386 |
+ ||
windows | 386 |
+ ||
windows | amd64 |
+
+
$GOHOSTOS and $GOHOSTARCH
++ The name of the host operating system and compilation architecture. + These default to the local system's operating system and + architecture. + +
+ Valid choices are the same as for $GOOS and
+ $GOARCH, listed above.
+ The specified values must be compatible with the local system.
+ For example, you should not set $GOHOSTARCH to
+ arm on an x86 system.
+
$GOBIN
+
+ The location where binaries will be installed.
+ The default is $GOROOT/bin.
+ After installing, you will want to arrange to add this
+ directory to your $PATH, so you can use the tools.
+
$GOARM (arm, default=6)
+
+ The ARM architecture version the run-time libraries should target.
+ Setting $GOARM to 5 causes the linker to emit calls
+ to a software floating point implementation instead of using
+ hardware floating point support.
+
+Note that $GOARCH and $GOOS identify the
+target environment, not the environment you are running on.
+In effect, you are always cross-compiling.
+By architecture, we mean the kind of binaries
+that the target environment can run:
+an x86-64 system running a 32-bit-only operating system
+must set GOARCH to 386,
+not amd64.
+
+If you choose to override the defaults,
+set these variables in your shell profile ($HOME/.bashrc,
+$HOME/.profile, or equivalent). The settings might look
+something like this:
+
+export GOROOT=$HOME/go +export GOARCH=amd64 +export GOOS=linux +diff --git a/doc/install.html b/doc/install.html index b3d48e379a..04d466b7e5 100644 --- a/doc/install.html +++ b/doc/install.html @@ -5,257 +5,140 @@
Go is an open source project, distributed under a -BSD-style license. -This document explains how to check out the sources, -build them on your own machine, and run them. +
+Go is an open source project with a BSD-style license.
+There are two official Go compiler toolchains: the gc Go compiler
+and the gccgo compiler that is part of the GNU C Compiler (GCC).
-There are two distinct ways to experiment with Go.
-This document focuses on the gc Go
-compiler and tools (6g, 8g etc.).
-For information on how to use gccgo, a more traditional
-compiler using the GCC back end, see
-Setting up and using gccgo.
+The gc compiler is the more mature and well-tested of the two.
+This page is about installing a binary distribution of the gc
+compiler.
-The Go compilers support three instruction sets.
-There are important differences in the quality of the compilers for the different
-architectures.
+For information about installing the gc compiler from source, see
+Installing Go from source.
+For information about installing gccgo, see
+Setting up and using gccgo.
amd64 (a.k.a. x86-64); 6g,6l,6c,6a
-gccgo
- can do noticeably better sometimes).
-386 (a.k.a. x86 or x86-32); 8g,8l,8c,8a
-amd64 port.
-arm (a.k.a. ARM); 5g,5l,5c,5a
--Except for things like low-level operating system interface code, the run-time -support is the same in all ports and includes a mark-and-sweep garbage collector -(a fancier one is in the works), efficient array and string slicing, -support for segmented stacks, and a strong goroutine implementation. +Visit the +Go project's downloads page +and select the binary distribution that matches +your operating system and processor architecture.
-The compilers can target the FreeBSD, Linux, OpenBSD -and OS X (a.k.a. Darwin) operating systems. -(A port to Microsoft Windows is in progress but incomplete. See the -Windows Port -page for details.) -The full set of supported combinations is listed in the discussion of -environment variables below. -
- -The Go tool chain is written in C. -To build it, you need these programs installed: -
On OS X, they can be
-installed as part of
-Xcode.
+Official binary distributions are available
+for the FreeBSD, Linux, Mac OS X, and Windows operating systems
+and the 32-bit (386) and 64-bit (amd64)
+x86 processor architectures.
On Ubuntu/Debian, use sudo apt-get install bison gawk gcc libc6-dev
-make. If you want to build 32-bit binaries on a 64-bit system you'll
-also need the libc6-dev-i386 package.
+
+If a binary distribution is not available for your +OS/arch combination you may want to try +installing from source or +installing gccgo instead of gc.
-
-To perform the next step you must have Mercurial installed. (Check that you have an hg command.) This suffices to install Mercurial on most systems:
-
-sudo easy_install mercurial==2.0 --(On Ubuntu/Debian, you might try
apt-get install python-setuptools
-python-dev build-essential first. The Mercurial in your distribution's
-package repository will most likely be old and broken.)
-
--If that fails, try installing manually from the Mercurial Download page.
+The Go binary distributions assume they will be installed in +/usr/local/go, but it is possible to install them in a different
+location. If you do this, you will need to set the GOROOT
+environment variable to that directory when using the Go tools.
-Mercurial versions 1.7.x and up require the configuration of -Certification Authorities -(CAs). Error messages of the form: -
--warning: code.google.com certificate with fingerprint b1:af: ... bc not verified (check hostfingerprints or web.cacerts config setting) --
-when using Mercurial indicate that the CAs are missing.
-Check your Mercurial version (hg --version) and
-configure the CAs
-if necessary.
+For example, if you installed Go to your home directory you should add the
+following commands to $HOME/.profile:
-
Go will install to a directory named go.
-Change to the directory that will be its parent
-and make sure the go directory does not exist.
-Then check out the repository:
-$ hg clone -u release https://code.google.com/p/go +export GOROOT=$HOME/go +export PATH=$PATH:$GOROOT/bin-
-To build the Go distribution, run
+Extract the archive into /usr/local, creating a Go tree in
+/usr/local/go (typically this must be run as root or through
+sudo):
-$ cd go/src -$ ./all.bash +tar -C /usr/local go.release.go1.tar.gz
-If all goes well, it will finish by printing output like:
+Add /usr/local/go/bin to the PATH environment
+variable. You can do this by adding this line to your /etc/profile
+(for a system-wide installation) or $HOME/.profile:
-ALL TESTS PASSED - ---- -Installed Go for linux/amd64 in /home/you/go. -Installed commands in /home/you/go/bin. -*** You need to add /home/you/go/bin to your $PATH. *** -The compiler is 6g. +export PATH=$PATH:/usr/local/go/bin-
-where the details on the last few lines reflect the operating system, -architecture, and root directory used during the install. -
- -For more information about ways to control the build, -see the discussion of environment variables below.
-
-Given a file file.go, compile it using
+Open the .pkg file and follow the prompts to install the Go tools.
+The package installs the Go distribution to /usr/local/go.
-$ 6g file.go --
-6g is the Go compiler for amd64; it will write the output
-in file.6. The ‘6’ identifies
-files for the amd64 architecture.
-The identifier letters for 386 and arm
-are ‘8’ and ‘5’.
-That is, if you were compiling for 386, you would use
-8g and the output would be named file.8.
+The package should put the /usr/local/go/bin directory in your
+PATH environment variable. You may need to restart any open
+Terminal sessions for the change to take effect.
-To link the file, use +TODO: windows installation instructions.
--$ 6l file.6 -+
-and to run it +Check that Go is installed correctly by building a simple program, as follows.
--$ ./6.out -- -
A complete example: +
+Create a file named hello.go and put the following program in it:
-$ cat >hello.go <<EOF
package main
import "fmt"
func main() {
- fmt.Printf("hello, world\n")
+ fmt.Printf("hello, world\n")
}
-EOF
-$ 6g hello.go
-$ 6l hello.6
-$ ./6.out
-hello, world
-$
-There is no need to list hello.6's package dependencies
-(in this case, package fmt) on the 6l
-command line.
-The linker learns about them by reading hello.6.
+Then run it with the go tool:
+$ go run hello.go +hello, world ++
-To build more complicated programs, you will probably
-want to use a
-Makefile.
-There are examples in places like
-go/src/cmd/godoc/Makefile
-and go/src/pkg/*/Makefile.
-The
-document
-about contributing to the Go project
-gives more detail about
-the process of building and testing Go programs.
+If you see the "hello, world" message then your Go installation is working.
+For more detail about the process of building and testing Go programs +read How to Write Go Code. +
+Build a web application by following the Wiki Codelab. @@ -279,39 +167,6 @@ For the full story, consult Go's extensive documentation.
-
-The Go project maintains two stable tags in its Mercurial repository:
-release and weekly.
-The weekly tag is updated about once a week, and should be used by
-those who want to track the project's development.
-The release tag is given, less often, to those weekly releases
-that have proven themselves to be robust.
-
-Most Go users will want to keep their Go installation at the latest
-release tag.
-New releases are announced on the
-golang-announce
-mailing list.
-
-To update an existing tree to the latest release, you can run: -
- --$ cd go/src -$ hg pull -$ hg update release -$ ./all.bash -- -
-To use the weekly tag run hg update weekly instead.
-
-Bugs can be reported using the Go issue tracker. -
- --For those who wish to keep up with development, -there is another mailing list, golang-checkins, -that receives a message summarizing each checkin to the Go repository. -
- --The Go compilation environment can be customized by environment variables. -None are required by the build, but you may wish to set them -to override the defaults. +Bugs should be reported using the +Go issue tracker.
- -$GOROOT
-$HOME/go.
- This defaults to the parent of the directory where all.bash is run.
- If you choose not to set $GOROOT, you must
- run go tool make instead of make or gmake
- when developing Go programs using the conventional makefiles.
-$GOROOT_FINAL
-$GOROOT is not set.
- It defaults to the value used for $GOROOT.
- If you want to build the Go tree in one location
- but move it elsewhere after the build, set
- $GOROOT_FINAL to the eventual location.
-$GOOS and $GOARCH
-$GOHOSTOS and
- $GOHOSTARCH respectively (described below).
-
-
- Choices for $GOOS are
- darwin (Mac OS X 10.5 or 10.6),
- freebsd, linux, openbsd,
- and windows (Windows, an incomplete port).
- Choices for $GOARCH are amd64 (64-bit x86, the most mature port),
- 386 (32-bit x86), and
- arm (32-bit ARM, an incomplete port).
- The valid combinations of $GOOS and $GOARCH are:
-
$GOOS | $GOARCH | - | |
|---|---|---|---|
darwin | 386 |
- ||
darwin | amd64 |
- ||
freebsd | 386 |
- ||
freebsd | amd64 |
- ||
linux | 386 |
- ||
linux | amd64 |
- ||
linux | arm | incomplete | -|
openbsd | 386 |
- ||
openbsd | amd64 |
- ||
windows | 386 | incomplete | -
$GOHOSTOS and $GOHOSTARCH
-
- Valid choices are the same as for $GOOS and
- $GOARCH, listed above.
- The specified values must be compatible with the local system.
- For example, you should not set $GOHOSTARCH to
- arm on an x86 system.
-
$GOBIN
-$GOROOT/bin.
- After installing, you will want to arrange to add this
- directory to your $PATH, so you can use the tools.
-$GOARM (arm, default=6)
-$GOARM to 5 causes the linker to emit calls
- to a software floating point implementation instead of using
- hardware floating point support.
-
-Note that $GOARCH and $GOOS identify the
-target environment, not the environment you are running on.
-In effect, you are always cross-compiling.
-By architecture, we mean the kind of binaries
-that the target environment can run:
-an x86-64 system running a 32-bit-only operating system
-must set GOARCH to 386,
-not amd64.
-
-If you choose to override the defaults,
-set these variables in your shell profile ($HOME/.bashrc,
-$HOME/.profile, or equivalent). The settings might look
-something like this:
-
-export GOROOT=$HOME/go -export GOARCH=amd64 -export GOOS=linux -