 sudo docker image build --tag mc2-test -f - . <<EOF
 FROM fedora:43

# Update outdated default dependencies
RUN dnf upgrade -y

# Ensure UTF-8 Support
ENV LANG=en_US.UTF-8
ENV LANGUAGE=en_US:en
ENV LC_ALL=en_US.UTF-8
RUN dnf install -y glibc-locale-source
RUN localedef --force --inputfile=en_US --charmap=UTF-8 en_US.UTF-8

# Installing sudo and allow sudo for anyone
RUN dnf install -y sudo
RUN echo 'ALL ALL = (ALL) NOPASSWD: ALL' >> /etc/sudoers

# Configure user
RUN groupadd --gid 1000 nl
RUN useradd --gid 1000 --uid 1000 --home /home/nl nl
RUN mkdir -p /home/nl
RUN chown 1000:1000 /home/nl
USER 1000:1000

# Installs from: .mc/cmake-toolchain-arm/cmake/mixin/clion.yaml
RUN dnf install -y curl gzip tar java-openjdk procps-ng findutils which xmlstarlet atk at-spi2-atk libX11-xcb libXdamage libXrandr libXScrnSaver libxshmfence mesa-libgbm nss pango

# Installs from: .mc/cmake-toolchain-arm/cmake/mixin/protobuf.yaml
RUN dnf install -y protobuf-compiler python python-protobuf python-setuptools

# Installs from: .mc/cmake-toolchain-arm/cmake/mixin/base.yaml
RUN dnf install -y git cmake make ninja-build

# Installs from: .mc/cmake-toolchain-arm/cmake/mixin/compile-native.yaml
RUN dnf install -y gcc gcc-c++ libstdc++-devel clang libcxx-devel llvm

# Installs from: .mc/cmake-toolchain-arm/cmake/mixin/prepare-linker-scripts.yaml
RUN dnf install -y perl

# Installs from: .mc/cmake-toolchain-arm/cmake/mixin/compile-arm.yaml
RUN dnf install -y arm-none-eabi-gcc-cs arm-none-eabi-gcc-cs-c++ arm-none-eabi-newlib

# Adding context dirs
COPY .mc/cmake-toolchain-arm/cmake /cmake

# Exec script from: .mc/cmake-toolchain-arm/cmake/mixin/clion.yaml
RUN <<EOR
/bin/sh -c #!/bin/bash
set -e


# CLion zur Verfügung stellen
sudo ln -s '/cmake/clion/clion.sh' '/usr/bin/clion'
EOR

# Exec script from: .mc/cmake-toolchain-arm/cmake/mixin/remote-test-runner.yaml
RUN <<EOR
/bin/sh -c #!/bin/bash
set -e


# Remote Test Runner Client zur Verfügung stellen
sudo curl									\
	--user 'jenkins:gW7eGEPwFQJj4Ym4gs2bNAbwLJHAUdE2'			\
	--output '/usr/bin/rtr-client'						\
	'https://software.lum.onl/remote-test-runner/v2/rtr-client-linux-amd64'

sudo chmod +x '/usr/bin/rtr-client'
EOR

# Exec script from: .mc/cmake-toolchain-arm/cmake/mixin/compile-native.yaml
RUN <<EOR
/bin/sh -c #!/bin/bash
set -e


# Kurzbefehle für `cmake' in diversen Konfigurationen erstellen
sudo ln -s /cmake/wrapper/amd64-clang-libc++.sh			/usr/bin/cmake-amd64-clang-libc++
sudo ln -s /cmake/wrapper/amd64-clang-libstdc++.sh		/usr/bin/cmake-amd64-clang-libstdc++
sudo ln -s /cmake/wrapper/amd64-gcc.sh				/usr/bin/cmake-amd64-gcc
EOR

# Exec script from: .mc/cmake-toolchain-arm/cmake/mixin/compile-arm-uf2.yaml
RUN <<EOR
/bin/sh -c #!/bin/bash
set -e


# uf2conv Hilfsprogramm für RP2040
sudo make -C /cmake/lumitronix-add-firmware/arm-none-eabi-rp2040-uf2conv
EOR

# Exec script from: .mc/cmake-toolchain-arm/cmake/mixin/prepare-linker-scripts.yaml
RUN <<EOR
/bin/sh -c #!/bin/bash
set -e


sudo /cmake/prepare-linker-scripts/prepare-linker-scripts.sh
EOR

# Exec script from: .mc/cmake-toolchain-arm/cmake/mixin/compile-arm.yaml
RUN <<EOR
/bin/sh -c #!/bin/bash
set -e


# Kurzbefehle für `cmake' in diversen Konfigurationen erstellen
sudo ln -s /cmake/wrapper/arm-none-eabi-gcc-rp2040.sh   	/usr/bin/cmake-arm-rp2040
sudo ln -s /cmake/wrapper/arm-none-eabi-gcc-samd10d14a-mut.sh	/usr/bin/cmake-arm-samd10d14a-mut
sudo ln -s /cmake/wrapper/arm-none-eabi-gcc-samd11c14a-ssut.sh	/usr/bin/cmake-arm-samd11c14a-ssut
sudo ln -s /cmake/wrapper/arm-none-eabi-gcc-samd21e17a-mu.sh	/usr/bin/cmake-arm-samd21e17a-mu
sudo ln -s /cmake/wrapper/arm-none-eabi-gcc-samd21g17a-mu.sh	/usr/bin/cmake-arm-samd21g17a-mu
sudo ln -s /cmake/wrapper/arm-none-eabi-gcc-samd21g17a-uut.sh	/usr/bin/cmake-arm-samd21g17a-uut
sudo ln -s /cmake/wrapper/arm-none-eabi-gcc-samd21g17d-aut.sh	/usr/bin/cmake-arm-samd21g17d-aut
sudo ln -s /cmake/wrapper/arm-none-eabi-gcc-samd21g18a-mft.sh	/usr/bin/cmake-arm-samd21g18a-mft
sudo ln -s /cmake/wrapper/arm-none-eabi-gcc-samd21j18a-au.sh	/usr/bin/cmake-arm-samd21j18a-au
EOR

# Exec bash as entrypoint
RUN /usr/bin/env bash

EOF
