Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
name: ci
on:
push:
branches: ['*']
branches: ['**']
tags-ignore: ['*']
pull_request:
jobs:
Expand Down
8 changes: 8 additions & 0 deletions Changes
Original file line number Diff line number Diff line change
@@ -1,5 +1,13 @@
{{$NEXT}}

- Docker: build Alien::FFI against the system libffi (apt libffi-dev) instead
of fetching a libffi tarball from a GitHub release page, which broke the
image build intermittently in CI (Alien::Build itself warns the
release-page download negotiator "will typically not work"). The runtime
image now ships libffi8 for the dynamically linked FFI::Platypus. The
vendored libgit2 (share) build is unchanged, so the runtime stays
self-contained.

0.302 2026-06-21 23:04:42Z

- `karr board` now renders a compact, Markdown-flavoured plaintext board
Expand Down
16 changes: 12 additions & 4 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,18 @@ FROM perl:5.40-slim AS builder

RUN apt-get update && apt-get install -y --no-install-recommends \
build-essential cmake pkg-config \
libssl-dev zlib1g-dev libssh2-1-dev git \
libssl-dev zlib1g-dev libssh2-1-dev libffi-dev git \
&& rm -rf /var/lib/apt/lists/*

COPY . /tmp/karr-src

# Install Alien::FFI against the system libffi (libffi-dev above) up front, so it
# links the packaged libffi.so instead of fetching a libffi tarball from a GitHub
# release page — that download is fragile and rate-limited (Alien::Build itself
# warns the release-page negotiator "will typically not work"), and it is what
# broke CI builds intermittently.
RUN ALIEN_INSTALL_TYPE=system cpanm --notest Alien::FFI

# Force Alien::Libgit2 to vendor libgit2 (share build) so the runtime image is
# self-contained — the slim runtime has no system libgit2 to dynamically link.
ENV ALIEN_INSTALL_TYPE=share
Expand All @@ -17,11 +24,12 @@ RUN cpanm --notest --installdeps /tmp/karr-src \

FROM perl:5.40-slim AS runtime-base

# git + runtime shared libs the vendored libgit2.so links against
# (OpenSSL for HTTPS, libssh2 for SSH, zlib for compression).
# git + runtime shared libs: the vendored libgit2.so links against OpenSSL
# (HTTPS), libssh2 (SSH) and zlib (compression); FFI::Platypus now links the
# system libffi (see builder stage), so libffi8 must be present at runtime too.
RUN apt-get update && apt-get install -y --no-install-recommends \
git gosu passwd \
libssl3 libssh2-1 zlib1g \
libssl3 libssh2-1 zlib1g libffi8 \
&& rm -rf /var/lib/apt/lists/*

COPY --from=builder /usr/local/lib/perl5/site_perl/ /usr/local/lib/perl5/site_perl/
Expand Down