From 90e08ddc2b1e3b7af0c871fb012aab8a89eee826 Mon Sep 17 00:00:00 2001 From: Khem Raj Date: Fri, 18 Aug 2017 09:49:49 -0700 Subject: efivar: Upgrade to 0.31 Signed-off-by: Khem Raj Signed-off-by: Martin Jansa --- ...some-extra-const-that-gcc-complains-about.patch | 44 --------------- ...Do-not-use-__bswap_constant_-16-32-macros.patch | 37 ++++++++++++ ...-version-new-way-symbol-versioning-breaks.patch | 66 ---------------------- .../efivar/efivar/0002-disable-static-build.patch | 33 ----------- .../0004-fix-unknow-option-for-gold-linker.patch | 15 ++--- .../fix-compile-failure-with-host-gcc-4.6.patch | 13 ++--- .../efivar/efivar/musl-strndupa.patch | 17 ++++++ meta-oe/recipes-extended/efivar/efivar_0.24.bb | 46 --------------- meta-oe/recipes-extended/efivar/efivar_0.31.bb | 45 +++++++++++++++ 9 files changed, 110 insertions(+), 206 deletions(-) delete mode 100644 meta-oe/recipes-extended/efivar/efivar/0001-Remove-some-extra-const-that-gcc-complains-about.patch create mode 100644 meta-oe/recipes-extended/efivar/efivar/0001-makeguids-Do-not-use-__bswap_constant_-16-32-macros.patch delete mode 100644 meta-oe/recipes-extended/efivar/efivar/0002-New-gcc-version-new-way-symbol-versioning-breaks.patch delete mode 100644 meta-oe/recipes-extended/efivar/efivar/0002-disable-static-build.patch create mode 100644 meta-oe/recipes-extended/efivar/efivar/musl-strndupa.patch delete mode 100644 meta-oe/recipes-extended/efivar/efivar_0.24.bb create mode 100644 meta-oe/recipes-extended/efivar/efivar_0.31.bb diff --git a/meta-oe/recipes-extended/efivar/efivar/0001-Remove-some-extra-const-that-gcc-complains-about.patch b/meta-oe/recipes-extended/efivar/efivar/0001-Remove-some-extra-const-that-gcc-complains-about.patch deleted file mode 100644 index 4ae8cb90f8..0000000000 --- a/meta-oe/recipes-extended/efivar/efivar/0001-Remove-some-extra-const-that-gcc-complains-about.patch +++ /dev/null @@ -1,44 +0,0 @@ -From 29a2dea16113b5a8e51de46437c6a9f7426c5867 Mon Sep 17 00:00:00 2001 -From: Peter Jones -Date: Mon, 6 Feb 2017 14:28:19 -0500 -Subject: [PATCH 1/2] Remove some extra "const" that gcc complains about. - -One of these days I'll get these right. - -Signed-off-by: Peter Jones ---- - src/include/efivar/efiboot-loadopt.h | 4 ++-- - src/loadopt.c | 2 +- - 2 files changed, 3 insertions(+), 3 deletions(-) - -diff --git a/src/include/efivar/efiboot-loadopt.h b/src/include/efivar/efiboot-loadopt.h -index 07db5c4..efc29c6 100644 ---- a/src/include/efivar/efiboot-loadopt.h -+++ b/src/include/efivar/efiboot-loadopt.h -@@ -32,8 +32,8 @@ extern ssize_t efi_loadopt_create(uint8_t *buf, ssize_t size, - - extern efidp efi_loadopt_path(efi_load_option *opt, ssize_t limit) - __attribute__((__nonnull__ (1))); --extern const unsigned char const * efi_loadopt_desc(efi_load_option *opt, -- ssize_t limit) -+extern const unsigned char * efi_loadopt_desc(efi_load_option *opt, -+ ssize_t limit) - __attribute__((__visibility__ ("default"))) - __attribute__((__nonnull__ (1))); - extern uint32_t efi_loadopt_attrs(efi_load_option *opt) -diff --git a/src/loadopt.c b/src/loadopt.c -index 64e333f..ec50722 100644 ---- a/src/loadopt.c -+++ b/src/loadopt.c -@@ -336,7 +336,7 @@ teardown(void) - - __attribute__((__nonnull__ (1))) - __attribute__((__visibility__ ("default"))) --const unsigned char const * -+const unsigned char * - efi_loadopt_desc(efi_load_option *opt, ssize_t limit) - { - if (last_desc) { --- -2.12.2 - diff --git a/meta-oe/recipes-extended/efivar/efivar/0001-makeguids-Do-not-use-__bswap_constant_-16-32-macros.patch b/meta-oe/recipes-extended/efivar/efivar/0001-makeguids-Do-not-use-__bswap_constant_-16-32-macros.patch new file mode 100644 index 0000000000..73a772186a --- /dev/null +++ b/meta-oe/recipes-extended/efivar/efivar/0001-makeguids-Do-not-use-__bswap_constant_-16-32-macros.patch @@ -0,0 +1,37 @@ +From 98b33d4193998687aa3a78c097f7bd4c393e0c85 Mon Sep 17 00:00:00 2001 +From: Khem Raj +Date: Sat, 15 Jul 2017 00:29:42 -0700 +Subject: [PATCH] makeguids: Do not use __bswap_constant_{16|32} macros + +not available on musl + +Signed-off-by: Khem Raj +--- + src/makeguids.c | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +diff --git a/src/makeguids.c b/src/makeguids.c +index da2f5f7..daf821a 100644 +--- a/src/makeguids.c ++++ b/src/makeguids.c +@@ -155,13 +155,13 @@ main(int argc, char *argv[]) + #if BYTE_ORDER == BIG_ENDIAN\n\ + #define cpu_to_be32(n) (n)\n\ + #define cpu_to_be16(n) (n)\n\ +-#define cpu_to_le32(n) (__bswap_constant_32(n))\n\ +-#define cpu_to_le16(n) (__bswap_constant_16(n))\n\ ++#define cpu_to_le32(n) ((uint32_t) ((n)>>24 | (n)>>8&0xff00 | (n)<<8&0xff0000 | (n)<<24))\n\ ++#define cpu_to_le16(n) ((uint16_t) ((n)<<8 | (n)>>8))\n\ + #else\n\ + #define cpu_to_le32(n) (n)\n\ + #define cpu_to_le16(n) (n)\n\ +-#define cpu_to_be32(n) (__bswap_constant_32(n))\n\ +-#define cpu_to_be16(n) (__bswap_constant_16(n))\n\ ++#define cpu_to_be32(n) ((uint32_t) ((n)>>24 | (n)>>8&0xff00 | (n)<<8&0xff0000 | (n)<<24))\n\ ++#define cpu_to_be16(n) ((uint16_t) ((n)<<8 | (n)>>8))\n\ + #endif\n\ + """); + +-- +2.13.3 + diff --git a/meta-oe/recipes-extended/efivar/efivar/0002-New-gcc-version-new-way-symbol-versioning-breaks.patch b/meta-oe/recipes-extended/efivar/efivar/0002-New-gcc-version-new-way-symbol-versioning-breaks.patch deleted file mode 100644 index 737b78b019..0000000000 --- a/meta-oe/recipes-extended/efivar/efivar/0002-New-gcc-version-new-way-symbol-versioning-breaks.patch +++ /dev/null @@ -1,66 +0,0 @@ -From 31e655d2b5f66e772d9714422b7332bbaa60d2e6 Mon Sep 17 00:00:00 2001 -From: Peter Jones -Date: Mon, 6 Feb 2017 14:41:58 -0500 -Subject: [PATCH 2/2] New gcc version, new way symbol versioning breaks. - -Apparently I get to redo this every time there's a compiler release. -Yaaaaaay. - -Anyway, the current method is to define the two compat things from the -land before time as @libefivar.so.0 symbols and list them there in the -link map. Then we have the real one defined with another name, and set -as efi_set_variable@@LIBEFIVAR_0.24. Then to make there actually be a -efi_set_variable symbol to link against, we create it as a weak alias. - -This is all completely absurd. - -Signed-off-by: Peter Jones ---- - src/lib.c | 17 ++++++++++++----- - 1 file changed, 12 insertions(+), 5 deletions(-) - -diff --git a/src/lib.c b/src/lib.c -index 6a9b392..afa7d94 100644 ---- a/src/lib.c -+++ b/src/lib.c -@@ -49,7 +49,7 @@ _efi_set_variable(efi_guid_t guid, const char *name, uint8_t *data, - { - return ops->set_variable(guid, name, data, data_size, attributes, 0600); - } --__asm__(".symver _efi_set_variable,_efi_set_variable@"); -+__asm__(".symver _efi_set_variable,_efi_set_variable@libefivar.so.0"); - - int - __attribute__((__nonnull__ (2, 3))) -@@ -59,17 +59,24 @@ _efi_set_variable_variadic(efi_guid_t guid, const char *name, uint8_t *data, - { - return ops->set_variable(guid, name, data, data_size, attributes, 0600); - } --__asm__(".symver _efi_set_variable_variadic,efi_set_variable@"); -+__asm__(".symver _efi_set_variable_variadic,efi_set_variable@libefivar.so.0"); - - int - __attribute__((__nonnull__ (2, 3))) - __attribute__((__visibility__ ("default"))) --efi_set_variable(efi_guid_t guid, const char *name, uint8_t *data, -- size_t data_size, uint32_t attributes, mode_t mode) -+_efi_set_variable_mode(efi_guid_t guid, const char *name, uint8_t *data, -+ size_t data_size, uint32_t attributes, mode_t mode) - { - return ops->set_variable(guid, name, data, data_size, attributes, mode); - } --__asm__(".symver efi_set_variable,efi_set_variable@@LIBEFIVAR_0.24"); -+__asm__(".symver _efi_set_variable_mode,efi_set_variable@@LIBEFIVAR_0.24"); -+ -+int -+__attribute__((__nonnull__ (2, 3))) -+__attribute__((__visibility__ ("default"))) -+efi_set_variable(efi_guid_t guid, const char *name, uint8_t *data, -+ size_t data_size, uint32_t attributes, mode_t mode) -+ __attribute((weak, alias ("_efi_set_variable_mode"))); - - int - __attribute__((__nonnull__ (2, 3))) --- -2.12.2 - diff --git a/meta-oe/recipes-extended/efivar/efivar/0002-disable-static-build.patch b/meta-oe/recipes-extended/efivar/efivar/0002-disable-static-build.patch deleted file mode 100644 index 951b15921f..0000000000 --- a/meta-oe/recipes-extended/efivar/efivar/0002-disable-static-build.patch +++ /dev/null @@ -1,33 +0,0 @@ -From 126e0d3c1ad74cf5b0abe9e98ec444bcc3c83159 Mon Sep 17 00:00:00 2001 -From: Koen Kooi -Date: Fri, 4 Mar 2016 14:53:55 +0100 -Subject: [PATCH 2/2] disable static build - -Signed-off-by: Koen Kooi - -Upstream-Status: Inappropriate [meta-oe specific] -Signed-off-by: Hongxu Jia - ---- - src/Makefile | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/src/Makefile b/src/Makefile -index 1829d22..c7a0ca3 100644 ---- a/src/Makefile -+++ b/src/Makefile -@@ -8,9 +8,9 @@ include $(TOPDIR)/Make.defaults - - LIBTARGETS=libefivar.so libefiboot.so - STATICLIBTARGETS=libefivar.a libefiboot.a --BINTARGETS=efivar efivar-static -+BINTARGETS=efivar - PCTARGETS=efivar.pc efiboot.pc --TARGETS=$(LIBTARGETS) $(STATICLIBTARGETS) $(BINTARGETS) $(PCTARGETS) -+TARGETS=$(LIBTARGETS) $(BINTARGETS) $(PCTARGETS) - - LIBEFIBOOT_SOURCES = crc32.c creator.c disk.c gpt.c linux.c loadopt.c - LIBEFIBOOT_OBJECTS = $(patsubst %.c,%.o,$(LIBEFIBOOT_SOURCES)) --- -2.4.3 - diff --git a/meta-oe/recipes-extended/efivar/efivar/0004-fix-unknow-option-for-gold-linker.patch b/meta-oe/recipes-extended/efivar/efivar/0004-fix-unknow-option-for-gold-linker.patch index 5d50c19062..96d0c6b3b2 100644 --- a/meta-oe/recipes-extended/efivar/efivar/0004-fix-unknow-option-for-gold-linker.patch +++ b/meta-oe/recipes-extended/efivar/efivar/0004-fix-unknow-option-for-gold-linker.patch @@ -23,16 +23,13 @@ Signed-off-by: Hongxu Jia gcc.specs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -diff --git a/gcc.specs b/gcc.specs -index 24fabc2..5b0fdef 100644 ---- a/gcc.specs -+++ b/gcc.specs +Index: git/gcc.specs +=================================================================== +--- git.orig/gcc.specs ++++ git/gcc.specs @@ -14,4 +14,4 @@ + %{!shared:%{!static:%{!r:-pie}}} %{static:-Wl,-no-fatal-warnings -Wl,-static -static -Wl,-z,relro,-z,now} *link: --+ %{!static:--fatal-warnings} --no-undefined-version --no-allow-shlib-undefined --add-needed -z now --build-id %{!static:%{!shared:-PIE}} %{shared:-z relro -PIC} %{static:% gcc.specs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) -diff --git a/gcc.specs b/gcc.specs -index 0d4bbda..3802ca6 100644 ---- a/gcc.specs -+++ b/gcc.specs +Index: git/gcc.specs +=================================================================== +--- git.orig/gcc.specs ++++ git/gcc.specs @@ -2,13 +2,13 @@ + -D_GNU_SOURCE @@ -35,11 +35,8 @@ index 0d4bbda..3802ca6 100644 + %(efivar_cpp_options) *cc1_options: --+ %(efivar_cpp_options) -Wmaybe-uninitialized -fno-merge-constants -flto -fvisibility=hidden %{!r:%{!fpie:%{!fPIE:%{!fpic:%{!fPIC:%{!fno-pic:-fPIE}}}}}} +-+ %(efivar_cpp_options) -Wmaybe-uninitialized -fno-merge-constants -fvisibility=hidden %{!r:%{!fpie:%{!fPIE:%{!fpic:%{!fPIC:%{!fno-pic:-fPIE}}}}}} ++ %(efivar_cpp_options) -fno-merge-constants -fvisibility=hidden %{!r:%{!fpie:%{!fPIE:%{!fpic:%{!fPIC:%{!fno-pic:-fPIE}}}}}} *self_spec: + %{!shared:%{!static:%{!r:-pie}}} %{static:-Wl,-no-fatal-warnings -Wl,-static -static -Wl,-z,relro,-z,now} --- -2.8.1 - diff --git a/meta-oe/recipes-extended/efivar/efivar/musl-strndupa.patch b/meta-oe/recipes-extended/efivar/efivar/musl-strndupa.patch new file mode 100644 index 0000000000..fc8f8c8b21 --- /dev/null +++ b/meta-oe/recipes-extended/efivar/efivar/musl-strndupa.patch @@ -0,0 +1,17 @@ +Taken from void linux + +Index: git/src/linux.c +=================================================================== +--- git.orig/src/linux.c ++++ git/src/linux.c +@@ -40,6 +40,10 @@ + #include + #include + ++#if !defined(__GLIBC__) ++#define strndupa(x,s) strncpy(alloca(strlen(x)+1),x,s) ++#endif ++ + #include "dp.h" + #include "linux.h" + #include "util.h" diff --git a/meta-oe/recipes-extended/efivar/efivar_0.24.bb b/meta-oe/recipes-extended/efivar/efivar_0.24.bb deleted file mode 100644 index 877ca9045b..0000000000 --- a/meta-oe/recipes-extended/efivar/efivar_0.24.bb +++ /dev/null @@ -1,46 +0,0 @@ -SUMMARY = "Tools to manipulate UEFI variables" -DESCRIPTION = "efivar provides a simple command line interface to the UEFI variable facility" -HOMEPAGE = "https://github.com/rhinstaller/efivar" - -LICENSE = "LGPLv2.1" -LIC_FILES_CHKSUM = "file://COPYING;md5=6626bb1e20189cfa95f2c508ba286393" - -DEPENDS = "popt" -DEPENDS_append_class-target = " efivar-native" - -inherit pkgconfig - -COMPATIBLE_HOST = "(i.86|x86_64|arm|aarch64).*-linux" - -SRCREV = "963cb2e5adc145fe00717f94e382f2973f80e753" -SRC_URI = "git://github.com/rhinstaller/efivar.git \ - file://0002-disable-static-build.patch \ - file://allow-multi-definitions-for-native.patch \ - file://0001-Remove-some-extra-const-that-gcc-complains-about.patch \ - file://0002-New-gcc-version-new-way-symbol-versioning-breaks.patch \ -" -SRC_URI_append_class-target = " file://0001-efivar-fix-for-cross-compile.patch \ - file://0003-efivar-fix-for-cross-compile.patch \ - ${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-gold', 'file://0004-fix-unknow-option-for-gold-linker.patch', '', d)} \ - " -SRC_URI_append_class-native = " file://fix-compile-failure-with-host-gcc-4.6.patch \ - " - -S = "${WORKDIR}/git" - -# Setting CROSS_COMPILE breaks pkgconfig, so just set AR -EXTRA_OEMAKE = "AR=${TARGET_PREFIX}gcc-ar" - -do_compile_prepend() { - sed -i -e s:-Werror::g ${S}/gcc.specs -} - -do_install() { - oe_runmake install DESTDIR=${D} -} - -do_install_append_class-native() { - install -D -m 0755 ${B}/src/makeguids ${D}${bindir}/makeguids -} - -BBCLASSEXTEND = "native" diff --git a/meta-oe/recipes-extended/efivar/efivar_0.31.bb b/meta-oe/recipes-extended/efivar/efivar_0.31.bb new file mode 100644 index 0000000000..10dde896ee --- /dev/null +++ b/meta-oe/recipes-extended/efivar/efivar_0.31.bb @@ -0,0 +1,45 @@ +SUMMARY = "Tools to manipulate UEFI variables" +DESCRIPTION = "efivar provides a simple command line interface to the UEFI variable facility" +HOMEPAGE = "https://github.com/rhinstaller/efivar" + +LICENSE = "LGPLv2.1" +LIC_FILES_CHKSUM = "file://COPYING;md5=6626bb1e20189cfa95f2c508ba286393" + +DEPENDS = "popt" +DEPENDS_append_class-target = " efivar-native" + +inherit pkgconfig + +COMPATIBLE_HOST = "(i.86|x86_64|arm|aarch64).*-linux" + +SRCREV = "11324799c68193116e1dd5f94b416591bd324f90" +SRC_URI = "git://github.com/rhinstaller/efivar.git \ + file://allow-multi-definitions-for-native.patch \ + file://0001-makeguids-Do-not-use-__bswap_constant_-16-32-macros.patch \ + file://musl-strndupa.patch \ + " +SRC_URI_append_class-target = " file://0001-efivar-fix-for-cross-compile.patch \ + file://0003-efivar-fix-for-cross-compile.patch \ + ${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-gold', 'file://0004-fix-unknow-option-for-gold-linker.patch', '', d)} \ + " +SRC_URI_append_class-native = " file://fix-compile-failure-with-host-gcc-4.6.patch \ + " + +S = "${WORKDIR}/git" + +# Setting CROSS_COMPILE breaks pkgconfig, so just set AR +EXTRA_OEMAKE = "AR=${TARGET_PREFIX}gcc-ar" + +do_compile_prepend() { + sed -i -e s:-Werror::g ${S}/gcc.specs +} + +do_install() { + oe_runmake install DESTDIR=${D} +} + +do_install_append_class-native() { + install -D -m 0755 ${B}/src/makeguids ${D}${bindir}/makeguids +} + +BBCLASSEXTEND = "native" -- cgit 1.2.3-korg