66# build output oss_source* will be in workdir
77# build image (from project root directory):
88# $ docker build -f tools/build.Dockerfile --tag perfspect-tools:$TAG ./tools
9+
910FROM ubuntu:18.04 AS builder
1011ENV http_proxy=${http_proxy}
1112ENV https_proxy=${https_proxy}
@@ -17,23 +18,42 @@ RUN add-apt-repository ppa:git-core/ppa -y
1718RUN apt-get update && apt-get install -y git build-essential autotools-dev automake \
1819 gawk zlib1g-dev libtool libaio-dev libaio1 pandoc pkgconf libcap-dev docbook-utils \
1920 libreadline-dev default-jre default-jdk cmake flex bison libssl-dev
20-
2121ENV JAVA_HOME=/usr/lib/jvm/java-1.11.0-openjdk-amd64
22-
2322# need golang to build go tools
2423RUN rm -rf /usr/local/go && wget -qO- https://go.dev/dl/go1.23.0.linux-amd64.tar.gz | tar -C /usr/local -xz
2524ENV PATH="${PATH}:/usr/local/go/bin"
26-
2725# need up-to-date zlib (used by stress-ng static build) to fix security vulnerabilities
2826RUN git clone https://github.com/madler/zlib.git && cd zlib && ./configure && make install
2927RUN cp /usr/local/lib/libz.a /usr/lib/x86_64-linux-gnu/libz.a
30-
3128# Build third-party components
3229RUN mkdir workdir
3330ADD . /workdir
3431WORKDIR /workdir
3532RUN make tools && make oss-source
3633
34+ FROM ubuntu:22.04 AS perf-builder
35+ ENV http_proxy=${http_proxy}
36+ ENV https_proxy=${https_proxy}
37+ ENV LANG=en_US.UTF-8
38+ ARG DEBIAN_FRONTEND=noninteractive
39+ RUN apt-get update && apt-get install -y apt-utils locales wget curl git netcat-openbsd software-properties-common jq zip unzip
40+ RUN locale-gen en_US.UTF-8 && echo "LANG=en_US.UTF-8" > /etc/default/locale
41+ RUN add-apt-repository ppa:git-core/ppa -y
42+ RUN apt-get update && apt-get install -y \
43+ automake autotools-dev binutils-dev bison build-essential clang cmake debuginfod \
44+ default-jdk default-jre docbook-utils flex gawk git libaio-dev libaio1 \
45+ libbabeltrace-dev libbpf-dev libc6 libcap-dev libdw-dev libdwarf-dev libelf-dev \
46+ libiberty-dev liblzma-dev libnuma-dev libperl-dev libpfm4-dev libreadline-dev \
47+ libslang2-dev libssl-dev libtool libtraceevent-dev libunwind-dev libzstd-dev \
48+ libzstd1 llvm-13 pandoc pkgconf python-setuptools python2-dev python3 python3-dev \
49+ python3-pip systemtap-sdt-dev zlib1g-dev
50+ ENV PATH="${PATH}:/usr/lib/llvm-13/bin"
51+ RUN mkdir workdir
52+ ADD . /workdir
53+ WORKDIR /workdir
54+ RUN make perf
55+
3756FROM scratch AS output
3857COPY --from=builder workdir/bin /bin
3958COPY --from=builder workdir/oss_source* /
59+ COPY --from=perf-builder workdir/bin/ /bin
0 commit comments