kernel: Factor our perf build from main kernel build

The build of the perf utility has been quite bothersome,
with different arches and kernel versions failing.

Since we now have the ful kernel source in the package,
factor out the actual build into Dockerfile.perf

Signed-off-by: Rolf Neugebauer <rn@rneugeba.io>
This commit is contained in:
Rolf Neugebauer 2019-03-06 00:37:31 +00:00
parent 94516fe2a8
commit d041e7d2bf
2 changed files with 37 additions and 14 deletions

View File

@ -172,16 +172,6 @@ RUN DVER=$(basename $(find /tmp/kernel-modules/lib/modules/ -mindepth 1 -maxdept
RUN printf "KERNEL_SOURCE=${KERNEL_SOURCE}\n" > /out/kernel-source-info
# perf
# Only build perf for the latest LTS and the latest stable kernel.
# Skip arm64 for now as perf for 4.19.x fails to build.
RUN if [ "${KERNEL_SERIES}" != 4.9.x ] && [ $(uname -m) != aarch64 ]; then \
mkdir -p /build/perf && \
make -C tools/perf LDFLAGS=-static O=/build/perf && \
strip /build/perf/perf && \
cp /build/perf/perf /out; \
fi
# Download Intel ucode and create a CPIO archive for it
ENV UCODE_URL=https://downloadmirror.intel.com/28039/eng/microcode-20180807.tgz
RUN set -e && \

View File

@ -1,10 +1,43 @@
# This Dockerfile extracts the perf utility from a kernel package and
# places it into a scratch image
# This Dockerfile extracts the source code and headers from a kernel package,
# builds the perf utility, and places it into a scratch image
ARG IMAGE
FROM ${IMAGE} AS kernel
FROM ${IMAGE} AS ksrc
FROM linuxkit/alpine:518c2ed0f398c5508969ac5e033607201fb419ed AS build
RUN apk add \
argp-standalone \
bash \
bc \
binutils-dev \
bison \
build-base \
diffutils \
flex \
gmp-dev \
installkernel \
kmod \
libelf-dev \
mpc1-dev \
mpfr-dev \
sed \
tar \
xz \
xz-dev \
zlib-dev
COPY --from=ksrc /linux.tar.xz /kernel-headers.tar /
RUN tar xf linux.tar.xz && \
tar xf kernel-headers.tar
WORKDIR /linux
RUN mkdir -p /out && \
make -C tools/perf LDFLAGS=-static && \
strip tools/perf/perf && \
cp tools/perf/perf /out
FROM scratch
ENTRYPOINT []
CMD []
WORKDIR /
COPY --from=kernel /perf /usr/bin/perf
COPY --from=build /out/perf /usr/bin/perf