On Fri, Jun 20, 2025 at 06:03:41PM -0600, Leo Sandoval via Grub-devel wrote:
> Containers bring the ability to have ready-to-use environments and in
> this case complete Fedora and Debian container files are described
> containing all required packages for building and testing grub2.
>
> Once users manually build it, they can run the desired container, jump
> into 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 file explicitly indicating the required packages.
>
> Signed-off-by: Leo Sandoval <lsand...@redhat.com>
> ---
> Some facts observed while creating and testing these containes:
>
> NOTE: all the below results are based on
>
>     root@a613d2d32efa:/grub# git log --oneline
>     db506b3 (grafted, HEAD -> master, origin/master, origin/HEAD) 
> gnulib/regexec: Fix resource leak
>
> * compilation time
>
> Done on my mostly idle-laptop (20 i7-12800H cores) so this is not really an 
> isolated system, as any other benchmark,
> do not trust too much on these numbers
>
> Debian:
>     root@a613d2d32efa:/grub# time make &>/dev/null
>
>     real      1m15.486s
>     user      0m51.869s
>     sys               0m23.338s
>
> Fedora:
>     [root@4eabb29f0ef2 grub]# time make &>/dev/null
>
>     real      1m18.679s
>     user      0m51.352s
>     sys               0m27.417s
>
>
> * image sizes:
>
>     $ podman images | grep '\-grub'
>     localhost/debian-grub                      latest      e789c1f8da26  
> About a minute ago  2.34 GB
>     localhost/fedora-grub                      latest      b2dd8ef96b85  15 
> minutes ago      2.04 GB
>
> so debian is a 'bit' heavier than fedora.
>
> * compilation issue
>
> Due to a more recent gcc version on Fedora compared to Debian, compilation 
> failed on the Fedora container
> with the following error (already reported but not yet at upstream)
>
>     lib/gnulib/base64.c:65:3: error: initializer-string for array of ‘char’ 
> truncates NUL terminator but destination lacks ‘nonstring’ attribute (65 
> chars into 64 available) [-Werror=unterminated-string-initialization]
>        65 |   
> "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
>     |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>
> whereas not observed in Debian. To fix the above, one can install b4 and 
> patch the repo
>
>     [root@4eabb29f0ef2 grub]# b4 shazam 
> https://lore.kernel.org/grub-devel/20250618015826.270234-2-adham...@gmail.com/
>     Grabbing thread from 
> lore.kernel.org/all/20250618015826.270234-2-adham...@gmail.com/t.mbox.gz
>     Checking for newer revisions
>     Grabbing search results from lore.kernel.org
>     Analyzing 6 messages in the thread
>     Analyzing 3 code-review messages
>     Checking attestation on all messages, may take a moment...
>     ---
>       ✗ [PATCH v2 1/2] gnulib: Add patch to allow GRUB w/GCC-15 compile
>         + Reviewed-by: Sudhakar Kuppusamy <sudha...@linux.ibm.com> (✗ 
> DKIM/ibm.com)
>       ✗ [PATCH v2 2/2] util/grub-protect: Correct uninit 'err' Variable
>         + Reviewed-by: Sudhakar Kuppusamy <sudha...@linux.ibm.com> (✗ 
> DKIM/ibm.com)
>       ---
>       ✗ BADSIG: DKIM/gmail.com
>     ---
>     Total patches: 2
>     ---
>     Applying: gnulib: Add patch to allow GRUB w/GCC-15 compile
>     Applying: util/grub-protect: Correct uninit 'err' Variable
>
>
> * make check results
>
> Debian:
>     
> ============================================================================
>     Testsuite summary for GRUB 2.13
>     
> ============================================================================
>     # TOTAL: 88
>     # PASS:  64
>     # SKIP:  3
>     # XFAIL: 0
>     # FAIL:  2
>     # XPASS: 0
>     # ERROR: 19
>
> Fedora:
>     
> ============================================================================
>     Testsuite summary for GRUB 2.13
>     
> ============================================================================
>     # TOTAL: 88
>     # PASS:  63
>     # SKIP:  3
>     # XFAIL: 0
>     # FAIL:  3
>     # XPASS: 0
>     # ERROR: 19
>
> In general, the same results in both distros.
> ---
>  container/Containerfile.debian | 56 +++++++++++++++++++++++++++++++++++++++++
>  container/Containerfile.fedora | 57 
> ++++++++++++++++++++++++++++++++++++++++++
>  container/README               | 22 ++++++++++++++++
>  3 files changed, 135 insertions(+)
>  create mode 100644 container/Containerfile.debian
>  create mode 100644 container/Containerfile.fedora
>  create mode 100644 container/README
>
> diff --git a/container/Containerfile.debian b/container/Containerfile.debian
> new file mode 100644
> index 0000000000..8906b2921e
> --- /dev/null
> +++ b/container/Containerfile.debian
> @@ -0,0 +1,56 @@
> +FROM debian
> +
> +# Install required packages for configuration & compilation & check
> +RUN apt update -y  && \
> +    apt install -y \
> +        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 \
> +        squashfs-tools \
> +        swtpm-tools \
> +        tpm2-tools \
> +        udftools \
> +        unifont \
> +        wamerican \
> +        which \
> +        xfonts-unifont \
> +        xfsprogs \
> +        xorriso \
> +        zfs-fuse
> +
> +# clone tip of grub repository
> +RUN git clone --depth 1 https://https.git.savannah.gnu.org/git/grub.git /grub

s/https.git/git/

> +WORKDIR /grub
> diff --git a/container/Containerfile.fedora b/container/Containerfile.fedora
> new file mode 100644
> index 0000000000..e5b33bfd71
> --- /dev/null
> +++ b/container/Containerfile.fedora
> @@ -0,0 +1,57 @@
> +FROM registry.fedoraproject.org/fedora
> +
> +# Install required packages for configuration & compilation & check
> +RUN dnf update -y && \
> +    dnf install -y \
> +        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 \
> +        squashfs-tools \
> +        swtpm-tools \
> +        tpm2-tools \
> +        udftools \
> +        unifont \
> +        unifont-fonts \
> +        which \
> +        words \
> +        xfsprogs \
> +        xorriso \
> +        zfs-fuse

Could you add list of Fedora packages to the INSTALL file?

> +# clone tip of grub repository
> +RUN git clone --depth 1 https://https.git.savannah.gnu.org/git/grub.git /grub

s/https.git/git/

> +WORKDIR /grub
> diff --git a/container/README b/container/README
> new file mode 100644
> index 0000000000..be5e988b9d
> --- /dev/null
> +++ b/container/README
> @@ -0,0 +1,22 @@
> +install `podman` on your favorite distro then build it with
> +
> +$ podman build -t fedora-grub -f Containerfile.fedora .
> +
> +or in case you prefer Debian
> +
> +$ podman build -t debian-grub -f Containerfile.debian .
> +
> +once built, you can run/launch any of the above
> +
> +$ podman run -it fedora-grub
> +
> +or
> +
> +$ podman run -it debian-grub
> +
> +and execute the standard build/test commands inside it, e.g
> +
> +# ./bootstrap
> +# ./configure
> +# ./make
> +# ./make check

Please do not create separate documentation file. Put all of that into
the INSTALL file.

Daniel

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

Reply via email to