Merge pull request #35 from golangci/support/fix-cross-compilation-goroot
Support/fix cross compilation goroot
This commit is contained in:
commit
2f1cdcc6ae
@ -32,10 +32,18 @@ Sponsored by [GolangCI.com](https://golangci.com): SaaS service for running lint
|
||||
* [Contact Information](#contact-information)
|
||||
|
||||
# Install
|
||||
Recommended way to install is:
|
||||
```bash
|
||||
go get -u github.com/golangci/golangci-lint/cmd/golangci-lint
|
||||
```
|
||||
|
||||
You can also install it by brew:
|
||||
```bash
|
||||
brew install golangci/tap/golangci-lint
|
||||
```
|
||||
|
||||
Check the [releases page](https://github.com/golangci/golangci-lint/releases) to fix the version.
|
||||
|
||||
# Demo
|
||||
Example of output:
|
||||

|
||||
|
@ -9,6 +9,7 @@ import (
|
||||
"io/ioutil"
|
||||
"log"
|
||||
"os"
|
||||
"os/exec"
|
||||
"runtime"
|
||||
"strings"
|
||||
"time"
|
||||
@ -175,7 +176,31 @@ func buildSSAProgram(ctx context.Context, lprog *loader.Program) *ssa.Program {
|
||||
return ssaProg
|
||||
}
|
||||
|
||||
func discoverGoRoot() (string, error) {
|
||||
goroot := os.Getenv("GOROOT")
|
||||
if goroot != "" {
|
||||
return goroot, nil
|
||||
}
|
||||
|
||||
output, err := exec.Command("go", "env", "GOROOT").Output()
|
||||
if err != nil {
|
||||
return "", fmt.Errorf("can't execute go env GOROOT: %s", err)
|
||||
}
|
||||
|
||||
return strings.TrimSpace(string(output)), nil
|
||||
}
|
||||
|
||||
func buildLintCtx(ctx context.Context, linters []pkg.Linter, cfg *config.Config) (*golinters.Context, error) {
|
||||
// Set GOROOT to have working cross-compilation: cross-compiled binaries
|
||||
// have invalid GOROOT. XXX: can't use runtime.GOROOT().
|
||||
goroot, err := discoverGoRoot()
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("can't discover GOROOT: %s", err)
|
||||
}
|
||||
os.Setenv("GOROOT", goroot)
|
||||
build.Default.GOROOT = goroot
|
||||
logrus.Infof("set GOROOT=%q", goroot)
|
||||
|
||||
args := cfg.Run.Args
|
||||
if len(args) == 0 {
|
||||
args = []string{"./..."}
|
||||
|
Loading…
x
Reference in New Issue
Block a user