Created attachment 422214 [details] Build log from failed firefox-44.0_beta4 build Please assign to mozilla@gentoo.org I am unable to compile the www-client/firefox-44.0_beta4 ebuild from the mozilla overlay when I turn on the 'egl' USE flag. I am able to build firefox-44.0_beta4 successfully by omitting the 'egl' USE flag. I am also to build firefox-43.0 from the mozilla overlay successfully with the 'egl' USE flag. REPRO STEPS ----------- # USE=egl ebuild /var/lib/layman/mozilla/www-client/firefox/firefox-44.0_beta4.ebuild compile [...] x86_64-pc-linux-gnu-g++ -o Unified_cpp_layout_mathml1.o -c -I../../dist/stl_wrappers -I../../dist/system_wrappers -include /var/tmp/portage/www-client/firefox-44.0_beta4/work/firefox-44.0b4/config/gcc_hidden.h -DSTATIC_EXPORTABLE_JS_API -DMOZILLA_INTERNAL_API -DIMPL_LIBXUL -DAB_CD=en-US -DNO_NSPR_10_SUPPORT -I/var/tmp/portage/www-client/firefox-44.0_beta4/work/firefox-44.0b4/layout/mathml -I. -I/var/tmp/portage/www-client/firefox-44.0_beta4/work/firefox-44.0b4/layout/mathml/../base -I/var/tmp/portage/www-client/firefox-44.0_beta4/work/firefox-44.0b4/layout/mathml/../generic -I/var/tmp/portage/www-client/firefox-44.0_beta4/work/firefox-44.0b4/layout/mathml/../style -I/var/tmp/portage/www-client/firefox-44.0_beta4/work/firefox-44.0b4/layout/mathml/../tables -I/var/tmp/portage/www-client/firefox-44.0_beta4/work/firefox-44.0b4/layout/mathml/../xul -I/var/tmp/portage/www-client/firefox-44.0_beta4/work/firefox-44.0b4/dom/base -I/var/tmp/portage/www-client/firefox-44.0_beta4/work/firefox-44.0b4/dom/mathml -I../../dist/include -I/usr/include/nspr -I/usr/include/nss -fPIC -DMOZILLA_CLIENT -include ../../mozilla-config.h -MD -MP -MF .deps/Unified_cpp_layout_mathml1.o.pp -Wall -Wempty-body -Woverloaded-virtual -Wsign-compare -Wwrite-strings -Wno-invalid-offsetof -Wcast-align -march=native -pipe -fno-exceptions -fno-strict-aliasing -fno-rtti -fno-exceptions -fno-math-errno -std=gnu++0x -pthread -pipe -DNDEBUG -DTRIMMED -freorder-blocks -Os -fomit-frame-pointer /var/tmp/portage/www-client/firefox-44.0_beta4/work/firefox-44.0b4/ff/layout/mathml/Unified_cpp_layout_mathml1.cpp In file included from <command-line>:0:0: ./../../mozilla-config.h:122:25: error: redefinition of 'class mozilla::gl::GLContextProviderEGL' #define MOZ_GL_PROVIDER GLContextProviderEGL ^ /var/tmp/portage/www-client/firefox-44.0_beta4/work/firefox-44.0b4/gfx/gl/GLContextProvider.h:66:36: note: in expansion of macro 'MOZ_GL_PROVIDER' #define GL_CONTEXT_PROVIDER_NAME MOZ_GL_PROVIDER ^ /var/tmp/portage/www-client/firefox-44.0_beta4/work/firefox-44.0b4/gfx/gl/GLContextProviderImpl.h:17:7: note: in expansion of macro 'GL_CONTEXT_PROVIDER_NAME' class GL_CONTEXT_PROVIDER_NAME ^ In file included from /var/tmp/portage/www-client/firefox-44.0_beta4/work/firefox-44.0b4/gfx/gl/GLContext.cpp:21:0, from /var/tmp/portage/www-client/firefox-44.0_beta4/work/firefox-44.0b4/ff/gfx/gl/Unified_cpp_gfx_gl0.cpp:47: /var/tmp/portage/www-client/firefox-44.0_beta4/work/firefox-44.0b4/gfx/gl/GLContextProvider.h:49:34: error: previous definition of 'class mozilla::gl::GLContextProviderEGL' #define GL_CONTEXT_PROVIDER_NAME GLContextProviderEGL ^ /var/tmp/portage/www-client/firefox-44.0_beta4/work/firefox-44.0b4/gfx/gl/GLContextProviderImpl.h:17:7: note: in expansion of macro 'GL_CONTEXT_PROVIDER_NAME' class GL_CONTEXT_PROVIDER_NAME
You will need to sync and test with -r6 that is in the overlay before I go tracking this down.
Created attachment 422736 [details] Build log from failed firefox-44.0_beta6 build Still repro on 44.0_beta6. Beginning with line 4745 of this build log: x86_64-pc-linux-gnu-g++ -o Unified_cpp_dom_geolocation0.o -c -I../../dist/stl_wrappers -I../../dist/system_wrappers -include /var/tmp/portage/www-client/firefox-44.0_beta6/work/firefox-44.0b6/config/gcc_hidden.h -DOS_POSIX=1 -DOS_LINUX=1 -DSTATIC_EXPORTABLE_JS_API -DMOZILLA_INTERNAL_API -DIMPL_LIBXUL -DAB_CD=en-US - DNO_NSPR_10_SUPPORT -I/var/tmp/portage/www-client/firefox-44.0_beta6/work/firefox-44.0b6/dom/geolocation -I. -I/var/tmp/portage/www-client/firefox-44.0_beta6/work/firefox-44.0b6/ff/ipc/ipdl/_ipdlheaders -I/var/tmp/portage/www-client/firefox-44.0_beta6/work/firefox-44.0b6/ipc/chromium/src -I/var/tmp/portage/www-clien t/firefox-44.0_beta6/work/firefox-44.0b6/ipc/glue -I/var/tmp/portage/www-client/firefox-44.0_beta6/work/firefox-44.0b6/dom/base -I/var/tmp/portage/www-client/firefox-44.0_beta6/work/firefox-44.0b6/dom/ipc -I../../dist/include -I/usr/include/nspr -I/usr/include/nss -fPIC -DMOZILLA_CLIENT -include ../../mozil la-config.h -MD -MP -MF .deps/Unified_cpp_dom_geolocation0.o.pp -Wall -Wempty-body -Woverloaded-virtual -Wsign-compare -Wwrite-strings -Wno-invalid-offsetof -Wcast-align -march=native -pipe -fno-exceptions -fno-strict-aliasing -fno-rtti -fno-exceptions -fno-math-errno -std=gnu++0x -pthread -pipe -DNDEBUG -DTRIMMED -freorder-blocks -Os -fomit-frame-pointer -Wshadow /var/tmp/portage/www-client/firefox-44.0_beta6/work/firefox-44.0b6/ff/dom/geolocation/Unified_cpp_dom_geolocation0.cpp In file included from <command-line>:0:0: ./../../mozilla-config.h:123:25: error: redefinition of 'class mozilla::gl::GLContextProviderEGL' #define MOZ_GL_PROVIDER GLContextProviderEGL ^ /var/tmp/portage/www-client/firefox-44.0_beta6/work/firefox-44.0b6/gfx/gl/GLContextProvider.h:66:36: note: in expansion of macro 'MOZ_GL_PROVIDER' #define GL_CONTEXT_PROVIDER_NAME MOZ_GL_PROVIDER ^ /var/tmp/portage/www-client/firefox-44.0_beta6/work/firefox-44.0b6/gfx/gl/GLContextProviderImpl.h:17:7: note: in expansion of macro 'GL_CONTEXT_PROVIDER_NAME' class GL_CONTEXT_PROVIDER_NAME ^ In file included from /var/tmp/portage/www-client/firefox-44.0_beta6/work/firefox-44.0b6/gfx/gl/GLContext.cpp:21:0, from /var/tmp/portage/www-client/firefox-44.0_beta6/work/firefox-44.0b6/ff/gfx/gl/Unified_cpp_gfx_gl0.cpp:47: /var/tmp/portage/www-client/firefox-44.0_beta6/work/firefox-44.0b6/gfx/gl/GLContextProvider.h:49:34: error: previous definition of 'class mozilla::gl::GLContextProviderEGL' #define GL_CONTEXT_PROVIDER_NAME GLContextProviderEGL ^ /var/tmp/portage/www-client/firefox-44.0_beta6/work/firefox-44.0b6/gfx/gl/GLContextProviderImpl.h:17:7: note: in expansion of macro 'GL_CONTEXT_PROVIDER_NAME' class GL_CONTEXT_PROVIDER_NAME
Created attachment 423082 [details] Build log from failed firefox-44.0_beta9 build Keeping the bug updated. This is for firefox-44.0_beta9. x86_64-pc-linux-gnu-g++ -o Unified_cpp_gfx_gl1.o -c -I../../dist/stl_wrappers -I../../dist/system_wrappers -include /var/tmp/portage/www-client/firefox-44.0_beta9/work/firefox-44.0b9/config/gcc_hidden.h -DOS_POSIX=1 -DOS_LINUX=1 -DSTATIC_EXPORTABLE_JS_API -DMOZILLA_INTERNAL_API -DIMPL_LIBXUL -DAB_CD=en-US -DNO_NSPR_ 10_SUPPORT -I/var/tmp/portage/www-client/firefox-44.0_beta9/work/firefox-44.0b9/gfx/gl -I. -I/var/tmp/portage/www-client/firefox-44.0_beta9/work/firefox-44.0b9/ff/ipc/ipdl/_ipdlheaders -I/var/tmp/portage/www-client/firefox-44.0_beta9/work/firefox-44.0b9/ipc/chromium/src -I/var/tmp/portage/www-client/firefox-44.0_bet a9/work/firefox-44.0b9/ipc/glue -I../../dist/include -I/usr/include/nspr -I/usr/include/nss -fPIC -DMOZILLA_CLIENT -include ../../mozilla-config.h -MD -MP -MF .deps/Unified_cpp_gfx_gl1.o.pp -Wall -Wempty-body -Woverloaded-virtual -Wsign-compare -Wwrite-strings -Wno-invalid-offsetof -Wcast-align -march=nati ve -pipe -fno-exceptions -fno-strict-aliasing -fno-rtti -fno-exceptions -fno-math-errno -std=gnu++0x -pthread -pipe -DNDEBUG -DTRIMMED -freorder-blocks -Os -fomit-frame-pointer -I/var/tmp/portage/www-client/firefox-44.0_beta9/work/firefox-44.0b9/ff/dist/include/cairo -I/var/tmp/portage/www-client/firefox-44.0_beta 9/work/firefox-44.0b9/widget/gtk/compat -pthread -I/usr/include/gtk-2.0 -I/usr/include/gtk-unix-print-2.0 -I/usr/include/gtk-2.0 -I/usr/include/atk-1.0 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/gtk-2.0 -I/usr/lib64/gtk-2.0/include -I/usr/include/pango-1.0 -I/usr/include/cairo -I/usr/include/pix man-1 -I/usr/include/freetype2 -I/usr/include/libdrm -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include /var/tmp/portage/www-client/firefox-44.0_beta9/work/firefox-44.0b9/ff/gfx/gl/Unified_cpp_gfx_gl1.cpp libnetwerk_protocol_viewsource.a.desc rm -f libnetwerk_protocol_viewsource.a /var/tmp/portage/www-client/firefox-44.0_beta9/work/firefox-44.0b9/ff/_virtualenv/bin/python /var/tmp/portage/www-client/firefox-44.0_beta9/work/firefox-44.0b9/config/expandlibs_gen.py -o libnetwerk_protocol_viewsource.a.desc Unified_cpp_protocol_viewsource0.o In file included from <command-line>:0:0: ./../../mozilla-config.h:123:25: error: redefinition of 'class mozilla::gl::GLContextProviderEGL' #define MOZ_GL_PROVIDER GLContextProviderEGL ^ /var/tmp/portage/www-client/firefox-44.0_beta9/work/firefox-44.0b9/gfx/gl/GLContextProvider.h:66:36: note: in expansion of macro 'MOZ_GL_PROVIDER' #define GL_CONTEXT_PROVIDER_NAME MOZ_GL_PROVIDER ^ /var/tmp/portage/www-client/firefox-44.0_beta9/work/firefox-44.0b9/gfx/gl/GLContextProviderImpl.h:17:7: note: in expansion of macro 'GL_CONTEXT_PROVIDER_NAME' class GL_CONTEXT_PROVIDER_NAME ^ In file included from /var/tmp/portage/www-client/firefox-44.0_beta9/work/firefox-44.0b9/gfx/gl/GLContext.cpp:21:0, from /var/tmp/portage/www-client/firefox-44.0_beta9/work/firefox-44.0b9/ff/gfx/gl/Unified_cpp_gfx_gl0.cpp:47: /var/tmp/portage/www-client/firefox-44.0_beta9/work/firefox-44.0b9/gfx/gl/GLContextProvider.h:49:34: error: previous definition of 'class mozilla::gl::GLContextProviderEGL' #define GL_CONTEXT_PROVIDER_NAME GLContextProviderEGL ^ /var/tmp/portage/www-client/firefox-44.0_beta9/work/firefox-44.0b9/gfx/gl/GLContextProviderImpl.h:17:7: note: in expansion of macro 'GL_CONTEXT_PROVIDER_NAME' class GL_CONTEXT_PROVIDER_NAME
Feel free to open an upstream bug report. If you are unable to do so I will open one later today.
Still happens on 44.0. It seems that this code is a culprit: gfx/gl/GLContextProvider.h: --snip-- [...] // Null is always there #define GL_CONTEXT_PROVIDER_NAME GLContextProviderNull #include "GLContextProviderImpl.h" #undef GL_CONTEXT_PROVIDER_NAME [...] #if defined(MOZ_X11) #define GL_CONTEXT_PROVIDER_NAME GLContextProviderGLX #include "GLContextProviderImpl.h" #undef GL_CONTEXT_PROVIDER_NAME #define GL_CONTEXT_PROVIDER_DEFAULT GLContextProviderGLX #endif #define GL_CONTEXT_PROVIDER_NAME GLContextProviderEGL #include "GLContextProviderImpl.h" #undef GL_CONTEXT_PROVIDER_NAME #ifndef GL_CONTEXT_PROVIDER_DEFAULT #define GL_CONTEXT_PROVIDER_DEFAULT GLContextProviderEGL #endif [...] #ifdef MOZ_GL_PROVIDER #define GL_CONTEXT_PROVIDER_NAME MOZ_GL_PROVIDER #include "GLContextProviderImpl.h" #undef GL_CONTEXT_PROVIDER_NAME #define GL_CONTEXT_PROVIDER_DEFAULT MOZ_GL_PROVIDER #endif [...] --snip-- I kept MOZ_X11 case as an example of configuration toggleable option. EGL is not toggleable. It seems that since 44.0 it's just mandatory. And if egl USE flag is used, MOZ_GL_PROVIDER is also GLContextProviderEGL - thus it's defined twice. This seems to be introduced by http://hg.mozilla.org/mozilla-central/rev/0cecdec0f6e1 I have no idea if that was intended. Probably EGL is just mandatory right now? It seems so.
I have the same problem.. error: previous definition of 'class mozilla::gl::GLContextProviderEGL' #define GL_CONTEXT_PROVIDER_NAME GLContextProviderEGL I recently wanted to try out wayland and it required EGL use flag so I just dropped it globally. After firefox-44.0 rebuild it stops on that error. I know I can fix this from a use flag -egl and just rebuild, but I am curious to know if the flag actually does anything besides causing the build to fail on the redefine.
Same problem but I'm not using overlay this is an main portage firefox-44 now confirmed that -egl fixes build..
(In reply to Andrian Nord from comment #5) > I kept MOZ_X11 case as an example of configuration toggleable option. EGL is > not toggleable. It seems that since 44.0 it's just mandatory. And if egl USE > flag is used, MOZ_GL_PROVIDER is also GLContextProviderEGL - thus it's > defined twice. > > This seems to be introduced by > http://hg.mozilla.org/mozilla-central/rev/0cecdec0f6e1 > I have no idea if that was intended. Probably EGL is just mandatory right > now? It seems so. So I'll have to admit that this is a little over my head, but based on your conclusion here as well as a comment on the upstream bug, it would seem that EGL support is no longer optional and we might be best off just removing the use flag.. Would you concurr with this?
(In reply to Ian Stakenvicius from comment #8) > (In reply to Andrian Nord from comment #5) > > I kept MOZ_X11 case as an example of configuration toggleable option. EGL is > > not toggleable. It seems that since 44.0 it's just mandatory. And if egl USE > > flag is used, MOZ_GL_PROVIDER is also GLContextProviderEGL - thus it's > > defined twice. > > > > This seems to be introduced by > > http://hg.mozilla.org/mozilla-central/rev/0cecdec0f6e1 > > I have no idea if that was intended. Probably EGL is just mandatory right > > now? It seems so. > > So I'll have to admit that this is a little over my head, but based on your > conclusion here as well as a comment on the upstream bug, it would seem that > EGL support is no longer optional and we might be best off just removing the > use flag.. Would you concurr with this? Actually nevermind -- it looks like what essentially needs to be done here is that the redefinition needs to be prevented when it's already been requested via the --with-gl-provider config option. Given that the 'GLContextProviderEGL' block is the only one that isn't wrapped in a conditional, I think it should suffice to make it conditional on MOZ_GL_PROVIDER -not- being defined later on. Alternatively, maybe the whole set of things should be skipped unless MOZ_GL_PROVIDER is left undefined... not sure. Testing now, and I'll push the patch shortly if it all works out.
Hello, I'm following this bug since FF 44 hit unstable branch (yesterday). Have compiled FF without egl and it pass compile phase, now I noticed egl was completely removed from FF use-flags. However, could it be that -egl effects performance? I think it deteriorated a bit...
(In reply to jhon from comment #10) > Hello, I'm following this bug since FF 44 hit unstable branch (yesterday). > Have compiled FF without egl and it pass compile phase, now I noticed egl > was completely removed from FF use-flags. > > However, could it be that -egl effects performance? I think it deteriorated > a bit... The use flag was removed because #1, EGL support cannot actually be disabled as of firefox-44, it's always built but (afaict) is only used when GLX support isn't available; and #2 because of the compile and link failures listed above. Regarding performance, our tests on firefox-43 actually found the opposite, that is using EGL is slower than using GLX (which makes sense given it's an extra layer of abstraction). I can't speak to that on firefox-44 but I expect the result would be similar if the option to force EGL as the default GL provider actually worked as expeted.
(In reply to Ian Stakenvicius from comment #11) > (In reply to jhon from comment #10) > > Hello, I'm following this bug since FF 44 hit unstable branch (yesterday). > > Have compiled FF without egl and it pass compile phase, now I noticed egl > > was completely removed from FF use-flags. > > > > However, could it be that -egl effects performance? I think it deteriorated > > a bit... > > The use flag was removed because #1, EGL support cannot actually be disabled > as of firefox-44, it's always built but (afaict) is only used when GLX > support isn't available; and #2 because of the compile and link failures > listed above. > > Regarding performance, our tests on firefox-43 actually found the opposite, > that is using EGL is slower than using GLX (which makes sense given it's an > extra layer of abstraction). I can't speak to that on firefox-44 but I > expect the result would be similar if the option to force EGL as the default > GL provider actually worked as expeted. Thanks for your response, I only just now seen it.
I run into this error again with firefox-45.0. Was the egl flag added back accidentally or is this error with 45.0 unexpected? Others seem to get it too with 45.0 (see #576924).
This was an error on my part, when moving from the mozilla overlay (where we kept the flag for experimentation) to the gentoo repo. I've dropped it again.
*** Bug 576924 has been marked as a duplicate of this bug. ***
*** Bug 576964 has been marked as a duplicate of this bug. ***
The egl USE flag is back in firefox-46.0. On purpose?
(In reply to Christian Tietz from comment #17) > The egl USE flag is back in firefox-46.0. On purpose? uhh, nope. Let me see what's going on with it in moz46. Likely I will remove the flag both here and on mozilla overlay
(In reply to Ian Stakenvicius from comment #18) You could use: IUSE="bindist hardened +hwaccel pgo selinux +gmp-autoupdate test" if [[ ${PORTAGE_REPO_NAME} == mozilla ]]; then IUSE+=" egl" fi ... use_if_iuse egl && mozconfig_annotate 'Enable EGL as GL provider' --with-gl-provider=EGL
(In reply to Arfrever Frehtes Taifersar Arahesis from comment #19) > (In reply to Ian Stakenvicius from comment #18) > > You could use: > > IUSE="bindist hardened +hwaccel pgo selinux +gmp-autoupdate test" > if [[ ${PORTAGE_REPO_NAME} == mozilla ]]; then > IUSE+=" egl" > fi > > ... > > use_if_iuse egl && mozconfig_annotate 'Enable EGL as GL provider' > --with-gl-provider=EGL Although yes that would most likely work for Mozilla teams purposes, I try to avoid portageisms and there seems to be no way for an evils to query the repo its from in PMS right now. Thanks for the suggestion though! Hopefully EAPI7 will have a way to query the repo and then I can use such conditionals for a lot of experimental bits.
Flags have been dropped from 45.1 and 46.0 in Gentoo repo as of a couple of hours ago; anyone having issues please re --sync
I re-encountered this when emerging 48.0, although there is still a comment in the ebuild suggesting that the flag should only be in the mozilla overlay.
(In reply to gentoo from comment #22) > I re-encountered this when emerging 48.0, although there is still a comment > in the ebuild suggesting that the flag should only be in the mozilla overlay. Yep. Fixed again.
If you feel I have closed your bug and it is still a current issue, please reopen and update it completely. We will not work bugs that have no ebuild in tree any longer or can not be reproduced with a current system. Thank You for your support and understanding The Mozilla Team