On 3/6/14, 10:15, "Stefan Stanacar" <[email protected]> wrote:
>gummiboot is is a simple UEFI boot manager (not a boot loader ;-) ) > >These recipes are imported from meta-intel with these changes: > - drop PR and update configure options > - gummiboot was upgraded to latest version > >A couple of notes: > - If you wish you can install the gummiboot package on the target and >use 'gummiboot install' to add the payload to the ESP (see gummiboot >--help, >just make sure the ESP partition has the boot flag on as gummiboot won't >accept it >otherwise). However the point of this recipe is to be used by >bootimg.bbclass and >generate images with gummiboot instead of grub-efi. > - You need a kernel which has CONFIG_EFI_STUB=y at least > - The default linux-yocto kernel config does not enable that, easiest way >to enable is to build with KERNEL_FEATURES_append = " cfg/efi-ext" in >local.conf > >Signed-off-by: Stefan Stanacar <[email protected]> I don't know if Saul or RP would prefer gnu-efi and gummiboot to arrive as separate patches, probably a good idea. But in general, I agree with this direction: Acked-by: Darren Hart <[email protected]> Note: Added Koen on Cc, as he happens to also have been working on something similar in his "spare" time. >--- > .../gnu-efi/gnu-efi/parallel-make-archives.patch | 48 >++++++++++++++++++++++ > .../gnu-efi/gnu-efi/parallel-make.patch | 22 ++++++++++ > meta/recipes-bsp/gnu-efi/gnu-efi_3.0u.bb | 33 +++++++++++++++ > meta/recipes-bsp/gummiboot/gummiboot_git.bb | 25 +++++++++++ > 4 files changed, 128 insertions(+) > create mode 100644 >meta/recipes-bsp/gnu-efi/gnu-efi/parallel-make-archives.patch > create mode 100644 meta/recipes-bsp/gnu-efi/gnu-efi/parallel-make.patch > create mode 100644 meta/recipes-bsp/gnu-efi/gnu-efi_3.0u.bb > create mode 100644 meta/recipes-bsp/gummiboot/gummiboot_git.bb > >diff --git >a/meta/recipes-bsp/gnu-efi/gnu-efi/parallel-make-archives.patch >b/meta/recipes-bsp/gnu-efi/gnu-efi/parallel-make-archives.patch >new file mode 100644 >index 0000000..e5b47c1 >--- /dev/null >+++ b/meta/recipes-bsp/gnu-efi/gnu-efi/parallel-make-archives.patch >@@ -0,0 +1,48 @@ >+Fix parallel make failure for archives >+ >+Upstream-Status: Pending >+ >+The lib and gnuefi makefiles were using the lib.a() form which compiles >+and ar's as a pair instead of compiling all and then ar'ing which can >+parallelize better. This was resulting in build failures on larger values >+of -j. >+ >+See >http://www.chemie.fu-berlin.de/chemnet/use/info/make/make_toc.html#TOC105 >+for details. >+ >+Signed-off-by: Saul Wold <[email protected]> >+Signed-off-by: Darren Hart <[email protected]> >+--- >+--- >+ gnuefi/Makefile | 3 ++- >+ lib/Makefile | 3 ++- >+ 2 files changed, 4 insertions(+), 2 deletions(-) >+ >+Index: gnu-efi-3.0/lib/Makefile >+=================================================================== >+--- gnu-efi-3.0.orig/lib/Makefile >++++ gnu-efi-3.0/lib/Makefile >+@@ -66,7 +66,8 @@ all: libsubdirs libefi.a >+ libsubdirs: >+ for sdir in $(SUBDIRS); do mkdir -p $$sdir; done >+ >+-libefi.a: $(patsubst %,libefi.a(%),$(OBJS)) >++libefi.a: $(OBJS) >++ $(AR) rv $@ $(OBJS) >+ >+ clean: >+ rm -f libefi.a *~ $(OBJS) */*.o >+Index: gnu-efi-3.0/gnuefi/Makefile >+=================================================================== >+--- gnu-efi-3.0.orig/gnuefi/Makefile >++++ gnu-efi-3.0/gnuefi/Makefile >+@@ -51,7 +51,8 @@ TARGETS = crt0-efi-$(ARCH).o libgnuefi.a >+ >+ all: $(TARGETS) >+ >+-libgnuefi.a: $(patsubst %,libgnuefi.a(%),$(OBJS)) >++libgnuefi.a: $(OBJS) >++ $(AR) rv $@ $(OBJS) >+ >+ clean: >+ rm -f $(TARGETS) *~ *.o $(OBJS) >diff --git a/meta/recipes-bsp/gnu-efi/gnu-efi/parallel-make.patch >b/meta/recipes-bsp/gnu-efi/gnu-efi/parallel-make.patch >new file mode 100644 >index 0000000..27c94e8 >--- /dev/null >+++ b/meta/recipes-bsp/gnu-efi/gnu-efi/parallel-make.patch >@@ -0,0 +1,22 @@ >+Fix parallel make failure >+ >+Upstream-Status: Submitted [Maintainer directly] >+ >+Add a missing dependency which resulted in a race leading to failure >+on larger values of -j. >+ >+Signed-off-by: Darren Hart <[email protected]> >+ >+Index: gnu-efi-3.0/Makefile >+=================================================================== >+--- gnu-efi-3.0.orig/Makefile >++++ gnu-efi-3.0/Makefile >+@@ -42,6 +42,8 @@ include $(SRCDIR)/Make.defaults >+ >+ SUBDIRS = lib gnuefi inc apps >+ >++gnuefi: lib >++ >+ all: check_gcc $(SUBDIRS) >+ >+ $(SUBDIRS): >diff --git a/meta/recipes-bsp/gnu-efi/gnu-efi_3.0u.bb >b/meta/recipes-bsp/gnu-efi/gnu-efi_3.0u.bb >new file mode 100644 >index 0000000..0dbdba2 >--- /dev/null >+++ b/meta/recipes-bsp/gnu-efi/gnu-efi_3.0u.bb >@@ -0,0 +1,33 @@ >+SUMMARY = "Libraries for producing EFI binaries" >+HOMEPAGE = "http://sourceforge.net/projects/gnu-efi/" >+SECTION = "devel" >+LICENSE = "GPLv2+" >+LIC_FILES_CHKSUM = >"file://debian/copyright;md5=5fb358a180f484b285b0d99acdc29666" >+ >+SRC_URI = >"http://downloads.sourceforge.net/gnu-efi/gnu-efi_3.0u.orig.tar.gz \ >+ file://parallel-make.patch \ >+ file://parallel-make-archives.patch \ >+ " >+SRC_URI[md5sum] = "d15d3c700e79a1e2938544d73edc572d" >+SRC_URI[sha256sum] = >"3c0d450d5829204ca05dcb3b2aae772e52c379b7c7e09146759c6315606f934e" >+ >+COMPATIBLE_HOST = "(x86_64.*|i.86.*)-linux" >+ >+S = "${WORKDIR}/gnu-efi-3.0" >+ >+def gnu_efi_arch(d): >+ import re >+ tarch = d.getVar("TARGET_ARCH", True) >+ if re.match("i[3456789]86", tarch): >+ return "ia32" >+ return tarch >+ >+EXTRA_OEMAKE = "'ARCH=${@gnu_efi_arch(d)}' 'CC=${CC}' 'AS=${AS}' >'LD=${LD}' 'AR=${AR}' \ >+ 'RANLIB=${RANLIB}' 'OBJCOPY=${OBJCOPY}' >'PREFIX=${prefix}'\ >+ " >+ >+do_install() { >+ oe_runmake install INSTALLROOT="${D}" >+} >+ >+FILES_${PN} += "${libdir}/*.lds" >diff --git a/meta/recipes-bsp/gummiboot/gummiboot_git.bb >b/meta/recipes-bsp/gummiboot/gummiboot_git.bb >new file mode 100644 >index 0000000..b55064f >--- /dev/null >+++ b/meta/recipes-bsp/gummiboot/gummiboot_git.bb >@@ -0,0 +1,25 @@ >+SUMMARY = "Gummiboot is a simple UEFI boot manager which executes >configured EFI images." >+HOMEPAGE = "http://freedesktop.org/wiki/Software/gummiboot" >+ >+LICENSE = "LGPLv2.1" >+LIC_FILES_CHKSUM = "file://LICENSE;md5=4fbd65380cdd255951079008b364516c" >+ >+DEPENDS = "gnu-efi util-linux" >+ >+inherit autotools >+inherit deploy >+ >+PV = "43+git${SRCPV}" >+SRCREV = "4062c51075ba054d4949c714fe06123f9ad3097d" >+SRC_URI = "git://anongit.freedesktop.org/gummiboot" >+ >+S = "${WORKDIR}/git" >+ >+EXTRA_OECONF = "--disable-manpages >--with-efi-includedir=${STAGING_INCDIR} \ >+ --with-efi-ldsdir=${STAGING_LIBDIR} \ >+ --with-efi-libdir=${STAGING_LIBDIR}" >+ >+do_deploy () { >+ install ${S}/gummiboot*.efi ${DEPLOYDIR}/ >+} >+addtask deploy before do_build after do_compile >-- >1.8.5.3 > > -- Darren Hart Yocto Project - Linux Kernel Intel Open Source Technology Center _______________________________________________ Openembedded-core mailing list [email protected] http://lists.openembedded.org/mailman/listinfo/openembedded-core
