celelibi at gmail.com
2015-Sep-14 03:50 UTC
[syslinux] [PATCH 0/4] efi: Makefile improvement
From: Sylvain Gault <sylvain.gault at gmail.com> These few patches contain a few improvement about the Makefiles for EFI. Mainly, to rebuild the files when needed, and only when needed. The three shell scripts efi/{check,build,clean}-gnu-efi.sh disappeared and are now integrated as makefile recipes. You'll notice an argument ARFLAGS=rvU to the recursive make calls to gnu-efi. This is because, the default value is just "rv" and gnu-efi uses the implicit rules of make that uses $(ARFLAGS). Without the U flag, the timestamp of the members of the generated archive is set to 0, which is always outdated from the make's point of view, and thus always rebuilt. This U flags forces ar to write the actual timestamp of the file in the archive, which may not be the default behavior of every distribution (no longer the default in Debian apparently). I will probably submit a patch to add this flag in the gnu-efi Makefiles. Once this patch merged in gnu-efi, and our gnu-efi submodule updated, those ARFLAGS argument shall be removed. Sylvain Gault Sylvain Gault (4): efi: Don't unnecessarily rebuild syslinux.so efi: Proper dependencies to gnu-efi mk/efi.mk: Build gnu-efi with the Makefile efi: move clean-gnu-efi.sh to mk/efi.mk efi/Makefile | 18 +++++++++++------- efi/build-gnu-efi.sh | 45 --------------------------------------------- efi/check-gnu-efi.sh | 38 -------------------------------------- efi/clean-gnu-efi.sh | 37 ------------------------------------- gnu-efi | 2 +- mk/efi.mk | 30 ++++++++++++++++++++++++------ 6 files changed, 36 insertions(+), 134 deletions(-) delete mode 100755 efi/build-gnu-efi.sh delete mode 100755 efi/check-gnu-efi.sh delete mode 100755 efi/clean-gnu-efi.sh -- 2.5.1
celelibi at gmail.com
2015-Sep-14 03:50 UTC
[syslinux] [PATCH 1/4] efi: Don't unnecessarily rebuild syslinux.so
From: Sylvain Gault <sylvain.gault at gmail.com> OBJ directory creation changed from a .PHONY target to a real target used through an order-only dependency. A target depending on another target marked .PHONY is always rebuilt, thus forcing all the .o files to be rebuilt everytime. Signed-off-by: Sylvain Gault <sylvain.gault at gmail.com> --- efi/Makefile | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/efi/Makefile b/efi/Makefile index d5443bd..bbf23f2 100644 --- a/efi/Makefile +++ b/efi/Makefile @@ -60,11 +60,10 @@ DATE := $(shell sh $(SRC)/../gen-id.sh $(VERSION) $(HEXDATE)) endif CFLAGS += -DDATE_STR='"$(DATE)"' -.PHONY: subdirs -subdirs: - mkdir -p $(ARCH) +$(OBJ)/$(ARCH): + mkdir -p $@ -$(OBJS): subdirs +$(OBJS): | $(OBJ)/$(ARCH) # The targets to build in this directory BTARGET = syslinux.efi -- 2.5.1
celelibi at gmail.com
2015-Sep-14 03:50 UTC
[syslinux] [PATCH 2/4] efi: Proper dependencies to gnu-efi
From: Sylvain Gault <sylvain.gault at gmail.com> The Makefile dependencies weren't good enough to recompile / relink when the gnu-efi headers / objects were updated. Signed-off-by: Sylvain Gault <sylvain.gault at gmail.com> --- efi/Makefile | 5 +++-- mk/efi.mk | 21 ++++++++++++++++----- 2 files changed, 19 insertions(+), 7 deletions(-) diff --git a/efi/Makefile b/efi/Makefile index bbf23f2..4fdcedd 100644 --- a/efi/Makefile +++ b/efi/Makefile @@ -68,8 +68,9 @@ $(OBJS): | $(OBJ)/$(ARCH) # The targets to build in this directory BTARGET = syslinux.efi -syslinux.so: $(OBJS) $(CORE_OBJS) $(LIB_OBJS) - $(LD) $(LDFLAGS) --strip-debug -o $@ $^ -lgnuefi -lefi +syslinux.so: $(OBJS) $(CORE_OBJS) $(LIB_OBJS) $(CRT0) $(LIBEFI) + $(LD) $(LDFLAGS) --strip-debug -o $@ $(OBJS) $(CORE_OBJS) $(LIB_OBJS) \ + $(LDLIBSEFI) # We need to rename the .hash section because the EFI firmware # linker really doesn't like it. diff --git a/mk/efi.mk b/mk/efi.mk index f097ad2..a705440 100644 --- a/mk/efi.mk +++ b/mk/efi.mk @@ -44,9 +44,16 @@ SFLAGS = $(GCCOPT) $(GCCWARN) $(ARCHOPT) \ -nostdinc -iwithprefix include \ -I$(com32)/libutil/include -I$(com32)/include -I$(com32)/include/sys $(GPLINCLUDE) -LIBEFI = $(objdir)/lib/libefi.a +LIBEFI = $(LIBDIR)/libefi.a $(LIBDIR)/libgnuefi.a +LDLIBSEFI = $(patsubst $(LIBDIR)/lib%.a,-l%,$(LIBEFI)) -$(LIBEFI): +# The empty commands are needed in order to force make to check the files date +$(LIBEFI): gnuefi ; +$(CRT0) $(LDSCRIPT): gnuefi ; +$(EFIINC)/%.h $(EFIINC)/protocol/%.h $(EFIINC)/$(EFI_SUBARCH)/%.h: gnuefi ; + +.PHONY: gnuefi +gnuefi: @echo Building gnu-efi for $(EFI_SUBARCH) $(topdir)/efi/check-gnu-efi.sh $(EFI_SUBARCH) $(objdir) @@ -55,11 +62,15 @@ $(LIBEFI): %.o: %.c .PRECIOUS: %.o -%.o: %.S $(LIBEFI) +%.o: %.S $(CC) $(SFLAGS) -c -o $@ $< -.PRECIOUS: %.o -%.o: %.c $(LIBEFI) +# efi/*.c depends on some headers installed by gnuefi, so here we add two +# dependencies that are always installed. And since gnu-efi is installed as a +# whole by check-gnu-efi.sh, those two headers are always a good timestamp +# marker. +.SECONDARY: $(EFIINC)/efi.h $(EFIINC)/efilib.h +%.o: %.c $(EFIINC)/efi.h $(EFIINC)/efilib.h $(CC) $(CFLAGS) -c -o $@ $< #%.efi: %.so -- 2.5.1
celelibi at gmail.com
2015-Sep-14 03:50 UTC
[syslinux] [PATCH 3/4] mk/efi.mk: Build gnu-efi with the Makefile
From: Sylvain Gault <sylvain.gault at gmail.com> The error-prone shell scripts for building gnu-efi are replaced by a Makefile recipe. This is accompanied with a small update of gnu-efi which, despite not strongly mandatory, avoid recompiling gnu-efi and all the efi subtree on each invocation of make. Signed-off-by: Sylvain Gault <sylvain.gault at gmail.com> --- efi/build-gnu-efi.sh | 45 --------------------------------------------- efi/check-gnu-efi.sh | 38 -------------------------------------- gnu-efi | 2 +- mk/efi.mk | 9 ++++++++- 4 files changed, 9 insertions(+), 85 deletions(-) delete mode 100755 efi/build-gnu-efi.sh delete mode 100755 efi/check-gnu-efi.sh diff --git a/efi/build-gnu-efi.sh b/efi/build-gnu-efi.sh deleted file mode 100755 index e72d872..0000000 --- a/efi/build-gnu-efi.sh +++ /dev/null @@ -1,45 +0,0 @@ -#!/bin/sh - -set -e - -# Initialise the gnu-efi submodule and ensure the source is up-to-date. -# Then build and install it for the given architecture. - -if [ $# -lt 2 ]; then -cat <<EOF -Usage: $0: <arch> <objdir> - -Build the <arch> gnu-efi libs and header files and install in <objdir>. - - <arch> - A gnu-efi \$ARCH argument, i.e. ia32, x86_64 - <objdir> - The Syslinux object directory - -EOF - exit 1 -fi - -ARCH="$1" -objdir="$(readlink -f $2)" - -if [ ! -e ../version.h ]; then - printf "build-gnu-efi.sh: Cannot be run outside Syslinux object tree\n" - pwd - exit 1 -fi - -( - cd ../.. - if [ -d .git ]; then - git submodule update --init - fi -) - -mkdir -p "$objdir/gnu-efi" -cd "$objdir/gnu-efi" - -EFIDIR="$(readlink -f "$objdir/../gnu-efi/gnu-efi-3.0")" - -make SRCDIR="$EFIDIR" TOPDIR="$EFIDIR" -f "$EFIDIR/Makefile" ARCH=$ARCH -make SRCDIR="$EFIDIR" TOPDIR="$EFIDIR" -f "$EFIDIR/Makefile" ARCH=$ARCH PREFIX="$objdir" install - -cd "$objdir/efi" diff --git a/efi/check-gnu-efi.sh b/efi/check-gnu-efi.sh deleted file mode 100755 index 7d99e9a..0000000 --- a/efi/check-gnu-efi.sh +++ /dev/null @@ -1,38 +0,0 @@ -#!/bin/sh - -# Verify that gnu-efi is installed in the object directory for our -# firmware. If it isn't, build it. - -if [ $# -lt 2 ]; then -cat <<EOF -Usage: $0: <arch> <objdir> - -Check for gnu-efi libraries and header files in <objdir> and, if none -exist, build and install them. - - <arch> - A gnu-efi \$ARCH argument, i.e. ia32, x86_64 - <objdir> - The Syslinux object directory - -EOF - exit 1 -fi - -ARCH=$1 -objdir=$2 - -if [ ! \( -f "$objdir/include/efi/$ARCH/efibind.h" -a -f "$objdir/lib/libefi.a" -a -f "$objdir/lib/libgnuefi.a" \) ]; then - # Build the external project with a clean make environment, as - # Syslinux disables built-in implicit rules. - export MAKEFLAGS- - ../../efi/build-gnu-efi.sh $ARCH "$objdir" - if [ $? -ne 0 ]; then - printf "Failed to build gnu-efi. " - printf "Execute the following command for full details: \n\n" - printf "build-gnu-efi.sh $ARCH $objdir\n\n" - - exit 1 - fi -else - printf "skip gnu-efi build/install\n" -fi diff --git a/gnu-efi b/gnu-efi index ab54e2b..06744d6 160000 --- a/gnu-efi +++ b/gnu-efi @@ -1 +1 @@ -Subproject commit ab54e2b40e914d0ca01dc3d44c8d4eb8517bf999 +Subproject commit 06744d69273de4945cf0ffcaa4a6abf7cec707b6 diff --git a/mk/efi.mk b/mk/efi.mk index a705440..5ef6702 100644 --- a/mk/efi.mk +++ b/mk/efi.mk @@ -10,6 +10,7 @@ core = $(topdir)/core GCCOPT := $(call gcc_ok,-fno-stack-protector,) EFIINC = $(objdir)/include/efi LIBDIR = $(objdir)/lib +EFIDIR = $(topdir)/gnu-efi/gnu-efi-3.0 ifeq ($(ARCH),i386) ARCHOPT = -m32 -march=i386 @@ -55,7 +56,13 @@ $(EFIINC)/%.h $(EFIINC)/protocol/%.h $(EFIINC)/$(EFI_SUBARCH)/%.h: gnuefi ; .PHONY: gnuefi gnuefi: @echo Building gnu-efi for $(EFI_SUBARCH) - $(topdir)/efi/check-gnu-efi.sh $(EFI_SUBARCH) $(objdir) + cd $(topdir) && git submodule update --init + mkdir -p "$(objdir)/gnu-efi" + MAKEFLAGS= make SRCDIR="$(EFIDIR)" TOPDIR="$(EFIDIR)" \ + ARCH=$(EFI_SUBARCH) ARFLAGS=rvU -f "$(EFIDIR)/Makefile" + MAKEFLAGS= make SRCDIR="$(EFIDIR)" TOPDIR="$(EFIDIR)" \ + ARCH=$(EFI_SUBARCH) PREFIX="$(objdir)" ARFLAGS=rvU \ + -f "$(EFIDIR)/Makefile" install %.o: %.S # Cancel old rule -- 2.5.1
celelibi at gmail.com
2015-Sep-14 03:50 UTC
[syslinux] [PATCH 4/4] efi: move clean-gnu-efi.sh to mk/efi.mk
From: Sylvain Gault <sylvain.gault at gmail.com> That shell script have been moved to the Makefile so that there is no shell script anymore. This is accompanied with a small update of gnu-efi which prevent 'make clean' from failing. Signed-off-by: Sylvain Gault <sylvain.gault at gmail.com> --- efi/Makefile | 6 +++++- efi/clean-gnu-efi.sh | 37 ------------------------------------- gnu-efi | 2 +- 3 files changed, 6 insertions(+), 39 deletions(-) delete mode 100755 efi/clean-gnu-efi.sh diff --git a/efi/Makefile b/efi/Makefile index 4fdcedd..beab3b4 100644 --- a/efi/Makefile +++ b/efi/Makefile @@ -101,7 +101,11 @@ tidy dist: rm -f *.so *.o wrapper find . \( -name \*.o -o -name \*.a -o -name .\*.d -o -name \*.tmp \) -print0 | \ xargs -0r rm -f - $(topdir)/efi/clean-gnu-efi.sh $(EFI_SUBARCH) $(objdir) + if [ -d ../gnu-efi ]; then \ + MAKEFLAGS= make -C $(objdir)/gnu-efi SRCDIR="$(EFIDIR)" \ + TOPDIR="$(EFIDIR)" -f "$(EFIDIR)/Makefile" \ + ARCH=$(EFI_SUBARCH) clean; \ + fi clean: tidy diff --git a/efi/clean-gnu-efi.sh b/efi/clean-gnu-efi.sh deleted file mode 100755 index 58def28..0000000 --- a/efi/clean-gnu-efi.sh +++ /dev/null @@ -1,37 +0,0 @@ -#!/bin/sh - -set -e - -# Initialise the gnu-efi submodule and ensure the source is up-to-date. -# Then build and install it for the given architecture. - -if [ $# -lt 2 ]; then -cat <<EOF -Usage: $0: <arch> <objdir> - -Build the <arch> gnu-efi libs and header files and install in <objdir>. - - <arch> - A gnu-efi \$ARCH argument, i.e. ia32, x86_64 - <objdir> - The Syslinux object directory - -EOF - exit 1 -fi - -ARCH="$1" -objdir=$(readlink -f "$2") - -( - cd ../.. - if [ -d .git ]; then - git submodule update --init - fi -) - -if [ -d "$objdir/gnu-efi" ];then - cd "$objdir/gnu-efi" - EFIDIR="$(readlink -f "$objdir/../gnu-efi/gnu-efi-3.0")" - make SRCDIR="$EFIDIR" TOPDIR="$EFIDIR" -f "$EFIDIR/Makefile" ARCH=$ARCH clean -fi - -cd "$objdir/efi" diff --git a/gnu-efi b/gnu-efi index 06744d6..3cbe61f 160000 --- a/gnu-efi +++ b/gnu-efi @@ -1 +1 @@ -Subproject commit 06744d69273de4945cf0ffcaa4a6abf7cec707b6 +Subproject commit 3cbe61fa41898c8cbcc6be1e46cd5919fa764a77 -- 2.5.1
> You'll notice an argument ARFLAGS=rvU to the recursive make calls to > gnu-efi.Too much enthusiasm, I'm not sure this U flag is portable. At least, I found a system that doesn't support it, it's ubuntu 12.04. On these systems, I guess the default behavior is right. This needs further research to fix it properly. Any information welcome. Celelibi
Geert Stappers
2015-Sep-14 05:17 UTC
[syslinux] [PATCH 1/4] efi: Don't unnecessarily rebuild syslinux.so
On Mon, Sep 14, 2015 at 05:50:56AM +0200, celelibi--- via Syslinux wrote:> From: Sylvain Gault <sylvain.gault at gmail.com> > > OBJ directory creation changed from a .PHONY target to a real target > used through an order-only dependency. > > A target depending on another target marked .PHONY is always rebuilt, > thus forcing all the .o files to be rebuilt everytime. > > Signed-off-by: Sylvain Gault <sylvain.gault at gmail.com> > --- a/efi/Makefile > +++ b/efi/Makefile > @@ -60,11 +60,10 @@ DATE := $(shell sh $(SRC)/../gen-id.sh $(VERSION) $(HEXDATE)) > endif > CFLAGS += -DDATE_STR='"$(DATE)"' > > -.PHONY: subdirs > -subdirs: > - mkdir -p $(ARCH) > +$(OBJ)/$(ARCH): > + mkdir -p $@ > > -$(OBJS): subdirs > +$(OBJS): | $(OBJ)/$(ARCH)What does the | do?> # The targets to build in this directory > BTARGET = syslinux.efiGroeten Geert Stappers -- Leven en laten leven
Geert Stappers
2015-Sep-14 05:31 UTC
[syslinux] mk/efi.mk: Build gnu-efi with the Makefile, ARFLAGS=$(AROPT)
On Mon, Sep 14, 2015 at 05:50:58AM +0200, celelibi--- via Syslinux wrote:> index a705440..5ef6702 100644 > --- a/mk/efi.mk > +++ b/mk/efi.mk > @@ -10,6 +10,7 @@ core = $(topdir)/core > GCCOPT := $(call gcc_ok,-fno-stack-protector,) > EFIINC = $(objdir)/include/efi > LIBDIR = $(objdir)/lib > +EFIDIR = $(topdir)/gnu-efi/gnu-efi-3.0Would it make sense to add AROPT = rvU or #ifdefine AR_DEFAULT_SETS_TIMESTAMP_TO_ZERO AROPT = rvU #elseif AROPT = rv #endifdefine ?> ifeq ($(ARCH),i386) > ARCHOPT = -m32 -march=i386 > @@ -55,7 +56,13 @@ $(EFIINC)/%.h $(EFIINC)/protocol/%.h $(EFIINC)/$(EFI_SUBARCH)/%.h: gnuefi ; > .PHONY: gnuefi > gnuefi: > @echo Building gnu-efi for $(EFI_SUBARCH) > - $(topdir)/efi/check-gnu-efi.sh $(EFI_SUBARCH) $(objdir) > + cd $(topdir) && git submodule update --init > + mkdir -p "$(objdir)/gnu-efi" > + MAKEFLAGS= make SRCDIR="$(EFIDIR)" TOPDIR="$(EFIDIR)" \ > + ARCH=$(EFI_SUBARCH) ARFLAGS=rvU -f "$(EFIDIR)/Makefile"+ ARCH=$(EFI_SUBARCH) ARFLAGS=$(AROPT) -f "$(EFIDIR)/Makefile"> + MAKEFLAGS= make SRCDIR="$(EFIDIR)" TOPDIR="$(EFIDIR)" \ > + ARCH=$(EFI_SUBARCH) PREFIX="$(objdir)" ARFLAGS=rvU \ > + -f "$(EFIDIR)/Makefile" install > > %.o: %.S # Cancel old rule >Groeten Geert Stappers -- Leven en laten leven
>>>These few patches contain a few improvement about the Makefiles for EFI. Mainly, to rebuild the files when needed, and only when needed. The three shell scripts efi/{check,build,clean}-gnu-efi.sh disappeared and are now integrated as makefile recipes. <<< What's the default strategy for checking out new gnu-efi sources? We should have a way to set the version we want to work with and only update when we want to do so. A comment on the side about Makefile improvements: I've noticed that for some reason #make spotless does not clean up the /gpxe directory. I didn't have time to fix this but probably for you is just a trivial change; please consider this issue if you have a minute. Thanks, Patrick
2015-09-14 14:15 UTC+02:00, Patrick Masotta <masottaus at yahoo.com>:>>>> > These few patches contain a few improvement about the > Makefiles for EFI. Mainly, to rebuild the files when needed, and only when > needed. The three shell scripts efi/{check,build,clean}-gnu-efi.sh > disappeared and > are now integrated as makefile recipes. > <<< > > What's the default strategy for checking out new gnu-efi sources? > We should have a way to set the version we want to work with > and only update when we want to do so.That's true. All I did in these patches was to inline those shell scripts in the Makefiles, including the 'git submodule update --init'. So I didn't change any behavior in that regard. When you make directly or indirectly the targets efi32 or efi64, the submodule is checked out at the revision registered for the current syslinux commit. Currently, if you want to checkout another revision of the submodule, you can checkout it, and 'git add' it (no need to make a commit) so that 'git submodule update --init' won't lose the revision you carefully checked out. But it's true, there's something about it. Having the Makefiles depend on git is not a good idea as it doesn't allow to build from a sources tarball. Another anoying thing is that 'git checkout' doesn't even try to checkout the submodule at the registered revision, which is a bit annoying. It's like you checkout a revision of syslinux and there's one file that never gets updated. So I don't know what the right policy should be. What do you think about it? Ideally, there should be a config option so that 'git checkout' to also perform a 'git submodule update'. But I can't see any such thing. Celelibi
Paulo Alcantara
2015-Sep-16 16:03 UTC
[syslinux] [PATCH 1/4] efi: Don't unnecessarily rebuild syslinux.so
On Mon, 14 Sep 2015 05:50:56 +0200 celelibi--- via Syslinux <syslinux at zytor.com> wrote:> From: Sylvain Gault <sylvain.gault at gmail.com> > > OBJ directory creation changed from a .PHONY target to a real target > used through an order-only dependency. > > A target depending on another target marked .PHONY is always rebuilt, > thus forcing all the .o files to be rebuilt everytime. > > Signed-off-by: Sylvain Gault <sylvain.gault at gmail.com>Reviewed-by: Paulo Alcantara <pcacjr at zytor.com> Thanks, Paulo> --- > efi/Makefile | 7 +++---- > 1 file changed, 3 insertions(+), 4 deletions(-) > > diff --git a/efi/Makefile b/efi/Makefile > index d5443bd..bbf23f2 100644 > --- a/efi/Makefile > +++ b/efi/Makefile > @@ -60,11 +60,10 @@ DATE := $(shell sh $(SRC)/../gen-id.sh > $(VERSION) $(HEXDATE)) endif > CFLAGS += -DDATE_STR='"$(DATE)"' > > -.PHONY: subdirs > -subdirs: > - mkdir -p $(ARCH) > +$(OBJ)/$(ARCH): > + mkdir -p $@ > > -$(OBJS): subdirs > +$(OBJS): | $(OBJ)/$(ARCH) > > # The targets to build in this directory > BTARGET = syslinux.efi-- Paulo Alcantara, C.E.S.A.R Speaking for myself only.
On Sun, Sep 13, 2015 at 11:50 PM, celelibi--- via Syslinux <syslinux at zytor.com> wrote:> From: Sylvain Gault <sylvain.gault at gmail.com> > > These few patches contain a few improvement about the Makefiles for EFI. > Mainly, to rebuild the files when needed, and only when needed. The three shell > scripts efi/{check,build,clean}-gnu-efi.sh disappeared and are now integrated > as makefile recipes. > > You'll notice an argument ARFLAGS=rvU to the recursive make calls to gnu-efi. > This is because, the default value is just "rv" and gnu-efi uses the implicit > rules of make that uses $(ARFLAGS). Without the U flag, the timestamp of the > members of the generated archive is set to 0, which is always outdated from the > make's point of view, and thus always rebuilt. > > This U flags forces ar to write the actual timestamp of the file in the > archive, which may not be the default behavior of every distribution (no longer > the default in Debian apparently). I will probably submit a patch to add this > flag in the gnu-efi Makefiles. > > Once this patch merged in gnu-efi, and our gnu-efi submodule updated, those > ARFLAGS argument shall be removed. > > Sylvain Gault > > > Sylvain Gault (4): > efi: Don't unnecessarily rebuild syslinux.soMerged.> efi: Proper dependencies to gnu-efi > mk/efi.mk: Build gnu-efi with the Makefile > efi: move clean-gnu-efi.sh to mk/efi.mkDelayed as you've requested. As I stated, I believe a major reason for the scripts were to minimize the impact of Syslinux make environment tweaks over the gnu-efi build. Also, a major reason gnu-efi was pulled into the source rather than using the system libraries is that early on, it required certain changes that were only present in the git repo and not any official gnu-efi release. An advantage of the submodule is that we know exactly which commit of gnu-efi was used to build a certain version. As stated, it's easy to change versions with an extra git command before a build. Selectively building against the system gnu-efi libraries would first require a version check and a make variable like USE_SYS_GNUEFI or GNUEFI_FROM_SYS. When we look at updating gnu-efi, I have a patch that'll be necessary (posted months ago). I'd like to make updating gnu-efi a discrete pre-release as it might introduce unforeseen issues. This means, once 6.04-pre1 is released, merge my patch, update gnu-efi submodule and immediately release 6.04-pre2. If someone notices an issue with 6.04-pre2, they can immediately test 6.04-pre1 to test if the gnu-efi update broke it. -- -Gene