Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Dependency of dependency causing WARNINGS at compile time #207

Closed
johanbrandhorst opened this issue Oct 3, 2016 · 22 comments
Closed

Dependency of dependency causing WARNINGS at compile time #207

johanbrandhorst opened this issue Oct 3, 2016 · 22 comments

Comments

@johanbrandhorst
Copy link
Member

johanbrandhorst commented Oct 3, 2016

When using protoc-gen-gogo I see messages like this for depenencies of a dependency:

2016/10/03 12:13:29 protoc-gen-gogo: WARNING: failed finding publicly imported dependency for .<package_message>, used in <my_package>/<my_package>.proto

When explicitly importing the package in the affected protofile, this warning disappears, but obviously I then instead get the warning that there are unused imports. This seems to imply that there is a problem with the dependency-of-dependency resolution.

@awalterschulze
Copy link
Member

Are you using public import?
Because there is already an issue open for that
#22

If you are not using public import could you maybe make a gist that reproduces the problem?

@johanbrandhorst
Copy link
Member Author

I'll give it a go, thanks for the quick reply!

@awalterschulze
Copy link
Member

Are you using public import?

@johanbrandhorst
Copy link
Member Author

No, just import

@awalterschulze
Copy link
Member

Ok wow then I would really love to see the example gist how this breaks.

@johanbrandhorst
Copy link
Member Author

johanbrandhorst commented Oct 4, 2016

I've made a gist here:

https://gist.github.com/johanbrandhorst/c832922a289a757eac3156b5210e65ef

Note that I couldn't recreate the folder structure entirely, but each proto file is in its own directory like so:

.                                                                                                                                                                       
├── level1                                                                                                                                                              
│   └── level1.proto                                                                                                                                                    
├── level2                                                                                                                                                              
│   └── level2.proto                                                                                                                                                    
└── level3                                                                                                                                                              
    └── level3.proto 

Curiously, I found that

option (gogoproto.populate_all) = true;

was required in the top level file to get the message.

@awalterschulze
Copy link
Member

Thanks this should fix it
99cb9b2

Populate was trying to find loops, but once you are in a different package you don't have to keep on trying to file loops.
Especially since the ObjectNamed method can only look into one level op dependencies.

@tbg
Copy link

tbg commented Nov 4, 2017

At the time of writing, CockroachDB (which does not use public import) is pinned to 342cbe0 (which contains 99cb9b2) and yet we are seeing this after removing an import otherwise warned about as an unused import in mvcc.proto:

