You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fix(fb3): enable Firebird 3 on Trixie and Noble (issue #42)
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).
Copy file name to clipboardExpand all lines: DECISIONS.md
+10Lines changed: 10 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -50,6 +50,8 @@ Decisions made during the v2 rewrite, with rationale.
50
50
51
51
**Rationale:** Firebird 3 depends on `libncurses5`, which was removed from Ubuntu Noble. Rather than special-casing in code, we declare blocked combinations in config.
52
52
53
+
**Amended by D-017** for the FB3 + (Noble | Trixie) carve-out: the mechanism remains, but the FB3 entries have been cleared and the missing dependency is now provisioned in the template.
54
+
53
55
## D-008: Fork CI scope — latest release per major version
54
56
55
57
**Decision:** On forks (non-official repo, non-`workflow_dispatch`), CI builds and tests only the latest release of each major Firebird version (e.g. 5.0.3, 4.0.6, 3.0.13). The official repository always performs a full build of all versions.
@@ -103,3 +105,11 @@ Decisions made during the v2 rewrite, with rationale.
103
105
**Decision:** In `init_db()`, run plain SQL files as `cat "$f" | process_sql`, not `process_sql < "$f"`.
104
106
105
107
**Rationale:**`isql` reads stdin one byte per `read()` syscall (no stdio buffer is set up on stdin). With `cat | isql`, those byte-reads come from a kernel pipe (in-memory, lock-free). With `isql < file`, every byte-read goes through the regular-file path (i_rwsem, atime, FS layer). On native disk this is a ~25 % cost on init.d-driven schema loads; on layered or remote filesystems (Docker Desktop bind mounts on macOS/Windows, gRPC FUSE / virtiofs, NFS) per-syscall overhead amplifies it into 10×+ slowdowns — see [issue #40](https://github.com/FirebirdSQL/firebird-docker/issues/40). The pipe form is also consistent with the compressed cases (`*.sql.gz`, `*.sql.xz`, `*.sql.zst`) which already use a decompressor pipeline. `process_sql` itself stays redirect-friendly so callers other than `init_db` are unaffected.
108
+
109
+
## D-017: Re-enable Firebird 3 on Trixie and Noble via .deb side-load
110
+
111
+
**Decision:** Stop excluding `noble` and `trixie` from FB3 builds. Provision `libncurses5`/`libtinfo5` for FB3 by downloading the corresponding `.deb` files from the bookworm (for Trixie) and jammy (for Noble) archive pools and installing them with `dpkg -i`. Clears `blockedVariants["3"]`.
112
+
113
+
**Rationale:** D-007 declared FB3+Noble unsupportable because `libncurses5` had been dropped from Noble's apt sources, and chose a config-level block over template special-casing. Debian Trixie has since dropped the same packages, which would have required adding Trixie to the block list — defeating the intent of D-012 (Trixie as default distro). The FB3 binaries' only remaining unresolved dependencies on Trixie/Noble are `libncurses.so.5` and `libtinfo.so.5` (verified by `ldd`); the corresponding `.deb` files are still served by the bookworm and jammy archive pools and install cleanly. The workaround is localized to one `RUN` block in the template, gated on `FIREBIRD_MAJOR == 3` and keyed off `/etc/os-release`. Supersedes the FB3 + (Noble | Trixie) clause of D-007. See [issue #42](https://github.com/FirebirdSQL/firebird-docker/issues/42).
114
+
115
+
Also adds `tzdata` to Noble's distro `extraPackages` (matching Jammy). FB3 relies on 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 surfaced only when re-enabling FB3 builds on Noble.
0 commit comments