On Tuesday, March 9, 2021 at 5:02:34 AM UTC-5 axel.wa...@googlemail.com 
wrote:

> On Tue, Mar 9, 2021 at 10:09 AM tapi...@gmail.com <tapi...@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.
>

But isn't assuming GOROOT exists almost equivalent to assuming "go" command 
exists?
 

>
> 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...@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/3baa8c24-5eb1-48bf-9fef-9c94ec765e29n%40googlegroups.com.

Reply via email to