From 90f71c4bb7e8287a521a83f07fc4d54170b5ef94 Mon Sep 17 00:00:00 2001 From: Simon Menke Date: Fri, 1 Jun 2012 10:14:44 +0200 Subject: [PATCH] go: allow building the cross-compilers When the `--cross-compile` option is used the following runtimes will be build: - darwin (386, amd64; with CGO) - linux (386, amd64, arm) - freebsd (386, amd64) - openbsd (386, amd64) - plan9 (386) - windows (386, amd64) Closes #12547. Signed-off-by: Adam Vandenberg --- Library/Formula/go.rb | 57 +++++++++++++++++++++++++++++++++++++------ 1 file changed, 49 insertions(+), 8 deletions(-) diff --git a/Library/Formula/go.rb b/Library/Formula/go.rb index a3182a4d3854..6de5bab2d68a 100644 --- a/Library/Formula/go.rb +++ b/Library/Formula/go.rb @@ -10,28 +10,69 @@ class Go < Formula skip_clean 'bin' + option 'cross-compile-all', "Build the cross-compilers and runtime support for all supported platforms" + option 'cross-compile-common', "Build the cross-compilers and runtime support for darwin, linux and windows" + def install # install the completion script (prefix/'etc/bash_completion.d').install 'misc/bash/go' => 'go-completion.bash' - prefix.install Dir['*'] + if build.include? 'cross-compile-all' + targets = [ + ['darwin', ['386', 'amd64'], { :cgo => true }], + ['linux', ['386', 'amd64', 'arm'], { :cgo => false }], + ['freebsd', ['386', 'amd64'], { :cgo => false }], + + # image/jpeg fails to build + #['netbsd', ['386', 'amd64'], { :cgo => false }], + + ['openbsd', ['386', 'amd64'], { :cgo => false }], + ['plan9', ['386'], { :cgo => false }], + ['windows', ['386', 'amd64'], { :cgo => false }], + ] + elsif build.include? 'cross-compile-common' + targets = [ + ['darwin', ['386', 'amd64'], { :cgo => true }], + ['linux', ['386', 'amd64', 'arm'], { :cgo => false }], + ['windows', ['386', 'amd64'], { :cgo => false }], + ] + else + targets = [ + ['darwin', [''], { :cgo => true }] + ] + end - cd prefix do - # The version check is due to: - # http://codereview.appspot.com/5654068 - (prefix/'VERSION').write 'default' if build.head? + # The version check is due to: + # http://codereview.appspot.com/5654068 + 'VERSION'.write 'default' if build.head? + cd 'src' do # Build only. Run `brew test go` to run distrib's tests. - cd 'src' do - system './make.bash' + targets.each do |(os, archs, opts)| + archs.each do |arch| + ENV['GOROOT_FINAL'] = prefix + ENV['GOOS'] = os + ENV['GOARCH'] = arch + ENV['CGO_ENABLED'] = opts[:cgo] ? "1" : "0" + allow_fail = opts[:allow_fail] ? "|| true" : "" + system "./make.bash --no-clean #{allow_fail}" + end end end + # cleanup ENV + ENV.delete('GOROOT_FINAL') + ENV.delete('GOOS') + ENV.delete('GOARCH') + ENV.delete('CGO_ENABLED') + + Pathname.new('pkg/obj').rmtree + # Don't install header files; they aren't necessary and can # cause problems with other builds. See: # http://trac.macports.org/ticket/30203 # http://code.google.com/p/go/issues/detail?id=2407 - include.rmtree + prefix.install(Dir['*'] - ['include']) end def test