Quantcast

FF nightly build help

classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

FF nightly build help

andy-21
Hi:

FreeBSD BSD_12 12.0-CURRENT FreeBSD 12.0-CURRENT #38 r316642: Sat Apr  8
12:09:19 EDT 2017     root@BSD_12:/usr/obj/usr/src/sys/MYKERNEL  amd64

[root@BSD_12 /usr/ports/www/ff_nightly]# svnlite info
Path: .
Working Copy Root Path: /usr/ports/www/ff_nightly
URL:
https://trillian.chruetertee.ch/svn/freebsd-gecko/trunk/www/firefox-nightly
Relative URL: ^/trunk/www/firefox-nightly
Repository Root: https://trillian.chruetertee.ch/svn/freebsd-gecko
Repository UUID: 6ab5617d-af29-de11-a9e3-001676731981
Revision: 1856
Node Kind: directory
Schedule: normal
Last Changed Author: jbeich
Last Changed Rev: 1851
Last Changed Date: 2015-06-23 12:55:13 -0400 (Tue, 23 Jun 2015)

Trying to build fails with:

===>  Configuring for firefox-nightly-41.0.353381,1
(cd /usr/ports/www/ff_nightly/work/mozilla-inbound-dc3d434b43e5 &&
/usr/local/bin/autoconf-2.13)
(cd /usr/ports/www/ff_nightly/work/mozilla-inbound-dc3d434b43e5/js/src/ &&
/usr/local/bin/autoconf-2.13)
===>   FreeBSD 10 autotools fix applied to
/usr/ports/www/ff_nightly/work/mozilla-inbound-dc3d434b43e5/toolkit/crashreporter/google-breakpad/m4/libtool.m4
gmake[2]: Entering directory '/usr/ports/www/ff_nightly'
mkdir -p
'/usr/ports/www/ff_nightly/work/mozilla-inbound-dc3d434b43e5/obj-x86_64-unknown-freebsd12.0/'
/usr/local/bin/python2.7
/usr/ports/www/ff_nightly/work/mozilla-inbound-dc3d434b43e5/config/pythonpath.py
-I
/usr/ports/www/ff_nightly/work/mozilla-inbound-dc3d434b43e5/testing/mozbase/mozfile
\

/usr/ports/www/ff_nightly/work/mozilla-inbound-dc3d434b43e5/python/mozbuild/mozbuild/controller/clobber.py
/usr/ports/www/ff_nightly/work/mozilla-inbound-dc3d434b43e5
/usr/ports/www/ff_nightly/work/mozilla-inbound-dc3d434b43e5/obj-x86_64-unknown-freebsd12.0
Clobber not needed.
>
/usr/ports/www/ff_nightly/work/mozilla-inbound-dc3d434b43e5/obj-x86_64-unknown-freebsd12.0/.mozconfig.mk
cp /usr/ports/www/ff_nightly/work/mozilla-inbound-dc3d434b43e5/.mozconfig
/usr/ports/www/ff_nightly/work/mozilla-inbound-dc3d434b43e5/obj-x86_64-unknown-freebsd12.0/.mozconfig
cd
/usr/ports/www/ff_nightly/work/mozilla-inbound-dc3d434b43e5/obj-x86_64-unknown-freebsd12.0
/usr/ports/www/ff_nightly/work/mozilla-inbound-dc3d434b43e5/configure
Creating Python environment
New python executable in
/usr/ports/www/ff_nightly/work/mozilla-inbound-dc3d434b43e5/obj-x86_64-unknown-freebsd12.0/_virtualenv/bin/python2.7
Also creating executable in
/usr/ports/www/ff_nightly/work/mozilla-inbound-dc3d434b43e5/obj-x86_64-unknown-freebsd12.0/_virtualenv/bin/python
Installing setuptools, pip, wheel...done.
running build_ext
building 'psutil._psutil_bsd' extension
creating build
creating build/temp.freebsd-12.0-CURRENT-amd64-2.7
creating build/temp.freebsd-12.0-CURRENT-amd64-2.7/psutil
creating build/temp.freebsd-12.0-CURRENT-amd64-2.7/psutil/arch
creating build/temp.freebsd-12.0-CURRENT-amd64-2.7/psutil/arch/bsd
cc -fno-strict-aliasing -O2 -pipe -fstack-protector -fno-strict-aliasing
-DNDEBUG -DLIBICONV_PLUG -isystem /usr/local/include -fPIC
-DPSUTIL_VERSION=311 -I/usr/local/include/python2.7 -c
psutil/_psutil_bsd.c -o
build/temp.freebsd-12.0-CURRENT-amd64-2.7/psutil/_psutil_bsd.o
psutil/_psutil_bsd.c:958:39: error: no member named 'xt_tp' in 'struct
xtcpcb'
         tp = &((struct xtcpcb *)xig)->xt_tp;
               ~~~~~~~~~~~~~~~~~~~~~~  ^
psutil/_psutil_bsd.c:959:13: warning: incompatible pointer types assigning
to 'struct inpcb *' from 'struct xinpcb *' [-Wincompatible-pointer-types]
         inp = &((struct xtcpcb *)xig)->xt_inp;
             ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
psutil/_psutil_bsd.c:960:39: error: no member named 'xt_socket' in 'struct
xtcpcb'
         so = &((struct xtcpcb *)xig)->xt_socket;
               ~~~~~~~~~~~~~~~~~~~~~~  ^
psutil/_psutil_bsd.c:969:33: error: incomplete definition of type 'struct
inpcb'
                     AF_INET, inp->inp_lport, &inp->inp_laddr,
                              ~~~^
/usr/include/netinet/in_pcb.h:65:22: note: forward declaration of 'struct
inpcb'
LIST_HEAD(inpcbhead, inpcb);
                      ^
psutil/_psutil_bsd.c:969:50: error: incomplete definition of type 'struct
inpcb'
                     AF_INET, inp->inp_lport, &inp->inp_laddr,
                                               ~~~^
/usr/include/netinet/in_pcb.h:65:22: note: forward declaration of 'struct
inpcb'
LIST_HEAD(inpcbhead, inpcb);
                      ^
psutil/_psutil_bsd.c:973:33: error: incomplete definition of type 'struct
inpcb'
                     AF_INET, inp->inp_fport, &inp->inp_faddr,
                              ~~~^
/usr/include/netinet/in_pcb.h:65:22: note: forward declaration of 'struct
inpcb'
LIST_HEAD(inpcbhead, inpcb);
                      ^
psutil/_psutil_bsd.c:973:50: error: incomplete definition of type 'struct
inpcb'
                     AF_INET, inp->inp_fport, &inp->inp_faddr,
                                               ~~~^
/usr/include/netinet/in_pcb.h:65:22: note: forward declaration of 'struct
inpcb'
LIST_HEAD(inpcbhead, inpcb);
                      ^
psutil/_psutil_bsd.c:978:34: error: incomplete definition of type 'struct
inpcb'
                     AF_INET6, inp->inp_lport, &inp->in6p_laddr,
                               ~~~^
/usr/include/netinet/in_pcb.h:65:22: note: forward declaration of 'struct
inpcb'
LIST_HEAD(inpcbhead, inpcb);
                      ^
psutil/_psutil_bsd.c:978:51: error: incomplete definition of type 'struct
inpcb'
                     AF_INET6, inp->inp_lport, &inp->in6p_laddr,
                                                ~~~^
/usr/include/netinet/in_pcb.h:65:22: note: forward declaration of 'struct
inpcb'
LIST_HEAD(inpcbhead, inpcb);
                      ^
psutil/_psutil_bsd.c:982:34: error: incomplete definition of type 'struct
inpcb'
                     AF_INET6, inp->inp_fport, &inp->in6p_faddr,
                               ~~~^
/usr/include/netinet/in_pcb.h:65:22: note: forward declaration of 'struct
inpcb'
LIST_HEAD(inpcbhead, inpcb);
                      ^
psutil/_psutil_bsd.c:982:51: error: incomplete definition of type 'struct
inpcb'
                     AF_INET6, inp->inp_fport, &inp->in6p_faddr,
                                                ~~~^
/usr/include/netinet/in_pcb.h:65:22: note: forward declaration of 'struct
inpcb'
LIST_HEAD(inpcbhead, inpcb);
                      ^
psutil/_psutil_bsd.c:1070:41: error: incomplete definition of type 'struct
tcpcb'
                         state = (int)tcp->t_state;
                                      ~~~^
psutil/_psutil_bsd.c:946:15: note: forward declaration of 'struct tcpcb'
static struct tcpcb *
               ^
