facebook / facebook/watchman

Unpinned fizz dependency broke the build

Open
#1,127 0 comments 3 reactions 0 assignees View on GitHub
Dominant language
C++
Stars
13.7k
Forks
1.1k
PR merge metrics
No merged PRs in 30d

Description

Howdy!

Thanks for your work and this project! Yesterday, I built watchman successfully using `./watchman/build/package/watchman-deb/make-deb.sh`. Today, when running the same script the build fails with:

```
[1/6] Building CXX object CMakeFiles/fizz.dir/experimental/ktls/AsyncKTLSSocket.cpp.o
FAILED: CMakeFiles/fizz.dir/experimental/ktls/AsyncKTLSSocket.cpp.o
/usr/bin/c++ -DBOOST_ALL_NO_LIB -DFMT_LOCALE -DGFLAGS_IS_A_DLL=0 -I/pay/tmp/fbcode_builder_getdeps-ZpayZsrcZwatchmanZbuildZfbcode_builder/repos/github.com-facebookincubator-fizz.git -isystem /pay/tmp/fbcode_builder_getdeps-ZpayZsrcZwatchmanZbuildZfbcode_builder/installed/folly/include -isystem /pay/tmp/fbcode_builder_getdeps-ZpayZsrcZwatchmanZbuildZfbcode_builder/installed/fmt-OuYTUdZcDSS2Ymjp-fxwxmxbNYjscJ8ms4gd7UxToIE/include -O2 -g -DNDEBUG -fPIC -std=c++17 -MD -MT CMakeFiles/fizz.dir/experimental/ktls/AsyncKTLSSocket.cpp.o -MF CMakeFiles/fizz.dir/experimental/ktls/AsyncKTLSSocket.cpp.o.d -o CMakeFiles/fizz.dir/experimental/ktls/AsyncKTLSSocket.cpp.o -c /pay/tmp/fbcode_builder_getdeps-ZpayZsrcZwatchmanZbuildZfbcode_builder/repos/github.com-facebookincubator-fizz.git/fizz/experimental/ktls/AsyncKTLSSocket.cpp
In file included from /pay/tmp/fbcode_builder_getdeps-ZpayZsrcZwatchmanZbuildZfbcode_builder/repos/github.com-facebookincubator-fizz.git/fizz/experimental/ktls/AsyncKTLSSocket.cpp:17:
/pay/tmp/fbcode_builder_getdeps-ZpayZsrcZwatchmanZbuildZfbcode_builder/repos/github.com-facebookincubator-fizz.git/fizz/experimental/ktls/AsyncKTLSSocket.h:147:27: error: ‘folly::AsyncSocket::ReadResult fizz::AsyncKTLSSocket::performReadMsg(msghdr&, folly::AsyncReader::ReadCallback::ReadMode)’ marked ‘override’, but does not override
147 | AsyncSocket::ReadResult performReadMsg(
| ^~~~~~~~~~~~~~
[2/6] Building CXX object CMakeFiles/fizz.dir/experimental/ktls/FizzKTLSCallback.cpp.o
FAILED: CMakeFiles/fizz.dir/experimental/ktls/FizzKTLSCallback.cpp.o
/usr/bin/c++ -DBOOST_ALL_NO_LIB -DFMT_LOCALE -DGFLAGS_IS_A_DLL=0 -I/pay/tmp/fbcode_builder_getdeps-ZpayZsrcZwatchmanZbuildZfbcode_builder/repos/github.com-facebookincubator-fizz.git -isystem /pay/tmp/fbcode_builder_getdeps-ZpayZsrcZwatchmanZbuildZfbcode_builder/installed/folly/include -isystem /pay/tmp/fbcode_builder_getdeps-ZpayZsrcZwatchmanZbuildZfbcode_builder/installed/fmt-OuYTUdZcDSS2Ymjp-fxwxmxbNYjscJ8ms4gd7UxToIE/include -O2 -g -DNDEBUG -fPIC -std=c++17 -MD -MT CMakeFiles/fizz.dir/experimental/ktls/FizzKTLSCallback.cpp.o -MF CMakeFiles/fizz.dir/experimental/ktls/FizzKTLSCallback.cpp.o.d -o CMakeFiles/fizz.dir/experimental/ktls/FizzKTLSCallback.cpp.o -c /pay/tmp/fbcode_builder_getdeps-ZpayZsrcZwatchmanZbuildZfbcode_builder/repos/github.com-facebookincubator-fizz.git/fizz/experimental/ktls/FizzKTLSCallback.cpp
In file included from /pay/tmp/fbcode_builder_getdeps-ZpayZsrcZwatchmanZbuildZfbcode_builder/repos/github.com-facebookincubator-fizz.git/fizz/experimental/ktls/FizzKTLSCallback.h:18,
from /pay/tmp/fbcode_builder_getdeps-ZpayZsrcZwatchmanZbuildZfbcode_builder/repos/github.com-facebookincubator-fizz.git/fizz/experimental/ktls/FizzKTLSCallback.cpp:17:
/pay/tmp/fbcode_builder_getdeps-ZpayZsrcZwatchmanZbuildZfbcode_builder/repos/github.com-facebookincubator-fizz.git/fizz/experimental/ktls/AsyncKTLSSocket.h:147:27: error: ‘folly::AsyncSocket::ReadResult fizz::AsyncKTLSSocket::performReadMsg(msghdr&, folly::AsyncReader::ReadCallback::ReadMode)’ marked ‘override’, but does not override
147 | AsyncSocket::ReadResult performReadMsg(
| ^~~~~~~~~~~~~~
[3/6] Building CXX object CMakeFiles/fizz.dir/experimental/ktls/AsyncFizzBaseKTLS.cpp.o
FAILED: CMakeFiles/fizz.dir/experimental/ktls/AsyncFizzBaseKTLS.cpp.o
/usr/bin/c++ -DBOOST_ALL_NO_LIB -DFMT_LOCALE -DGFLAGS_IS_A_DLL=0 -I/pay/tmp/fbcode_builder_getdeps-ZpayZsrcZwatchmanZbuildZfbcode_builder/repos/github.com-facebookincubator-fizz.git -isystem /pay/tmp/fbcode_builder_getdeps-ZpayZsrcZwatchmanZbuildZfbcode_builder/installed/folly/include -isystem /pay/tmp/fbcode_builder_getdeps-ZpayZsrcZwatchmanZbuildZfbcode_builder/installed/fmt-OuYTUdZcDSS2Ymjp-fxwxmxbNYjscJ8ms4gd7UxToIE/include -O2 -g -DNDEBUG -fPIC -std=c++17 -MD -MT CMakeFiles/fizz.dir/experimental/ktls/AsyncFizzBaseKTLS.cpp.o -MF CMakeFiles/fizz.dir/experimental/ktls/AsyncFizzBaseKTLS.cpp.o.d -o CMakeFiles/fizz.dir/experimental/ktls/AsyncFizzBaseKTLS.cpp.o -c /pay/tmp/fbcode_builder_getdeps-ZpayZsrcZwatchmanZbuildZfbcode_builder/repos/github.com-facebookincubator-fizz.git/fizz/experimental/ktls/AsyncFizzBaseKTLS.cpp
In file included from /pay/tmp/fbcode_builder_getdeps-ZpayZsrcZwatchmanZbuildZfbcode_builder/repos/github.com-facebookincubator-fizz.git/fizz/experimental/ktls/AsyncFizzBaseKTLS.h:18,
from /pay/tmp/fbcode_builder_getdeps-ZpayZsrcZwatchmanZbuildZfbcode_builder/repos/github.com-facebookincubator-fizz.git/fizz/experimental/ktls/AsyncFizzBaseKTLS.cpp:18:
/pay/tmp/fbcode_builder_getdeps-ZpayZsrcZwatchmanZbuildZfbcode_builder/repos/github.com-facebookincubator-fizz.git/fizz/experimental/ktls/AsyncKTLSSocket.h:147:27: error: ‘folly::AsyncSocket::ReadResult fizz::AsyncKTLSSocket::performReadMsg(msghdr&, folly::AsyncReader::ReadCallback::ReadMode)’ marked ‘override’, but does not override
147 | AsyncSocket::ReadResult performReadMsg(
| ^~~~~~~~~~~~~~
ninja: build stopped: subcommand failed.
Command '['/usr/bin/cmake', '--build', '/pay/tmp/fbcode_builder_getdeps-ZpayZsrcZwatchmanZbuildZfbcode_builder/build/fizz', '--target', 'install', '--config', 'Release', '-j', '16']' returned non-zero exit status 1.
!! Failed
```

The build is broken because of a new change in `fizz`, and pinning an older version (using `rev` in the manifest) allows me to build successfully again.

It would be great if changes to a repo dependency (they all seem to be meta projects) couldn't break watchman which could be achieved by either:
(1) pinning the dependencies to specific revs
(2) having a centralized CI that validates changes to those projects across all their transitive dependencies. I assume Meta has that in place in their monorepo with several/all of those dependencies. And, as a second step publishing the open source repositories derived from the monorepo in a specific order that does not break the build (maybe all at once?).

What do you think would be a good solution there to make the build process more reliable?

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.