buildroot/package/efivar/0001-efivar-isolate-makeguids-host-tool-build.patch
Julien Olivain 077741623f package/efivar: bump to version 39 to fix build failures
For release note since version 38, see [1].

This commit introduces changes in package patches:

- 0001: Patch dropped. An similar change is included in this release.
  See [2].
- 0002: Patch no longer needed since the package build recipe sets
  CFLAGS without -Werror, and the package makefile sets -Werror only
  by default. See [3], included since version 38.
- 0003: Rebased on version 39 and renamed to 0001. The patch is also
  flagged as "Upstream: Not applicable".
- 0004: Patch dropped. Included in this release. See [4].

This commit also removes all patch entries in ".checkpackageignore"
(since the remaining patch has its "Upstream:" tag).

This version 39 also fixes few build failures. Those can be seen by
running the command "utils/test-pkg -a -p efivar". The first group
of build failures is:

                br-arm-basic [28/45]: FAILED
       br-i386-pentium4-full [31/45]: FAILED
          br-mips64-n64-full [33/45]: FAILED
     br-mips64r6-el-hf-glibc [34/45]: FAILED
              linaro-aarch64 [38/45]: FAILED
                  linaro-arm [39/45]: FAILED

Fixes:

    /buildroot/host/opt/ext-toolchain/bin/../lib/gcc/aarch64-linux-gnu/7.3.1/../../../../aarch64-linux-gnu/bin/ld: .data not found for insert
    collect2: error: ld returned 1 exit status

efivar 38 was using linker scripts, which was not working in all
cases. Those issues are fixed by the upstream commit [5] which
removes the use of this linker script (included in this release).

The "test-pkg -a -p efivar" also caught another kind of build
failures:

    br-i386-pentium-mmx-musl [32/45]: FAILED

Fixes:

    In file included from efivar.h:18,
                     from efisec.h:24,
                     from secdb-dump.c:7:
    list.h: In function 'list_sort':
    list.h:152:2: warning: implicit declaration of function 'qsort_r'; did you mean 'qsort'? [-Wimplicit-function-declaration]
      152 |  qsort_r(array, nmemb, sizeof(*array), cmp, state);
          |  ^~~~~~~
          |  qsort

Those failures were introduced in commit f24029b561 "package/efivar:
bump to version 38". This is because efivar introduced a usage of the
qsort_r() libc function, in upstream commit [6], first included in
version 38.

Musl libc added the qsort_r() function in upstream commit [7], included in
version v1.2.3 (2022-04-07).  So external toolchains including a Musl older
than this version will fail.  But given how old this issue is (musql 1.2.3
is included in Buildroot since 2022.05), this issue is ignored.

uClibc-ng external toolchains are also not affected, since it added
the qsort_r() function in commit [8] included since its first version
v1.0.0 (2015-02-02). So there is no need to exclude external uclibc
toolchains.

[1] https://github.com/rhboot/efivar/releases/tag/39
[2] 4f3da3dc35
[3] 998f617cec
[4] cece3ffd5b
[5] cfd686de51
[6] 62afa2aa58
[7] https://git.musl-libc.org/cgit/musl/commit/?id=b76f37fd5625d038141b52184956fb4b7838e9a5
[8] 515d544331

Signed-off-by: Julien Olivain <ju.o@free.fr>
[Peter: drop dependency on !external musl]
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2024-03-04 08:25:44 +01:00

52 lines
1.8 KiB
Diff

From e1c3734bab27fd850b4ac6681d219ceaf0637616 Mon Sep 17 00:00:00 2001
From: Erico Nunes <nunes.erico@gmail.com>
Date: Mon, 3 Oct 2022 18:16:55 +0200
Subject: [PATCH] efivar: isolate makeguids host tool build
efivar build includes a 'makeguids' host tool which is normally built by
distributions during the package build step. This is unfortunately not
written with cross-compilation in mind, since it needs to build for the
host architecture, including the build of object files which it then
assumes can be linked into the target library.
To make the packaging process simpler for a cross-compilation system
like Buildroot, separate the 'makeguids' tool build to an explicit make
target and remove target build dependencies from it.
This way, Buildroot can build the tool separately in a host build step
and the target build step can then be straightforward.
Upstream: Not applicable (does not support cross compilation)
Signed-off-by: Julien Olivain <ju.o@free.fr>
[Julien: rebased patch to version 39]
Signed-off-by: Erico Nunes <nunes.erico@gmail.com>
---
src/Makefile | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/src/Makefile b/src/Makefile
index 6fc2a62..7fa63c6 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -70,7 +70,6 @@ makeguids : LDFLAGS=$(HOST_LDFLAGS)
makeguids : CCLDFLAGS=$(HOST_CCLDFLAGS)
makeguids : $(MAKEGUIDS_OBJECTS)
-$(MAKEGUIDS_OUTPUT) : makeguids
$(MAKEGUIDS_OUTPUT) : guids.txt
@set -e ; \
missing=no ; \
@@ -83,9 +82,9 @@ $(MAKEGUIDS_OUTPUT) : guids.txt
if [ "$${missing}" != "no" ]; then \
exit 1 ; \
fi
- ./makeguids guids.txt guid-symbols.c include/efivar/efivar-guids.h
+ makeguids guids.txt guid-symbols.c include/efivar/efivar-guids.h
-prep : makeguids $(GENERATED_SOURCES)
+prep : $(GENERATED_SOURCES)
$(LIBEFIVAR_OBJECTS) $(LIBEFIBOOT_OBJECTS) : include/efivar/efivar-guids.h
--
2.44.0