Skip to content

A container image for running the bare metal ARM GCC toolchain for C and C++, built on Fedora

License

Notifications You must be signed in to change notification settings

jwillikers/gnu-arm-embedded-image

Repository files navigation

GNU Arm Embedded Image

GitHub Workflow Status pre-commit

A container image for running the GNU Arm Embedded Toolchain for C and C++, built on Fedora. Comes complete with Black, CMake, Conan, Ninja, and Clang tools.

Synopsis

Image

quay.io/jwillikers/gnu-arm-embedded

Tags
  • latest

Supported architectures
  • amd64 (x86_64)

  • arm (armhfp)

  • arm64 (aarch64)

User

The default user inside the container is named user.

Working directory

By default, the working directory is the default user’s home directory: /home/user/project.

Labels
io.containers.autoupdate=registry

Enables automatic updates when using Podman and the fully-qualified image name.

Quick Start

First, ensure your user is in the dialout group allowing access to serial devices.

sudo usermod -aG $USER dialout
ℹ️
You’ll have to log out and back in for the changes to take effect

Use the following command to run the container via Podman and access the GNU Arm Embedded Toolchain. The example enters the container, mounting the current working directory, Conan’s configuration directory, and Git’s configuration directory. Additionally, it mounts the serial device /dev/ttyBmpGdb, the hosted GDB server on a Black-Magic-Probe which allows flashing firmware to a target board.

podman run \
    --rm \
    --userns keep-id \
    --group-add keep-groups \
    --device /dev/ttyBmpGdb:/dev/ttyBmpGdb \
    --security-opt label=disable \
    --volume "$PWD":/home/user/project \
    --volume "$HOME/.conan":/home/user/.conan \
    --volume "$HOME/.config/git":/home/user/.config/git \
    --name gnu-arm-embedded \
    -it \
    quay.io/jwillikers/gnu-arm-embedded:latest

Build

This project uses Buildah and Podman for building and testing the image. A set of pre-commit checks are readily available to ensure your code is up-to-spec at the time it is committed. Instructions for setting up a development environment, building the image, and testing the image follow. These instructions are intended for users of Fedora Silverblue, where the packages buildah, git, and podman are already available. Moreover, I use the fish shell.

  1. Install the fish shell.

    sudo rpm-ostree install fish
  2. Reboot to finish the installation.

    systemctl reboot
  3. Clone this repository.

    git -C ~/Projects clone [email protected]:jwillikers/gnu-arm-embedded-image.git
  4. Install pre-commit.

    pip install pre-commit
  5. Change into the project directory.

    cd ~/Projects/gnu-arm-embedded-image
  6. Install pre-commit’s Git hooks.

    pre-commit install
  7. Run the build.fish shell script using buildah unshare to create the image.

    buildah unshare ~/Projects/gnu-arm-embedded-image/build.fish
  8. Verify the image with works correctly by running the test.fish shell script.

    ~/Projects/gnu-arm-embedded-image/test.fish

Contributing

Contributions in the form of issues, feedback, and even pull requests are welcome. Make sure to adhere to the project’s Code of Conduct.

Open Source Software

This project is built on the hard work of countless open source contributors. Several of these projects are enumerated below.

Code of Conduct

Refer to the project’s Code of Conduct for details.

License

This repository is licensed under the GPLv3, a copy of which is provided in the license file.

© 2021 Jordan Williams

Authors

About

A container image for running the bare metal ARM GCC toolchain for C and C++, built on Fedora

Topics

Resources

License

Stars

Watchers

Forks

Languages