forked from linuxkit/linuxkit
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathDockerfile.bcc
122 lines (109 loc) · 3.55 KB
/
Dockerfile.bcc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
ARG IMAGE
FROM ${IMAGE} as ksrc
FROM linuxkit/alpine:86cd4f51b49fb9a078b50201d892a3c7973d48ec AS build
RUN apk update && apk upgrade -a && \
apk add --no-cache \
argp-standalone \
autoconf \
automake \
bison \
build-base \
clang \
clang-dev \
clang-static \
cmake \
curl \
flex-dev \
fts-dev \
gettext-dev \
git \
iperf3 \
libedit-dev \
libtool \
llvm \
llvm-dev \
llvm-static \
luajit-dev \
m4 \
python \
zlib-dev \
&& true
RUN ln -s /usr/lib/cmake/llvm5/ /usr/lib/cmake/llvm && \
ln -s /usr/include/llvm5/llvm-c/ /usr/include/llvm-c && \
ln -s /usr/include/llvm5/llvm/ /usr/include/llvm
WORKDIR /build
COPY ./bcc.patches/ ./
RUN mv error.h /usr/include/ && \
mv cdefs.h /usr/include/sys/
ENV ELFUTILS_VERSION=0.165
ENV ELFUTILS_SHA256="a7fc9277192caaa5f30b47e8c0518dbcfd8c4a19c6493a63d511d804290ce972"
RUN curl -sSL -O https://fedorahosted.org/releases/e/l/elfutils/0.165/elfutils-$ELFUTILS_VERSION.tar.bz2 && \
echo "${ELFUTILS_SHA256} /build/elfutils-$ELFUTILS_VERSION.tar.bz2" | sha256sum -c - && \
tar xjf elfutils-$ELFUTILS_VERSION.tar.bz2 && \
cd elfutils-$ELFUTILS_VERSION && \
patch -p1 < ../100-musl-compat.patch && \
patch -p0 < ../decl.patch && \
patch -p0 < ../intl.patch
ENV BCC_COMMIT=6972806729da00ecda0235abac61d66c8fad7fad
RUN git clone https://github.com/iovisor/bcc.git && \
cd bcc && \
git checkout $BCC_COMMIT && \
patch -p0 < ../bcc-gnuism.patch && patch -p0 < ../bcc-lua.patch
ENV LJSYSCALL_COMMIT=e587f8c55aad3955dddab3a4fa6c1968037b5c6e
RUN git clone https://github.com/justincormack/ljsyscall.git && \
cd ljsyscall && \
git checkout $LJSYSCALL_COMMIT
COPY --from=ksrc /kernel-headers.tar /build
COPY --from=ksrc /kernel-dev.tar /build
COPY --from=ksrc /kernel.tar /build
RUN tar xf /build/kernel-headers.tar && \
tar xf /build/kernel-dev.tar && \
tar xf /build/kernel.tar
RUN cd elfutils-$ELFUTILS_VERSION && \
aclocal && \
automake && \
./configure --prefix=/usr CFLAGS=-Wno-strict-aliasing && \
make -C libelf && make -C libelf install
RUN mkdir -p bcc/build && cd bcc/build && \
cmake .. -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON \
-DCMAKE_C_FLAGS="-I/build/usr/include" \
-DCMAKE_CXX_FLAGS="-I/build/usr/include" \
-DCMAKE_INSTALL_PREFIX=/usr \
-DLUAJIT_INCLUDE_DIR=/usr/include/luajit-2.1 && \
make && \
make install
RUN mkdir -p /usr/local/share/lua/5.1/ && \
cd ljsyscall && \
cp -a *.lua syscall /usr/local/share/lua/5.1/
RUN mkdir -p /out/usr/ && \
cp -a /build/usr/src /out/usr/ && \
cp -a /build/usr/include /out/usr
RUN mkdir -p /out/usr/lib && \
cp -a /usr/lib/libelf* /out/usr/lib/ && \
cp -a /usr/lib/libstdc* /out/usr/lib/ && \
cp -a /usr/lib/libintl* /out/usr/lib/ && \
cp -a /usr/lib64/* /out/usr/lib/
RUN mkdir -p /out/usr/lib/python2.7 && \
cp -a /usr/lib/python2.7/site-packages /out/usr/lib/python2.7/
RUN mkdir -p /out/usr/share && \
cp -a /usr/share/bcc /out/usr/share/
RUN mkdir -p /out/usr/bin && \
cp -a /usr/bin/bcc-lua /out/usr/bin/
RUN mkdir -p /out/usr/local/share/ && \
cp -a /usr/local/share/lua /out/usr/local/share/
FROM linuxkit/alpine:86cd4f51b49fb9a078b50201d892a3c7973d48ec as mirror
RUN mkdir -p /out/etc/apk && cp -r /etc/apk/* /out/etc/apk/
RUN apk update && apk upgrade -a && \
apk add --no-cache --initdb -p /out \
busybox \
luajit \
python \
zlib \
&& true
FROM scratch
ENTRYPOINT []
CMD []
WORKDIR /
ENV LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/lib64
COPY --from=mirror /out /
COPY --from=build /out /