diff --git a/package/Config.in b/package/Config.in index 3d99d72fc7..efce72d43d 100644 --- a/package/Config.in +++ b/package/Config.in @@ -1658,6 +1658,7 @@ if BR2_PACKAGE_BUSYBOX_SHOW_OTHERS endif source "package/cgroupfs-mount/Config.in" source "package/dsp-tools/Config.in" + source "package/efivar/Config.in" source "package/emlog/Config.in" source "package/ftop/Config.in" source "package/getent/Config.in" diff --git a/package/efivar/0001-Workaround-rename-of-linux-nvme.h.patch b/package/efivar/0001-Workaround-rename-of-linux-nvme.h.patch new file mode 100644 index 0000000000..c12a2d9ed0 --- /dev/null +++ b/package/efivar/0001-Workaround-rename-of-linux-nvme.h.patch @@ -0,0 +1,32 @@ +From 75a73111371526a12712bb7211da2116c0bf40f7 Mon Sep 17 00:00:00 2001 +From: Mike Gilbert +Date: Thu, 14 Jan 2016 17:02:31 -0500 +Subject: [PATCH] Workaround rename of linux/nvme.h + +Bug: https://bugs.gentoo.org/571548 + +Signed-off-by: Erico Nunes +--- + src/linux.c | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/src/linux.c b/src/linux.c +index b618cfd..9388cd3 100644 +--- a/src/linux.c ++++ b/src/linux.c +@@ -22,7 +22,12 @@ + #include + #include + #include ++#include ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 4, 0) ++#include ++#else + #include ++#endif + #include + #include + #include +-- +2.7.4 + diff --git a/package/efivar/0002-Make.rules-fix-build-with-make-3.81.patch b/package/efivar/0002-Make.rules-fix-build-with-make-3.81.patch new file mode 100644 index 0000000000..e4e5a2cc40 --- /dev/null +++ b/package/efivar/0002-Make.rules-fix-build-with-make-3.81.patch @@ -0,0 +1,45 @@ +From 00376f4dec71d4abb591ba07bc8164ba29e5955e Mon Sep 17 00:00:00 2001 +From: Erico Nunes +Date: Tue, 22 Mar 2016 21:43:44 -0300 +Subject: [PATCH] Make.rules: fix build with make <= 3.81 + +Building with host make 3.81 resulted in an issue where src/efivar.pc +was never generated. +Even by running 'make efivar.pc' inside the src directory, make always +returned that there was nothing to do. +This was not observed when using make 3.82 or 4.x. +It is apparently caused by the assignment operators in the multi-line +defines in Make.rules, which do not seem to be supported by make 3.81. +By omitting the assignment operators, the rule works with both versions +of make. + +Signed-off-by: Erico Nunes +--- + Make.rules | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/Make.rules b/Make.rules +index 8a50fa5..d9c0609 100644 +--- a/Make.rules ++++ b/Make.rules +@@ -42,7 +42,7 @@ include $(TOPDIR)/Make.version + + %.c : %.h + +-define substitute-version = ++define substitute-version + sed \ + -e "s,@@VERSION@@,$(VERSION),g" \ + -e "s,@@LIBDIR@@,$(libdir),g" \ +@@ -61,7 +61,7 @@ pkg-config-ldflags = \ + pkg-config-ldlibs = \ + $(shell if [ -n "$(PKGS)" ]; then $(PKG_CONFIG) --libs-only-l $(PKGS) ; fi) + +-define deps-of = ++define deps-of + $(foreach src,$(filter %.c,$(1)),$(patsubst %.c,.%.d,$(src))) \ + $(foreach src,$(filter %.S,$(1)),$(patsubst %.S,.%.d,$(src))) + endef +-- +2.7.4 + diff --git a/package/efivar/Config.in b/package/efivar/Config.in new file mode 100644 index 0000000000..c507584b6f --- /dev/null +++ b/package/efivar/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_EFIVAR + bool "efivar" + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12 # linux/nvme.h + # doesn't build with uclibc due to lack of uchar.h + # doesn't build with musl due to lack of __bswap_constant_16 + depends on BR2_TOOLCHAIN_USES_GLIBC + select BR2_PACKAGE_POPT + help + Tools and libraries to manipulate EFI variables + + https://github.com/rhinstaller/efivar + +comment "efivar requires an (e)glibc toolchain w/ headers >= 3.12" + depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12 || \ + !BR2_TOOLCHAIN_USES_GLIBC diff --git a/package/efivar/efivar.hash b/package/efivar/efivar.hash new file mode 100644 index 0000000000..66192292e7 --- /dev/null +++ b/package/efivar/efivar.hash @@ -0,0 +1,2 @@ +# locally computed hash +sha256 f807f5f0846323bc21b18043542b296f5ad81514f91f13c74a4b8da30c965c94 efivar-0.23.tar.gz diff --git a/package/efivar/efivar.mk b/package/efivar/efivar.mk new file mode 100644 index 0000000000..3d37916995 --- /dev/null +++ b/package/efivar/efivar.mk @@ -0,0 +1,56 @@ +################################################################################ +# +# efivar +# +################################################################################ + +EFIVAR_VERSION = 0.23 +EFIVAR_SITE = $(call github,rhinstaller,efivar,$(EFIVAR_VERSION)) +EFIVAR_LICENSE = LGPLv2.1 +EFIVAR_LICENSE_FILES = COPYING +EFIVAR_DEPENDENCIES = popt +EFIVAR_INSTALL_STAGING = YES + +# BINTARGETS is set to skip efivar-static which requires static popt, +# and since we depend on glibc, we will never be built in a +# static-only environment. +# -fPIC is needed at least on MIPS, otherwise fails to build shared +# -library. +EFIVAR_MAKE_OPTS = \ + libdir=/usr/lib \ + BINTARGETS=efivar \ + LDFLAGS="$(TARGET_LDFLAGS) -fPIC" + +# Explicitly linking with shared libgcc is required on MicroBlaze, +# otherwise it fails due to FDE encoding in static libgcc. +ifeq ($(BR2_microblaze),y) +EFIVAR_MAKE_OPTS += SOFLAGS="-shared -shared-libgcc" +endif + +define EFIVAR_BUILD_CMDS + # makeguids is an internal host tool and must be built separately with + # $(HOST_CC), otherwise it gets cross-built. + $(HOST_MAKE_ENV) $(HOST_CONFIGURE_OPTS) \ + CFLAGS="$(HOST_CFLAGS) -std=c99" \ + $(MAKE) -C $(@D)/src makeguids + + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE1) -C $(@D) \ + $(EFIVAR_MAKE_OPTS) \ + all +endef + +define EFIVAR_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE1) -C $(@D) \ + $(EFIVAR_MAKE_OPTS) \ + DESTDIR="$(STAGING_DIR)" \ + install +endef + +define EFIVAR_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE1) -C $(@D) \ + $(EFIVAR_MAKE_OPTS) \ + DESTDIR="$(TARGET_DIR)" \ + install +endef + +$(eval $(generic-package))