forked from paulirish/homebrew-versions-1
-
Notifications
You must be signed in to change notification settings - Fork 0
/
go13.rb
136 lines (115 loc) · 4.33 KB
/
go13.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
class Go13 < Formula
desc "Go programming environment (1.3)"
homepage "https://golang.org"
url "https://storage.googleapis.com/golang/go1.3.3.src.tar.gz"
version "1.3.3"
sha256 "1bb6fde89cfe8b9756a875af55d994cce0994861227b5dc0f268c143d91cd5ff"
bottle do
revision 2
sha256 "5a8b572c601cf916c7d610c57f2ba428747446a40fa5ccd55124b83c926ef73a" => :el_capitan
sha256 "aa45dfc5da2f0f2339976fa522e1662adfb7ade889d3d8e769a030d841e5d0a1" => :yosemite
sha256 "3d431f2216a974ec69dd872fb2d03f9b1dc5a6d3a62a8dc0a3683c967d1d84d5" => :mavericks
end
option "with-cc-all", "Build with cross-compilers and runtime support for all supported platforms"
option "with-cc-common", "Build with cross-compilers and runtime support for darwin, linux and windows"
option "without-cgo", "Build without cgo"
option "without-godoc", "godoc will not be installed for you"
option "without-vet", "vet will not be installed for you"
deprecated_option "cross-compile-all" => "with-cc-all"
deprecated_option "cross-compile-common" => "with-cc-common"
resource "gotools" do
url "https://go.googlesource.com/tools.git",
:revision => "69db398fe0e69396984e3967724820c1f631e97"
end
def install
ENV.refurbish_args
# install the completion scripts
bash_completion.install "misc/bash/go" => "go-completion.bash"
zsh_completion.install "misc/zsh/go" => "go"
# host platform (darwin) must come last in the targets list
if build.with? "cc-all"
targets = [
["linux", ["386", "amd64", "arm"]],
["freebsd", ["386", "amd64"]],
["netbsd", ["386", "amd64"]],
["openbsd", ["386", "amd64"]],
["windows", ["386", "amd64"]],
["darwin", ["386", "amd64"]],
]
elsif build.with? "cc-common"
targets = [
["linux", ["386", "amd64", "arm"]],
["windows", ["386", "amd64"]],
["darwin", ["386", "amd64"]],
]
else
targets = [["darwin", [""]]]
end
cd "src" do
targets.each do |os, archs|
cgo_enabled = os == "darwin" && build.with?("cgo") ? "1" : "0"
archs.each do |arch|
ENV["GOROOT_FINAL"] = libexec
ENV["GOOS"] = os
ENV["GOARCH"] = arch
ENV["CGO_ENABLED"] = cgo_enabled
ohai "Building go for #{arch}-#{os}"
system "./make.bash", "--no-clean"
end
end
end
(buildpath/"pkg/obj").rmtree
libexec.install Dir["*"]
(bin/"go13").write_env_script(libexec/"bin/go", :PATH => "#{libexec}/bin:$PATH")
bin.install_symlink libexec/"bin/gofmt" => "gofmt13"
if build.with?("godoc") || build.with?("vet")
ENV.prepend_path "PATH", libexec/"bin"
ENV["GOPATH"] = buildpath
(buildpath/"src/golang.org/x/tools").install resource("gotools")
if build.with? "godoc"
cd "src/golang.org/x/tools/cmd/godoc/" do
system "go", "build"
(libexec/"bin").install "godoc"
end
bin.install_symlink libexec/"bin/godoc" => "godoc13"
end
if build.with? "vet"
cd "src/golang.org/x/tools/cmd/vet/" do
system "go", "build"
# This is where Go puts vet natively; not in the bin.
(libexec/"pkg/tool/darwin_amd64/").install "vet"
end
end
end
end
def caveats; <<-EOS.undent
The `go*` commands in `bin` are suffixed with 13 e.g. `go13`.
As of go 1.2, a valid GOPATH is required to use the `go get` command:
https://golang.org/doc/code.html#GOPATH
You may wish to add the GOROOT-based install location
(with unsuffixed `go*` commands) to your PATH:
export PATH=$PATH:#{opt_libexec}/bin
EOS
end
test do
(testpath/"hello.go").write <<-EOS.undent
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}/go13", "fmt", "hello.go"
assert_equal "Hello World\n", shell_output("#{bin}/go13 run hello.go")
if build.with? "godoc"
assert File.exist?(libexec/"bin/godoc")
assert File.executable?(libexec/"bin/godoc")
end
if build.with? "vet"
assert File.exist?(libexec/"pkg/tool/darwin_amd64/vet")
assert File.executable?(libexec/"pkg/tool/darwin_amd64/vet")
end
end
end