Hello gophers, I'm migrating my codebase to modules and I encountered an issue that I can't figure how to solve.
So, it is a code for a multi service application and each service is structured in the following way: . ├── service │ ├── cmd │ │ └── service │ │ ├── go.mod │ │ └── main.go │ └── pkg │ ├── client │ │ ├── client.go │ │ └── go.mod │ └── service │ ├── go.mod │ └── service.go Where cmd/service is the main implementation and it requires pkg/service. pkg/client is a client for use in other services and it also requires pkg/service. All tree are modules and all replace internal dependencies like that: pkg/go.mod module gitlab.company.com/vladislav.mitov/service/pkg/client go 1.12 require gitlab.company.com/vladislav.mitov/service/pkg/service v0.0.0- 00010101000000-000000000000 replace gitlab.company.com/vladislav.mitov/service/pkg/service => ../service The reason for this structure is that we want all the code related to a service to be in one place and the reason for the multi modules is that by doing that if you import service/pkg/client you don't get the dependencies for service/cmd/service. This looks very good but when I import service/pkg/client from another service I get: go: finding gitlab.company.com/vladislav.mitov/service latest build command-line-arguments: cannot load gitlab.company.com/vladislav.mitov/service/pkg/client: cannot find module providing package gitlab.company.com/vladislav.mitov/service/pkg/client And if I add some debugging info - go run -v -x main.go WORK=/tmp/go-build174805868 > Fetching > https://gitlab.company.com/vladislav.mitov/service/pkg/client?go-get=1 > Parsing meta tags from > https://gitlab.company.com/vladislav.mitov/service/pkg/client?go-get=1 > (status code 200) > > get "gitlab.company.com/vladislav.mitov/service/pkg/client": found meta > tag > get.metaImport{Prefix:"gitlab.company.com/vladislav.mitov/service/pkg/client", > > VCS:"git", > RepoRoot:"https://gitlab.company.com/vladislav.mitov/service/pkg/client"} > at https://gitlab.company.com/vladislav.mitov/service/pkg/client?go-get=1 > mkdir -p /home/master/Workspace/go/pkg/mod/cache/vcs # git2 > https://gitlab.company.com/vladislav.mitov/service/pkg/client > > # lock > /home/master/Workspace/go/pkg/mod/cache/vcs/ff338c7e0e1ae4b0396cc581329d58d26a1e39c55116c29c97948a4a64c797a9.lock# > > /home/master/Workspace/go/pkg/mod/cache/vcs/ff338c7e0e1ae4b0396cc581329d58d26a1e39c55116c29c97948a4a64c797a9 > > for git2 https://gitlab.company.com/vladislav.mitov/service/pkg/client > cd > /home/master/Workspace/go/pkg/mod/cache/vcs/ff338c7e0e1ae4b0396cc581329d58d26a1e39c55116c29c97948a4a64c797a9; > > git ls-remote -q > https://gitlab.company.com/vladislav.mitov/service/pkg/client > > 0.663s # cd > /home/master/Workspace/go/pkg/mod/cache/vcs/ff338c7e0e1ae4b0396cc581329d58d26a1e39c55116c29c97948a4a64c797a9; > > git ls-remote -q > https://gitlab.company.com/vladislav.mitov/service/pkg/client > Fetching https://gitlab.company.com/vladislav.mitov/service/pkg?go-get=1 > Parsing meta tags from > https://gitlab.company.com/vladislav.mitov/service/pkg?go-get=1 (status > code 200) > get "gitlab.company.com/vladislav.mitov/service/pkg": found meta tag > get.metaImport{Prefix:"gitlab.company.com/vladislav.mitov/service/pkg", > VCS:"git", > RepoRoot:"https://gitlab.company.com/vladislav.mitov/service/pkg"} at > https://gitlab.company.com/vladislav.mitov/service/pkg?go-get=1 > mkdir -p /home/master/Workspace/go/pkg/mod/cache/vcs # git2 > https://gitlab.company.com/vladislav.mitov/service/pkg > > # lock > /home/master/Workspace/go/pkg/mod/cache/vcs/09f143e37d8fc82802c4ce59d3fec02d19347221fe46af231bfa83e1bacd4f7a.lock# > > /home/master/Workspace/go/pkg/mod/cache/vcs/09f143e37d8fc82802c4ce59d3fec02d19347221fe46af231bfa83e1bacd4f7a > > for git2 https://gitlab.company.com/vladislav.mitov/service/pkg > cd > /home/master/Workspace/go/pkg/mod/cache/vcs/09f143e37d8fc82802c4ce59d3fec02d19347221fe46af231bfa83e1bacd4f7a; > > git ls-remote -q https://gitlab.company.com/vladislav.mitov/service/pkg > > 0.672s # cd > /home/master/Workspace/go/pkg/mod/cache/vcs/09f143e37d8fc82802c4ce59d3fec02d19347221fe46af231bfa83e1bacd4f7a; > > git ls-remote -q https://gitlab.company.com/vladislav.mitov/service/pkg > > Fetching https://gitlab.company.com/vladislav.mitov/service?go-get=1 > Parsing meta tags from > https://gitlab.company.com/vladislav.mitov/service?go-get=1 (status code > 200) > get "gitlab.company.com/vladislav.mitov/service": found meta tag > get.metaImport{Prefix:"gitlab.company.com/vladislav.mitov/service", > VCS:"git", RepoRoot:"https://gitlab.company.com/vladislav.mitov/service"} > at https://gitlab.company.com/vladislav.mitov/service?go-get=1 > mkdir -p /home/master/Workspace/go/pkg/mod/cache/vcs # git2 > https://gitlab.company.com/vladislav.mitov/service > > # lock > /home/master/Workspace/go/pkg/mod/cache/vcs/d80081ef39cfc1cf3eab3e5e235a832587b977ece2e7753ea963c6c7a32a5cf4.lock# > > /home/master/Workspace/go/pkg/mod/cache/vcs/d80081ef39cfc1cf3eab3e5e235a832587b977ece2e7753ea963c6c7a32a5cf4 > > for git2 https://gitlab.company.com/vladislav.mitov/service > cd > /home/master/Workspace/go/pkg/mod/cache/vcs/d80081ef39cfc1cf3eab3e5e235a832587b977ece2e7753ea963c6c7a32a5cf4; > > git ls-remote -q https://gitlab.company.com/vladislav.mitov/service > > 0.823s # cd > /home/master/Workspace/go/pkg/mod/cache/vcs/d80081ef39cfc1cf3eab3e5e235a832587b977ece2e7753ea963c6c7a32a5cf4; > > git ls-remote -q https://gitlab.company.com/vladislav.mitov/service > > go: finding gitlab.company.com/vladislav.mitov/service latest > Fetching https://gitlab.company.com/vladislav.mitov?go-get=1 > Parsing meta tags from https://gitlab.company.com/vladislav.mitov?go-get=1 > (status code 200) > get "gitlab.company.com/vladislav.mitov": found meta tag > get.metaImport{Prefix:"gitlab.company.com/vladislav.mitov", VCS:"git", > RepoRoot:"https://gitlab.company.com/vladislav.mitov"} at > https://gitlab.company.com/vladislav.mitov?go-get=1 > mkdir -p /home/master/Workspace/go/pkg/mod/cache/vcs # git2 > https://gitlab.company.com/vladislav.mitov > > # lock > /home/master/Workspace/go/pkg/mod/cache/vcs/2bc342ebf7b7d4d45c8e55b84543156cce227042795620ba6431e5a474c93622.lock# > > /home/master/Workspace/go/pkg/mod/cache/vcs/2bc342ebf7b7d4d45c8e55b84543156cce227042795620ba6431e5a474c93622 > > for git2 https://gitlab.company.com/vladislav.mitov > cd > /home/master/Workspace/go/pkg/mod/cache/vcs/2bc342ebf7b7d4d45c8e55b84543156cce227042795620ba6431e5a474c93622; > > git ls-remote -q https://gitlab.company.com/vladislav.mitov > > 1.292s # cd > /home/master/Workspace/go/pkg/mod/cache/vcs/2bc342ebf7b7d4d45c8e55b84543156cce227042795620ba6431e5a474c93622; > > git ls-remote -q https://gitlab.company.com/vladislav.mitov > > Fetching https://gitlab.company.com?go-get=1 > Parsing meta tags from https://gitlab.company.com?go-get=1 (status code > 200) > build command-line-arguments: cannot load > gitlab.company.com/vladislav.mitov/service/pkg/client: cannot find module > providing package gitlab.company.com/vladislav.mitov/service/pkg/client I should note that we host the code in Gitlab who are still now dealing with ?go-get=1 request properly, although based on the debug information above it looks like the problem in not in gitlab. I really don't want to revert it to a one module in the root because that way I fetch way too many dependencies in other-service or separate to multiple repositories. Any idea what could be the issue or how to debug/fix it? Thanks, Vladi -- 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. For more options, visit https://groups.google.com/d/optout.