[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: fwupdate not building; efibootmgr 0.11.0 crashes with efivar 0.18



On Wed, May 27, 2015 at 01:41:23PM -0500, Peter Jones wrote:
On Wed, May 20, 2015 at 09:59:45PM -0500, D. Jared Dominguez wrote:
On Wed, May 20, 2015 at 08:42:15PM -0500, Dominguez, Jared wrote:
>Hi Peter,
>
>I'm trying to build fwupdate. I know it's early, but I'd like to make it
>testable on Debian. It's not buildable for me because it barfs on this:
>make[3]: Entering directory '/«BUILDDIR»/fwupdate-0.2+git20150520/efi'
>gcc -O0 -g3 -fpic -Wall -fshort-wchar -fno-strict-aliasing -fno-merge-constants -ffreestanding -fno-stack-protector -fno-stack-check --std=c11 -DCONFIG_x86_64 -D__KERNEL__ -I/usr/include/efi/ -I/usr/include/efi/x86_64/ -iquote/«BUILDDIR»/fwupdate-0.2+git20150520/include -mno-mmx -mno-sse -mno-red-zone -nostdinc -maccumulate-outgoing-args -DEFI_FUNCTION_WRAPPER -DGNU_EFI_USE_MS_ABI -I/usr/lib/gcc/x86_64-linux-gnu/4.9/include -c -o fakeesrt2.o fakeesrt2.c
>fakeesrt2.c:1:17: fatal error: efi.h: No such file or directory
>  #include <efi.h>
>                  ^
>compilation terminated.
>make[3]: *** [fakeesrt2.o] Error 1
>Makefile:53: recipe for target 'fakeesrt2.o' failed
>make[3]: Leaving directory '/«BUILDDIR»/fwupdate-0.2+git20150520/efi'
>
>I'm actually not sure where efi.h is supposed to come from. I see a
>fwup-efi.h in fwupdate's source and no efi.h in efivar's source. Am I
>missing something?

geofft pointed out to me that I probably want gnu-efi installed. It's
missing from the build requirements in the spec file, so you probably want
to add that. Once I build depend on that, I get further, but it looks like
Debian's gnu-efi uses a different library path:

gcc -O0 -g3 -fpic -Wall -fshort-wchar -fno-strict-aliasing -fno-merge-constants -ffreestanding -fno-stack-protector -fno-stack-check --std=c11 -DCONFIG_x86_64 -D__KERNEL__ -I/usr/include/efi/ -I/usr/include/efi/x86_64/ -iquote/«BUILDDIR»/fwupdate-0.2+git20150520/include -mno-mmx -mno-sse -mno-red-zone -nostdinc -maccumulate-outgoing-args -DEFI_FUNCTION_WRAPPER -DGNU_EFI_USE_MS_ABI -I/usr/lib/gcc/x86_64-linux-gnu/4.9/include -c -o fakeesrt2.o fakeesrt2.c
ld -nostdlib --warn-common --no-undefined --fatal-warnings -shared -Bsymbolic -L/usr/lib64 -L/usr/lib64/gnuefi /usr/lib64/gnuefi/crt0-efi-x86_64.o -o fakeesrt2.so fakeesrt2.o -lefi -lgnuefi \
        /usr/lib/gcc/x86_64-linux-gnu/4.9/libgcc.a \
        -T /usr/lib64/gnuefi/elf_x86_64_efi.lds
ld: cannot open linker script file /usr/lib64/gnuefi/elf_x86_64_efi.lds: No such file or directory
make[3]: *** [fakeesrt2.so] Error 1
Makefile:48: recipe for target 'fakeesrt2.so' failed

I've got:

$ dpkg -L gnu-efi | grep usr/lib
/usr/lib32
/usr/lib32/libefi.a
/usr/lib32/crt0-efi-ia32.o
/usr/lib32/elf_ia32_efi.lds
/usr/lib32/libgnuefi.a
/usr/lib
/usr/lib/crt0-efi-x86_64.o
/usr/lib/libefi.a
/usr/lib/elf_x86_64_efi.lds
/usr/lib/libgnuefi.a

So that's fun... I'm not sure of the best way to handle this.

We should just make it do like we do in shim and use LIB_PATH , and make
that settable from the command line, so you can override it in
packaging, I suspect?

--
       Peter

I looked at your patch, thanks. That gets us most of the way there. The only thing is that you're using $(LIBDIR)/gnuefi, whereas Debian's gnu-efi puts things in $(LIBDIR). If you can place "/gnuefi" in a variable too, I can just tweak that when building for Debian.

--Jared


--
Jared Domínguez
Infrastructure Software Engineering
Dell | Enterprise Solutions Group


Reply to: