Looks good to me, thanks.

Reviewed-by: Andrew Hamilton <adham...@gmail.com>

On Fri, Sep 19, 2025 at 6:39 PM Leo Sandoval <lsand...@redhat.com> wrote:
>
> Containers bring the ability to have ready-to-use environments
> isolated completely from the build environment. Once users manually
> build it, they can launch the desired container, jump into it and have
> a setup ready for development. On the other hand, if users prefer to
> use bare metal instead of a containerized environment, it is still
> useful to have a the full list of the required packages.
>
> Signed-off-by: Leo Sandoval <lsand...@redhat.com>
> ---
>  INSTALL                 | 158 ++++++++++++++++++++++++++++++++++++++++
>  container/Containerfile |  16 ++++
>  container/check.sh      |  18 +++++
>  3 files changed, 192 insertions(+)
>  create mode 100644 container/Containerfile
>  create mode 100644 container/check.sh
>
> diff --git a/INSTALL b/INSTALL
> index 22b68cb6c7..305e0ae29a 100644
> --- a/INSTALL
> +++ b/INSTALL
> @@ -109,6 +109,13 @@ To use the gdb_grub GDB script you'll need:
>  * GNU Debugger > 7, built with python support (gdb package)
>  * Python >= 3.5 (python3 package)
>
> +To easier the task of package installation, the Container section list
> +the above packages per distribution (see the command line examples, the
> +--build-arg PKGS argument on the podman build command). In case the 
> installation
> +of these packages is not possible on your host, one can rely on containers 
> which
> +are ready-to-use container images for GRUB development. For more informacion 
> see
> +Container section.
> +
>  Configuring the GRUB
>  ====================
>
> @@ -358,3 +365,154 @@ operates.
>  `--version'
>       Print the version of Autoconf used to generate the `configure'
>       script, and exit.
> +
> +Container
> +=========
> +
> +Containers bring the ability to have ready-to-use environments isolated 
> completely
> +from the build environment. Once users manually build it, they can launch 
> the desired
> +container, jump into it and have a setup ready for development. On the other 
> hand, if users
> +prefer to use bare metal instead of a containerized environment, it is still 
> useful to have a
> +the full list of the required packages.
> +
> +Assuming your build OS support containers, e.g. all Linux distros, install 
> 'podman' on
> +your favorite distro, move into the container folder then build a specific 
> distro image with
> +
> +$ cd container
> +$ podman build \
> +  --build-arg BASE_IMAGE=fedora \
> +  --build-arg PKG_MANAGER=dnf \
> +  --build-arg PKGS="\
> +        attr \
> +        autoconf \
> +        automake \
> +        autopoint \
> +        bison \
> +        btrfs-progs \
> +        cpio \
> +        cryptsetup \
> +        dosfstools \
> +        e2fsprogs \
> +        edk2-ovmf \
> +        edk2-ovmf-ia32 \
> +        erofs-utils \
> +        exfatprogs \
> +        f2fs-tools \
> +        flex \
> +        gawk \
> +        genromfs \
> +        gettext \
> +        git \
> +        hfsplus-tools \
> +        jfsutils \
> +        libtool \
> +        lzop \
> +        make \
> +        mtools \
> +        nilfs-utils \
> +        ntfsprogs \
> +        parted \
> +        patch \
> +        pkg-config \
> +        python3 \
> +        qemu-system-arm \
> +        qemu-system-aarch64 \
> +        qemu-system-riscv \
> +        qemu-system-x86 \
> +       rsync \
> +        squashfs-tools \
> +        swtpm-tools \
> +        texinfo \
> +       texinfo-tex \
> +        texlive \
> +        tpm2-tools \
> +        udftools \
> +        unifont \
> +        unifont-fonts \
> +        which \
> +        words \
> +        xfsprogs \
> +        xorriso \
> +        zfs-fuse" \
> +  -t fedora-grub .
> +
> +or in case you prefer Debian
> +
> +$ cd container
> +$ podman build \
> +  --build-arg BASE_IMAGE=debian \
> +  --build-arg PKG_MANAGER=apt \
> +  --build-arg PKGS="\
> +        attr \
> +        autoconf \
> +        automake \
> +        autopoint \
> +        bison \
> +        btrfs-progs \
> +        cpio \
> +        cryptsetup \
> +        dosfstools \
> +        e2fsprogs \
> +        erofs-utils \
> +        exfatprogs \
> +        f2fs-tools \
> +        flex \
> +        gawk \
> +        genromfs \
> +        gettext \
> +        git \
> +        hfsplus \
> +        jfsutils \
> +        libtool \
> +        lzop \
> +        make \
> +        mtools \
> +        nilfs-tools \
> +        ntfs-3g \
> +        ovmf \
> +        ovmf-ia32 \
> +        parted \
> +        patch \
> +        pkg-config \
> +        python3 \
> +        qemu-efi-aarch64 \
> +        qemu-efi-arm \
> +        qemu-system \
> +       rsync \
> +        squashfs-tools \
> +        swtpm-tools \
> +        texinfo \
> +        texlive \
> +        tpm2-tools \
> +        udftools \
> +        unifont \
> +        wamerican \
> +        which \
> +        xfonts-unifont \
> +        xfsprogs \
> +        xorriso \
> +        zfs-fuse" \
> +  -t debian-grub .
> +
> +once built, you can run/launch any of the aboven
> +
> +$ podman run -it fedora-grub
> +
> +or
> +
> +$ podman run -it debian-grub
> +
> +and execute the standard build/test commands inside it, e.g
> +
> +  # ./linguas.sh
> +  # ./bootstrap
> +  # ./configure
> +  # make
> +  # make html
> +  # make pdf
> +  # make check
> +
> +The above commands are collected in a single script inside the container 
> called 'check.sh'
> +and can be useful as sanity check for testing latest upstream changes with
> +
> +$ podman run fedora-grub /grub/check.sh
> diff --git a/container/Containerfile b/container/Containerfile
> new file mode 100644
> index 0000000000..c74f6270c9
> --- /dev/null
> +++ b/container/Containerfile
> @@ -0,0 +1,16 @@
> +ARG BASE_IMAGE
> +FROM ${BASE_IMAGE}
> +
> +ARG PKG_MANAGER
> +ARG PKGS
> +ARG GIT_CLONE_DEPTH=1
> +ARG GRUB_REPO=https://git.savannah.gnu.org/git/grub.git
> +ARG GRUB_DIR=/grub
> +
> +RUN $PKG_MANAGER update -y && $PKG_MANAGER install -y ${PKGS}
> +RUN git clone --depth ${GIT_CLONE_DEPTH} ${GRUB_REPO} ${GRUB_DIR}
> +
> +WORKDIR ${GRUB_DIR}
> +
> +COPY check.sh .
> +RUN chmod +x check.sh
> diff --git a/container/check.sh b/container/check.sh
> new file mode 100644
> index 0000000000..aa3eebcdd5
> --- /dev/null
> +++ b/container/check.sh
> @@ -0,0 +1,18 @@
> +#! /bin/sh
> +
> +set -e
> +set -x
> +
> +cd /grub
> +
> +./linguas.sh
> +./bootstrap
> +./configure
> +make
> +make html
> +make pdf
> +make check || true
> +
> +if [ -f test-suite.log ]; then
> +    cat test-suite.log
> +fi
> --
> 2.50.1
>

_______________________________________________
Grub-devel mailing list
Grub-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/grub-devel

Reply via email to