$ touch pkg/storage/engine/enginepb/mvcc.proto
$ make protobuf
(cd ./cockroach && git ls-files --exclude-standard --cached --others -- '*.pb.go' | xargs rm -f)
for dir in ./cockroach/pkg/acceptance/cluster/ ./cockroach/pkg/build/ ./cockroach/pkg/ccl/sqlccl/ ./cockroach/pkg/ccl/utilccl/licenseccl/ ./cockroach/pkg/config/ ./cockroach/pkg/gossip/ ./cockroach/pkg/internal/client/ ./cockroach/pkg/roachpb/ ./cockroach/pkg/rpc/ ./cockroach/pkg/server/diagnosticspb/ ./cockroach/pkg/server/serverpb/ ./cockroach/pkg/server/status/ ./cockroach/pkg/settings/cluster/ ./cockroach/pkg/sql/distsqlrun/ ./cockroach/pkg/sql/jobs/ ./cockroach/pkg/sql/pgwire/pgerror/ ./cockroach/pkg/sql/sqlbase/ ./cockroach/pkg/storage/ ./cockroach/pkg/storage/engine/enginepb/ ./cockroach/pkg/storage/storagebase/ ./cockroach/pkg/ts/tspb/ ./cockroach/pkg/util/ ./cockroach/pkg/util/hlc/ ./cockroach/pkg/util/log/ ./cockroach/pkg/util/protoutil/ ./cockroach/pkg/util/tracing/; do \
	  /Users/tschottdorf/go/native/x86_64-apple-darwin16.7.0/protobuf/protoc -I.:./cockroach/vendor/github.com/../github.com/gogo/protobuf:./cockroach/vendor/github.com/../github.com/gogo/protobuf/protobuf:./cockroach/vendor/github.com/coreos:./cockroach/vendor/github.com/../github.com/grpc-ecosystem/grpc-gateway/third_party/googleapis --plugin=/Users/tschottdorf/go/src/github.com/cockroachdb/cockroach/bin/protoc-gen-gogoroach --gogoroach_out=Mgoogle/api/annotations.proto=github.com/grpc-ecosystem/grpc-gateway/third_party/googleapis/google/api,Mgoogle/protobuf/timestamp.proto=github.com/gogo/protobuf/types,,plugins=grpc,import_prefix=github.com/cockroachdb/:./cockroach/.. $dir/*.proto; \
	done
2017/11/03 22:28:06 protoc-gen-gogo: WARNING: failed finding publicly imported dependency for .cockroach.util.hlc.Timestamp, used in cockroach/pkg/storage/engine/enginepb/mvcc.proto
2017/11/03 22:28:06 protoc-gen-gogo: WARNING: failed finding publicly imported dependency for .cockroach.util.hlc.Timestamp, used in cockroach/pkg/storage/engine/enginepb/mvcc.proto
2017/11/03 22:28:07 protoc-gen-gogo: WARNING: failed finding publicly imported dependency for .cockroach.util.hlc.Timestamp, used in cockroach/pkg/storage/engine/enginepb/mvcc.proto
2017/11/03 22:28:07 protoc-gen-gogo: WARNING: failed finding publicly imported dependency for .cockroach.util.hlc.Timestamp, used in cockroach/pkg/storage/engine/enginepb/mvcc.proto
2017/11/03 22:28:07 protoc-gen-gogo: WARNING: failed finding publicly imported dependency for .cockroach.util.hlc.Timestamp, used in cockroach/pkg/storage/engine/enginepb/mvcc.proto
2017/11/03 22:28:07 protoc-gen-gogo: WARNING: failed finding publicly imported dependency for .cockroach.util.hlc.Timestamp, used in cockroach/pkg/storage/engine/enginepb/mvcc.proto
2017/11/03 22:28:08 protoc-gen-gogo: WARNING: failed finding publicly imported dependency for .cockroach.util.hlc.Timestamp, used in cockroach/pkg/storage/engine/enginepb/mvcc.proto
2017/11/03 22:28:08 protoc-gen-gogo: WARNING: failed finding publicly imported dependency for .cockroach.util.hlc.Timestamp, used in cockroach/pkg/storage/engine/enginepb/mvcc.proto

I believe something is left of this bug. Would you mind reopening, @awalterschulze?

@awalterschulze
Copy link
Member

awalterschulze commented Nov 4, 2017

@tbg
Copy link

tbg commented Nov 5, 2017

That's LegacyTimestamp (defined here), not Timestamp.

@tbg
Copy link

tbg commented Nov 5, 2017

(legacy_timestamp.proto is also imported from mvcc.proto)

@awalterschulze
Copy link
Member

Would you mind changing

			log.Printf("protoc-gen-gogo: WARNING: failed finding publicly imported dependency for %v, used in %v", typeName, *g.file.Name)

to a panic in protoc-gen-gogo/generator/generator.go
So that I can see the stack trace?

And can you also print *o.File().Name

@tbg
Copy link

tbg commented Nov 5, 2017

Sure! See below (the from ... is the *o.File().Name).

panic: protoc-gen-gogo: WARNING: failed finding publicly imported dependency for .cockroach.util.hlc.Timestamp, used in cockroach/pkg/storage/engine/enginepb/mvcc.proto, from cockroach/pkg/util/hlc/timestamp.proto

goroutine 1 [running]:
github.com/cockroachdb/cockroach/vendor/github.com/gogo/protobuf/protoc-gen-gogo/generator.(*Generator).ObjectNamed(0xc4200aa900, 0xc4202b25a0, 0x1d, 0x10, 0x10)
	/Users/tschottdorf/go/src/github.com/cockroachdb/cockroach/vendor/github.com/gogo/protobuf/protoc-gen-gogo/generator/generator.go:1130 +0x5fa
github.com/cockroachdb/cockroach/vendor/github.com/gogo/protobuf/protoc-gen-gogo/generator.(*Generator).IsMap(0xc4200aa900, 0xc4202b4a10, 0x10)
	/Users/tschottdorf/go/src/github.com/cockroachdb/cockroach/vendor/github.com/gogo/protobuf/protoc-gen-gogo/generator/helper.go:219 +0x61
github.com/cockroachdb/cockroach/vendor/github.com/gogo/protobuf/plugin/populate.(*plugin).hasLoop(0xc42007e1e0, 0xc4202b4a10, 0xc4204fd1d0, 0x2, 0x2, 0xc4201b6628, 0x0, 0x0, 0xb)
	/Users/tschottdorf/go/src/github.com/cockroachdb/cockroach/vendor/github.com/gogo/protobuf/plugin/populate/populate.go:449 +0x5f
github.com/cockroachdb/cockroach/vendor/github.com/gogo/protobuf/plugin/populate.(*plugin).hasLoop(0xc42007e1e0, 0xc42038b6c0, 0xc4204fd1d0, 0x2, 0x2, 0xc4201b6628, 0x0, 0x0, 0xc4201b6668)
	/Users/tschottdorf/go/src/github.com/cockroachdb/cockroach/vendor/github.com/gogo/protobuf/plugin/populate/populate.go:474 +0x522
github.com/cockroachdb/cockroach/vendor/github.com/gogo/protobuf/plugin/populate.(*plugin).loops(0xc42007e1e0, 0xc42038b6c0, 0xc4204d0c80, 0xc4208dafc0)
	/Users/tschottdorf/go/src/github.com/cockroachdb/cockroach/vendor/github.com/gogo/protobuf/plugin/populate/populate.go:490 +0xb2
github.com/cockroachdb/cockroach/vendor/github.com/gogo/protobuf/plugin/populate.(*plugin).Generate(0xc42007e1e0, 0xc4200a8870)
	/Users/tschottdorf/go/src/github.com/cockroachdb/cockroach/vendor/github.com/gogo/protobuf/plugin/populate/populate.go:525 +0x4fb
github.com/cockroachdb/cockroach/vendor/github.com/gogo/protobuf/protoc-gen-gogo/generator.(*Generator).runPlugins(0xc4200aa900, 0xc4200a8870)
	/Users/tschottdorf/go/src/github.com/cockroachdb/cockroach/vendor/github.com/gogo/protobuf/protoc-gen-gogo/generator/generator.go:1226 +0x59
github.com/cockroachdb/cockroach/vendor/github.com/gogo/protobuf/protoc-gen-gogo/generator.(*Generator).generate(0xc4200aa900, 0xc4200a8870)
	/Users/tschottdorf/go/src/github.com/cockroachdb/cockroach/vendor/github.com/gogo/protobuf/protoc-gen-gogo/generator/generator.go:1282 +0x377
github.com/cockroachdb/cockroach/vendor/github.com/gogo/protobuf/protoc-gen-gogo/generator.(*Generator).GenerateAllFiles(0xc4200aa900)
	/Users/tschottdorf/go/src/github.com/cockroachdb/cockroach/vendor/github.com/gogo/protobuf/protoc-gen-gogo/generator/generator.go:1212 +0x259
github.com/cockroachdb/cockroach/vendor/github.com/gogo/protobuf/vanity/command.Generate(0xc4200540c0, 0x1e)
	/Users/tschottdorf/go/src/github.com/cockroachdb/cockroach/vendor/github.com/gogo/protobuf/vanity/command/command.go:131 +0x232
main.main()
	/Users/tschottdorf/go/src/github.com/cockroachdb/cockroach/pkg/cmd/protoc-gen-gogoroach/main.go:91 +0x162
--gogoroach_out: protoc-gen-gogoroach: Plugin failed with status code 2.

panic: protoc-gen-gogo: WARNING: failed finding publicly imported dependency for .cockroach.util.hlc.Timestamp, used in cockroach/pkg/storage/engine/enginepb/mvcc.proto, from cockroach/pkg/util/hlc/timestamp.proto

goroutine 1 [running]:
github.com/cockroachdb/cockroach/vendor/github.com/gogo/protobuf/protoc-gen-gogo/generator.(*Generator).ObjectNamed(0xc4200abc00, 0xc42021f800, 0x1d, 0xc4200e8448, 0x1011dfd)
	/Users/tschottdorf/go/src/github.com/cockroachdb/cockroach/vendor/github.com/gogo/protobuf/protoc-gen-gogo/generator/generator.go:1130 +0x5fa
github.com/cockroachdb/cockroach/vendor/github.com/gogo/protobuf/protoc-gen-gogo/generator.(*Generator).IsMap(0xc4200abc00, 0xc420227260, 0x10)
	/Users/tschottdorf/go/src/github.com/cockroachdb/cockroach/vendor/github.com/gogo/protobuf/protoc-gen-gogo/generator/helper.go:219 +0x61
github.com/cockroachdb/cockroach/vendor/github.com/gogo/protobuf/plugin/populate.(*plugin).hasLoop(0xc42007e1e0, 0xc420227260, 0xc4203782b0, 0x2, 0x2, 0xc4200e8628, 0x0, 0x0, 0xb)
	/Users/tschottdorf/go/src/github.com/cockroachdb/cockroach/vendor/github.com/gogo/protobuf/plugin/populate/populate.go:449 +0x5f
github.com/cockroachdb/cockroach/vendor/github.com/gogo/protobuf/plugin/populate.(*plugin).hasLoop(0xc42007e1e0, 0xc4202c4e70, 0xc4203782b0, 0x2, 0x2, 0xc4200e8628, 0x0, 0x0, 0xc4200e8668)
	/Users/tschottdorf/go/src/github.com/cockroachdb/cockroach/vendor/github.com/gogo/protobuf/plugin/populate/populate.go:474 +0x522
github.com/cockroachdb/cockroach/vendor/github.com/gogo/protobuf/plugin/populate.(*plugin).loops(0xc42007e1e0, 0xc4202c4e70, 0xc420342f00, 0xc4204e2a00)
	/Users/tschottdorf/go/src/github.com/cockroachdb/cockroach/vendor/github.com/gogo/protobuf/plugin/populate/populate.go:490 +0xb2
github.com/cockroachdb/cockroach/vendor/github.com/gogo/protobuf/plugin/populate.(*plugin).Generate(0xc42007e1e0, 0xc4200a8900)
	/Users/tschottdorf/go/src/github.com/cockroachdb/cockroach/vendor/github.com/gogo/protobuf/plugin/populate/populate.go:525 +0x4fb
github.com/cockroachdb/cockroach/vendor/github.com/gogo/protobuf/protoc-gen-gogo/generator.(*Generator).runPlugins(0xc4200abc00, 0xc4200a8900)
	/Users/tschottdorf/go/src/github.com/cockroachdb/cockroach/vendor/github.com/gogo/protobuf/protoc-gen-gogo/generator/generator.go:1226 +0x59
github.com/cockroachdb/cockroach/vendor/github.com/gogo/protobuf/protoc-gen-gogo/generator.(*Generator).generate(0xc4200abc00, 0xc4200a8900)
	/Users/tschottdorf/go/src/github.com/cockroachdb/cockroach/vendor/github.com/gogo/protobuf/protoc-gen-gogo/generator/generator.go:1282 +0x377
github.com/cockroachdb/cockroach/vendor/github.com/gogo/protobuf/protoc-gen-gogo/generator.(*Generator).GenerateAllFiles(0xc4200abc00)
	/Users/tschottdorf/go/src/github.com/cockroachdb/cockroach/vendor/github.com/gogo/protobuf/protoc-gen-gogo/generator/generator.go:1212 +0x259
github.com/cockroachdb/cockroach/vendor/github.com/gogo/protobuf/vanity/command.Generate(0xc4200540c0, 0x12)
	/Users/tschottdorf/go/src/github.com/cockroachdb/cockroach/vendor/github.com/gogo/protobuf/vanity/command/command.go:131 +0x232
main.main()
	/Users/tschottdorf/go/src/github.com/cockroachdb/cockroach/pkg/cmd/protoc-gen-gogoroach/main.go:91 +0x162
--gogoroach_out: protoc-gen-gogoroach: Plugin failed with status code 2.
panic: protoc-gen-gogo: WARNING: failed finding publicly imported dependency for .cockroach.util.hlc.Timestamp, used in cockroach/pkg/storage/engine/enginepb/mvcc.proto, from cockroach/pkg/util/hlc/timestamp.proto

goroutine 1 [running]:
github.com/cockroachdb/cockroach/vendor/github.com/gogo/protobuf/protoc-gen-gogo/generator.(*Generator).ObjectNamed(0xc4200aac00, 0xc4201a03e0, 0x1d, 0x10, 0x10)
	/Users/tschottdorf/go/src/github.com/cockroachdb/cockroach/vendor/github.com/gogo/protobuf/protoc-gen-gogo/generator/generator.go:1130 +0x5fa
github.com/cockroachdb/cockroach/vendor/github.com/gogo/protobuf/protoc-gen-gogo/generator.(*Generator).IsMap(0xc4200aac00, 0xc42019f960, 0x10)
	/Users/tschottdorf/go/src/github.com/cockroachdb/cockroach/vendor/github.com/gogo/protobuf/protoc-gen-gogo/generator/helper.go:219 +0x61
github.com/cockroachdb/cockroach/vendor/github.com/gogo/protobuf/plugin/populate.(*plugin).hasLoop(0xc42007e1e0, 0xc42019f960, 0xc42039caa0, 0x2, 0x2, 0xc4203b8628, 0x0, 0x0, 0xb)
	/Users/tschottdorf/go/src/github.com/cockroachdb/cockroach/vendor/github.com/gogo/protobuf/plugin/populate/populate.go:449 +0x5f
github.com/cockroachdb/cockroach/vendor/github.com/gogo/protobuf/plugin/populate.(*plugin).hasLoop(0xc42007e1e0, 0xc4201b0930, 0xc42039caa0, 0x2, 0x2, 0xc4203b8628, 0x0, 0x0, 0xc4203b8668)
	/Users/tschottdorf/go/src/github.com/cockroachdb/cockroach/vendor/github.com/gogo/protobuf/plugin/populate/populate.go:474 +0x522
github.com/cockroachdb/cockroach/vendor/github.com/gogo/protobuf/plugin/populate.(*plugin).loops(0xc42007e1e0, 0xc4201b0930, 0xc4201d0320, 0xc420397a40)
	/Users/tschottdorf/go/src/github.com/cockroachdb/cockroach/vendor/github.com/gogo/protobuf/plugin/populate/populate.go:490 +0xb2
github.com/cockroachdb/cockroach/vendor/github.com/gogo/protobuf/plugin/populate.(*plugin).Generate(0xc42007e1e0, 0xc4200a8360)
	/Users/tschottdorf/go/src/github.com/cockroachdb/cockroach/vendor/github.com/gogo/protobuf/plugin/populate/populate.go:525 +0x4fb
github.com/cockroachdb/cockroach/vendor/github.com/gogo/protobuf/protoc-gen-gogo/generator.(*Generator).runPlugins(0xc4200aac00, 0xc4200a8360)
	/Users/tschottdorf/go/src/github.com/cockroachdb/cockroach/vendor/github.com/gogo/protobuf/protoc-gen-gogo/generator/generator.go:1226 +0x59
github.com/cockroachdb/cockroach/vendor/github.com/gogo/protobuf/protoc-gen-gogo/generator.(*Generator).generate(0xc4200aac00, 0xc4200a8360)
	/Users/tschottdorf/go/src/github.com/cockroachdb/cockroach/vendor/github.com/gogo/protobuf/protoc-gen-gogo/generator/generator.go:1282 +0x377
github.com/cockroachdb/cockroach/vendor/github.com/gogo/protobuf/protoc-gen-gogo/generator.(*Generator).GenerateAllFiles(0xc4200aac00)
	/Users/tschottdorf/go/src/github.com/cockroachdb/cockroach/vendor/github.com/gogo/protobuf/protoc-gen-gogo/generator/generator.go:1212 +0x259
github.com/cockroachdb/cockroach/vendor/github.com/gogo/protobuf/vanity/command.Generate(0xc4200540c0, 0x6)
	/Users/tschottdorf/go/src/github.com/cockroachdb/cockroach/vendor/github.com/gogo/protobuf/vanity/command/command.go:131 +0x232
main.main()
	/Users/tschottdorf/go/src/github.com/cockroachdb/cockroach/pkg/cmd/protoc-gen-gogoroach/main.go:91 +0x162
--gogoroach_out: protoc-gen-gogoroach: Plugin failed with status code 2.
panic: protoc-gen-gogo: WARNING: failed finding publicly imported dependency for .cockroach.util.hlc.Timestamp, used in cockroach/pkg/storage/engine/enginepb/mvcc.proto, from cockroach/pkg/util/hlc/timestamp.proto

goroutine 1 [running]:
github.com/cockroachdb/cockroach/vendor/github.com/gogo/protobuf/protoc-gen-gogo/generator.(*Generator).ObjectNamed(0xc4200a9c00, 0xc420291c60, 0x1d, 0x10, 0x10)
	/Users/tschottdorf/go/src/github.com/cockroachdb/cockroach/vendor/github.com/gogo/protobuf/protoc-gen-gogo/generator/generator.go:1130 +0x5fa
github.com/cockroachdb/cockroach/vendor/github.com/gogo/protobuf/protoc-gen-gogo/generator.(*Generator).IsMap(0xc4200a9c00, 0xc42029b730, 0x10)
	/Users/tschottdorf/go/src/github.com/cockroachdb/cockroach/vendor/github.com/gogo/protobuf/protoc-gen-gogo/generator/helper.go:219 +0x61
github.com/cockroachdb/cockroach/vendor/github.com/gogo/protobuf/plugin/populate.(*plugin).hasLoop(0xc42007e1e0, 0xc42029b730, 0xc4201a81b0, 0x2, 0x2, 0xc4204f4628, 0x0, 0x0, 0xb)
	/Users/tschottdorf/go/src/github.com/cockroachdb/cockroach/vendor/github.com/gogo/protobuf/plugin/populate/populate.go:449 +0x5f
github.com/cockroachdb/cockroach/vendor/github.com/gogo/protobuf/plugin/populate.(*plugin).hasLoop(0xc42007e1e0, 0xc42043b730, 0xc4201a81b0, 0x2, 0x2, 0xc4204f4628, 0x0, 0x0, 0xc4204f4668)
	/Users/tschottdorf/go/src/github.com/cockroachdb/cockroach/vendor/github.com/gogo/protobuf/plugin/populate/populate.go:474 +0x522
github.com/cockroachdb/cockroach/vendor/github.com/gogo/protobuf/plugin/populate.(*plugin).loops(0xc42007e1e0, 0xc42043b730, 0xc4204003c0, 0xc4200ed100)
	/Users/tschottdorf/go/src/github.com/cockroachdb/cockroach/vendor/github.com/gogo/protobuf/plugin/populate/populate.go:490 +0xb2
github.com/cockroachdb/cockroach/vendor/github.com/gogo/protobuf/plugin/populate.(*plugin).Generate(0xc42007e1e0, 0xc4200a6900)
	/Users/tschottdorf/go/src/github.com/cockroachdb/cockroach/vendor/github.com/gogo/protobuf/plugin/populate/populate.go:525 +0x4fb
github.com/cockroachdb/cockroach/vendor/github.com/gogo/protobuf/protoc-gen-gogo/generator.(*Generator).runPlugins(0xc4200a9c00, 0xc4200a6900)
	/Users/tschottdorf/go/src/github.com/cockroachdb/cockroach/vendor/github.com/gogo/protobuf/protoc-gen-gogo/generator/generator.go:1226 +0x59
github.com/cockroachdb/cockroach/vendor/github.com/gogo/protobuf/protoc-gen-gogo/generator.(*Generator).generate(0xc4200a9c00, 0xc4200a6900)
	/Users/tschottdorf/go/src/github.com/cockroachdb/cockroach/vendor/github.com/gogo/protobuf/protoc-gen-gogo/generator/generator.go:1282 +0x377
github.com/cockroachdb/cockroach/vendor/github.com/gogo/protobuf/protoc-gen-gogo/generator.(*Generator).GenerateAllFiles(0xc4200a9c00)
	/Users/tschottdorf/go/src/github.com/cockroachdb/cockroach/vendor/github.com/gogo/protobuf/protoc-gen-gogo/generator/generator.go:1212 +0x259
github.com/cockroachdb/cockroach/vendor/github.com/gogo/protobuf/vanity/command.Generate(0xc4200540c0, 0x10)
	/Users/tschottdorf/go/src/github.com/cockroachdb/cockroach/vendor/github.com/gogo/protobuf/vanity/command/command.go:131 +0x232
main.main()
	/Users/tschottdorf/go/src/github.com/cockroachdb/cockroach/pkg/cmd/protoc-gen-gogoroach/main.go:91 +0x162
--gogoroach_out: protoc-gen-gogoroach: Plugin failed with status code 2.

@awalterschulze
Copy link
Member

Ok sorry, that was less useful than I thought.

Maybe uncommenting these printfs would be more useful

//fmt.Fprintf(os.Stderr, "loops %v %v\n", field.GetTypeName(), generator.CamelCaseSlice(message.TypeName()))
//fmt.Fprintf(os.Stderr, "loopTo %v\n", generator.CamelCaseSlice(loopTo.TypeName()))

in populate.go

@tbg
Copy link

tbg commented Nov 5, 2017 via email

@awalterschulze
Copy link
Member

@awalterschulze
Copy link
Member

I am really struggling.
Maybe its because I am context switching between many things.
Is it possible to reproduce this with an isolated gist?
Then we can also use it as a test case to stop regression and I'll be able to iterate on a solution.

@benesch
Copy link
Contributor

benesch commented Nov 30, 2017

Sure, here's a much-simplified example:

diff --git a/pkga/aa.proto b/pkga/aa.proto
new file mode 100644
index 0000000..23bcd45
--- /dev/null
+++ b/pkga/aa.proto
@@ -0,0 +1,13 @@
+syntax = "proto3";
+package prototest.pkga;
+option go_package = "pkga";
+
+import "prototest/pkga/ab.proto";
+import "gogoproto/gogo.proto";
+
+message ProtoAA {
+  option (gogoproto.populate) = true;
+
+  ProtoAB ab = 1;
+}
+
diff --git a/pkga/ab.proto b/pkga/ab.proto
new file mode 100644
index 0000000..86c1cbc
--- /dev/null
+++ b/pkga/ab.proto
@@ -0,0 +1,11 @@
+syntax = "proto3";
+package prototest.pkga;
+option go_package = "pkga";
+
+import "prototest/pkgb/b.proto";
+import "gogoproto/gogo.proto";
+
+message ProtoAB {
+  prototest.pkgb.ProtoB b = 1;
+}
+
diff --git a/pkgb/b.proto b/pkgb/b.proto
new file mode 100644
index 0000000..972801b
--- /dev/null
+++ b/pkgb/b.proto
@@ -0,0 +1,9 @@
+syntax = "proto3";
+package prototest.pkgb;
+option go_package = "pkgb";
+
+import "gogoproto/gogo.proto";
+
+message ProtoB {
+}
+

Gist doesn't allow directories, so here's a Zip with the above files for your convenience:
prototest.zip

@benesch
Copy link
Contributor

benesch commented Nov 30, 2017

This turned out to be easy to fix! See #357. 🍻

@awalterschulze
Copy link
Member

Cool fix. Looking forward to merging it :)

benesch added a commit to benesch/cockroach that referenced this issue Nov 30, 2017
Pick up a fix for gogo/protobuf#207, which was causing spurious warnings
when compiling protobufs.
benesch added a commit to benesch/cockroach that referenced this issue Nov 30, 2017
This import is strictly unnecessary, but was provided as a workaround
for gogo/protobuf#207, which is now fixed.
@samsends
Copy link

Still having issues with this...

We are compiling TensorFlow protocol buffers which have nested dependencies. E.g. op_def imports attr_value which imports tensor.

When running the following command in the framework directory, the build throws a long list of failure to import warnings.

Repo:
https://github.com/tensortask/gotfpb

Command run in framework directory:

protoc -I=$GOPATH/src -I=$GOPATH/src/github.com/gogo/protobuf/protobuf -I=$GOPATH/src/github.com -I=protos --gogofaster_out=Mgoogle/protobuf/any.proto=github.com/gogo/protobuf/types,Mgoogle/protobuf/duration.proto=github.com/gogo/protobuf/types,Mgoogle/protobuf/struct.proto=github.com/gogo/protobuf/types,Mgoogle/protobuf/timestamp.proto=github.com/gogo/protobuf/types,Mgoogle/protobuf/wrappers.proto=github.com/gogo/protobuf/types:gen protos/*.proto

Resultant warnings:

...
...
2018/12/21 13:10:57 protoc-gen-gogo: WARNING: failed finding publicly imported dependency for .framework.TensorShapeProto.Dim, used in step_stats.proto
2018/12/21 13:10:57 protoc-gen-gogo: WARNING: failed finding publicly imported dependency for .framework.TensorShapeProto, used in step_stats.proto
2018/12/21 13:10:57 protoc-gen-gogo: WARNING: failed finding publicly imported dependency for .framework.TensorShapeProto, used in step_stats.proto
2018/12/21 13:10:57 protoc-gen-gogo: WARNING: failed finding publicly imported dependency for .framework.TensorShapeProto.Dim, used in step_stats.proto
2018/12/21 13:10:57 protoc-gen-gogo: WARNING: failed finding publicly imported dependency for .framework.TensorShapeProto.Dim, used in step_stats.proto
2018/12/21 13:10:57 protoc-gen-gogo: WARNING: failed finding publicly imported dependency for .framework.TensorShapeProto, used in summary.proto
2018/12/21 13:10:57 protoc-gen-gogo: WARNING: failed finding publicly imported dependency for .framework.TensorShapeProto, used in summary.proto
2018/12/21 13:10:57 protoc-gen-gogo: WARNING: failed finding publicly imported dependency for .framework.TensorShapeProto.Dim, used in summary.proto
2018/12/21 13:10:57 protoc-gen-gogo: WARNING: failed finding publicly imported dependency for .framework.TensorShapeProto.Dim, used in summary.proto
2018/12/21 13:10:57 protoc-gen-gogo: WARNING: failed finding publicly imported dependency for .framework.ResourceHandleProto, used in summary.proto
2018/12/21 13:10:57 protoc-gen-gogo: WARNING: failed finding publicly imported dependency for .framework.ResourceHandleProto, used in summary.proto
2018/12/21 13:10:57 protoc-gen-gogo: WARNING: failed finding publicly imported dependency for .framework.TensorShapeProto, used in summary.proto
2018/12/21 13:10:57 protoc-gen-gogo: WARNING: failed finding publicly imported dependency for .framework.TensorShapeProto, used in summary.proto
2018/12/21 13:10:57 protoc-gen-gogo: WARNING: failed finding publicly imported dependency for .framework.TensorShapeProto.Dim, used in summary.proto
2018/12/21 13:10:57 protoc-gen-gogo: WARNING: failed finding publicly imported dependency for .framework.TensorShapeProto.Dim, used in summary.proto
2018/12/21 13:10:57 protoc-gen-gogo: WARNING: failed finding publicly imported dependency for .framework.ResourceHandleProto, used in summary.proto
2018/12/21 13:10:57 protoc-gen-gogo: WARNING: failed finding publicly imported dependency for .framework.ResourceHandleProto, used in summary.proto
2018/12/21 13:10:57 protoc-gen-gogo: WARNING: failed finding publicly imported dependency for .framework.TensorShapeProto, used in summary.proto
2018/12/21 13:10:57 protoc-gen-gogo: WARNING: failed finding publicly imported dependency for .framework.TensorShapeProto, used in summary.proto
2018/12/21 13:10:57 protoc-gen-gogo: WARNING: failed finding publicly imported dependency for .framework.TensorShapeProto.Dim, used in summary.proto
2018/12/21 13:10:57 protoc-gen-gogo: WARNING: failed finding publicly imported dependency for .framework.TensorShapeProto.Dim, used in summary.proto
2018/12/21 13:10:57 protoc-gen-gogo: WARNING: failed finding publicly imported dependency for .framework.ResourceHandleProto, used in summary.proto
2018/12/21 13:10:57 protoc-gen-gogo: WARNING: failed finding publicly imported dependency for .framework.ResourceHandleProto, used in summary.proto
2018/12/21 13:10:57 protoc-gen-gogo: WARNING: failed finding publicly imported dependency for .framework.TensorShapeProto, used in summary.proto
2018/12/21 13:10:57 protoc-gen-gogo: WARNING: failed finding publicly imported dependency for .framework.TensorShapeProto, used in summary.proto
2018/12/21 13:10:57 protoc-gen-gogo: WARNING: failed finding publicly imported dependency for .framework.TensorShapeProto.Dim, used in summary.proto
2018/12/21 13:10:57 protoc-gen-gogo: WARNING: failed finding publicly imported dependency for .framework.TensorShapeProto.Dim, used in summary.proto
2018/12/21 13:10:57 protoc-gen-gogo: WARNING: failed finding publicly imported dependency for .framework.ResourceHandleProto, used in summary.proto
2018/12/21 13:10:57 protoc-gen-gogo: WARNING: failed finding publicly imported dependency for .framework.ResourceHandleProto, used in summary.proto
...
...

Any insight on this would be greatly appreciated. @awalterschulze @benesch

@awalterschulze
Copy link
Member

awalterschulze commented Dec 21, 2018 via email

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants