Skip to content

deb: install jq from distro package so deb builder images work on arm64 - #1204

Draft
ibrahim halatci (ihalatci) wants to merge 1 commit into
developfrom
ihalatci-arm64-deb-jq-fix
Draft

deb: install jq from distro package so deb builder images work on arm64#1204
ibrahim halatci (ihalatci) wants to merge 1 commit into
developfrom
ihalatci-arm64-deb-jq-fix

Conversation

@ihalatci

Copy link
Copy Markdown
Contributor

What / why

The deb builder installs jq via the amd64-only jq-linux64 GitHub release binary:

RUN curl -sL https://github.com/stedolan/jq/releases/download/jq-1.5/jq-linux64 \
         -o /usr/bin/jq \
    && chmod +x /usr/bin/jq

jq is used only in the release path of scripts/fetch_and_build_deb (GPG tag-signature
verification — .object.sha and .verification.verified), so it never surfaced on the jq-free
nightly path. But that hardcoded x86-64 binary hard-fails when the builder image runs on
arm64
, which blocks the upcoming gated arm64 release .deb builds.

This swaps it for the distribution jq package, which is architecture-independent and present in
Debian/Ubuntu main across every target distro:

RUN apt-get update \
    && apt-get install -y --no-install-recommends jq \
    && rm -rf /var/lib/apt/lists/*

The two jq filters in use are trivial and work on any jq >= 1.5, so amd64 behavior is
unchanged
.

Scope (surgical)

  • templates/Dockerfile-deb.tmpl — the source of truth.
  • 10 generated dockerfiles/*-all/Dockerfile (debian bookworm/bullseye/buster/stretch/trixie,
    ubuntu bionic/focal/jammy/noble/resolute) — regenerated from the template.

11 files, identical block swap in each (git diff --stat: 55 insertions / 44 deletions).
RPM (Dockerfile-rpm.tmpl) and pgxn dockerfiles are untouched.

Integrity

check_docker_files_integrity runs ./update_dockerfiles then git diff --exit-code dockerfiles.
Verified locally: after staging these edits, re-running the generator reproduces the committed
dockerfiles byte-for-byte (git diff --quiet dockerfiles → exit 0), so the check stays green.

Guardrails

  • Draft — do not merge / mark ready without operator go.
  • No arch gate here — this is a pure prerequisite for the gated (DEB_BUILD_MULTI_ARCH,
    default OFF) arm64 release deb legs on all-citus / debian-hll / debian-topn (follow-up PRs).
  • No amd64 change — same jq binary is available, filters unchanged.

Part of Track 2 of citusdata/citus#8612 (arm64 Debian Docker images). Follows the merged nightly
leg #1198.

The deb builder installs jq via the amd64-only `jq-linux64` GitHub release
binary. jq is used only in the release path of `scripts/fetch_and_build_deb`
(GPG tag-signature verification), so this never surfaced on the jq-free
nightly path -- but it hard-fails when the builder image runs on arm64,
blocking arm64 release .deb builds.

Switch to the distribution jq package, which is arch-independent and present
in Debian/Ubuntu main across every target distro. The two jq filters used are
trivial and work on any jq >= 1.5, so amd64 behavior is unchanged.

Regenerated the 10 deb `-all` dockerfiles from the template so
`check_docker_files_integrity` (`./update_dockerfiles` + `git diff
--exit-code dockerfiles`) stays green. Verified locally: the generator
reproduces these dockerfiles byte-for-byte.

This is a prerequisite for the gated arm64 release deb legs (Option B); it
carries no arch gate of its own and does not alter amd64 builds.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 0259dd2c-9208-48f9-a8c2-8031dca8ab75
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.

2 participants