Created
April 5, 2019 20:06
-
-
Save dgreensp/a882d67d3f9460bdd9dc7af5f05b2516 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class Go < Formula | |
desc "Open source programming language to build simple/reliable/efficient software" | |
homepage "https://golang.org" | |
stable do | |
url "https://storage.googleapis.com/golang/go1.9.2.src.tar.gz" | |
mirror "https://fossies.org/linux/misc/go1.9.2.src.tar.gz" | |
sha256 "665f184bf8ac89986cfd5a4460736976f60b57df6b320ad71ad4cef53bb143dc" | |
go_version = version.to_s.split(".")[0..1].join(".") | |
resource "gotools" do | |
url "https://go.googlesource.com/tools.git", | |
:branch => "release-branch.go#{go_version}" | |
end | |
end | |
bottle do | |
sha256 "e48592bc01134639593d7834270d7fe2b41144e4155a72cd2256ab773e98469e" => :high_sierra | |
sha256 "88c0cc68ff1d616960c89aacc3b2b672deb465cefd247034113b329a24f135ba" => :sierra | |
sha256 "4ae792ffe880c4658a596a82fa8276d39d78d2e7b64e7ac9598649f0eefed90c" => :el_capitan | |
end | |
head do | |
url "https://go.googlesource.com/go.git" | |
resource "gotools" do | |
url "https://go.googlesource.com/tools.git" | |
end | |
end | |
option "without-cgo", "Build without cgo (also disables race detector)" | |
option "without-race", "Build without race detector" | |
# nope # depends_on :macos => :mountain_lion | |
# Don't update this unless this version cannot bootstrap the new version. | |
resource "gobootstrap" do | |
url "https://storage.googleapis.com/golang/go1.7.darwin-amd64.tar.gz" | |
version "1.7" | |
sha256 "51d905e0b43b3d0ed41aaf23e19001ab4bc3f96c3ca134b48f7892485fc52961" | |
end | |
def install | |
(buildpath/"gobootstrap").install resource("gobootstrap") | |
ENV["GOROOT_BOOTSTRAP"] = buildpath/"gobootstrap" | |
cd "src" do | |
ENV["GOROOT_FINAL"] = libexec | |
ENV["GOOS"] = "darwin" | |
ENV["CGO_ENABLED"] = "0" if build.without?("cgo") | |
system "./make.bash", "--no-clean" | |
end | |
(buildpath/"pkg/obj").rmtree | |
rm_rf "gobootstrap" # Bootstrap not required beyond compile. | |
libexec.install Dir["*"] | |
bin.install_symlink Dir[libexec/"bin/go*"] | |
# Race detector only supported on amd64 platforms. | |
# https://golang.org/doc/articles/race_detector.html | |
if build.with?("cgo") && build.with?("race") && MacOS.prefer_64_bit? | |
system bin/"go", "install", "-race", "std" | |
end | |
# Build and install godoc | |
ENV.prepend_path "PATH", bin | |
ENV["GOPATH"] = buildpath | |
(buildpath/"src/golang.org/x/tools").install resource("gotools") | |
cd "src/golang.org/x/tools/cmd/godoc/" do | |
system "go", "build" | |
(libexec/"bin").install "godoc" | |
end | |
bin.install_symlink libexec/"bin/godoc" | |
end | |
def caveats; <<~EOS | |
A valid GOPATH is required to use the `go get` command. | |
If $GOPATH is not specified, $HOME/go will be used by default: | |
https://golang.org/doc/code.html#GOPATH | |
You may wish to add the GOROOT-based install location to your PATH: | |
export PATH=$PATH:#{opt_libexec}/bin | |
EOS | |
end | |
test do | |
(testpath/"hello.go").write <<~EOS | |
package main | |
import "fmt" | |
func main() { | |
fmt.Println("Hello World") | |
} | |
EOS | |
# Run go fmt check for no errors then run the program. | |
# This is a a bare minimum of go working as it uses fmt, build, and run. | |
system bin/"go", "fmt", "hello.go" | |
assert_equal "Hello World\n", shell_output("#{bin}/go run hello.go") | |
# godoc was installed | |
assert_predicate libexec/"bin/godoc", :exist? | |
assert_predicate libexec/"bin/godoc", :executable? | |
if build.with? "cgo" | |
ENV["GOOS"] = "freebsd" | |
system bin/"go", "build", "hello.go" | |
end | |
end | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment