Bug 1450755

Summary: Firefox 53 - ppc64/le build failure
Product: [Fedora] Fedora Reporter: Martin Stransky <stransky>
Component: firefoxAssignee: Jan Horak <jhorak>
Status: CLOSED ERRATA QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: rawhideCC: dan, extras-qa, gecko-bugs-nobody, hannsj_uhl, jhorak, kengert, mruckman, normand, pjasicek, pwhalen, robatino, stransky, than, timo
Target Milestone: ---   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard: RejectedBlocker
Fixed In Version: firefox-53.0.3-2.fc26 Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: 1443938 Environment:
Last Closed: 2017-06-09 19:23:18 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 1071880, 1430829    

Description Martin Stransky 2017-05-15 06:44:14 UTC
+++ This bug was initially created as a clone of Bug #1443938 +++

Description of problem:
Firefox 53 fails to build on second arches (ppc/arm).

--- Additional comment from Michel Normand on 2017-05-04 03:45:42 EDT ---

* extract of build log is reporting a missing def of RegTypeName
  https://kojipkgs.fedoraproject.org//work/tasks/1157/19231157/build.log
* as per upstream query this is defined in  Architecture-shared.h
  that should be included via Architecture-none.h
  assuming JS_CODEGEN_NONE is defined.
  https://dxr.mozilla.org/mozilla-central/source/js/src/jit/none/Architecture-none.h#14
* BUT in unpacked source on fedora this include is not present.
* Suggestion is to add the two patches identified below from upstream.
=== build.log extract:
/builddir/build/BUILD/firefox-53.0/firefox-53.0/js/src/jit/Registers.h:91:22: error: 'RegTypeName' does not name a type; did you mean 'typename'?
     static constexpr RegTypeName DefaultType = RegTypeName::GPR;
                      ^~~~~~~~~~~
                      typename
===
https://hg.mozilla.org/mozilla-central/rev/2c924fb664c1
https://hg.mozilla.org/mozilla-central/rev/97c45b13a165
===

--- Additional comment from Michel Normand on 2017-05-04 05:10:42 EDT ---

Note that even if correction of this include, then next failure 
is a rust related error as per scratchbuild (also for x86_64)
https://kojipkgs.fedoraproject.org//work/tasks/3829/19393829/build.log
===
...
     Running `/usr/bin/rustc --crate-name mp4parse_gtest /builddir/build/BUILD/firefox-53.0/firefox-53.0/dom/media/gtest/hello.rs --crate-type lib --emit=dep-info,link -C opt-level=2 -C panic=abort -C codegen-units=1 -C debuginfo=2 -C metadata=29cb3f043171d892 -C extra-filename=-29cb3f043171d892 --out-dir /builddir/build/BUILD/firefox-53.0/firefox-53.0/objdir/toolkit/library/gtest/rust/./x86_64-unknown-linux-gnu/release/deps --target x86_64-unknown-linux-gnu -L dependency=/builddir/build/BUILD/firefox-53.0/firefox-53.0/objdir/toolkit/library/gtest/rust/./x86_64-unknown-linux-gnu/release/deps -L dependency=/builddir/build/BUILD/firefox-53.0/firefox-53.0/objdir/toolkit/library/gtest/rust/./release/deps`
error[E0463]: can't find crate for `cheddar`
 --> /builddir/build/BUILD/firefox-53.0/firefox-53.0/media/libstagefright/binding/mp4parse_capi/build.rs:1:1
  |
1 | extern crate cheddar;
  | ^^^^^^^^^^^^^^^^^^^^^ can't find crate
error: aborting due to previous error
Build failed, waiting for other jobs to finish...
error: Could not compile `mp4parse_capi`.
===

--- Additional comment from Dan Horák on 2017-05-04 05:12:14 EDT ---

the changelog contains

* Tue Apr 18 2017 Martin Stransky <stransky> - 53.0-1
 - Updated to 53.0 (B6)

so probably it's not the GA tarball (if B6 means Beta6), where these fixes would be included. If I see correctly in upstream mercurial repo, then these fixes landed 5 days after creating the FIREFOX_AURORA_53_BASE tag.

--- Additional comment from Michel Normand on 2017-05-04 06:05:49 EDT ---

Hello Martin
is it feasible to keep firefox 52 in f26, as long as 53 do not build ? this would avoid some openQA tests to fail because of missing firefox at install time.

--- Additional comment from Martin Stransky on 2017-05-05 03:15:24 EDT ---

