Skip to content

Enable Firebird 3 on Debian Trixie and Ubuntu Noble#43

Open
fdcastel wants to merge 2 commits into
FirebirdSQL:masterfrom
fdcastel:fix/issue-42-fb3-trixie-noble
Open

Enable Firebird 3 on Debian Trixie and Ubuntu Noble#43
fdcastel wants to merge 2 commits into
FirebirdSQL:masterfrom
fdcastel:fix/issue-42-fb3-trixie-noble

Conversation

@fdcastel
Copy link
Copy Markdown
Member

Fixes #42.

Problem

The official Firebird 3 amd64 tarball links against libncurses.so.5 / libtinfo.so.5. Debian Trixie and Ubuntu Noble both dropped the libncurses5 / libtinfo5 apt packages, so the existing FB3 Dockerfile (which apt-get installs libncurses5) cannot build on those distros. Until now the repo worked around this by excluding the combinations via blockedVariants in assets.json (D-007). Trixie is now the default distro (D-012), so leaving FB3 unsupported there is no longer an acceptable position.

Empirically verified during planning: ldd against every ELF in the unpacked Firebird-3.0.14 tarball shows libncurses.so.5 is the only remaining unresolved dependency on Trixie and Noble — libtommath.so.0 is already handled by the existing symlink in the Dockerfile (line 74). All other deps (libatomic1, libicu74/76, libtomcrypt1, libtommath1) are present on both distros.

Fix

src/Dockerfile.template gains a new RUN step, gated on FIREBIRD_MAJOR == 3, that detects the distro via /etc/os-release and provisions libncurses5 + libtinfo5:

  • debian-bookworm | debian-bullseye | ubuntu-jammyapt-get install -y --no-install-recommends libtinfo5 libncurses5 (unchanged behaviour, just relocated out of the main apt step).
  • debian-trixiecurl + dpkg -i of libtinfo5_6.4-4_amd64.deb and libncurses5_6.4-4_amd64.deb from the bookworm pool at deb.debian.org.
  • ubuntu-noblecurl + dpkg -i of libtinfo5_6.3-2ubuntu0.1_amd64.deb and libncurses5_6.3-2ubuntu0.1_amd64.deb from the jammy/universe pool at archive.ubuntu.com.
  • anything else → build fails with a clear message (not a silent skip).

The previous $([ \$FIREBIRD_MAJOR -eq 3 ] && echo 'libncurses5' || echo 'libncurses6') ternary on the main apt-get line is replaced with plain libncurses6 — all five distros have it, and the new block now owns FB3-specific ncurses provisioning end-to-end.

assets.json:

  • blockedVariants cleared ({}).
  • Every FB3 patch release (3.0.9 → 3.0.14) gains noble and trixie entries in its tags map. 3.0.14 is latest-of-major, so its trixie entry carries the 3.0.14, 3, 3-trixie, 3.0.14-trixie aliases; its noble entry carries 3.0.14-noble, 3-noble. Older patches get 3.0.X-noble and [3.0.X-trixie, 3.0.X] per the existing tag-shape convention.
  • One related distro-config fix: noble's extraPackages gains tzdata. FB3 uses libc localtime() for the TZ env var, which requires /usr/share/zoneinfo; the ubuntu:noble base image, like jammy, ships without it. FB4+ embeds its own zoneinfo and is unaffected, which is why the gap only surfaced when re-enabling FB3 builds on Noble. The matching tzdata package was already in jammy's extraPackages.

DECISIONS.md records this as D-017 and marks D-007 amended. src/README.md.template drops the now-stale "Firebird 3 does not have an image for Ubuntu 24.04 LTS" warning. AGENTS.md line 22 changes Blocked: FB3 + noble (no libncurses5). to Blocked: none..

The new RUN block is text-present in all generated Dockerfiles (FB4/FB5 included) but is a no-op there because the outer if [ "$FIREBIRD_MAJOR" = "3" ] guard short-circuits. FB4 and FB5 image content is unchanged apart from the line-25 ternary collapsing to plain libncurses6.

Test plan

Local (PowerShell on the contributor host):

  • Invoke-Build Prepare and Invoke-Build Update-Readme produce a deterministic, idempotent diff (verified by SHA-256-ing generated/ and README.md before and after a second run).
  • Pester tag unit tests in src/tags.tests.ps1: 6/6 green.
  • Invoke-Build Build -VersionFilter '3.0.14' -DistributionFilter 'trixie' and the matching Invoke-Build Test: 24/24 tests green.
  • Same for 3.0.14 + noble: 24/24 tests green (only after the tzdata fix; the TZ_can_change_system_timezone test was the canary that surfaced the missing zoneinfo).
  • Regression checks 3.0.14+bookworm and 5.0.4+trixie: both 24/24 green.

Fork CI (fdcastel/firebird-docker-fork, ci.yaml on push):

  • Run 25838222556 — success.
  • amd64 runner: build + test of 3.0.14, 4.0.7, 5.0.4 across all five distros — green.
  • arm64 runner: same set; FB3/FB4 are amd64-only per D-015 so arm64 only exercises FB5 — green.
  • Tag unit tests on the amd64 runner — green.

Risks and follow-ups

  • The .deb URLs are pinned to specific bookworm and jammy archive paths. Both pools remain populated through their respective LTS windows (~mid-2028 for bookworm, ~April 2032 for jammy ESM). If a future archive cycle removes a file, the URL can be repointed at snapshot.debian.org / launchpad.net/+archive/... from inside the same case block — no template restructuring required.
  • The pre-existing stale comment Default distro: bookworm on the same AGENTS.md line as the Blocked: text is unrelated drift (the actual default is trixie per D-012); left for a separate PR rather than expanding scope.
  • Verified that src/tags.tests.ps1 does not assert anything about blockedVariants or FB3's absence from any distro — no test edits required for the unblock.

fdcastel and others added 2 commits May 14, 2026 02:32
The FB3 amd64 tarball links against libncurses.so.5/libtinfo.so.5;
those packages were dropped from apt on Debian Trixie and Ubuntu
Noble. Provision them by side-loading the corresponding .debs from
the bookworm (Trixie) and jammy (Noble) archive pools. Gated on
FIREBIRD_MAJOR == 3 via /etc/os-release.

Also adds tzdata to Noble's distro extraPackages: FB3 uses libc
localtime() for the TZ env var, which requires /usr/share/zoneinfo
(absent from ubuntu:noble; FB4+ ships its own zoneinfo).

Records D-017 (supersedes the FB3+Noble clause of D-007).
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.

Add debian trixie image for Firebird 3

1 participant