From 16bfcd473db90d3f497872a483e05b84d86ca81c Mon Sep 17 00:00:00 2001 From: "jianjian.xie" Date: Wed, 5 Aug 2026 23:29:53 -0700 Subject: [PATCH] fix(ci): install libprotobuf-dev in the Debian 12 release containers Both debian12 build rows failed at "Configure + build" in the v0.1.5 release run, ~14 minutes in, while the ubuntu-24.04 rows succeeded: protoc failed: google/protobuf/empty.proto: File not found. encodings_v2_0.proto:8:1: Import "google/protobuf/empty.proto" was not found or had errors. protoc itself was installed correctly. What was missing were the well-known type definitions under /usr/include/google/protobuf/, which lance-encoding's build script imports. On Debian and Ubuntu those files ship in libprotobuf-dev, and protobuf-compiler only Recommends that package rather than depending on it. The ubuntu-24.04 rows run a plain `apt-get install -y protobuf-compiler`, which honors Recommends and therefore picks it up implicitly. The container step added --no-install-recommends, which silently dropped it. That flag was mine, so this is a regression introduced in #53. Isolated with a controlled comparison in real containers: debian:12 protobuf-compiler --no-install-recommends empty.proto absent, import FAILS debian:12 protobuf-compiler (recommends on) present, import OK debian:12 protobuf-compiler + libprotobuf-dev present, import OK ubuntu:24.04 protobuf-compiler present, import OK Adding libprotobuf-dev explicitly is preferred over dropping --no-install-recommends: it states the real dependency and keeps the other eleven packages from pulling in their recommends. Co-Authored-By: Claude Opus 5 (1M context) --- .github/workflows/release.yml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 2f7e7aa..de5ae29 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -68,7 +68,11 @@ jobs: # Runs before checkout so git is present for the clone and for the # Corrosion FetchContent. The image has no sudo and runs as root. # xz-utils backs `tar -cJf` and perl provides `shasum`; neither is in - # the base image. + # the base image. libprotobuf-dev supplies the well-known .proto files + # under /usr/include/google/protobuf/, which lance-encoding's build + # script imports; protobuf-compiler only Recommends it, so + # --no-install-recommends drops it and protoc fails to resolve + # google/protobuf/empty.proto. - name: Install build dependencies (container) if: matrix.container != '' run: | @@ -80,6 +84,7 @@ jobs: cmake \ curl \ git \ + libprotobuf-dev \ libssl-dev \ perl \ pkg-config \