(In reply to Michel Normand from comment #4)
> Hello Martin
> is it feasible to keep firefox 52 in f26, as long as 53 do not build ? this
> would avoid some openQA tests to fail because of missing firefox at install
> time.

I don't know how to do that - the builds are already in koji and updates I expect. Can rel-eng do it?

--- Additional comment from Martin Stransky on 2017-05-05 03:16:21 EDT ---

(In reply to Dan Horák from comment #3)
> the changelog contains
> 
> * Tue Apr 18 2017 Martin Stransky <stransky> - 53.0-1
>  - Updated to 53.0 (B6)
> 
> so probably it's not the GA tarball (if B6 means Beta6), where these fixes
> would be included. If I see correctly in upstream mercurial repo, then these
> fixes landed 5 days after creating the FIREFOX_AURORA_53_BASE tag.

B6 means Build6 as you see them on http://archive.mozilla.org/pub/firefox/candidates/53.0-candidates/

--- Additional comment from Paul Whalen on 2017-05-05 14:32:50 EDT ---

Proposing as a blocker for F26 Beta, firefox is the default browser on XFCE which is the release blocking desktop image on arm.

--- Additional comment from Martin Stransky on 2017-05-10 08:21:13 EDT ---

(In reply to Michel Normand from comment #2)
> Note that even if correction of this include, then next failure 
> is a rust related error as per scratchbuild (also for x86_64)
> https://kojipkgs.fedoraproject.org//work/tasks/3829/19393829/build.log
> ===
> ...
>      Running `/usr/bin/rustc --crate-name mp4parse_gtest
> /builddir/build/BUILD/firefox-53.0/firefox-53.0/dom/media/gtest/hello.rs
> --crate-type lib --emit=dep-info,link -C opt-level=2 -C panic=abort -C
> codegen-units=1 -C debuginfo=2 -C metadata=29cb3f043171d892 -C
> extra-filename=-29cb3f043171d892 --out-dir
> /builddir/build/BUILD/firefox-53.0/firefox-53.0/objdir/toolkit/library/gtest/
> rust/./x86_64-unknown-linux-gnu/release/deps --target
> x86_64-unknown-linux-gnu -L
> dependency=/builddir/build/BUILD/firefox-53.0/firefox-53.0/objdir/toolkit/
> library/gtest/rust/./x86_64-unknown-linux-gnu/release/deps -L
> dependency=/builddir/build/BUILD/firefox-53.0/firefox-53.0/objdir/toolkit/
> library/gtest/rust/./release/deps`
> error[E0463]: can't find crate for `cheddar`
>  -->
> /builddir/build/BUILD/firefox-53.0/firefox-53.0/media/libstagefright/binding/
> mp4parse_capi/build.rs:1:1
>   |
> 1 | extern crate cheddar;
>   | ^^^^^^^^^^^^^^^^^^^^^ can't find crate
> error: aborting due to previous error
> Build failed, waiting for other jobs to finish...
> error: Could not compile `mp4parse_capi`.
> ===

AFAIK we don't support Rust on arm now. Should work with disabled Rust, which I'm building now.

--- Additional comment from Martin Stransky on 2017-05-11 14:48:44 EDT ---

Arm builds are fixed now.

--- Additional comment from Martin Stransky on 2017-05-11 14:55:53 EDT ---

firefox-53.0.2-3.fc26 is built for ARM. Looks like we still have problems with F24/25 which will be fixed later.

--- Additional comment from Mike Ruckman on 2017-05-12 17:17:40 EDT ---

Discussed in the 2017-05-02 Blocker Review meeting [0]. This is rejected in favour of the alternative proposal #1448923 , which more precisely reflects the actual criteria violation. There was a long discussion on it during the meeting [1] as well as a mailing list discussion [2] to explain the rationale.

[0] Sorry for the late update on this.
[1] https://meetbot.fedoraproject.org/fedora-blocker-review/2017-05-08/f26-blocker-review.2017-05-08-16.00.log.html
[2] https://lists.fedoraproject.org/archives/list/test@lists.fedoraproject.org/thread/NNKH7V7S6XV673EG5YBQCG2MBO6LCUKP/

--- Additional comment from Martin Stransky on 2017-05-15 02:43:08 EDT ---

Let's mark this as Arm build failures and target ppc/s390/aarch64 in different bugs.

Michael, thanks for the patches in comment 1 - that really helped. Right now I work on F25/24 build failures, F26/rawhide seems to be fine.

Comment 1 Dan Horák 2017-05-17 11:59:57 UTC
ppc64le failure (https://koji.fedoraproject.org/koji/taskinfo?taskID=19586121)
...
/usr/bin/g++ -std=gnu++11 -o Unified_cpp_js_src12.o -c  -I/builddir/build/BUILD/firefox-53.0.2/firefox-53.0.2/objdir/dist/system_wrappers -include /builddir/build/BUILD/firefox-53.0.2/firefox-53.0.2/config/gcc_hidden.h -DNDEBUG=1 -DTRIMMED=1 -DENABLE_SHARED_ARRAY_BUFFER -DEXPORT_JS_API -DJS_HAS_CTYPES '-DDLL_PREFIX="lib"' '-DDLL_SUFFIX=".so"' -DMOZ_HAS_MOZGLUE -I/builddir/build/BUILD/firefox-53.0.2/firefox-53.0.2/js/src -I/builddir/build/BUILD/firefox-53.0.2/firefox-53.0.2/objdir/js/src  -I/builddir/build/BUILD/firefox-53.0.2/firefox-53.0.2/objdir/dist/include  -I/usr/include/nspr4        -fPIC  -DMOZILLA_CLIENT -include /builddir/build/BUILD/firefox-53.0.2/firefox-53.0.2/objdir/js/src/js-confdefs.h -MD -MP -MF .deps/Unified_cpp_js_src12.o.pp  -Wall -Wc++11-compat -Wempty-body -Wignored-qualifiers -Woverloaded-virtual -Wpointer-arith -Wsign-compare -Wtype-limits -Wunreachable-code -Wwrite-strings -Wno-invalid-offsetof -Wc++14-compat -Wc++1z-compat -Wimplicit-fallthrough -Wno-error=maybe-uninitialized -Wno-error=deprecated-declarations -Wno-error=array-bounds -fno-lifetime-dse -O2 -g -pipe -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -m64 -mcpu=power8 -mtune=power8 -Wformat-security -Wformat -Werror=format-security -fno-delete-null-pointer-checks -fPIC -Wl,-z,relro -Wl,-z,now -fno-rtti -ffunction-sections -fdata-sections -fno-exceptions -fno-math-errno -pthread -pipe  -g -g -O2 -fomit-frame-pointer  -Wno-shadow -Werror=format  /builddir/build/BUILD/firefox-53.0.2/firefox-53.0.2/objdir/js/src/Unified_cpp_js_src12.cpp
In file included from /builddir/build/BUILD/firefox-53.0.2/firefox-53.0.2/objdir/js/src/Unified_cpp_js_src12.cpp:29:0:
/builddir/build/BUILD/firefox-53.0.2/firefox-53.0.2/js/src/jit/Ion.cpp: In member function 'void js::jit::JitCode::copyFrom(js::jit::MacroAssembler&)':
/builddir/build/BUILD/firefox-53.0.2/firefox-53.0.2/js/src/jit/Ion.cpp:778:30: error: no matching function for call to 'js::jit::MacroAssembler::executableCopy(uint8_t*&)'
     masm.executableCopy(code_);
                              ^
In file included from /builddir/build/BUILD/firefox-53.0.2/firefox-53.0.2/js/src/jit/MacroAssembler.h:28:0,
                 from /builddir/build/BUILD/firefox-53.0.2/firefox-53.0.2/js/src/jit/BaselineJIT.h:18,
                 from /builddir/build/BUILD/firefox-53.0.2/firefox-53.0.2/js/src/jit/BaselineIC.h:20,
                 from /builddir/build/BUILD/firefox-53.0.2/firefox-53.0.2/js/src/jit/MIR.h:22,
                 from /builddir/build/BUILD/firefox-53.0.2/firefox-53.0.2/js/src/jit/AliasAnalysisShared.h:10,
                 from /builddir/build/BUILD/firefox-53.0.2/firefox-53.0.2/js/src/jit/FlowAliasAnalysis.h:10,
                 from /builddir/build/BUILD/firefox-53.0.2/firefox-53.0.2/js/src/jit/FlowAliasAnalysis.cpp:7,
                 from /builddir/build/BUILD/firefox-53.0.2/firefox-53.0.2/objdir/js/src/Unified_cpp_js_src12.cpp:2:
/builddir/build/BUILD/firefox-53.0.2/firefox-53.0.2/js/src/jit/none/MacroAssembler-none.h:199:10: note: candidate: void js::jit::MacroAssemblerNone::executableCopy(void*, bool)
     void executableCopy(void*, bool) { MOZ_CRASH(); }
          ^~~~~~~~~~~~~~
/builddir/build/BUILD/firefox-53.0.2/firefox-53.0.2/js/src/jit/none/MacroAssembler-none.h:199:10: note:   candidate expects 2 arguments, 1 provided
In file included from /builddir/build/BUILD/firefox-53.0.2/firefox-53.0.2/js/src/jsapi.h:18:0,
                 from /builddir/build/BUILD/firefox-53.0.2/firefox-53.0.2/js/src/builtin/SIMD.h:10,
                 from /builddir/build/BUILD/firefox-53.0.2/firefox-53.0.2/js/src/jit/MIR.h:20,
                 from /builddir/build/BUILD/firefox-53.0.2/firefox-53.0.2/js/src/jit/AliasAnalysisShared.h:10,
                 from /builddir/build/BUILD/firefox-53.0.2/firefox-53.0.2/js/src/jit/FlowAliasAnalysis.h:10,
                 from /builddir/build/BUILD/firefox-53.0.2/firefox-53.0.2/js/src/jit/FlowAliasAnalysis.cpp:7,
                 from /builddir/build/BUILD/firefox-53.0.2/firefox-53.0.2/objdir/js/src/Unified_cpp_js_src12.cpp:2:

Comment 2 Dan Horák 2017-05-17 12:02:07 UTC
ppc64 (and s390x) fails due lack of big endian support in the skia gpu library, skia has been made mandatory in FF 53 (https://koji.fedoraproject.org/koji/taskinfo?taskID=19586123)

...
/usr/bin/g++ -std=gnu++11 -o SkiaGLGlue.o -c -I/builddir/build/BUILD/firefox-53.0.2/firefox-53.0.2/objdir/dist/stl_wrappers -I/builddir/build/BUILD/firefox-53.0.2/firefox-53.0.2/objdir/dist/system_wrappers -include /builddir/build/BUILD/firefox-53.0.2/firefox-53.0.2/config/gcc_hidden.h -DNDEBUG=1 -DTRIMMED=1 -DOS_POSIX=1 -DOS_LINUX=1 -DSTATIC_EXPORTABLE_JS_API -DMOZ_HAS_MOZGLUE -DMOZILLA_INTERNAL_API -DIMPL_LIBXUL -I/builddir/build/BUILD/firefox-53.0.2/firefox-53.0.2/gfx/gl -I/builddir/build/BUILD/firefox-53.0.2/firefox-53.0.2/objdir/gfx/gl -I/builddir/build/BUILD/firefox-53.0.2/firefox-53.0.2/objdir/ipc/ipdl/_ipdlheaders -I/builddir/build/BUILD/firefox-53.0.2/firefox-53.0.2/ipc/chromium/src -I/builddir/build/BUILD/firefox-53.0.2/firefox-53.0.2/ipc/glue -I/builddir/build/BUILD/firefox-53.0.2/firefox-53.0.2/gfx/skia -I/builddir/build/BUILD/firefox-53.0.2/firefox-53.0.2/gfx/skia/skia/include/config -I/builddir/build/BUILD/firefox-53.0.2/firefox-53.0.2/gfx/skia/skia/include/core -I/builddir/build/BUILD/firefox-53.0.2/firefox-53.0.2/gfx/skia/skia/include/gpu -I/builddir/build/BUILD/firefox-53.0.2/firefox-53.0.2/gfx/skia/skia/include/utils -I/builddir/build/BUILD/firefox-53.0.2/firefox-53.0.2/objdir/dist/include  -I/usr/include/nspr4 -I/usr/include/nss3       -fPIC  -DMOZILLA_CLIENT -include /builddir/build/BUILD/firefox-53.0.2/firefox-53.0.2/objdir/mozilla-config.h -MD -MP -MF .deps/SkiaGLGlue.o.pp  -Wall -Wc++11-compat -Wempty-body -Wignored-qualifiers -Woverloaded-virtual -Wpointer-arith -Wsign-compare -Wtype-limits -Wunreachable-code -Wwrite-strings -Wno-invalid-offsetof -Wc++14-compat -Wc++1z-compat -Wimplicit-fallthrough -Wno-error=maybe-uninitialized -Wno-error=deprecated-declarations -Wno-error=array-bounds -fno-lifetime-dse -O2 -g -pipe -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -m64 -Wformat-security -Wformat -Werror=format-security -fno-delete-null-pointer-checks -fPIC -Wl,-z,relro -Wl,-z,now -fno-exceptions -fno-strict-aliasing -fno-rtti -ffunction-sections -fdata-sections -fno-exceptions -fno-math-errno -pthread -pipe  -g -g -O2 -fomit-frame-pointer  -I/builddir/build/BUILD/firefox-53.0.2/firefox-53.0.2/objdir/dist/include/cairo -I/builddir/build/BUILD/firefox-53.0.2/firefox-53.0.2/widget/gtk/compat-gtk3 -I/usr/include/gtk-3.0 -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/libdrm -I/usr/include/harfbuzz -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/atk-1.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib64/dbus-1.0/include -I/usr/include/gtk-3.0/unix-print -pthread -Wno-error=shadow  /builddir/build/BUILD/firefox-53.0.2/firefox-53.0.2/gfx/gl/SkiaGLGlue.cpp
In file included from /builddir/build/BUILD/firefox-53.0.2/firefox-53.0.2/gfx/skia/skia/include/gpu/GrCaps.h:11:0,
                 from /builddir/build/BUILD/firefox-53.0.2/firefox-53.0.2/gfx/skia/skia/include/gpu/GrContext.h:11,
                 from /builddir/build/BUILD/firefox-53.0.2/firefox-53.0.2/gfx/gl/SkiaGLGlue.cpp:6:
/builddir/build/BUILD/firefox-53.0.2/firefox-53.0.2/gfx/skia/skia/include/gpu/GrTypes.h:279:6: error: #error "Skia gpu currently assumes little endian"
     #error "Skia gpu currently assumes little endian"
      ^~~~~
/builddir/build/BUILD/firefox-53.0.2/firefox-53.0.2/gfx/skia/skia/include/gpu/GrTypes.h:288:6: error: #error "SK_*32_SHIFT values must correspond to GL_BGRA or GL_RGBA format."
     #error "SK_*32_SHIFT values must correspond to GL_BGRA or GL_RGBA format."
      ^~~~~

Comment 3 Than Ngo 2017-05-31 15:10:59 UTC
i have done some scratch builds of firefox-53.0.3-1 on ppc64 and ppc64le and s390x.

It now builds fine on ppc64 and ppc64le in f26. Please take a look at scratch build.

  https://koji.fedoraproject.org/koji/taskinfo?taskID=19793541

The s390x build for f27 is still running so i cannot tell if it builds.

Martin, i think we can now remove the ExcludeArch ppc64/ppc64le for f26 so that firefox can be built on these platform.

Thanks Jan Horak for great work to get firefox built on ppc64/ppc64le/s390x!

Comment 4 Than Ngo 2017-05-31 15:11:32 UTC
scratch build on s390x

https://koji.fedoraproject.org/koji/taskinfo?taskID=19793979

Comment 5 Than Ngo 2017-06-01 07:07:03 UTC
firefox-53.0.3-1 also builts fine on s390x.

Comment 6 Than Ngo 2017-06-01 09:29:50 UTC
I have done some basic testings in firefox on ppc64/s390x. It works fine so far.

sadly ppc64, ppc64le and s390x are still disable for fedora < 27.

%if 0%{?fedora} < 27
ExcludeArch: ppc64le ppc64 s390x
%endif

We need to drop the ExcludeArch for f26 please. Could you please remove it for next build?

Thanks

Comment 7 Jan Horak 2017-06-01 09:36:48 UTC
Should be already in progress in koji  now.

Comment 8 Than Ngo 2017-06-02 10:10:43 UTC
it's fixed in firefox-53.0.3-2
https://koji.fedoraproject.org/koji/buildinfo?buildID=899944

Jan, Could you please push it into f26 update? I can take care of it if you don't have time to do that.

Thanks
Than

Comment 9 Fedora Update System 2017-06-02 13:51:45 UTC
firefox-53.0.3-2.fc26 has been submitted as an update to Fedora 26. https://bodhi.fedoraproject.org/updates/FEDORA-2017-dca8cd31a5

Comment 10 Fedora Update System 2017-06-04 19:40:57 UTC
firefox-53.0.3-2.fc26 has been pushed to the Fedora 26 testing repository. If problems still persist, please make note of it in this bug report.
See https://fedoraproject.org/wiki/QA:Updates_Testing for
instructions on how to install test updates.
You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-2017-dca8cd31a5

Comment 11 Fedora Update System 2017-06-09 19:23:18 UTC
firefox-53.0.3-2.fc26 has been pushed to the Fedora 26 stable repository. If problems still persist, please make note of it in this bug report.