github.com/mvdan/u-root-coreutils@v0.0.0-20230122170626-c2eef2898555/.circleci/images/test-image-arm/Dockerfile (about)

     1  # Copyright 2018-2021 the u-root Authors. All rights reserved
     2  # Use of this source code is governed by a BSD-style
     3  # license that can be found in the LICENSE file.
     4  
     5  FROM cimg/go:1.19
     6  
     7  # Install dependencies
     8  RUN sudo apt-get update &&                          \
     9      sudo apt-get install -y --no-install-recommends \
    10          `# Linux dependencies`                      \
    11          bc                                          \
    12          bison                                       \
    13          flex                                        \
    14          gcc-arm-linux-gnueabi                       \
    15          git                                         \
    16          make                                        \
    17          `# QEMU dependencies`                       \
    18          libattr1-dev                                \
    19          libcap-dev                                  \
    20          libcap-ng-dev                               \
    21          libfdt-dev                                  \
    22          libglib2.0-dev                              \
    23          libpixman-1-dev                             \
    24          meson                                       \
    25          ninja-build                                 \
    26          python                                      \
    27          zlib1g-dev                                  \
    28          `# Linux kernel build deps`                 \
    29          libelf-dev &&                               \
    30      sudo rm -rf /var/lib/apt/lists/*
    31  
    32  # Create working directory
    33  WORKDIR /home/circleci
    34  COPY config_linux5.10.0_arm.txt .config
    35  
    36  # Build linux
    37  RUN set -eux;                                                             \
    38      git clone --depth=1 --branch=v5.10 https://github.com/torvalds/linux; \
    39      sudo chmod 0444 .config;                                              \
    40      mv .config linux/;                                                    \
    41      cd linux;                                                             \
    42      export ARCH=arm;                                                      \
    43      export CROSS_COMPILE=/usr/bin/arm-linux-gnueabi-;                     \
    44      make -j$(($(nproc) * 2 + 1));                                         \
    45      cd ~;                                                                 \
    46      cp linux/arch/arm/boot/zImage zImage;                                 \
    47      rm -rf linux/
    48  
    49  # Build QEMU
    50  RUN set -eux;                                                          \
    51      git clone --depth=1 --branch=v7.0.0 https://github.com/qemu/qemu; \
    52      cd qemu;                                                           \
    53      mkdir build;                                                       \
    54      cd build;                                                          \
    55      ../configure                                                       \
    56          --target-list=arm-softmmu                                      \
    57          --enable-virtfs                                                \
    58          --disable-docs                                                 \
    59          --disable-sdl                                                  \
    60          --disable-kvm;                                                 \
    61      make -j$(($(nproc) * 2 + 1));                                      \
    62      cd ~;                                                              \
    63      cp -rL qemu/build/pc-bios/ ~/pc-bios;                              \
    64      cp qemu/build/arm-softmmu/qemu-system-arm .;                       \
    65      rm -rf qemu/
    66  
    67  # Export paths to binaries.
    68  ENV UROOT_KERNEL /home/circleci/zImage
    69  ENV UROOT_QEMU "/home/circleci/qemu-system-arm -M virt -L /home/circleci/pc-bios"
    70  ENV UROOT_TESTARCH arm