Skip to content

fix(ci): install libprotobuf-dev in the Debian 12 release containers - #54

Merged
jja725 merged 1 commit into
lance-format:mainfrom
jja725:fix/debian12-protobuf-wkt
Aug 6, 2026
Merged

fix(ci): install libprotobuf-dev in the Debian 12 release containers#54
jja725 merged 1 commit into
lance-format:mainfrom
jja725:fix/debian12-protobuf-wkt

Conversation

@jja725

@jja725 jja725 commented Aug 6, 2026

Copy link
Copy Markdown
Collaborator

Fixes the two failing debian12 rows in the v0.1.5 release run. Regression from #53, which was mine.

What broke

Both debian12 rows died at Configure + build about 14 minutes in, while the ubuntu-24.04 rows succeeded:

error: failed to run custom build command for `lance-encoding v7.0.0-beta.7`
Caused by:
  Error: Custom { kind: Other, error: "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.
  encodings_v2_0.proto:343:5: \"google.protobuf.Empty\" is not defined." }

protoc installed fine. What was missing were the well-known type definitions under /usr/include/google/protobuf/, which lance-encoding's build script imports.

Root cause

On Debian and Ubuntu those .proto files ship in libprotobuf-dev, and protobuf-compiler only Recommends it rather than depending on it. The ubuntu-24.04 rows run a plain apt-get install -y protobuf-compiler, which honors Recommends and picks it up implicitly. The container step I added in #53 uses --no-install-recommends, which silently dropped it.

Isolated by comparing all four combinations in real containers:

environment empty.proto import compiles
debian:12, protobuf-compiler --no-install-recommends missing FAILS
debian:12, protobuf-compiler (recommends on) present OK
debian:12, protobuf-compiler libprotobuf-dev present OK
ubuntu:24.04, protobuf-compiler present OK

Row 1 reproduces the CI failure with the same two error strings. Rows 2 and 3 both resolve it.

Why this fix

Adding libprotobuf-dev explicitly rather than dropping --no-install-recommends. It names the actual dependency, and it keeps the other eleven packages from pulling in their own recommends.

Test plan

The controlled comparison above was run in real debian:12 and ubuntu:24.04 containers. actionlint reports no new findings (the two SC2035/SC2129 hits in the publish job predate #53).

Full end-to-end proof is the release workflow itself. Worth re-dispatching Release at v0.1.5 once this lands, before cutting anything new.

Note for #50

If #50 lands, this becomes moot for the same reason: its protoc install extracts include/* from the upstream release zip, which is exactly the well-known types. That approach sidesteps the Recommends trap entirely and is arguably the more robust one.

🤖 Generated with Claude Code

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 lance-format#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) <noreply@anthropic.com>
@jja725
jja725 merged commit 0de50b2 into lance-format:main Aug 6, 2026
7 checks passed
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

Successfully merging this pull request may close these issues.

1 participant