FF nightly build help
Jan Beich
jbeich at FreeBSD.org
Fri Apr 21 00:11:18 UTC 2017
AN <andy at neu.net> 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= gecko at FreeBSD.org
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')
++
++ at depends('--enable-rust')
++def rust_compiler_names(value):
++ if value:
++ return ['rustc']
++
++ at 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),
+ )
+
+- at depends(rustc_info, cargo_info)
++ at 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": ["giles at mozilla.com", "kinetik at flim.org"],
+@@ -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": ["giles at mozilla.com", "kinetik at flim.org"],
+ "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": ["giles at mozilla.com", "kinetik at flim.org"],
+ "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",
More information about the freebsd-gecko
mailing list