On Fri, 20 Jun 2025 18:03:41 -0600 Leo Sandoval via Grub-devel <grub-devel@gnu.org> 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. As noted there already is a list of packages in the INSTALL file. In contrast to Daniel, I actually prefer code as documentation, and have the INSTALL point to here. Or perhaps the container file can be modified to extract the list of packages from the INSTALL file (which, I imagine, would require a more machine readable format of the package list). > > 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 This indicates that you're not properly running the tests. There should be no errors, IIRC. Look at the > > 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 > + > +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 > + > +# clone tip of grub repository > +RUN git clone --depth 1 https://https.git.savannah.gnu.org/git/grub.git /grub > + > +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 > + An issue I suspect unrelated to the errors is that you've not included step #2 nor #9 of the section "Building the GRUB" in the INSTALL file. Also it should be noted that this does not test non-native architectures. > +# ./bootstrap > +# ./configure > +# ./make > +# ./make check Would this series of commands leave residual files that can be seen upon a second invocation of the container? I have some build/test scripts that would probably be good for this script to leverage. Glenn > \ No newline at end of file > > > _______________________________________________ > Grub-devel mailing list > Grub-devel@gnu.org > https://lists.gnu.org/mailman/listinfo/grub-devel _______________________________________________ Grub-devel mailing list Grub-devel@gnu.org https://lists.gnu.org/mailman/listinfo/grub-devel