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