psutil/_psutil_bsd.c:1822:21: warning: incompatible pointer types
assigning to 'struct inpcb *' from 'struct xinpcb *'
[-Wincompatible-pointer-types]
                 inp = &xtp->xt_inp;
                     ^ ~~~~~~~~~~~~
psutil/_psutil_bsd.c:1823:28: error: no member named 'xt_socket' in
'struct xtcpcb'
                 so = &xtp->xt_socket;
                       ~~~  ^
psutil/_psutil_bsd.c:1824:31: error: no member named 'xt_tp' in 'struct
xtcpcb'
                 status = xtp->xt_tp.t_state;
                          ~~~  ^
psutil/_psutil_bsd.c:1833:29: error: no member named 'xi_inp' in 'struct
xinpcb'
                 inp = &xip->xi_inp;
                        ~~~  ^
psutil/_psutil_bsd.c:1848:26: error: incomplete definition of type 'struct
inpcb'
         lport = ntohs(inp->inp_lport);
                       ~~~^
/usr/include/netinet/in.h:120:26: note: expanded from macro 'ntohs'
#define ntohs(x)        __ntohs(x)
                                 ^
/usr/include/x86/endian.h:129:30: note: expanded from macro '__ntohs'
#define __ntohs(x)      __bswap16(x)
                                   ^
/usr/include/x86/endian.h:74:37: note: expanded from macro '__bswap16'
         ((__uint16_t)(__builtin_constant_p(x) ? \
                                            ^
/usr/include/netinet/in_pcb.h:65:22: note: forward declaration of 'struct
inpcb'
LIST_HEAD(inpcbhead, inpcb);
                      ^
psutil/_psutil_bsd.c:1848:26: error: incomplete definition of type 'struct
inpcb'
         lport = ntohs(inp->inp_lport);
                       ~~~^
/usr/include/netinet/in.h:120:26: note: expanded from macro 'ntohs'
#define ntohs(x)        __ntohs(x)
                                 ^
/usr/include/x86/endian.h:129:30: note: expanded from macro '__ntohs'
#define __ntohs(x)      __bswap16(x)
                                   ^
/usr/include/x86/endian.h:75:33: note: expanded from macro '__bswap16'
             __bswap16_gen((__uint16_t)(x)) : __bswap16_var(x)))
                                        ^
/usr/include/x86/endian.h:66:40: note: expanded from macro '__bswap16_gen'
#define __bswap16_gen(x)        (__uint16_t)((x) << 8 | (x) >> 8)
                                               ^
/usr/include/netinet/in_pcb.h:65:22: note: forward declaration of 'struct
inpcb'
LIST_HEAD(inpcbhead, inpcb);
                      ^
psutil/_psutil_bsd.c:1848:26: error: incomplete definition of type 'struct
inpcb'
         lport = ntohs(inp->inp_lport);
                       ~~~^
/usr/include/netinet/in.h:120:26: note: expanded from macro 'ntohs'
#define ntohs(x)        __ntohs(x)
                                 ^
/usr/include/x86/endian.h:129:30: note: expanded from macro '__ntohs'
#define __ntohs(x)      __bswap16(x)
                                   ^
/usr/include/x86/endian.h:75:33: note: expanded from macro '__bswap16'
             __bswap16_gen((__uint16_t)(x)) : __bswap16_var(x)))
                                        ^
/usr/include/x86/endian.h:66:51: note: expanded from macro '__bswap16_gen'
#define __bswap16_gen(x)        (__uint16_t)((x) << 8 | (x) >> 8)
                                                          ^
/usr/include/netinet/in_pcb.h:65:22: note: forward declaration of 'struct
inpcb'
LIST_HEAD(inpcbhead, inpcb);
                      ^
psutil/_psutil_bsd.c:1848:26: error: incomplete definition of type 'struct
inpcb'
         lport = ntohs(inp->inp_lport);
                       ~~~^
/usr/include/netinet/in.h:120:26: note: expanded from macro 'ntohs'
#define ntohs(x)        __ntohs(x)
                                 ^
/usr/include/x86/endian.h:129:30: note: expanded from macro '__ntohs'
#define __ntohs(x)      __bswap16(x)
                                   ^
/usr/include/x86/endian.h:75:53: note: expanded from macro '__bswap16'
             __bswap16_gen((__uint16_t)(x)) : __bswap16_var(x)))
                                                            ^
/usr/include/netinet/in_pcb.h:65:22: note: forward declaration of 'struct
inpcb'
LIST_HEAD(inpcbhead, inpcb);
                      ^
psutil/_psutil_bsd.c:1849:26: error: incomplete definition of type 'struct
inpcb'
         rport = ntohs(inp->inp_fport);
                       ~~~^
/usr/include/netinet/in.h:120:26: note: expanded from macro 'ntohs'
#define ntohs(x)        __ntohs(x)
                                 ^
/usr/include/x86/endian.h:129:30: note: expanded from macro '__ntohs'
#define __ntohs(x)      __bswap16(x)
                                   ^
