File tree Expand file tree Collapse file tree 2 files changed +25
-12
lines changed Expand file tree Collapse file tree 2 files changed +25
-12
lines changed Original file line number Diff line number Diff line change
1
+ FROM debian:11 AS debian
2
+
3
+ RUN apt-get update \
4
+ && apt-get install -y build-essential libevent-dev libpcre2-dev automake libtool pkg-config git curl llvm-13 clang-13 \
5
+ && (pkg-config || true)
6
+
7
+ ARG release
8
+ ENV CFLAGS="-fPIC -pipe ${release:+-O2}"
9
+ ENV CC="clang-13"
10
+
11
+ # Build libgc
12
+ ARG gc_version
13
+
14
+ RUN git clone https://github.com/ivmai/bdwgc \
15
+ && cd bdwgc \
16
+ && git checkout ${gc_version} \
17
+ && ./autogen.sh \
18
+ && ./configure --disable-debug --disable-shared --enable-large-config \
19
+ && make -j$(nproc)
20
+
1
21
FROM alpine:3.17
2
22
3
23
# Install dependencies
@@ -55,10 +75,15 @@ RUN git clone https://github.com/crystal-lang/shards \
55
75
\
56
76
&& ([ "$(ldd bin/shards 2>&1 | wc -l)" -eq "1" ] || { echo 'shards is not statically linked' ; ldd bin/shards; exit 1; })
57
77
78
+ COPY --from=debian /bdwgc/.libs/libgc.a /libgc-debian.a
79
+
58
80
ARG package_iteration
59
81
60
82
RUN \
83
+ # Copy libgc.a to /lib/crystal/
61
84
mkdir -p /output/lib/crystal/ \
85
+ && cp /libgc-debian.a /output/lib/crystal/libgc.a \
86
+ \
62
87
# Install crystal
63
88
&& make -C /crystal install DESTDIR=/output PREFIX= \
64
89
\
Original file line number Diff line number Diff line change @@ -5,16 +5,6 @@ RUN apt-get update \
5
5
6
6
ENV CFLAGS="-fPIC -pipe ${release:+-O2}"
7
7
8
- # Build libgc
9
- FROM debian AS bdwgc
10
- ARG gc_version
11
- RUN curl -L https://github.com/ivmai/bdwgc/archive/refs/tags/${gc_version}.tar.gz | tar -zx \
12
- && mv bdwgc-* bdwgc-${gc_version} \
13
- && cd bdwgc-${gc_version} \
14
- && ./autogen.sh \
15
- && ./configure --disable-debug --disable-shared --enable-large-config \
16
- && make -j$(nproc)
17
-
18
8
# build libpcre2
19
9
FROM debian AS libpcre2
20
10
ARG libpcre2_version
@@ -37,14 +27,12 @@ RUN git clone https://github.com/libevent/libevent \
37
27
FROM debian
38
28
ARG crystal_version
39
29
ARG package_iteration
40
- ARG gc_version
41
30
ARG libpcre2_version
42
31
ARG libevent_version
43
32
44
33
RUN mkdir -p /output/lib/crystal/lib/
45
34
46
35
# Copy libraries
47
- COPY --from=bdwgc bdwgc-${gc_version}/.libs/libgc.a /output/lib/crystal/
48
36
COPY --from=libpcre2 pcre2-${libpcre2_version}/.libs/libpcre2-8.a /output/lib/crystal/
49
37
COPY --from=libevent libevent/.libs/libevent.a libevent/.libs/libevent_pthreads.a /output/lib/crystal/
50
38
You can’t perform that action at this time.
0 commit comments