mirror of
https://github.com/linuxkit/linuxkit.git
synced 2025-08-09 18:47:36 +00:00
103 lines
2.5 KiB
Docker
103 lines
2.5 KiB
Docker
ARG BUILD_IMAGE
|
|
ARG KERNEL_VERSION
|
|
ARG PKG_HASH
|
|
|
|
FROM linuxkit/kernel:${KERNEL_VERSION}-${PKG_HASH} as ksrc
|
|
|
|
FROM ${BUILD_IMAGE} 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 \
|
|
elfutils-dev \
|
|
flex-dev \
|
|
gettext-dev \
|
|
git \
|
|
iperf3 \
|
|
libedit-dev \
|
|
libtool \
|
|
llvm \
|
|
llvm-dev \
|
|
llvm-static \
|
|
llvm17-gtest \
|
|
luajit-dev \
|
|
m4 \
|
|
musl-fts-dev \
|
|
python3 \
|
|
py3-pip \
|
|
xz \
|
|
zip \
|
|
zlib-dev \
|
|
&& true
|
|
|
|
# this is just here to make later copies easier; do not forget to change this if the python version updates
|
|
ENV PYTHON_VERSION=3.11
|
|
|
|
RUN ln -s /usr/lib/cmake/llvm10/ /usr/lib/cmake/llvm && \
|
|
ln -s /usr/include/llvm10/llvm-c/ /usr/include/llvm-c && \
|
|
ln -s /usr/include/llvm10/llvm/ /usr/include/llvm
|
|
|
|
WORKDIR /build
|
|
|
|
ENV BCC_COMMIT=v0.29.1
|
|
RUN git clone https://github.com/iovisor/bcc.git && \
|
|
cd bcc && \
|
|
git checkout $BCC_COMMIT && \
|
|
sed -i 's/<error.h>/<errno.h>/' examples/cpp/KModRetExample.cc
|
|
|
|
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 mkdir -p bcc/build && cd bcc/build && \
|
|
cmake .. -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON \
|
|
-DCMAKE_C_FLAGS="-I/build/usr/include" \
|
|
-DPYTHON_CMD=python3 \
|
|
-DCMAKE_CXX_FLAGS="-I/build/usr/include" \
|
|
-DCMAKE_INSTALL_PREFIX=/usr && \
|
|
make && \
|
|
make install
|
|
|
|
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/
|
|
RUN mkdir -p /out/usr/lib/python${PYTHON_VERSION} && \
|
|
cp -a /usr/lib/python${PYTHON_VERSION}/site-packages /out/usr/lib/python${PYTHON_VERSION}/
|
|
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/
|
|
|
|
FROM ${BUILD_IMAGE} 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 \
|
|
python3 \
|
|
zlib \
|
|
&& true
|
|
|
|
FROM scratch
|
|
ENTRYPOINT []
|
|
CMD []
|
|
WORKDIR /
|
|
ENV LD_LIBRARY_PATH=${LD_LIBRARY_PATH}
|
|
COPY --from=mirror /out /
|
|
COPY --from=build /out /
|