/usr/include/x86/endian.h:74:37: note: expanded from macro '__bswap16'
         ((__uint16_t)(__builtin_constant_p(x) ? \
                                            ^
/usr/include/netinet/in_pcb.h:65:22: note: forward declaration of 'struct
inpcb'
LIST_HEAD(inpcbhead, inpcb);
                      ^
fatal error: too many errors emitted, stopping now [-ferror-limit=]
2 warnings and 20 errors generated.
error: command 'cc' failed with exit status 1

Error processing command. Ignoring because optional.
(optional:setup.py:python/psutil:build_ext:--inplace)
Reexecuting in the virtualenv
Adding configure options from
/usr/ports/www/ff_nightly/work/mozilla-inbound-dc3d434b43e5/.mozconfig
   --program-transform-name=s/firefox/firefox-nightly/
   --enable-application=browser
   --prefix=/usr/local
   --enable-jemalloc
   --enable-system-cairo
   --with-system-libevent
   --enable-system-ffi
   --enable-system-hunspell
   --with-system-icu
   --with-intl-api
   --with-system-jpeg=/usr/local
   --with-system-nspr
   --with-system-nss
   --with-system-png=/usr/local
   --enable-system-pixman
   --enable-system-sqlite
   --with-system-libvpx
   --enable-chrome-format=omni
   --enable-default-toolkit=cairo-gtk2
   --enable-update-channel=nightly
   --enable-pie
   --with-pthreads
   --enable-extensions=default
   --enable-necko-protocols=default
   --with-system-zlib
   --with-system-bz2
   --enable-optimize
   --enable-startup-notification
   --disable-gstreamer
   --enable-gconf
   --enable-gnomeui
   --disable-libproxy
   --enable-alsa
   --enable-pulseaudio
   --disable-rust
   --disable-debug
   --disable-debug-symbols
   --enable-release
   --enable-dtrace
   --disable-gold
   --disable-profiling
   --disable-tests
   --disable-strip
   --disable-install-strip
   MOZ_JEMALLOC3=1
   MOZ_OPTIMIZE_FLAGS=-O2 -O3
   MOZ_GOOGLE_API_KEY=AIzaSyBsp9n41JLW8jCokwn7vhoaMejDFRd1mp8
   MOZ_JEMALLOC4=1
   PYTHON=/usr/local/bin/python2.7
   PERL=/usr/local/bin/perl
Traceback (most recent call last):
   File
"/usr/ports/www/ff_nightly/work/mozilla-inbound-dc3d434b43e5/configure.py",
line 124, in <module>
     sys.exit(main(sys.argv))
   File
"/usr/ports/www/ff_nightly/work/mozilla-inbound-dc3d434b43e5/configure.py",
line 29, in main
     sandbox.run(os.path.join(os.path.dirname(__file__), 'moz.configure'))
   File
"/usr/ports/www/ff_nightly/work/mozilla-inbound-dc3d434b43e5/python/mozbuild/mozbuild/configure/__init__.py",
line 352, in run
     self.include_file(path)
   File
"/usr/ports/www/ff_nightly/work/mozilla-inbound-dc3d434b43e5/python/mozbuild/mozbuild/configure/__init__.py",
line 343, in include_file
     exec_(code, self)
   File
"/usr/ports/www/ff_nightly/work/mozilla-inbound-dc3d434b43e5/python/mozbuild/mozbuild/util.py",
line 59, in exec_
     exec(object, globals, locals)
   File
"/usr/ports/www/ff_nightly/work/mozilla-inbound-dc3d434b43e5/moz.configure",
line 134, in <module>
     include(include_project_configure)
   File
"/usr/ports/www/ff_nightly/work/mozilla-inbound-dc3d434b43e5/python/mozbuild/mozbuild/configure/__init__.py",
line 647, in include_impl
     self.include_file(what)
   File
"/usr/ports/www/ff_nightly/work/mozilla-inbound-dc3d434b43e5/python/mozbuild/mozbuild/configure/__init__.py",
line 343, in include_file
     exec_(code, self)
   File
"/usr/ports/www/ff_nightly/work/mozilla-inbound-dc3d434b43e5/python/mozbuild/mozbuild/util.py",
line 59, in exec_
     exec(object, globals, locals)
   File
"/usr/ports/www/ff_nightly/work/mozilla-inbound-dc3d434b43e5/browser/moz.configure",
line 12, in <module>
     include('../toolkit/moz.configure')
   File
"/usr/ports/www/ff_nightly/work/mozilla-inbound-dc3d434b43e5/python/mozbuild/mozbuild/configure/__init__.py",
line 647, in include_impl
     self.include_file(what)
   File
"/usr/ports/www/ff_nightly/work/mozilla-inbound-dc3d434b43e5/python/mozbuild/mozbuild/configure/__init__.py",
line 343, in include_file
     exec_(code, self)
   File
"/usr/ports/www/ff_nightly/work/mozilla-inbound-dc3d434b43e5/python/mozbuild/mozbuild/util.py",
line 59, in exec_
     exec(object, globals, locals)
   File
"/usr/ports/www/ff_nightly/work/mozilla-inbound-dc3d434b43e5/toolkit/moz.configure",
line 124, in <module>
     @depends('--enable-default-toolkit', target, '--help')
   File
"/usr/ports/www/ff_nightly/work/mozilla-inbound-dc3d434b43e5/python/mozbuild/mozbuild/configure/__init__.py",
line 630, in decorator
     depends = DependsFunction(self, func, dependencies, when=when)
   File
"/usr/ports/www/ff_nightly/work/mozilla-inbound-dc3d434b43e5/python/mozbuild/mozbuild/configure/__init__.py",
line 80, in __init__
     sandbox._value_for(self)
   File
"/usr/ports/www/ff_nightly/work/mozilla-inbound-dc3d434b43e5/python/mozbuild/mozbuild/configure/__init__.py",
line 427, in _value_for
     return self._value_for_depends(obj, need_help_dependency)
   File
"/usr/ports/www/ff_nightly/work/mozilla-inbound-dc3d434b43e5/python/mozbuild/mozbuild/util.py",
line 925, in method_call
     cache[args] = self.func(instance, *args)
   File
"/usr/ports/www/ff_nightly/work/mozilla-inbound-dc3d434b43e5/python/mozbuild/mozbuild/configure/__init__.py",
line 436, in _value_for_depends
     return obj.result(need_help_dependency)
   File
"/usr/ports/www/ff_nightly/work/mozilla-inbound-dc3d434b43e5/python/mozbuild/mozbuild/util.py",
line 925, in method_call
     cache[args] = self.func(instance, *args)
   File
"/usr/ports/www/ff_nightly/work/mozilla-inbound-dc3d434b43e5/python/mozbuild/mozbuild/configure/__init__.py",
line 106, in result
     for d in self.dependencies]
   File
"/usr/ports/www/ff_nightly/work/mozilla-inbound-dc3d434b43e5/python/mozbuild/mozbuild/configure/__init__.py",
line 430, in _value_for
     return self._value_for_option(obj)
   File
"/usr/ports/www/ff_nightly/work/mozilla-inbound-dc3d434b43e5/python/mozbuild/mozbuild/util.py",
line 925, in method_call
     cache[args] = self.func(instance, *args)
   File
"/usr/ports/www/ff_nightly/work/mozilla-inbound-dc3d434b43e5/python/mozbuild/mozbuild/configure/__init__.py",
line 473, in _value_for_option
     value, option_string = self._helper.handle(option)
   File
"/usr/ports/www/ff_nightly/work/mozilla-inbound-dc3d434b43e5/python/mozbuild/mozbuild/configure/options.py",
line 466, in handle
     ret = option.get_value(arg, origin)
   File
"/usr/ports/www/ff_nightly/work/mozilla-inbound-dc3d434b43e5/python/mozbuild/mozbuild/configure/options.py",
line 366, in get_value
     % (val, ', '.join("'%s'" % c for c in self.choices)))
mozbuild.configure.options.InvalidOptionError: 'cairo-gtk2' is not one of
'cairo-windows', 'cairo-gtk3', 'cairo-gtk3-wayland', 'cairo-cocoa',
'cairo-uikit', 'cairo-android', 'cairo-gonk'
*** Fix above errors and then restart with\
                "gmake -f client.mk build"
gmake[2]: ***
[/usr/ports/www/ff_nightly/work/mozilla-inbound-dc3d434b43e5/client.mk:383:
configure] Error 1
gmake[2]: Leaving directory '/usr/ports/www/ff_nightly'
===>  Script "configure" failed unexpectedly.
Please report the problem to [hidden email] [maintainer] and attach the
"/usr/ports/www/ff_nightly/work/mozilla-inbound-dc3d434b43e5/config.log"
including the output of the failure of your make command. Also, it might
be
a good idea to provide an overview of all packages installed on your
system
(e.g. a /usr/local/sbin/pkg-static info -g -Ea).
*** Error code 1

Stop.
make[1]: stopped in /usr/ports/www/ff_nightly
*** Error code 1


Any help is appreciated, thanks in advance.
_______________________________________________
[hidden email] mailing list
https://lists.freebsd.org/mailman/listinfo/freebsd-gecko
To unsubscribe, send any mail to "[hidden email]"
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: FF nightly build help

Christoph Moench-Tegeder
## AN ([hidden email]):

Between this:

> Last Changed Date: 2015-06-23 12:55:13 -0400 (Tue, 23 Jun 2015)

and this:

> ===>  Configuring for firefox-nightly-41.0.353381,1

I really wouldn't expect anything to work. Why would one even try that?
Seriously, Firefox pre-41 from nearly two years ago?

Regards,
Christoph

--
Spare Space
_______________________________________________
[hidden email] mailing list
https://lists.freebsd.org/mailman/listinfo/freebsd-gecko
To unsubscribe, send any mail to "[hidden email]"
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: FF nightly build help

Jan Beich-5
In reply to this post by andy-21
AN <[hidden email]> writes:

> URL: https://trillian.chruetertee.ch/svn/freebsd-gecko/trunk/www/firefox-nightly
> Relative URL: ^/trunk/www/firefox-nightly
[...]
> Last Changed Date: 2015-06-23 12:55:13 -0400 (Tue, 23 Jun 2015)

I no longer dogfood gecko@ ports but some bits can be salvaged e.g.,

diff --git Mk/bsd.gecko.mk Mk/bsd.gecko.mk
index 21cecb4761f9..ee872f156ff9 100644
--- Mk/bsd.gecko.mk
+++ Mk/bsd.gecko.mk
@@ -328,12 +328,14 @@ MOZ_OPTIONS+= --enable-gconf
 MOZ_OPTIONS+= --disable-gconf
 .endif
 
