Bug #64907
openSome jammy jenkins builders had rogue versions of protobuf packages
0%
Description
This is a breakout of the original issue from https://tracker.ceph.com/issues/64696
sjust and dmick diagnosed a build failure involving /usr/bin/protoc not being the expected version on jammy builders. Someone/something had installed a /usr/bin/protoc-25.1.0 and symlinked /usr/bin/protoc to it, which broke the build. This was
cross-checked by running debsums protobuf-compiler, which reported the installed
binary was not the one the package contained. The rogue version was manually uninstalled and the package forcibly reinstalled (with apt install --reinstall protobuf-compiler).
Later, Rixin Luo reported similar version mismatches appearing in a build with a similar, maybe same, error message:
/home/jenkins-build/build/workspace/ceph-pull-requests/build/src/seastar/gen/src/proto/metrics2.pb.h:17:2: error: This file was generated by an older version of protoc which is #error This file was generated by an older version of protoc which is ^ /home/jenkins-build/build/workspace/ceph-pull-requests/build/src/seastar/gen/src/proto/metrics2.pb.h:18:2: error: incompatible with your Protocol Buffer headers. Please #error incompatible with your Protocol Buffer headers. Please ^ /home/jenkins-build/build/workspace/ceph-pull-requests/build/src/seastar/gen/src/proto/metrics2.pb.h:19:2: error: regenerate this file with a newer version of protoc. #error regenerate this file with a newer version of protoc.
Rixin Luo discovered that the version of protobuf.pc installed referred to a different version than looked correct (again, 25.1.0). debsums again found errors in libprotobuf-dev (which contains the .pc file, as well as a lot of header files and other things that mismatched). On all the hosts where that was the case (irvingi05 and adami08), libprotobuf-dev was forcibly reinstalled, which fixed the version in protobuf.pc to match the reported version of libprotoc from protoc --version.
This shell script helped to identify the package damage, after installing debsums on the hosts in question:
#!/bin/bash
for p in $(dpkg -l '*protobuf*' | grep '^ii' | awk '{print $2;}'); do
if ! debsums -s $p >/dev/null 2>&1; then
echo $p failed
fi
done
No data to display