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
25 changes: 25 additions & 0 deletions linux/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,3 +1,23 @@
FROM debian:11 AS debian

RUN apt-get update \
&& apt-get install -y build-essential libevent-dev libpcre2-dev automake libtool pkg-config git curl llvm-13 clang-13 \
&& (pkg-config || true)

ARG release
ENV CFLAGS="-fPIC -pipe ${release:+-O2}"
ENV CC="clang-13"

# Build libgc
ARG gc_version

RUN git clone https://github.com/ivmai/bdwgc \
&& cd bdwgc \
&& git checkout ${gc_version} \
&& ./autogen.sh \
&& ./configure --disable-debug --disable-shared --enable-large-config \
&& make -j$(nproc)

FROM alpine:3.17

# Install dependencies
Expand Down Expand Up @@ -55,10 +75,15 @@ RUN git clone https://github.com/crystal-lang/shards \
\
&& ([ "$(ldd bin/shards 2>&1 | wc -l)" -eq "1" ] || { echo 'shards is not statically linked'; ldd bin/shards; exit 1; })

COPY --from=debian /bdwgc/.libs/libgc.a /libgc-debian.a

ARG package_iteration

RUN \
# Copy libgc.a to /lib/crystal/
mkdir -p /output/lib/crystal/ \
&& cp /libgc-debian.a /output/lib/crystal/libgc.a \
\
# Install crystal
&& make -C /crystal install DESTDIR=/output PREFIX= \
\
Expand Down
12 changes: 0 additions & 12 deletions linux/bundled.dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -5,16 +5,6 @@ RUN apt-get update \

ENV CFLAGS="-fPIC -pipe ${release:+-O2}"

# Build libgc
FROM debian AS bdwgc
ARG gc_version
RUN curl -L https://github.com/ivmai/bdwgc/archive/refs/tags/${gc_version}.tar.gz | tar -zx \
&& mv bdwgc-* bdwgc-${gc_version} \
&& cd bdwgc-${gc_version} \
&& ./autogen.sh \
&& ./configure --disable-debug --disable-shared --enable-large-config \
&& make -j$(nproc)

# build libpcre2
FROM debian AS libpcre2
ARG libpcre2_version
Expand All @@ -37,14 +27,12 @@ RUN git clone https://github.com/libevent/libevent \
FROM debian
ARG crystal_version
ARG package_iteration
ARG gc_version
ARG libpcre2_version
ARG libevent_version

RUN mkdir -p /output/lib/crystal/lib/

# Copy libraries
COPY --from=bdwgc bdwgc-${gc_version}/.libs/libgc.a /output/lib/crystal/
COPY --from=libpcre2 pcre2-${libpcre2_version}/.libs/libpcre2-8.a /output/lib/crystal/
COPY --from=libevent libevent/.libs/libevent.a libevent/.libs/libevent_pthreads.a /output/lib/crystal/

Expand Down