> GOCACHE seems to default to ~/.cache/go-build on my machine. > Shouldn't GOMODCACHE do the same?
That was decided against: https://go.dev/issue/34527#issuecomment-559185776 > ... It would be super interesting to > have in-repo or in-module metadata that could be used for these flags. General build configurations have been declined: https://go.dev/issue/39005 https://go.dev/issue/42343 There may be appetite for a single set of per-project default config though: https://go.dev/issue/57179#issuecomment-1345398917 Right now, GOENV=path/to/file for every config could work in combination with GOFLAGS, now that quoting is allowed after https://go.dev/issue/26849 - sean On Fri, Jan 20, 2023 at 7:30 PM Tim Hockin <thoc...@google.com> wrote: > Thanks Sean. > > On Fri, Jan 20, 2023 at 10:39 AM 'Sean Liao' via golang-nuts > <golang-nuts@googlegroups.com> wrote: > > > > in module mode, > > GOPATH is really only used for deriving default locations for GOBIN and > GOMODCACHE > > setting it to /dev/null might not be great for caching dependencies if > GOMODCACHE isn't set > > I think it would bring some closure if we could definitively say > "GOPATH isn't needed". > > GOCACHE seems to default to ~/.cache/go-build on my machine. > Shouldn't GOMODCACHE do the same? > > > cross compile to GOBIN was recently (re)opened > > https://go.dev/issue/57485 > > Great - I voted it up, but I don't know if that helps at all. Setting > GOBIN would be a better solution for k8s, if it only worked. > > Another thing that we end up writing scripts for is the various sets > of build flags. Like, if you want to build debug binaries there are > something like 4 flags to change. It would be super interesting to > have in-repo or in-module metadata that could be used for these flags. > > For example, what if I could add something that said "GOBIN=./bin" or > even more flexible. > > > There are open requests to print out the directory where it would be > installed, > > (presumably to update PATH) but not for the actual binaries built. > > https://go.dev/issue/45546 > > Also voted up, but it seems stalled. > > > -o dir/ ending in a slash is documented as: > > > If the named output is an existing directory or > > > ends with a slash or backslash, then any resulting executables > > > will be written to that directory. > > Sure, it's documented, but one mistake and all subsequent invocations > fail. It works, but it's just fragile. > > Tim > > > > On Fri, Jan 20, 2023 at 5:30 PM 'Tim Hockin' via golang-nuts < > golang-nuts@googlegroups.com> wrote: > >> > >> I'm trying to make kubernetes' codebase easier to navigate by people > who have muscle-memory for go. In the past we said "you have to call our > Makefile" to build things. I'd like to make \`go install\` work but I'm > struggling to find a pattern that really works - am I missing something? > >> > >> First, GOPATH is dead. I hate that Go silently writes to my home > directory, which is ALMOST NEVER what I really wanted. > >> > >> Aside: is there any way to get `go install` and `go build` to tell me > what they wrote? Would that be a reasonable feature request? E.g. > >> > >> ``` > >> $ go install --print-result <pkg/path/to/cmd> > >> /home/thockin/go/bin/cmd > >> ``` > >> > >> I usually set GOPATH=/dev/null. > >> > >> ``` > >> $ GOPATH=/dev/null \ > >> go install <pkg> > >> go install <pkg>: mkdir /dev/null: not a directory > >> ``` > >> > >> Good. I want to install to a repo-local dir so all of our CI and stuff > can find it. > >> > >> ``` > >> $ GOPATH=/dev/null \ > >> GOBIN=./bin \ > >> go install <pkg> > >> ``` > >> > >> That works. > >> > >> ``` > >> $ GOPATH=/dev/null \ > >> GOBIN=./bin \ > >> GOARCH=arm \ > >> go install <pkg> > >> go: cannot install cross-compiled binaries when GOBIN is set > >> ``` > >> > >> Well, shoot. I can't find any other way for `go install` to work. > >> > >> ``` > >> $ GOPATH=/dev/null \ > >> GOBIN=./bin \ > >> GOARCH=arm \ > >> go build <pkg> > >> ``` > >> > >> That works, but splats the file into the current dir. To be fair, that > is documented behavior. > >> > >> ``` > >> $ GOPATH=/dev/null \ > >> GOARCH=arm \ > >> go build -o ./bin <pkg> > >> ``` > >> > >> That works, except when ./bin doesn't exist, in which case it becomes > the output file (if I am building 1 thing) or I get an error (if I am > building multiple things): > >> > >> ``` > >> $ GOPATH=/dev/null \ > >> GOARCH=arm \ > >> go build -o ./bin <pkg1> <pkg2> > >> go: cannot write multiple packages to non-directory ./foo > >> ``` > >> > >> I can specify a directory by adding a trailing `/` it seems: > >> > >> ``` > >> $ GOPATH=/dev/null \ > >> GOARCH=arm \ > >> go build -o ./bin/ <pkg1> <pkg2> > >> ``` > >> > >> That seems to work, but I have to get the invocation JUST RIGHT 100% of > the time or risk causing weird errors and CI fails. The obvious answer is > "wrap it in a script or Makefile", which puts me right back where I started. > >> > >> Is there a better answer? > >> > >> Tim > >> > >> -- > >> 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/d04fca5a-8b85-4386-9bae-50853f317fccn%40googlegroups.com > . > > > > -- > > You received this message because you are subscribed to a topic in the > Google Groups "golang-nuts" group. > > To unsubscribe from this topic, visit > https://groups.google.com/d/topic/golang-nuts/Vhd4OZ6vfHc/unsubscribe. > > To unsubscribe from this group and all its topics, 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/CAGabyPocd8cx%3Dyg1arT74ULHoLjB4eNrUm17dqAw6KG8SazmPA%40mail.gmail.com > . > -- 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/CAGabyPoJwEToJECU22zo%2B2qgowKQMtfx8dDR%2BkSXtpbQ9-jReA%40mail.gmail.com.