mirror of
https://github.com/kata-containers/kata-containers.git
synced 2025-05-11 01:46:30 +00:00
We first try without passing the `--break-system-packages` argument, as that's not supported on Ubuntu 22.04 or older, but that's required on Ubuntu 24.04 or newer. Signed-off-by: Fabiano Fidêncio <fabiano@fidencio.org>
88 lines
3.0 KiB
Docker
88 lines
3.0 KiB
Docker
# Copyright (c) 2018 Yash Jain, 2022 IBM Corp.
|
|
#
|
|
# SPDX-License-Identifier: Apache-2.0
|
|
|
|
ARG IMAGE_REGISTRY=docker.io
|
|
FROM ${IMAGE_REGISTRY}/ubuntu:@OS_VERSION@
|
|
@SET_PROXY@
|
|
|
|
ENV GO_HOME="/opt"
|
|
ENV GOCACHE="${GO_HOME}/.cache"
|
|
ENV RUSTUP_HOME="/opt/rustup"
|
|
ENV CARGO_HOME="/opt/cargo"
|
|
ENV PATH="/opt/cargo/bin/:/opt/go/bin:${PATH}"
|
|
|
|
ARG GO_VERSION
|
|
ARG RUST_TOOLCHAIN
|
|
ENV PATH="/opt/go/bin:${PATH}"
|
|
|
|
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
|
|
|
|
RUN mkdir ${RUSTUP_HOME} ${CARGO_HOME} ${GOCACHE} && \
|
|
chmod -R a+rwX ${RUSTUP_HOME} ${CARGO_HOME} ${GO_HOME}
|
|
|
|
# makedev tries to mknod from postinst
|
|
RUN [ -x /usr/bin/systemd-detect-virt ] || ( echo "echo docker" >/usr/bin/systemd-detect-virt && chmod +x /usr/bin/systemd-detect-virt )
|
|
# hadolint ignore=DL3009,SC2046
|
|
RUN apt-get update && \
|
|
DEBIAN_FRONTEND=noninteractive \
|
|
apt-get --no-install-recommends -y install \
|
|
ca-certificates \
|
|
curl \
|
|
g++ \
|
|
$(gcc_arch="@ARCH@" && [ "$(uname -m)" != "$gcc_arch" ] && ( \
|
|
libc_arch="$gcc_arch" && \
|
|
[ "$gcc_arch" = aarch64 ] && libc_arch=arm64; \
|
|
[ "$gcc_arch" = ppc64le ] && gcc_arch=powerpc64le && libc_arch=ppc64el; \
|
|
[ "$gcc_arch" = s390x ] && gcc_arch=s390x && libc_arch=s390x; \
|
|
[ "$gcc_arch" = x86_64 ] && gcc_arch=x86-64 && libc_arch=amd64; \
|
|
echo "gcc-$gcc_arch-linux-gnu libc6-dev-$libc_arch-cross")) \
|
|
git \
|
|
gnupg2 \
|
|
libclang-dev \
|
|
make \
|
|
makedev \
|
|
multistrap \
|
|
musl \
|
|
musl-dev \
|
|
musl-tools \
|
|
protobuf-compiler \
|
|
xz-utils \
|
|
pip \
|
|
python3-dev \
|
|
libclang-dev \
|
|
zstd && \
|
|
apt-get clean && rm -rf /var/lib/apt/lists/&& \
|
|
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain ${RUST_TOOLCHAIN}
|
|
|
|
RUN ARCH=$(uname -m); \
|
|
goarch=""; \
|
|
kernelname=$(uname -s | tr '[:upper:]' '[:lower:]'); \
|
|
case "${ARCH}" in \
|
|
"aarch64") goarch="arm64" ;; \
|
|
"ppc64le") goarch=${ARCH} ;; \
|
|
"x86_64") goarch="amd64" ;; \
|
|
"s390x") goarch=${ARCH} ;; \
|
|
*) echo "Unsupported architecture: ${ARCH}" && exit 1 ;; \
|
|
esac; \
|
|
curl -OL "https://storage.googleapis.com/golang/go${GO_VERSION}.${kernelname}-${goarch}.tar.gz" && \
|
|
tar -C "${GO_HOME}" -xzf "go${GO_VERSION}.${kernelname}-${goarch}.tar.gz" && \
|
|
rm "go${GO_VERSION}.${kernelname}-${goarch}.tar.gz"
|
|
|
|
# aarch64 requires this name -- link for all
|
|
RUN if [ ! -f "/usr/bin/$(uname -m)-linux-musl-gcc" ]; then ln -s /usr/bin/musl-gcc "/usr/bin/$(uname -m)-linux-musl-gcc"; fi
|
|
|
|
RUN ARCH=$(uname -m); \
|
|
rust_arch=""; \
|
|
libc=""; \
|
|
case "${ARCH}" in \
|
|
"aarch64") rust_arch="${ARCH}"; libc="musl"; ;; \
|
|
"ppc64le") rust_arch="powerpc64le"; libc="gnu"; ;; \
|
|
"x86_64") rust_arch="${ARCH}"; libc="musl"; ;; \
|
|
"s390x") rust_arch="${ARCH}"; libc="gnu"; ;; \
|
|
*) echo "Unsupported architecture: ${ARCH}" && exit 1 ;; \
|
|
esac; \
|
|
rustup target add "${rust_arch}-unknown-linux-${libc}"
|
|
|
|
RUN pip install --no-cache-dir pyinstaller==6.9.0 || pip install --no-cache-dir pyinstaller==6.9.0 --break-system-packages
|