diff --git a/meta-citadel/recipes-support/efivar/efivar/0001-efivar-fix-for-cross-compile.patch b/meta-citadel/recipes-support/efivar/efivar/0001-efivar-fix-for-cross-compile.patch new file mode 100644 index 0000000..251e50c --- /dev/null +++ b/meta-citadel/recipes-support/efivar/efivar/0001-efivar-fix-for-cross-compile.patch @@ -0,0 +1,32 @@ +From a9115d9e6f0f62d6bb735ce3698858d1f89f8d73 Mon Sep 17 00:00:00 2001 +From: Kai Kang +Date: Fri, 25 Sep 2015 18:14:31 +0800 +Subject: [PATCH] efivar: fix for cross compile + +It builds and calls elf file makeguids to generate a header file which +doesn't work for cross compile. Fix it. + +Signed-off-by: Kai Kang + +Upstream-Status: Pending +Signed-off-by: Hongxu Jia + +--- + src/Makefile | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/Makefile b/src/Makefile +index 0c16597..dcc7fc8 100644 +--- a/src/Makefile ++++ b/src/Makefile +@@ -40,8 +40,8 @@ abicheck : $(patsubst %.so,%.abicheck,$(LIBTARGETS)) + ./guid-symbols.c : include/efivar/efivar-guids.h + ./guids.bin : include/efivar/efivar-guids.h + ./names.bin : include/efivar/efivar-guids.h +-include/efivar/efivar-guids.h : makeguids guids.txt +- ./makeguids guids.txt guids.bin names.bin \ ++include/efivar/efivar-guids.h : guids.txt ++ makeguids guids.txt guids.bin names.bin \ + guid-symbols.c include/efivar/efivar-guids.h + + makeguids : CPPFLAGS+=-DEFIVAR_BUILD_ENVIRONMENT diff --git a/meta-citadel/recipes-support/efivar/efivar/0004-fix-unknow-option-for-gold-linker.patch b/meta-citadel/recipes-support/efivar/efivar/0004-fix-unknow-option-for-gold-linker.patch new file mode 100644 index 0000000..96d0c6b --- /dev/null +++ b/meta-citadel/recipes-support/efivar/efivar/0004-fix-unknow-option-for-gold-linker.patch @@ -0,0 +1,35 @@ +From b3d35e7dd27a755df5acbe050837885914dbb28b Mon Sep 17 00:00:00 2001 +From: Hongxu Jia +Date: Tue, 10 May 2016 11:34:50 -0400 +Subject: [PATCH] fix unknow option for gold linker + +- Revert the following patch, since oe-core work with gcc 5 +... +commit 3055a3797f16693dfdd855fa68bc57fd900dc408 +Author: Peter Jones +Date: Mon Feb 15 14:15:40 2016 -0500 + + Make gcc.specs work with gcc 6 / binutils 2.26 + + Apparently binutils 2.26 gets real picky about "ld -PIC" vs "ld -fPIC". + + Signed-off-by: Peter Jones +... + +- Remove unknown option '--add-needed' + +Signed-off-by: Hongxu Jia +--- + gcc.specs | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +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} %{static:% +Date: Tue, 31 Jul 2018 14:18:35 +0800 +Subject: [PATCH] allow multi definitions for native + +Upstream-Status: Pending + +It fails to create .so file when build efivar-native: + +| lib.o:(*IND*+0x0): multiple definition of `efi_set_variable' +| lib.o:lib.c:(.text+0xa0): first defined here + +Add link option '-z muldefs' to fix it. + +Signed-off-by: Kai Kang + +Signed-off-by: Hongxu Jia +--- + Make.rules | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/Make.rules b/Make.rules +index 042585b..257ba45 100644 +--- a/Make.rules ++++ b/Make.rules +@@ -20,6 +20,7 @@ include $(TOPDIR)/Make.version + $(CCLD) $(ccldflags) $(CPPFLAGS) $(SOFLAGS) \ + -Wl,-soname,$@.1 \ + -Wl,--version-script=$(MAP) \ ++ -Wl,-z,muldefs \ + -o $@ $^ $(LDLIBS) + ln -vfs $@ $@.1 + +-- +2.7.4 + diff --git a/meta-citadel/recipes-support/efivar/efivar/fix-compile-failure-with-host-gcc-4.6.patch b/meta-citadel/recipes-support/efivar/efivar/fix-compile-failure-with-host-gcc-4.6.patch new file mode 100644 index 0000000..dbc9a57 --- /dev/null +++ b/meta-citadel/recipes-support/efivar/efivar/fix-compile-failure-with-host-gcc-4.6.patch @@ -0,0 +1,43 @@ +From 3edce6a0019bcb90febc1f654b5b2e2bad5c59bd Mon Sep 17 00:00:00 2001 +From: Hongxu Jia +Date: Thu, 26 May 2016 21:50:01 -0400 +Subject: [PATCH] fix compile failure with older host gcc (<=4.6) + +While host gcc version is 4.6.3 in ubuntu 1204, it +did not recognize -std=gnu11 and -Wmaybe-uninitialized. + +While host gcc version is 4.4.7 in centos6, it +did not recognize -std=gnu11, -Wmaybe-uninitialized, +and -flto. + +For native build, use -std=gnu99 to replace -std=gnu11, +and directly remove -Wmaybe-uninitialized and -flto. + +Upstream-Status: Pending + +Signed-off-by: Hongxu Jia + +--- + gcc.specs | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/gcc.specs b/gcc.specs +index 45d43d1..f1c6944 100644 +--- a/gcc.specs ++++ b/gcc.specs +@@ -2,13 +2,13 @@ + + -D_GNU_SOURCE + + *efivar_cpp_options: +- -Werror -Wall -std=gnu11 -Wextra ++ -Werror -Wall -std=gnu99 -Wextra + + *cpp_options: + + %(efivar_cpp_options) + + *cc1_options: +-+ %(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} diff --git a/meta-citadel/recipes-support/efivar/efivar_36.bb b/meta-citadel/recipes-support/efivar/efivar_36.bb index d21038e..20588ee 100644 --- a/meta-citadel/recipes-support/efivar/efivar_36.bb +++ b/meta-citadel/recipes-support/efivar/efivar_36.bb @@ -5,32 +5,39 @@ HOMEPAGE = "https://github.com/rhinstaller/efivar" LICENSE = "LGPLv2.1" LIC_FILES_CHKSUM = "file://COPYING;md5=6626bb1e20189cfa95f2c508ba286393" -PV = "36" -SRC_NAME = "efivar" -SRC_URI = "https://github.com/rhboot/efivar/releases/download/${PV}/${SRC_NAME}-${PV}.tar.bz2" -SRC_URI[md5sum] = "e98140ab7105e90059dc57a67c8c07e9" -SRC_URI[sha256sum] = "94bfccc20889440978a85f08d5af4619040ee199001b62588d47d676f58c0d33" +DEPENDS = "popt" +DEPENDS_append_class-target = " efivar-native" -S = "${WORKDIR}/${SRC_NAME}-${PV}" +inherit pkgconfig -#inherit autotools pkgconfig -inherit pkgconfig autotools +COMPATIBLE_HOST = "(i.86|x86_64|arm|aarch64).*-linux" -do_configure () { - : +SRCREV = "ef3449223ecd1e7b1098c523d66b2f960fe839ea" +SRC_URI = "git://github.com/rhinstaller/efivar.git \ + file://allow-multi-definitions-for-native.patch \ + " +SRC_URI_append_class-target = " file://0001-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" + +do_compile_prepend() { + sed -i -e s:-Werror::g ${S}/gcc.specs } -do_compile () { - cd ${S}/src - make - : -#oe_runmake +do_compile_class-native() { + oe_runmake -C src makeguids CC_FOR_BUILD="${BUILD_CC}" } -#do_install () { -# oe_runmake install DESTDIR=${D} -#} +do_install() { + oe_runmake install DESTDIR=${D} +} -#do_install_append_class-native() { -# install -D -m 0755 ${B}/src/makeguids ${D}${bindir}/makeguids -#} +do_install_class-native() { + install -D -m 0755 ${B}/src/makeguids ${D}${bindir}/makeguids +} + +BBCLASSEXTEND = "native"