-.if ${PORT_OPTIONS:MGNOMEUI}
+.if ${MOZILLA_VER:R:R} < 55
+. if ${PORT_OPTIONS:MGNOMEUI}
 BUILD_DEPENDS+= ${libgnomeui_DETECT}:${libgnomeui_LIB_DEPENDS:C/.*://}
 USE_GNOME+= libgnomeui:build
 MOZ_OPTIONS+= --enable-gnomeui
-.else
+. else
 MOZ_OPTIONS+= --disable-gnomeui
+. endif
 .endif
 
 .if ${PORT_OPTIONS:MLIBPROXY}
@@ -389,14 +391,20 @@ post-patch-SNDIO-on:
 .endif
 
 .if ${PORT_OPTIONS:MRUST}
-BUILD_DEPENDS+= rustc:${RUST_PORT}
+BUILD_DEPENDS+= rust>=1.15.1:${RUST_PORT}
 . if ${MOZILLA_VER:R:R} >= 51
-BUILD_DEPENDS+= cargo:devel/cargo
+BUILD_DEPENDS+= cargo>=0.16.0:devel/cargo
 . endif
 RUST_PORT?= lang/rust
 MOZ_OPTIONS+= --enable-rust
+# XXX Build Servo for testing via about:config
+# layout.css.servo.enabled + gfx.webrender.enabled
+BUILD_DEPENDS+= llvm-config39:devel/llvm39 # bindgen crashes with llvm40
+MOZ_EXPORT+= LLVM_CONFIG="${LOCALBASE}/bin/llvm-config39"
+MOZ_OPTIONS+= --enable-stylo --enable-webrender=build
 .else
 MOZ_OPTIONS+= --disable-rust
+MOZ_OPTIONS+= --disable-stylo --disable-webrender # XXX
 .endif
 
 .if ${PORT_OPTIONS:MDEBUG}
diff --git www/firefox/Makefile www/firefox/Makefile
index 596737fa65f9..e8e01c4c16af 100644
--- www/firefox/Makefile
+++ www/firefox/Makefile
@@ -2,26 +2,25 @@
 # $FreeBSD$
 
 PORTNAME= firefox
-DISTVERSION= 53.0
-DISTVERSIONSUFFIX=.source
-PORTREVISION= 2
+DISTVERSION= 55.0a1.r354069
 PORTEPOCH= 1
 CATEGORIES= www ipv6
-MASTER_SITES= MOZILLA/${PORTNAME}/releases/${DISTVERSION}/source \
- MOZILLA/${PORTNAME}/candidates/${DISTVERSION}-candidates/build6/source
+MASTER_SITES= https://hg.mozilla.org/mozilla-central/archive/
+DISTNAME= 5e3dc7e1288a
+DIST_SUBDIR= ${MOZILLA}
 
 MAINTAINER= [hidden email]
 COMMENT= Web browser based on the browser portion of Mozilla
 
-BUILD_DEPENDS= nspr>=4.13.1:devel/nspr \
- nss>=3.29.5:security/nss \
- libevent>=2.0.21_2:devel/libevent \
- harfbuzz>=1.4.1:print/harfbuzz \
- graphite2>=1.3.8:graphics/graphite2 \
+BUILD_DEPENDS= nspr>=4.14:devel/nspr \
+ nss>=3.30.1:security/nss \
+ libevent>=2.0.22:devel/libevent \
+ harfbuzz>=1.4.5:print/harfbuzz \
+ graphite2>=1.3.9:graphics/graphite2 \
  png>=1.6.28:graphics/png \
  libvorbis>=1.3.5,3:audio/libvorbis \
  libvpx>=1.5.0:multimedia/libvpx \
- sqlite3>=3.17.0:databases/sqlite3 \
+ sqlite3>=3.18.0:databases/sqlite3 \
  ${PYTHON_PKGNAMEPREFIX}sqlite3>0:databases/py-sqlite3 \
  v4l_compat>0:multimedia/v4l_compat \
  autoconf-2.13:devel/autoconf213 \
@@ -38,7 +37,7 @@ USE_MOZILLA= -soundtouch
 MOZILLA_NAME= Firefox
 
 USE_GL= gl
-USES= tar:xz
+USES= tar:bzip2
 
 FIREFOX_ICON= ${MOZILLA}.png
 FIREFOX_ICON_SRC= ${PREFIX}/lib/${MOZILLA}/browser/chrome/icons/default/default48.png
@@ -47,13 +46,14 @@ MOZ_OPTIONS= --enable-application=browser \
 
 OPTIONS_DEFINE= RUST
 OPTIONS_DEFAULT= BUNDLED_CAIRO
+OPTIONS_EXCLUDE= GNOMEUI
 # XXX lang/rust and devel/cargo currently build only on these platforms
 OPTIONS_DEFAULT_amd64= RUST
 OPTIONS_DEFAULT_i386= RUST
 
 .include "${.CURDIR}/../../www/firefox/Makefile.options"
 
-WRKSRC:= ${WRKDIR}/${PORTNAME}-${DISTVERSION}
+WRKSRC:= ${WRKDIR}/${MASTER_SITES:M*hg*:H:H:T}-${DISTNAME}
 
 post-extract:
  @${SED} -e 's|@FIREFOX_ICON@|${FIREFOX_ICON}|' -e 's|@MOZILLA@|${MOZILLA}|' \
@@ -61,6 +61,7 @@ post-extract:
  <${FILESDIR}/firefox.desktop.in >${WRKDIR}/${MOZILLA}.desktop
 
 post-patch:
+ @${REINPLACE_CMD} '/AM_PATH_NSS/s/3\.31/3.30.1/' ${MOZSRC}/old-configure.in
  @${REINPLACE_CMD} -e 's|%%LOCALBASE%%|${LOCALBASE}|g' \
  ${WRKSRC}/browser/app/nsBrowserApp.cpp
 
diff --git www/firefox/distinfo www/firefox/distinfo
index 32126eab09d0..a5c4936c4c74 100644
--- www/firefox/distinfo
+++ www/firefox/distinfo
@@ -1,3 +1,3 @@
 TIMESTAMP = 1492149930
-SHA256 (firefox-53.0.source.tar.xz) = 4ed1b23ea7c08f81a08817ddf3b4f06849e01420ee074008b6f390366e95b7d0
-SIZE (firefox-53.0.source.tar.xz) = 213676692
+SHA256 (firefox/5e3dc7e1288a.tar.bz2) = 67afc9eccf4b2f6147ba9c6f6bf310d5e26a2fb11c3a4c1af14a387a2b096c53
+SIZE (firefox/5e3dc7e1288a.tar.bz2) = 272765098
diff --git www/firefox/files/patch-bug1021761 www/firefox/files/patch-bug1021761
index e59fce618f00..b9374901b8be 100644
--- www/firefox/files/patch-bug1021761
+++ www/firefox/files/patch-bug1021761
@@ -2,7 +2,7 @@ diff --git build/moz.configure/old.configure build/moz.configure/old.configure
 index cd6c37cf4c7c..e98dc7973a6a 100644
 --- build/moz.configure/old.configure
 +++ build/moz.configure/old.configure
-@@ -275,6 +275,7 @@ def old_configure_options(*options):
+@@ -274,6 +274,7 @@ def old_configure_options(*options):
      '--with-nspr-prefix',
      '--with-nss-exec-prefix',
      '--with-nss-prefix',
@@ -14,7 +14,7 @@ diff --git old-configure.in old-configure.in
 index dff46614635e..dbbfdb76ab78 100644
 --- old-configure.in
 +++ old-configure.in
-@@ -3128,6 +3128,67 @@ AC_DEFINE(MOZ_WEBM_ENCODER)
+@@ -3033,6 +3033,67 @@ AC_DEFINE(MOZ_WEBM_ENCODER)
  AC_SUBST(MOZ_WEBM_ENCODER)
 
  dnl ==================================
@@ -86,7 +86,7 @@ diff --git dom/media/CubebUtils.cpp dom/media/CubebUtils.cpp
 index e10e07e06ade..1fd561bea113 100644
 --- dom/media/CubebUtils.cpp
 +++ dom/media/CubebUtils.cpp
-@@ -71,7 +71,8 @@ const char* AUDIOSTREAM_BACKEND_ID_STR[] = {
+@@ -90,7 +90,8 @@ const char* AUDIOSTREAM_BACKEND_ID_STR[] = {
    "sndio",
    "opensl",
    "audiotrack",
@@ -112,7 +112,7 @@ diff --git media/libcubeb/src/cubeb.c media/libcubeb/src/cubeb.c
 index 57bcb4c13652..68be024f4a68 100644
 --- media/libcubeb/src/cubeb.c
 +++ media/libcubeb/src/cubeb.c
-@@ -54,6 +54,9 @@ int audiotrack_init(cubeb ** context, char const * context_name);
+@@ -55,6 +55,9 @@ int audiotrack_init(cubeb ** context, char const * context_name);
  #if defined(USE_KAI)
  int kai_init(cubeb ** context, char const * context_name);
  #endif
@@ -122,7 +122,18 @@ index 57bcb4c13652..68be024f4a68 100644
 
  static int
  validate_stream_params(cubeb_stream_params * input_stream_params,
-@@ -138,6 +141,9 @@ cubeb_init(cubeb ** context, char const * context_name)
+@@ -155,6 +158,10 @@ cubeb_init(cubeb ** context, char const * context_name, char const * backend_nam
+ #if defined(USE_KAI)
+       init_oneshot = kai_init;
+ #endif
++    } else if (!strcmp(backend_name, "oss")) {
++#if defined(USE_OSS)
++      init_oneshot = oss_init;
++#endif
+     } else {
+       /* Already set */
+     }
+@@ -196,6 +203,9 @@ cubeb_init(cubeb ** context, char const * context_name, char const * backend_nam
  #if defined(USE_KAI)
      kai_init,
  #endif
@@ -246,7 +257,7 @@ index 05ad27fef53b..3ea78e994f59 100644
 +    char * buftail = stm->buffer + WRAP(snd_pcm_frames_to_bytes)(stm->pcm, stm->bufframes);
 
      /* Correct read size to the other stream available frames */
-     if (stm->other_stream && got > stm->other_stream->bufframes) {
+     if (stm->other_stream && got > (snd_pcm_sframes_t) stm->other_stream->bufframes) {
 @@ -372,8 +421,8 @@ alsa_process_stream(cubeb_stream * stm)
      long drain_frames = avail - stm->bufframes;
      double drain_time = (double) drain_frames / stm->params.rate;
@@ -537,7 +548,7 @@ index 05ad27fef53b..3ea78e994f59 100644
      pthread_mutex_unlock(&cubeb_alsa_mutex);
    }
 
-@@ -939,7 +1047,7 @@ alsa_stream_init_single(cubeb * ctx, cubeb_stream ** stream, char const * stream
+@@ -942,7 +1050,7 @@ alsa_stream_init_single(cubeb * ctx, cubeb_stream ** stream, char const * stream
      return CUBEB_ERROR;
    }
 
@@ -546,7 +557,7 @@ index 05ad27fef53b..3ea78e994f59 100644
    assert(r == 0);
 
    latency_us = latency_frames * 1e6 / stm->params.rate;
-@@ -952,7 +1060,7 @@ alsa_stream_init_single(cubeb * ctx, cubeb_stream ** stream, char const * stream
+@@ -955,7 +1063,7 @@ alsa_stream_init_single(cubeb * ctx, cubeb_stream ** stream, char const * stream
      latency_us = latency_us < min_latency ? min_latency: latency_us;
    }
 
@@ -555,7 +566,7 @@ index 05ad27fef53b..3ea78e994f59 100644
                           stm->params.channels, stm->params.rate, 1,
                           latency_us);
    if (r < 0) {
-@@ -960,20 +1068,20 @@ alsa_stream_init_single(cubeb * ctx, cubeb_stream ** stream, char const * stream
+@@ -963,20 +1071,20 @@ alsa_stream_init_single(cubeb * ctx, cubeb_stream ** stream, char const * stream
      return CUBEB_ERROR_INVALID_FORMAT;
    }
 
@@ -579,7 +590,7 @@ index 05ad27fef53b..3ea78e994f59 100644
 +  r = WRAP(snd_pcm_poll_descriptors)(stm->pcm, stm->saved_fds, stm->nfds);
    assert((nfds_t) r == stm->nfds);
 
-   r = pthread_cond_init(&stm->cond, NULL);
+   if (alsa_register_stream(ctx, stm) != 0) {
 @@ -1048,7 +1156,7 @@ alsa_stream_destroy(cubeb_stream * stm)
    pthread_mutex_lock(&stm->mutex);
    if (stm->pcm) {
@@ -1145,7 +1156,7 @@ diff --git media/libcubeb/src/moz.build media/libcubeb/src/moz.build
 index fc9c79198e30..57d039d5a0f2 100644
 --- media/libcubeb/src/moz.build
 +++ media/libcubeb/src/moz.build
-@@ -20,6 +20,12 @@ if CONFIG['MOZ_ALSA']:
+@@ -21,6 +21,12 @@ if CONFIG['MOZ_ALSA']:
      ]
      DEFINES['USE_ALSA'] = True
 
@@ -1158,7 +1169,7 @@ index fc9c79198e30..57d039d5a0f2 100644
  if CONFIG['MOZ_PULSEAUDIO'] or CONFIG['MOZ_JACK']:
      SOURCES += [
          'cubeb_resampler.cpp',
-@@ -92,6 +98,7 @@ if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'gonk':
+@@ -96,6 +102,7 @@ if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'gonk':
              '%' + '%s/system/media/wilhelm/include' % CONFIG['ANDROID_SOURCE'],
          ]
 
@@ -1182,34 +1193,19 @@ diff --git media/libcubeb/update.sh media/libcubeb/update.sh
 index b139b8f497fd..d1f8a223c6d8 100755
 --- media/libcubeb/update.sh
 +++ media/libcubeb/update.sh
-@@ -17,6 +17,7 @@ cp $1/src/cubeb_audiounit.cpp src
- cp $1/src/cubeb_osx_run_loop.h src
- cp $1/src/cubeb_jack.cpp src
+@@ -20,6 +20,7 @@ cp $1/src/cubeb_log.h src
+ cp $1/src/cubeb_mixer.cpp src
+ cp $1/src/cubeb_mixer.h src
  cp $1/src/cubeb_opensl.c src
 +cp $1/src/cubeb_oss.c src
- cp $1/src/cubeb_array_queue.h src
+ cp $1/src/cubeb_osx_run_loop.h src
  cp $1/src/cubeb_panner.cpp src
  cp $1/src/cubeb_panner.h src
-diff --git media/webrtc/signaling/test/common.build media/webrtc/signaling/test/common.build
-index 3e5450f5d63a..dd45427f655a 100644
---- media/webrtc/signaling/test/common.build
-+++ media/webrtc/signaling/test/common.build
-@@ -99,8 +99,8 @@ USE_LIBS += ['mozglue']
- OS_LIBS += CONFIG['MOZ_WEBRTC_X11_LIBS']
- OS_LIBS += CONFIG['REALTIME_LIBS']
-
--if CONFIG['MOZ_ALSA']:
--    OS_LIBS += CONFIG['MOZ_ALSA_LIBS']
-+if CONFIG['MOZ_OSS']:
-+    OS_LIBS += CONFIG['MOZ_OSS_LIBS']
-
- if CONFIG['MOZ_SYSTEM_JPEG']:
-     OS_LIBS += CONFIG['MOZ_JPEG_LIBS']
 diff --git toolkit/library/moz.build toolkit/library/moz.build
 index a61c689c83c3..7764df6f8a6b 100644
 --- toolkit/library/moz.build
 +++ toolkit/library/moz.build
-@@ -242,8 +242,8 @@ if CONFIG['MOZ_SYSTEM_LIBVPX']:
+@@ -239,8 +239,8 @@ if CONFIG['MOZ_SYSTEM_LIBVPX']:
  if not CONFIG['MOZ_TREE_PIXMAN']:
      OS_LIBS += CONFIG['MOZ_PIXMAN_LIBS']
 
diff --git www/firefox/files/patch-bug1341234 www/firefox/files/patch-bug1341234
new file mode 100644
index 000000000000..4b5f00ab329e
--- /dev/null
+++ www/firefox/files/patch-bug1341234
@@ -0,0 +1,13 @@
+diff --git a/servo/components/style/build_gecko.rs b/servo/components/style/build_gecko.rs
+index 92d512ee75c9..c5545f695c67 100644
+--- servo/components/style/build_gecko.rs
++++ servo/components/style/build_gecko.rs
+@@ -137,6 +137,8 @@ mod bindings {
+             if build_type == BuildType::Debug {
+                 builder = builder.clang_arg("-DDEBUG=1").clang_arg("-DJS_DEBUG=1");
+             }
++            builder = builder.clang_arg("-isystem/usr/local/include/nspr");
++            builder = builder.clang_arg("-isystem/usr/local/include/pixman-1");
+             if cfg!(target_family = "unix") {
+                 builder = builder.clang_arg("-DOS_POSIX=1");
+             }
diff --git www/firefox/files/patch-bug702179 www/firefox/files/patch-bug702179
index bb642382dfd8..0c998526736e 100644
--- www/firefox/files/patch-bug702179
+++ www/firefox/files/patch-bug702179
@@ -1,13 +1,12 @@
---- js/src/moz.build.orig 2015-12-16 12:32:04.574425000 +0100
-+++ js/src/moz.build 2015-12-16 12:32:09.032032000 +0100
-@@ -671,10 +671,6 @@ CFLAGS += CONFIG['MOZ_ICU_CFLAGS']
- CXXFLAGS += CONFIG['MOZ_ICU_CFLAGS']
- LOCAL_INCLUDES += CONFIG['MOZ_ICU_INCLUDES']
+Don't build static JS lib to make sure DTrace probes are picked up.
+
+--- js/src/build/moz.build.orig 2017-04-16 18:00:50 UTC
++++ js/src/build/moz.build
+@@ -71,7 +71,3 @@ if CONFIG['OS_ARCH'] == 'SunOS':
+     ]
 
+ OS_LIBS += CONFIG['REALTIME_LIBS']
+-
 -NO_EXPAND_LIBS = True
 -
 -DIST_INSTALL = True
--
- # Prepare self-hosted JS code for embedding
- GENERATED_FILES += ['selfhosted.out.h']
- selfhosted = GENERATED_FILES['selfhosted.out.h']
diff --git www/firefox/files/patch-bug826985 www/firefox/files/patch-bug826985
index 1f21f8f960cd..8e23b9382748 100644
--- www/firefox/files/patch-bug826985
+++ www/firefox/files/patch-bug826985
@@ -51,18 +51,6 @@ index b483cd1..f1dd1f0 100644
      # basic stuff for everything
      'include_internal_video_render': 0,
      'clang_use_chrome_plugins': 0,
-diff --git media/webrtc/signaling/test/common.build media/webrtc/signaling/test/common.build
-index b483cd1..f1dd1f0 100644
---- media/webrtc/signaling/test/common.build
-+++ media/webrtc/signaling/test/common.build
-@@ -99,6 +99,7 @@ if CONFIG['JS_SHARED_LIBRARY']:
-
- USE_LIBS += ['mozglue']
-
-+OS_LIBS += CONFIG['MOZ_LIBV4L2_LIBS']
- OS_LIBS += CONFIG['MOZ_WEBRTC_X11_LIBS']
- OS_LIBS += CONFIG['REALTIME_LIBS']
-
 diff --git media/webrtc/trunk/webrtc/modules/video_capture/linux/device_info_linux.cc media/webrtc/trunk/webrtc/modules/video_capture/linux/device_info_linux.cc
 index 239a292..bab496c 100644
 --- media/webrtc/trunk/webrtc/modules/video_capture/linux/device_info_linux.cc
diff --git www/firefox/files/patch-bug847568 www/firefox/files/patch-bug847568
index 9588ce5df654..64c87a3fa6ae 100644
--- www/firefox/files/patch-bug847568
+++ www/firefox/files/patch-bug847568
@@ -145,10 +145,10 @@ index 2118677ca3a8..e4978b413784 100644
      CXXFLAGS += CONFIG['MOZ_CAIRO_CFLAGS']
      CXXFLAGS += CONFIG['CAIRO_FT_CFLAGS']
 diff --git gfx/thebes/moz.build gfx/thebes/moz.build
-index dee9b7bfa2cb..bd801f3a468e 100644
+index 56f1b9fe3f4b..0ac1100b0df3 100644
 --- gfx/thebes/moz.build
 +++ gfx/thebes/moz.build
-@@ -273,7 +273,13 @@ if CONFIG['MOZ_WIDGET_TOOLKIT'] in ('gtk2', 'gtk3'):
+@@ -269,7 +269,13 @@ if CONFIG['MOZ_WIDGET_TOOLKIT'] in ('gtk2', 'gtk3'):
 
  LOCAL_INCLUDES += CONFIG['SKIA_INCLUDES']
 
@@ -167,14 +167,14 @@ diff --git intl/unicharutil/util/moz.build intl/unicharutil/util/moz.build
 index cb1233c56d7e..06fb1f9f174b 100644
 --- intl/unicharutil/util/moz.build
 +++ intl/unicharutil/util/moz.build
-@@ -40,4 +40,7 @@ if CONFIG['_MSC_VER']:
- if CONFIG['ENABLE_INTL_API']:
-     USE_LIBS += ['icu']
+@@ -29,4 +29,7 @@ if CONFIG['ENABLE_INTL_API']:
+         'ICUUtils.cpp',
+     ]
 
 +if CONFIG['MOZ_SYSTEM_HARFBUZZ']:
 +    CXXFLAGS += CONFIG['MOZ_HARFBUZZ_CFLAGS']
 +
- DIST_INSTALL = True
+ FINAL_LIBRARY = 'xul'
 diff --git netwerk/dns/moz.build netwerk/dns/moz.build
 index 79c26e3e7001..c4d93bc5f7dc 100644
 --- netwerk/dns/moz.build
@@ -209,7 +209,7 @@ index 95a58b634593..b614eef85c89 100644
 +                               * 100 + GR2_VERSION_BUGFIX >= \
 +                               (major) * 10000 + (minor) * 100 + (bugfix) )
 +                   ], [
-+                     #if !GR2_VERSION_REQUIRE(1,3,8)
++                     #if !GR2_VERSION_REQUIRE(1,3,9)
 +                     #error "Insufficient graphite2 version."
 +                     #endif
 +                   ], [],
@@ -225,7 +225,7 @@ diff --git toolkit/library/moz.build toolkit/library/moz.build
 index 24f940e1ed7e..079a575adec3 100644
 --- toolkit/library/moz.build
 +++ toolkit/library/moz.build
-@@ -228,6 +228,12 @@ if CONFIG['MOZ_SYSTEM_JPEG']:
+@@ -224,6 +224,12 @@ if CONFIG['MOZ_SYSTEM_JPEG']:
  if CONFIG['MOZ_SYSTEM_PNG']:
      OS_LIBS += CONFIG['MOZ_PNG_LIBS']
 
@@ -242,7 +242,7 @@ diff --git toolkit/moz.configure toolkit/moz.configure
 index 9297e4d6f501..d8e273887e4b 100644
 --- toolkit/moz.configure
 +++ toolkit/moz.configure
-@@ -343,6 +343,26 @@ add_old_configure_assignment('FT2_LIBS',
+@@ -356,6 +356,26 @@ add_old_configure_assignment('FT2_LIBS',
  add_old_configure_assignment('FT2_CFLAGS',
                               delayed_getattr(ft2_info, 'cflags'))
 
@@ -261,7 +261,7 @@ index 9297e4d6f501..d8e273887e4b 100644
 +option('--with-system-harfbuzz',
 +       help="Use system harfbuzz (located with pkgconfig)")
 +
-+system_harfbuzz = pkg_check_modules('MOZ_HARFBUZZ', 'harfbuzz >= 1.4.1',
++system_harfbuzz = pkg_check_modules('MOZ_HARFBUZZ', 'harfbuzz >= 1.4.5',
 +                                    when='--with-system-harfbuzz')
 +
 +set_config('MOZ_SYSTEM_HARFBUZZ', depends_if(system_harfbuzz)(lambda _: True))
diff --git www/firefox/files/patch-bug981348 www/firefox/files/patch-bug981348
deleted file mode 100644
index 0c2ffea1ef7b..000000000000
--- www/firefox/files/patch-bug981348
+++ /dev/null
@@ -1,61 +0,0 @@
-diff --git dom/system/OSFileConstants.cpp dom/system/OSFileConstants.cpp
-index 88bba9baa401..99f240952dfe 100644
---- dom/system/OSFileConstants.cpp
-+++ dom/system/OSFileConstants.cpp
-@@ -16,14 +16,17 @@
- #include "dirent.h"
- #include "poll.h"
- #include "sys/stat.h"
--#if defined(ANDROID)
-+#if defined(XP_LINUX)
- #include <sys/vfs.h>
- #define statvfs statfs
-+#define f_frsize f_bsize
- #else
- #include "sys/statvfs.h"
-+#endif // defined(XP_LINUX)
-+#if !defined(ANDROID)
- #include "sys/wait.h"
- #include <spawn.h>
--#endif // defined(ANDROID)
-+#endif // !defined(ANDROID)
- #endif // defined(XP_UNIX)
-
- #if defined(XP_LINUX)
-@@ -699,7 +702,7 @@ static const dom::ConstantSpec gLibcProperties[] =
-
-   { "OSFILE_SIZEOF_STATVFS", JS::Int32Value(sizeof (struct statvfs)) },
-
--  { "OSFILE_OFFSETOF_STATVFS_F_BSIZE", JS::Int32Value(offsetof (struct statvfs, f_bsize)) },
-+  { "OSFILE_OFFSETOF_STATVFS_F_FRSIZE", JS::Int32Value(offsetof (struct statvfs, f_frsize)) },
-   { "OSFILE_OFFSETOF_STATVFS_F_BAVAIL", JS::Int32Value(offsetof (struct statvfs, f_bavail)) },
-
- #endif // defined(XP_UNIX)
-diff --git toolkit/components/osfile/modules/osfile_unix_back.jsm toolkit/components/osfile/modules/osfile_unix_back.jsm
-index a028dda7d5ec..f5c632e3d7e5 100644
---- toolkit/components/osfile/modules/osfile_unix_back.jsm
-+++ toolkit/components/osfile/modules/osfile_unix_back.jsm
-@@ -228,8 +228,8 @@
-          let statvfs = new SharedAll.HollowStructure("statvfs",
-            Const.OSFILE_SIZEOF_STATVFS);
-
--         statvfs.add_field_at(Const.OSFILE_OFFSETOF_STATVFS_F_BSIZE,
--                        "f_bsize", Type.unsigned_long.implementation);
-+         statvfs.add_field_at(Const.OSFILE_OFFSETOF_STATVFS_F_FRSIZE,
-+                        "f_frsize", Type.unsigned_long.implementation);
-          statvfs.add_field_at(Const.OSFILE_OFFSETOF_STATVFS_F_BAVAIL,
-                         "f_bavail", Type.fsblkcnt_t.implementation);
-
-diff --git toolkit/components/osfile/modules/osfile_unix_front.jsm toolkit/components/osfile/modules/osfile_unix_front.jsm
-index bd60d4d8419c..a8cd6b546b0e 100644
---- toolkit/components/osfile/modules/osfile_unix_front.jsm
-+++ toolkit/components/osfile/modules/osfile_unix_front.jsm
-@@ -399,7 +399,7 @@
-        throw_on_negative("statvfs",  (UnixFile.statvfs || UnixFile.statfs)(sourcePath, fileSystemInfoPtr));
-
-        let bytes = new Type.uint64_t.implementation(
--                        fileSystemInfo.f_bsize * fileSystemInfo.f_bavail);
-+                        fileSystemInfo.f_frsize * fileSystemInfo.f_bavail);
-
-        return bytes.value;
-      };
diff --git www/firefox/files/patch-rust-option www/firefox/files/patch-rust-option
new file mode 100644
index 000000000000..3cbcb7fe902f
--- /dev/null
+++ www/firefox/files/patch-rust-option
@@ -0,0 +1,352 @@
+Revert bug 1284816 and bug 1341967 to postpone bustage on non-x86 archs.
+
+diff --git browser/confvars.sh browser/confvars.sh
+index d8dcd99c2757..740d9d3e5fcf 100755
+--- browser/confvars.sh
++++ browser/confvars.sh
+@@ -55,6 +55,7 @@ ACCEPTED_MAR_CHANNEL_IDS=firefox-mozilla-central
+ MAR_CHANNEL_ID=firefox-mozilla-central
+ MOZ_PROFILE_MIGRATOR=1
+ MOZ_JSDOWNLOADS=1
++MOZ_RUST_MP4PARSE=1
+
+ # Enable checking that add-ons are signed by the trusted root
+ MOZ_ADDON_SIGNING=1
+diff --git build/moz.configure/rust.configure build/moz.configure/rust.configure
+index 267d989f1597..f709820e60ae 100644
+--- build/moz.configure/rust.configure
++++ build/moz.configure/rust.configure
+@@ -4,10 +4,20 @@
+ # License, v. 2.0. If a copy of the MPL was not distributed with this
+ # file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+-# Rust is required by `rust_compiler` below. We allow_missing here
+-# to propagate failures to the better error message there.
+-rustc = check_prog('RUSTC', ['rustc'], allow_missing=True)
+-cargo = check_prog('CARGO', ['cargo'], allow_missing=True)
++option('--disable-rust', help='Don\'t include Rust language sources')
++
++@depends('--enable-rust')
++def rust_compiler_names(value):
++    if value:
++        return ['rustc']
++
++@depends('--enable-rust')
++def cargo_binary_names(value):
++    if value:
++        return ['cargo']
++
++rustc = check_prog('RUSTC', rust_compiler_names, allow_missing=True)
++cargo = check_prog('CARGO', cargo_binary_names, allow_missing=True)
+
+ @depends_if(rustc)
+ @checking('rustc version', lambda info: info.version)
+@@ -43,9 +53,12 @@ def cargo_info(cargo):
+         version=Version(version),
+     )
+
+-@depends(rustc_info, cargo_info)
++@depends('--enable-rust', rustc_info, cargo_info)
+ @imports(_from='textwrap', _import='dedent')
+-def rust_compiler(rustc_info, cargo_info):
++def rust_compiler(value, rustc_info, cargo_info):
++    if not value:
++        return None
++
+     if not rustc_info:
+         die(dedent('''\
+         Rust compiler not found.
+diff --git dom/media/MediaPrefs.h dom/media/MediaPrefs.h
+index 4dcc659222a4..559334d89fd1 100644
+--- dom/media/MediaPrefs.h
++++ dom/media/MediaPrefs.h
+@@ -171,7 +171,7 @@ private:
+   DECL_MEDIA_PREF("media.ogg.flac.enabled",                   FlacInOgg, bool, false);
+   DECL_MEDIA_PREF("media.flac.enabled",                       FlacEnabled, bool, true);
+
+-#if !defined(RELEASE_OR_BETA)
++#if defined(MOZ_RUST_MP4PARSE) && !defined(RELEASE_OR_BETA)
+   DECL_MEDIA_PREF("media.rust.test_mode",                     RustTestMode, bool, false);
+ #endif
+
+diff --git media/libstagefright/binding/DecoderData.cpp media/libstagefright/binding/DecoderData.cpp
+index 109ea329d154..a06e533b1e62 100644
+--- media/libstagefright/binding/DecoderData.cpp
++++ media/libstagefright/binding/DecoderData.cpp
+@@ -13,9 +13,11 @@
+ #include "mozilla/ArrayUtils.h"
+ #include "include/ESDS.h"
+
++#ifdef MOZ_RUST_MP4PARSE
+ // OpusDecoder header is really needed only by MP4 in rust
+ #include "OpusDecoder.h"
+ #include "mp4parse.h"
++#endif
+
+ using namespace stagefright;
+ using mozilla::media::TimeUnit;
+@@ -190,6 +192,7 @@ MP4VideoInfo::Update(const MetaData* aMetaData, const char* aMimeType)
+
+ }
+
++#ifdef MOZ_RUST_MP4PARSE
+ static void
+ UpdateTrackProtectedInfo(mozilla::TrackInfo& aConfig,
+                          const mp4parse_sinf_info& aSinf)
+@@ -274,6 +277,7 @@ MP4VideoInfo::Update(const mp4parse_track_info* track,
+     mExtraData->AppendElements(video->extra_data.data, video->extra_data.length);
+   }
+ }
++#endif
+
+ bool
+ MP4VideoInfo::IsValid() const
+diff --git media/libstagefright/binding/MP4Metadata.cpp media/libstagefright/binding/MP4Metadata.cpp
+index 5c3810d99a38..5d14dfd8b8a9 100644
+--- media/libstagefright/binding/MP4Metadata.cpp
++++ media/libstagefright/binding/MP4Metadata.cpp
+@@ -20,14 +20,16 @@
+ #include "mp4_demuxer/MP4Metadata.h"
+ #include "mp4_demuxer/Stream.h"
+ #include "MediaPrefs.h"
+-#include "mp4parse.h"
+
+ #include <limits>
+ #include <stdint.h>
+ #include <vector>
+
++#ifdef MOZ_RUST_MP4PARSE
++#include "mp4parse.h"
+
+ struct FreeMP4Parser { void operator()(mp4parse_parser* aPtr) { mp4parse_free(aPtr); } };
++#endif
+
+ using namespace stagefright;
+ using mozilla::media::TimeUnit;
+@@ -105,6 +107,8 @@ private:
+   bool mCanSeek;
+ };
+
++#ifdef MOZ_RUST_MP4PARSE
++
+ // Wrap an mp4_demuxer::Stream to remember the read offset.
+
+ class RustStreamAdaptor {
+@@ -151,6 +155,7 @@ private:
+   RustStreamAdaptor mRustSource;
+   mozilla::UniquePtr<mp4parse_parser, FreeMP4Parser> mRustParser;
+ };
++#endif
+
+ class IndiceWrapperStagefright : public IndiceWrapper {
+ public:
+@@ -235,6 +240,7 @@ IndiceWrapperRust::GetIndice(size_t aIndex, Index::Indice& aIndice) const
+
+ MP4Metadata::MP4Metadata(Stream* aSource)
+  : mStagefright(MakeUnique<MP4MetadataStagefright>(aSource))
++#ifdef MOZ_RUST_MP4PARSE
+  , mRust(MakeUnique<MP4MetadataRust>(aSource))
+  , mPreferRust(MediaPrefs::EnableRustMP4Parser())
+  , mReportedAudioTrackTelemetry(false)
+@@ -242,6 +248,7 @@ MP4Metadata::MP4Metadata(Stream* aSource)
+ #ifndef RELEASE_OR_BETA
+  , mRustTestMode(MediaPrefs::RustTestMode())
+ #endif
++#endif
+ {
+ }
+
+@@ -274,6 +281,7 @@ MP4Metadata::GetNumberTracks(mozilla::TrackInfo::TrackType aType) const
+   MP4Metadata::ResultAndTrackCount numTracks =
+     mStagefright->GetNumberTracks(aType);
+
++#ifdef MOZ_RUST_MP4PARSE
+   if (!mRust) {
+     return numTracks;
+   }
+@@ -321,6 +329,7 @@ MP4Metadata::GetNumberTracks(mozilla::TrackInfo::TrackType aType) const
+     mPreferRust = true;
+     return numTracksRust;
+   }
++#endif // MOZ_RUST_MP4PARSE
+
+   // If numbers are different, return the stagefright number with a warning.
+   if (!numTracksMatch) {
+@@ -352,6 +361,7 @@ MP4Metadata::GetNumberTracks(mozilla::TrackInfo::TrackType aType) const
+   return numTracksRust;
+ }
+
++#ifdef MOZ_RUST_MP4PARSE
+ bool MP4Metadata::ShouldPreferRust() const {
+   if (!mRust) {
+     return false;
+@@ -389,6 +399,7 @@ bool MP4Metadata::ShouldPreferRust() const {
+   // Otherwise, fall back.
+   return false;
+ }
++#endif // MOZ_RUST_MP4PARSE
+
+ static const char*
+ GetDifferentField(const mozilla::TrackInfo& info,
+@@ -443,6 +454,7 @@ MP4Metadata::GetTrackInfo(mozilla::TrackInfo::TrackType aType,
+   MP4Metadata::ResultAndTrackInfo info =
+     mStagefright->GetTrackInfo(aType, aTrackNumber);
+
++#ifdef MOZ_RUST_MP4PARSE
+   if (!mRust) {
+     return info;
+   }
+@@ -514,6 +526,7 @@ MP4Metadata::GetTrackInfo(mozilla::TrackInfo::TrackType aType,
+   if (mPreferRust) {
+     return infoRust;
+   }
++#endif
+
+   return info;
+ }
+@@ -528,6 +541,7 @@ MP4Metadata::ResultAndCryptoFile
+ MP4Metadata::Crypto() const
+ {
+   MP4Metadata::ResultAndCryptoFile crypto = mStagefright->Crypto();
++#ifdef MOZ_RUST_MP4PARSE
+   MP4Metadata::ResultAndCryptoFile rustCrypto = mRust->Crypto();
+
+ #ifndef RELEASE_OR_BETA
+@@ -548,6 +562,7 @@ MP4Metadata::Crypto() const
+   if (mPreferRust) {
+     return rustCrypto;
+   }
++#endif
+
+   return crypto;
+ }
+@@ -856,6 +871,7 @@ MP4MetadataStagefright::Metadata(Stream* aSource)
+   return {NS_OK, Move(buffer)};
+ }
+
++#ifdef MOZ_RUST_MP4PARSE
+ bool
+ RustStreamAdaptor::Read(uint8_t* buffer, uintptr_t size, size_t* bytes_read)
+ {
+@@ -1151,5 +1167,6 @@ MP4MetadataRust::Metadata(Stream* aSource)
+   MOZ_ASSERT(false, "Not yet implemented");
+   return {NS_ERROR_NOT_IMPLEMENTED, nullptr};
+ }
++#endif
+
+ } // namespace mp4_demuxer
+diff --git media/libstagefright/binding/include/mp4_demuxer/DecoderData.h media/libstagefright/binding/include/mp4_demuxer/DecoderData.h
+index 3cd4b7c142f4..dc25ddf03b10 100644
+--- media/libstagefright/binding/include/mp4_demuxer/DecoderData.h
++++ media/libstagefright/binding/include/mp4_demuxer/DecoderData.h
+@@ -19,11 +19,13 @@ namespace stagefright
+ class MetaData;
+ }
+
++#ifdef MOZ_RUST_MP4PARSE
+ extern "C" {
+ typedef struct mp4parse_track_info mp4parse_track_info;
+ typedef struct mp4parse_track_audio_info mp4parse_track_audio_info;
+ typedef struct mp4parse_track_video_info mp4parse_track_video_info;
+ }
++#endif
+
+ namespace mp4_demuxer
+ {
+@@ -71,8 +73,10 @@ public:
+   void Update(const stagefright::MetaData* aMetaData,
+               const char* aMimeType);
+
++#ifdef MOZ_RUST_MP4PARSE
+   void Update(const mp4parse_track_info* track,
+               const mp4parse_track_audio_info* audio);
++#endif
+
+   virtual bool IsValid() const override;
+ };
+@@ -85,8 +89,10 @@ public:
+   void Update(const stagefright::MetaData* aMetaData,
+               const char* aMimeType);
+
++#ifdef MOZ_RUST_MP4PARSE
+   void Update(const mp4parse_track_info* track,
+               const mp4parse_track_video_info* video);
++#endif
+
+   virtual bool IsValid() const override;
+ };
+diff --git media/libstagefright/binding/include/mp4_demuxer/MP4Metadata.h media/libstagefright/binding/include/mp4_demuxer/MP4Metadata.h
+index 492c9c1c1bc3..e16dbbd1155e 100644
+--- media/libstagefright/binding/include/mp4_demuxer/MP4Metadata.h
++++ media/libstagefright/binding/include/mp4_demuxer/MP4Metadata.h
+@@ -82,6 +82,7 @@ public:
+
+ private:
+   UniquePtr<MP4MetadataStagefright> mStagefright;
++#ifdef MOZ_RUST_MP4PARSE
+   UniquePtr<MP4MetadataRust> mRust;
+   mutable bool mPreferRust;
+   mutable bool mReportedAudioTrackTelemetry;
+@@ -90,6 +91,7 @@ private:
+   mutable bool mRustTestMode;
+ #endif
+   bool ShouldPreferRust() const;
++#endif
+ };
+
+ } // namespace mp4_demuxer
+diff --git mobile/android/confvars.sh mobile/android/confvars.sh
+index e79b6f5c0707..eb62763acaf7 100644
+--- mobile/android/confvars.sh
++++ mobile/android/confvars.sh
+@@ -30,6 +30,8 @@ MOZ_XULRUNNER=
+ MOZ_CAPTURE=1
+ MOZ_RAW=1
+
++MOZ_RUST_MP4PARSE=1
++
+ # use custom widget for html:select
+ MOZ_USE_NATIVE_POPUP_WINDOWS=1
+
+diff --git toolkit/components/telemetry/Histograms.json toolkit/components/telemetry/Histograms.json
+index 061c55f6a5b6..e49dfd176952 100644
+--- toolkit/components/telemetry/Histograms.json
++++ toolkit/components/telemetry/Histograms.json
+@@ -7237,7 +7237,8 @@
+     "expires_in_version": "60",
+     "kind": "boolean",
+     "bug_numbers": [1220885],
+-    "description": "Whether the rust mp4 demuxer successfully parsed a stream segment."
++    "description": "Whether the rust mp4 demuxer successfully parsed a stream segment.",
++    "cpp_guard": "MOZ_RUST_MP4PARSE"
+   },
+   "MEDIA_RUST_MP4PARSE_ERROR_CODE": {
+     "alert_emails": ["[hidden email]", "[hidden email]"],
+@@ -7245,21 +7246,24 @@
+     "kind": "enumerated",
+     "n_values": 32,
+     "bug_numbers": [1238420],
+-    "description": "The error code reported when an MP4 parse attempt has failed.0 = OK, 1 = bad argument, 2 = invalid data, 3 = unsupported, 4 = unexpected end of file, 5 = read error."
++    "description": "The error code reported when an MP4 parse attempt has failed.0 = OK, 1 = bad argument, 2 = invalid data, 3 = unsupported, 4 = unexpected end of file, 5 = read error.",
++    "cpp_guard": "MOZ_RUST_MP4PARSE"
+   },
+   "MEDIA_RUST_MP4PARSE_TRACK_MATCH_AUDIO": {
+     "alert_emails": ["[hidden email]", "[hidden email]"],
+     "expires_in_version": "60",
+     "kind": "boolean",
+     "bug_numbers": [1231169],
+-    "description": "Whether rust and stagefight mp4 parser audio track results match."
++    "description": "Whether rust and stagefight mp4 parser audio track results match.",
++    "cpp_guard": "MOZ_RUST_MP4PARSE"
+   },
+   "MEDIA_RUST_MP4PARSE_TRACK_MATCH_VIDEO": {
+     "alert_emails": ["[hidden email]", "[hidden email]"],
+     "expires_in_version": "60",
+     "kind": "boolean",
+     "bug_numbers": [1231169],
+-    "description": "Whether rust and stagefight mp4 parser video track results match."
++    "description": "Whether rust and stagefight mp4 parser video track results match.",
++    "cpp_guard": "MOZ_RUST_MP4PARSE"
+   },
+   "MEDIA_WMF_DECODE_ERROR": {
+     "expires_in_version": "55",
_______________________________________________
[hidden email] mailing list
https://lists.freebsd.org/mailman/listinfo/freebsd-gecko
To unsubscribe, send any mail to "[hidden email]"
Loading...