[PATCH platform2] vm_tools: proto: fix parallel build

Alyssa Ross
2020-06-02T00:37:24Z

fuzzer-protos depends on vm-crash-rpcs, but this dependency wasn't
declared, causing build failures like the following:

[26/52] CXX obj/out/Release/gen/include/vm_protos/proto_bindings/libfuzzer-protos.fuzzer.grpc.pb.o
FAILED: obj/out/Release/gen/include/vm_protos/proto_bindings/libfuzzer-protos.fuzzer.grpc.pb.o
c++ -MMD -MF obj/out/Release/gen/include/vm_protos/proto_bindings/libfuzzer-protos.fuzzer.grpc.pb.o.d -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -Igen/include -I../../common-mk -I/usr/include -Igen -Igen -Igen -Igen -Wall -Wunused -Wno-unused-parameter -Wunreachable-code -ggdb3 -fstack-protector-strong -Wformat=2 -fvisibility=internal -Wa,--noexecstack -Wimplicit-fallthrough -Werror --sysroot= -fPIE -fvisibility=default -pthread -I/nix/store/pjl2q3lny3c18ypqjcv0q3akyq89hg2i-grpc-1.28.1/include -I/nix/store/hya0y6slws66h99njc2yiz02irfv4n62-openssl-1.1.1g-dev/include -I/nix/store/mfpg3sk5vk9rm99hbpmd3dgvxqybd391-protobuf-3.8.0/include -pthread -I/nix/store/pjl2q3lny3c18ypqjcv0q3akyq89hg2i-grpc-1.28.1/include -I/nix/store/hya0y6slws66h99njc2yiz02irfv4n62-openssl-1.1.1g-dev/include -I/nix/store/mfpg3sk5vk9rm99hbpmd3dgvxqybd391-protobuf-3.8.0/include -Wno-unreachable-code -std=gnu++14 -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables -Wno-psabi -c gen/include/vm_protos/proto_bindings/fuzzer.grpc.pb.cc -o obj/out/Release/gen/include/vm_protos/proto_bindings/libfuzzer-protos.fuzzer.grpc.pb.o
In file included from gen/include/vm_protos/proto_bindings/fuzzer.grpc.pb.cc:5:
gen/include/vm_protos/proto_bindings/fuzzer.pb.h:38:10: fatal error: vm_crash.pb.h: No such file or directory
38 | #include "vm_crash.pb.h"
| ^~~~~~~~~~~~~~~
compilation terminated.
ninja: build stopped: subcommand failed.

Reported-by: Cole Helbling <cole.e.helbling@outlook.com>
---

> Michael Raskin <7c6f434c@mail.ru> writes:
>
>>>>> In file included from gen/include/vm_protos/proto_bindings/fuzzer.grpc.pb.cc:5:
>>>>> gen/include/vm_protos/proto_bindings/fuzzer.pb.h:38:10: fatal error: vm_crash.pb.h: No such file or directory
>>>>> 38 | #include "vm_crash.pb.h"
>>>>> | ^~~~~~~~~~~~~~~
>>>>> compilation terminated.
>>>>> ninja: build stopped: subcommand failed.
>>>>> builder for '/nix/store/8asskz117p1nhirxaa4pwa0caayxg6c5-vm_protos-83.13020.0.0-rc1.drv' failed with exit code 1
>>
>> The first thing I would check if the same derivation builds elsewhere
>> is the job count. Next step is checking the checksums of build
>> inputs???
>
> I job count is unlikely. On one computer I built with 4 cores, on the
> other I built with 48. But Cole, it might be worth trying with a single
> core.
>
> Is there an easy way to get checksums of built inputs, or do I need to
> do that manually?
>
> Michael, does it build for you?

Looks like it was a parallelism bug after all. Interesting that Cole
saw it and I didn't, even with my -j48 build.

Cole, could you please test this patch?

The easiest way is probably to save the email, and then add
platform2Patches = [ /path/to/email ]; to the vm_protos expression.

vm_tools/proto/BUILD.gn | 1 +
1 file changed, 1 insertion(+)

diff --git a/vm_tools/proto/BUILD.gn b/vm_tools/proto/BUILD.gn
index 713b81853..a25265cab 100644
--- a/vm_tools/proto/BUILD.gn
+++ b/vm_tools/proto/BUILD.gn
@@ -70,6 +70,7 @@ proto_library("fuzzer-protos") {
deps = [
":container-rpcs",
":tremplin-rpcs",
+ ":vm-crash-rpcs",
]
sources = [
"${proto_in_dir}/fuzzer.proto",
--
2.26.2