|
|
ARG BASEIMAGE="quay.io/centos/centos:stream9" |
|
|
|
|
|
FROM ${BASEIMAGE} |
|
|
|
|
|
ARG VENDOR='' |
|
|
LABEL vendor=${VENDOR} |
|
|
LABEL org.opencontainers.image.vendor=${VENDOR} |
|
|
|
|
|
ARG KERNEL_VERSION='' |
|
|
ARG ENABLE_RT='' |
|
|
|
|
|
USER root |
|
|
|
|
|
|
|
|
RUN if test -z "${KERNEL_VERSION}" ; then \ |
|
|
echo "The KERNEL_VERSION argument is mandatory. Exiting" ; \ |
|
|
exit 1 ; \ |
|
|
fi \ |
|
|
&& echo "Kernel version: ${KERNEL_VERSION}" \ |
|
|
&& mv /etc/selinux /etc/selinux.tmp \ |
|
|
&& dnf -y install dnf-plugin-config-manager \ |
|
|
&& cp -a /etc/dnf/dnf.conf{,.tmp} && mv /etc/dnf/dnf.conf{.tmp,} \ |
|
|
&& dnf config-manager --best --nodocs --setopt=install_weak_deps=False --save \ |
|
|
&& dnf -y update --exclude kernel* \ |
|
|
&& dnf -y install \ |
|
|
kernel-${KERNEL_VERSION} \ |
|
|
kernel-devel-${KERNEL_VERSION} \ |
|
|
kernel-modules-${KERNEL_VERSION} \ |
|
|
kernel-modules-extra-${KERNEL_VERSION} \ |
|
|
&& if [ "${ENABLE_RT}" ] && [ $(arch) == "x86_64" ]; then \ |
|
|
dnf -y --enablerepo=rt install \ |
|
|
kernel-rt-${KERNEL_VERSION} \ |
|
|
kernel-rt-devel-${KERNEL_VERSION} \ |
|
|
kernel-rt-modules-${KERNEL_VERSION} \ |
|
|
kernel-rt-modules-extra-${KERNEL_VERSION}; \ |
|
|
fi \ |
|
|
&& export INSTALLED_KERNEL=$(rpm -q --qf "%{VERSION}-%{RELEASE}.%{ARCH}" kernel-core-${KERNEL_VERSION}) \ |
|
|
&& export GCC_VERSION=$(cat /lib/modules/${INSTALLED_KERNEL}/config | grep -Eo "gcc \(GCC\) ([0-9\.]+)" | grep -Eo "([0-9\.]+)") \ |
|
|
&& dnf -y install \ |
|
|
binutils \ |
|
|
diffutils \ |
|
|
elfutils-libelf-devel \ |
|
|
jq \ |
|
|
kabi-dw kernel-abi-stablelists \ |
|
|
keyutils \ |
|
|
kmod \ |
|
|
gcc-${GCC_VERSION} \ |
|
|
git \ |
|
|
make \ |
|
|
mokutil \ |
|
|
openssl \ |
|
|
pinentry \ |
|
|
rpm-build \ |
|
|
xz \ |
|
|
&& dnf clean all \ |
|
|
&& mv /etc/selinux.tmp /etc/selinux \ |
|
|
&& useradd -u 1001 -m -s /bin/bash builder |
|
|
|
|
|
|
|
|
RUN if [ "${KERNEL_VERSION}" == "" ]; then \ |
|
|
export INSTALLED_KERNEL=$(rpm -q --qf "%{VERSION}-%{RELEASE}.%{ARCH}" kernel-core); \ |
|
|
else \ |
|
|
export INSTALLED_KERNEL=$(rpm -q --qf "%{VERSION}-%{RELEASE}.%{ARCH}" kernel-core-${KERNEL_VERSION}) ;\ |
|
|
fi \ |
|
|
&& echo "{ \"KERNEL_VERSION\": \"${INSTALLED_KERNEL}\" }" > /etc/driver-toolkit-release.json \ |
|
|
&& echo -e "KERNEL_VERSION=\"${INSTALLED_KERNEL}\"" > /etc/driver-toolkit-release.sh |
|
|
|
|
|
USER builder |
|
|
|