Created attachment 470938 [details] sys-boot:refind-0.10.7:20170426-134641.log Emerging sys-boot/refind-0.10.7 fails on my ~amd64 system with the error: conflicting types for ‘CatPrint’. x86_64-pc-linux-gnu-gcc -fno-PIE -Os -fno-strict-aliasing -fno-stack-protector -fshort-wchar -Wall -DEFIX64 -DEFI_FUNCTION_WRAPPER -m64 -mno-red-zone -fpic -I/usr/include/efi -I/usr/include/efi/x86_64 -I/usr/include/efi/protocol -I../include -I../refind -I../libeg -I../mok -I. -I./../include \ -D__MAKEWITH_GNUEFI -DREFIND_VERSION='L"0.10.7"' -c lodepng_xtra.c -o lodepng_xtra.o In file included from ../refind/global.h:54:0, from lodepng_xtra.c:26: ../refind/../EfiLib/GenericBdsLib.h:964:1: error: conflicting types for ‘CatPrint’ CatPrint ( ^~~~~~~~ In file included from ../refind/global.h:50:0, from lodepng_xtra.c:26: /usr/include/efi/efilib.h:509:1: note: previous declaration of ‘CatPrint’ was here CatPrint ( ^~~~~~~~ In file included from ../refind/global.h:54:0, from ../refind/lib.h:56, from screen.c:60: ../refind/../EfiLib/GenericBdsLib.h:964:1: error: conflicting types for ‘CatPrint’ CatPrint ( ^~~~~~~~ In file included from libegint.h:42:0, from screen.c:58: /usr/include/efi/efilib.h:509:1: note: previous declaration of ‘CatPrint’ was here CatPrint ( ^~~~~~~~ In file included from ../refind/global.h:54:0, from image.c:59: ../refind/../EfiLib/GenericBdsLib.h:964:1: error: conflicting types for ‘CatPrint’ CatPrint ( ^~~~~~~~ In file included from libegint.h:42:0, from image.c:58: /usr/include/efi/efilib.h:509:1: note: previous declaration of ‘CatPrint’ was here CatPrint ( ^~~~~~~~ In file included from ../refind/global.h:54:0, from text.c:38: ../refind/../EfiLib/GenericBdsLib.h:964:1: error: conflicting types for ‘CatPrint’ CatPrint ( ^~~~~~~~ In file included from libegint.h:42:0, from text.c:37: /usr/include/efi/efilib.h:509:1: note: previous declaration of ‘CatPrint’ was here CatPrint ( ^~~~~~~~ make[1]: *** [../Make.common:159: screen.o] Error 1 make[1]: *** Waiting for unfinished jobs.... make[1]: *** [../Make.common:159: text.o] Error 1 make[1]: *** [../Make.common:159: image.o] Error 1 make[1]: *** [../Make.common:159: lodepng_xtra.o] Error 1 make[1]: Leaving directory '/tmp/portage/sys-boot/refind-0.10.7/work/refind-0.10.7/libeg' make: *** [Makefile:64: gnuefi] Error 2
Created attachment 470940 [details] Output of `emerge --info '=sys-boot/refind-0.10.7'`
same at tinderbox image 13.0-no-multilib_20170424-194440
Created attachment 471104 [details] emerge-info.txt
Created attachment 471106 [details] emerge-history.txt
Created attachment 471108 [details] environment
Created attachment 471110 [details] etc.portage.tbz2
Created attachment 471112 [details] sys-boot:refind-0.10.7:20170427-193246.log
Created attachment 471114 [details] temp.tbz2
I discovered this today as well, and did some build testing. Both refind 0.10.4-r2 and 0.10.7 succeed with gnu-efi <= 3.0.4, and fail on gnu-efi 3.0.5
If I had to guess what is the culprit in gnu-efi 3.0.5, I'd tend to suppose this change is the culprit: https://sourceforge.net/p/gnu-efi/code/ci/fa1b9779620670248c40c4fe92e797188a9736b8/ Perhaps some corresponding change needs to happen in refind's headers? Does anyone know where the refind project normally is reachable for bug reports and whatnot? I find the website quite helpful as an end-user, but I have no clue how to get in touch with the man behind the curtain.
Perhaps with the email on top of his page :) http://www.rodsbooks.com/refind/
(In reply to Denis Descheneaux from comment #11) > Perhaps with the email on top of his page :) > > http://www.rodsbooks.com/refind/ haha Thanks for helping me past this mental block, your idea seems quite sound :) I'll drop him a line and see if there's anything he's able to do about this. However, until some better solution is forthcoming, perhaps the refind ebuilds should BDEPEND on '<=sys-boot/gnu-efi-3.0.4'?
Thanks for the bug report, Greg. I've investigated and I believe I've fixed it -- it now compiles for me on my Ubuntu 16.04 system with a locally-compiled GNU-EFI 3.0.5. I'd appreciate hearing if it compiled under Gentoo The problem, FWIW, is that the GNU-EFI developers have added functions that previously did not exist in GNU-EFI but that did exist in TianoCore. I'd extracted those functions from TianoCore for compilation ONLY with GNU-EFI, but with 3.0.5, that caused function- and variable-name collisions. In any event, here's the commit that fixes the problem: https://sourceforge.net/p/refind/code/ci/5e494221a6daf2435faad452185f2efed67b6f57/ I have not attempted applying that to a plain rEFInd 0.10.7. It might apply cleanly, or it might require some intervening commit, too. As a worst-case scenario, you can continue building rEFInd against GNU-EFI 3.0.4 (or TianoCore, if that's supported in the Gentoo package) until I release the next version of rEFInd. I don't think that will be this weekend, but it will probably be soon -- maybe this week or next weekend.
(In reply to Rod Smith from comment #13) > In any event, here's the commit that fixes the problem: > > https://sourceforge.net/p/refind/code/ci/5e494221a6daf2435faad452185f2efed67b6f57/ > > I have not attempted applying that to a plain rEFInd 0.10.7. It might apply > cleanly, or it might require some intervening commit, too. As a worst-case > scenario, you can continue building rEFInd against GNU-EFI 3.0.4 (or > TianoCore, if that's supported in the Gentoo package) until I release the > next version of rEFInd. I don't think that will be this weekend, but it will > probably be soon -- maybe this week or next weekend. Thanks, I've applied and committed this. The only conflict the patch had was with NEWS.txt (ironically, adding the note about resolving this). commit 7c4e72babf0b6675281208334313aba4c40dd914 (HEAD -> master) Author: Sam Jorna <wraeth@gentoo.org> Date: Mon May 15 15:11:28 2017 +1000 sys-boot/refind: fix build against gnu-efi-3.0.5 Adds upstream patch for building against gnu-efi-3.0.5 which added functions causing namespace collisions. Gentoo-Bug: 616668 Package-Manager: Portage-2.3.5, Repoman-2.3.2