On Mon, Jun 30, 2025 at 1:45 PM Glenn Washburn <developm...@efficientek.com> wrote:
> 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). > I will try following dkiper's suggestion but I am not 100% convience. > > > > > 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 That's what I expected also but that is not the case when running inside these containers. > > > > > > 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. > for step #2, grub code is based on a shallow clone so the ./bootstrap applies in this case. for step #9, this is related to documentation, and I can include on the commit description > Also it should be noted that this does not test non-native > architectures. > good point. > > > +# ./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. > yes, build artifacts, I believe most of the stuff described on the .gitignore The image just contains the set of required packages and a shallow clone of grub, so any command executed inside the container that results on new files will be lost after exiting the environment, as any standard container. > 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