On Tue, Mar 9, 2021 at 10:09 AM tapi...@gmail.com <tapir....@gmail.com>
wrote:

> 1. By the document, it looks it should check the result of `go env GOROOT`
> firstly, but it doesn't.
>

I don't think that's true. The documentation says, it looks in $GOROOT and
if that's not set, in the GOROOT of the go binary it was built on. `go env
GOROOT`, on the other hand, first reports $GOROOT, if set, and otherwise
reports the GOROOT *that particular go command resides in*. That is, `go
env GOROOT` does not report $GOROOT, it also has its own, distinct fallback
built in, which may differ from the one `foo` uses (if it was built with
another go installation).

That, again, seems like the correct choice - after all, we can't assume
there actually *is* a go command, when we run `foo`. It is common to run a
go binary on a system without a go installation.

2. It exposes some personal privacy to make the last attempt work. By the
> document, it looks some personal privacy will be always record in the
> binary file, even if the last attempt is not adopted in the end.
>

That is true. I think the practicalities of being able to run go tools
without configuration or environment variables outweigh this, though. For
example, if a user installs go and (say) goimports from their distribution
repository, we want the goimports binary to be able to find stdlib
packages, even if the user does not have GOROOT set.
Having the actual filesystem paths built in also simplifies debugging - it
means a debugger can find the files and show you source information. While
`go env GOROOT` might be able to replace the fallback for the former
use-case, it wouldn't be available to the debugger.

Note that you can always remove any host-specific information by building a
go release in a generic path and use that to build go packages. That is
also what happens if you use a go release provided by your distribution. So
the downsides don't seem enormous, given that you can always circumvent
them with relatively little hassle.


> On Tuesday, March 9, 2021 at 2:53:19 AM UTC-5 axel.wa...@googlemail.com
> wrote:
>
>> https://golang.org/pkg/runtime/#GOROOT
>>
>> GOROOT returns the root of the Go tree. It uses the GOROOT environment
>>> variable, if set at process start, or else the root used during the Go
>>> build.
>>
>>
>> I don't understand how you expect a binary to find GOROOT otherwise, if
>> you don't set the environment variable.
>>
>> On Tue, Mar 9, 2021 at 6:38 AM tapi...@gmail.com <tapi...@gmail.com>
>> wrote:
>>
>>> I have two machines, their GOROOTs are different.
>>> I build a binary on one machine then transfer the binary to the other.
>>> It runs well on the machine the binary is produced on, but fails on the
>>> other.
>>>
>>> The code reporting the error is
>>>
>>>       unsafePkg, err := build.Import("unsafe", "", build.FindOnly)
>>>        if err != nil {
>>>               log.Fatal(fmt.Errorf("build.Import: %w", err))
>>>        }
>>>
>>> The error is
>>>
>>>       build.Import: go/build: go list unsafe: exit status 2
>>>       go: cannot find GOROOT directory: /home/myname/path/of/GOROOT
>>>
>>>
>>> --
>>> You received this message because you are subscribed to the Google
>>> Groups "golang-nuts" group.
>>> To unsubscribe from this group and stop receiving emails from it, send
>>> an email to golang-nuts...@googlegroups.com.
>>> To view this discussion on the web visit
>>> https://groups.google.com/d/msgid/golang-nuts/c02407eb-2fec-4195-8ef3-46a33e233c66n%40googlegroups.com
>>> <https://groups.google.com/d/msgid/golang-nuts/c02407eb-2fec-4195-8ef3-46a33e233c66n%40googlegroups.com?utm_medium=email&utm_source=footer>
>>> .
>>>
>> --
> You received this message because you are subscribed to the Google Groups
> "golang-nuts" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to golang-nuts+unsubscr...@googlegroups.com.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/golang-nuts/d5011895-955d-4400-ab65-122d68dd93d2n%40googlegroups.com
> <https://groups.google.com/d/msgid/golang-nuts/d5011895-955d-4400-ab65-122d68dd93d2n%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
>

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/golang-nuts/CAEkBMfFqO08PqBhyuSGncfdyhO%2By1t4GrpXZ1N3Fz8K0X9s_Mw%40mail.gmail.com.

Reply via email to