[arch-commits] Commit in firefox/repos (22 files)

Jan Steffens heftig at archlinux.org
Mon Sep 18 09:45:55 UTC 2017


    Date: Monday, September 18, 2017 @ 09:45:54
  Author: heftig
Revision: 305779

archrelease: copy trunk to testing-i686, testing-x86_64

Added:
  firefox/repos/testing-i686/
  firefox/repos/testing-i686/PKGBUILD
    (from rev 305778, firefox/trunk/PKGBUILD)
  firefox/repos/testing-i686/firefox-install-dir.patch
    (from rev 305778, firefox/trunk/firefox-install-dir.patch)
  firefox/repos/testing-i686/firefox-symbolic.svg
    (from rev 305778, firefox/trunk/firefox-symbolic.svg)
  firefox/repos/testing-i686/firefox.desktop
    (from rev 305778, firefox/trunk/firefox.desktop)
  firefox/repos/testing-i686/glibc-2.26-fix.diff
    (from rev 305778, firefox/trunk/glibc-2.26-fix.diff)
  firefox/repos/testing-i686/harmony-fix.diff
    (from rev 305778, firefox/trunk/harmony-fix.diff)
  firefox/repos/testing-i686/no-crmf.diff
    (from rev 305778, firefox/trunk/no-crmf.diff)
  firefox/repos/testing-i686/upload-symbol-archive
    (from rev 305778, firefox/trunk/upload-symbol-archive)
  firefox/repos/testing-i686/wifi-disentangle.patch
    (from rev 305778, firefox/trunk/wifi-disentangle.patch)
  firefox/repos/testing-i686/wifi-fix-interface.patch
    (from rev 305778, firefox/trunk/wifi-fix-interface.patch)
  firefox/repos/testing-x86_64/
  firefox/repos/testing-x86_64/PKGBUILD
    (from rev 305778, firefox/trunk/PKGBUILD)
  firefox/repos/testing-x86_64/firefox-install-dir.patch
    (from rev 305778, firefox/trunk/firefox-install-dir.patch)
  firefox/repos/testing-x86_64/firefox-symbolic.svg
    (from rev 305778, firefox/trunk/firefox-symbolic.svg)
  firefox/repos/testing-x86_64/firefox.desktop
    (from rev 305778, firefox/trunk/firefox.desktop)
  firefox/repos/testing-x86_64/glibc-2.26-fix.diff
    (from rev 305778, firefox/trunk/glibc-2.26-fix.diff)
  firefox/repos/testing-x86_64/harmony-fix.diff
    (from rev 305778, firefox/trunk/harmony-fix.diff)
  firefox/repos/testing-x86_64/no-crmf.diff
    (from rev 305778, firefox/trunk/no-crmf.diff)
  firefox/repos/testing-x86_64/upload-symbol-archive
    (from rev 305778, firefox/trunk/upload-symbol-archive)
  firefox/repos/testing-x86_64/wifi-disentangle.patch
    (from rev 305778, firefox/trunk/wifi-disentangle.patch)
  firefox/repos/testing-x86_64/wifi-fix-interface.patch
    (from rev 305778, firefox/trunk/wifi-fix-interface.patch)

------------------------------------------+
 testing-i686/PKGBUILD                    |  196 ++++++++++++++++++
 testing-i686/firefox-install-dir.patch   |   12 +
 testing-i686/firefox-symbolic.svg        |   30 ++
 testing-i686/firefox.desktop             |  310 +++++++++++++++++++++++++++++
 testing-i686/glibc-2.26-fix.diff         |  258 ++++++++++++++++++++++++
 testing-i686/harmony-fix.diff            |   16 +
 testing-i686/no-crmf.diff                |   15 +
 testing-i686/upload-symbol-archive       |   23 ++
 testing-i686/wifi-disentangle.patch      |  245 ++++++++++++++++++++++
 testing-i686/wifi-fix-interface.patch    |   26 ++
 testing-x86_64/PKGBUILD                  |  196 ++++++++++++++++++
 testing-x86_64/firefox-install-dir.patch |   12 +
 testing-x86_64/firefox-symbolic.svg      |   30 ++
 testing-x86_64/firefox.desktop           |  310 +++++++++++++++++++++++++++++
 testing-x86_64/glibc-2.26-fix.diff       |  258 ++++++++++++++++++++++++
 testing-x86_64/harmony-fix.diff          |   16 +
 testing-x86_64/no-crmf.diff              |   15 +
 testing-x86_64/upload-symbol-archive     |   23 ++
 testing-x86_64/wifi-disentangle.patch    |  245 ++++++++++++++++++++++
 testing-x86_64/wifi-fix-interface.patch  |   26 ++
 20 files changed, 2262 insertions(+)

Copied: firefox/repos/testing-i686/PKGBUILD (from rev 305778, firefox/trunk/PKGBUILD)
===================================================================
--- testing-i686/PKGBUILD	                        (rev 0)
+++ testing-i686/PKGBUILD	2017-09-18 09:45:54 UTC (rev 305779)
@@ -0,0 +1,196 @@
+# $Id$
+# Maintainer: Jan Alexander Steffens (heftig) <jan.steffens at gmail.com>
+# Contributor: Ionut Biru <ibiru at archlinux.org>
+# Contributor: Jakub Schmidtke <sjakub at gmail.com>
+
+pkgname=firefox
+pkgver=55.0.3
+pkgrel=2
+pkgdesc="Standalone web browser from mozilla.org"
+arch=(i686 x86_64)
+license=(MPL GPL LGPL)
+url="https://www.mozilla.org/firefox/"
+depends=(gtk3 gtk2 mozilla-common libxt startup-notification mime-types dbus-glib ffmpeg
+         nss hunspell sqlite ttf-font libpulse icu)
+makedepends=(unzip zip diffutils python2 yasm mesa imake gconf inetutils xorg-server-xvfb
+             autoconf2.13 rust mercurial)
+optdepends=('networkmanager: Location detection via available WiFi networks'
+            'libnotify: Notification integration'
+            'pulseaudio: Audio support'
+            'speech-dispatcher: Text-to-Speech')
+options=(!emptydirs !makeflags !strip)
+_repo=https://hg.mozilla.org/mozilla-unified
+source=("hg+$_repo#tag=FIREFOX_${pkgver//./_}_RELEASE"
+        $pkgname.desktop firefox-symbolic.svg
+        wifi-disentangle.patch wifi-fix-interface.patch
+        firefox-install-dir.patch no-crmf.diff glibc-2.26-fix.diff harmony-fix.diff)
+sha256sums=('SKIP'
+            'ada313750e6fb14558b37c764409a17c1672a351a46c73b350aa1fe4ea9220ef'
+            'a2474b32b9b2d7e0fb53a4c89715507ad1c194bef77713d798fa39d507def9e9'
+            'f068b84ad31556095145d8fefc012dd3d1458948533ed3fff6cbc7250b6e73ed'
+            'e98a3453d803cc7ddcb81a7dc83f883230dd8591bdf936fc5a868428979ed1f1'
+            'd86e41d87363656ee62e12543e2f5181aadcff448e406ef3218e91865ae775cd'
+            'fb85a538044c15471c12cf561d6aa74570f8de7b054a7063ef88ee1bdfc1ccbb'
+            'cd7ff441da66a287f8712e60cdc9e216c30355d521051e2eaae28a66d81915e8'
+            '16bb776e9f3039321db747b2eaece0cda1320f3711fb853a68d67247b0aa065d')
+
+# Google API keys (see http://www.chromium.org/developers/how-tos/api-keys)
+# Note: These are for Arch Linux use ONLY. For your own distribution, please
+# get your own set of keys. Feel free to contact foutrelis at archlinux.org for
+# more information.
+_google_api_key=AIzaSyDwr302FpOSkGRpLlUpPThNTDPbXcIn_FM
+
+# Mozilla API keys (see https://location.services.mozilla.com/api)
+# Note: These are for Arch Linux use ONLY. For your own distribution, please
+# get your own set of keys. Feel free to contact heftig at archlinux.org for
+# more information.
+_mozilla_api_key=16674381-f021-49de-8622-3021c5942aff
+
+prepare() {
+  mkdir path
+  ln -s /usr/bin/python2 path/python
+
+  cd mozilla-unified
+  patch -Np1 -i ../firefox-install-dir.patch
+
+  # https://bugzilla.mozilla.org/show_bug.cgi?id=1371991
+  patch -Np1 -i ../no-crmf.diff
+
+  # https://bugzilla.mozilla.org/show_bug.cgi?id=1385667
+  # https://bugzilla.mozilla.org/show_bug.cgi?id=1394149
+  patch -Np1 -i ../glibc-2.26-fix.diff
+
+  # https://bugzilla.mozilla.org/show_bug.cgi?id=1314968
+  patch -Np1 -i ../wifi-disentangle.patch
+  patch -Np1 -i ../wifi-fix-interface.patch
+
+  # https://bugzilla.mozilla.org/show_bug.cgi?id=1400721
+  patch -Np1 -i ../harmony-fix.diff
+
+  echo -n "$_google_api_key" >google-api-key
+  echo -n "$_mozilla_api_key" >mozilla-api-key
+
+  cat >.mozconfig <<END
+ac_add_options --enable-application=browser
+
+ac_add_options --prefix=/usr
+ac_add_options --enable-release
+ac_add_options --enable-gold
+ac_add_options --enable-pie
+ac_add_options --enable-optimize="-O2"
+
+# Branding
+ac_add_options --enable-official-branding
+ac_add_options --enable-update-channel=release
+ac_add_options --with-distribution-id=org.archlinux
+export MOZILLA_OFFICIAL=1
+export MOZ_TELEMETRY_REPORTING=1
+export MOZ_ADDON_SIGNING=1
+export MOZ_REQUIRE_SIGNING=1
+
+# Keys
+ac_add_options --with-google-api-keyfile=${PWD at Q}/google-api-key
+ac_add_options --with-mozilla-api-keyfile=${PWD at Q}/mozilla-api-key
+
+# System libraries
+ac_add_options --with-system-nspr
+ac_add_options --with-system-nss
+ac_add_options --with-system-icu
+ac_add_options --with-system-zlib
+ac_add_options --with-system-bz2
+ac_add_options --enable-system-hunspell
+ac_add_options --enable-system-sqlite
+ac_add_options --enable-system-ffi
+ac_add_options --enable-system-pixman
+
+# Features
+ac_add_options --enable-startup-notification
+ac_add_options --enable-crashreporter
+ac_add_options --disable-updater
+END
+}
+
+build() {
+  cd mozilla-unified
+
+  # _FORTIFY_SOURCE causes configure failures
+  CPPFLAGS+=" -O2"
+
+  export PATH="$srcdir/path:$PATH"
+  export MOZ_SOURCE_REPO="$_repo"
+
+  # Do PGO
+  #xvfb-run -a -n 95 -s "-extension GLX -screen 0 1280x1024x24" \
+  #  MOZ_PGO=1 ./mach build
+  ./mach build
+  ./mach buildsymbols
+}
+
+package() {
+  cd mozilla-unified
+  DESTDIR="$pkgdir" ./mach install
+  find . -name '*crashreporter-symbols.zip' -exec cp -fvt "$startdir" {} +
+
+  _vendorjs="$pkgdir/usr/lib/$pkgname/browser/defaults/preferences/vendor.js"
+  install -Dm644 /dev/stdin "$_vendorjs" <<END
+// Use LANG environment variable to choose locale
+pref("intl.locale.matchOS", true);
+
+// Disable default browser checking.
+pref("browser.shell.checkDefaultBrowser", false);
+
+// Don't disable our bundled extensions in the application directory
+pref("extensions.autoDisableScopes", 11);
+pref("extensions.shownSelectionUI", true);
+
+// Opt all of us into e10s, instead of just 50%
+pref("browser.tabs.remote.autostart", true);
+END
+
+  _distini="$pkgdir/usr/lib/$pkgname/distribution/distribution.ini"
+  install -Dm644 /dev/stdin "$_distini" <<END
+[Global]
+id=archlinux
+version=1.0
+about=Mozilla Firefox for Arch Linux
+
+[Preferences]
+app.distributor=archlinux
+app.distributor.channel=$pkgname
+app.partner.archlinux=archlinux
+END
+
+  for i in 16 22 24 32 48 256; do
+    install -Dm644 browser/branding/official/default$i.png \
+      "$pkgdir/usr/share/icons/hicolor/${i}x${i}/apps/$pkgname.png"
+  done
+  install -Dm644 browser/branding/official/content/icon64.png \
+    "$pkgdir/usr/share/icons/hicolor/64x64/apps/$pkgname.png"
+  install -Dm644 browser/branding/official/mozicon128.png \
+    "$pkgdir/usr/share/icons/hicolor/128x128/apps/$pkgname.png"
+  install -Dm644 browser/branding/official/content/about-logo.png \
+    "$pkgdir/usr/share/icons/hicolor/192x192/apps/$pkgname.png"
+  install -Dm644 browser/branding/official/content/about-logo at 2x.png \
+    "$pkgdir/usr/share/icons/hicolor/384x384/apps/$pkgname.png"
+  install -Dm644 ../firefox-symbolic.svg \
+    "$pkgdir/usr/share/icons/hicolor/symbolic/apps/$pkgname-symbolic.svg"
+
+  install -Dm644 ../$pkgname.desktop \
+    "$pkgdir/usr/share/applications/$pkgname.desktop"
+
+  # Use system-provided dictionaries
+  rm -r "$pkgdir"/usr/lib/$pkgname/dictionaries
+  ln -Ts /usr/share/hunspell "$pkgdir/usr/lib/$pkgname/dictionaries"
+  ln -Ts /usr/share/hyphen "$pkgdir/usr/lib/$pkgname/hyphenation"
+
+  # Install a wrapper to avoid confusion about binary path
+  install -Dm755 /dev/stdin "$pkgdir/usr/bin/$pkgname" <<END
+#!/bin/sh
+exec /usr/lib/$pkgname/firefox "\$@"
+END
+
+  # Replace duplicate binary with wrapper
+  # https://bugzilla.mozilla.org/show_bug.cgi?id=658850
+  ln -srf "$pkgdir/usr/bin/$pkgname" \
+    "$pkgdir/usr/lib/$pkgname/firefox-bin"
+}

Copied: firefox/repos/testing-i686/firefox-install-dir.patch (from rev 305778, firefox/trunk/firefox-install-dir.patch)
===================================================================
--- testing-i686/firefox-install-dir.patch	                        (rev 0)
+++ testing-i686/firefox-install-dir.patch	2017-09-18 09:45:54 UTC (rev 305779)
@@ -0,0 +1,12 @@
+diff -up firefox-29.0/mozilla-release/config/baseconfig.mk.orig firefox-29.0/mozilla-release/config/baseconfig.mk
+--- mozilla-release/config/baseconfig.mk.orig	2014-04-22 15:38:52.948165295 +0200
++++ mozilla-release/config/baseconfig.mk	2014-04-22 15:42:20.387481673 +0200
+@@ -4,7 +4,7 @@
+ # whether a normal build is happening or whether the check is running.
+ includedir := $(includedir)/$(MOZ_APP_NAME)-$(MOZ_APP_VERSION)
+ idldir = $(datadir)/idl/$(MOZ_APP_NAME)-$(MOZ_APP_VERSION)
+-installdir = $(libdir)/$(MOZ_APP_NAME)-$(MOZ_APP_VERSION)
++installdir = $(libdir)/$(MOZ_APP_NAME)
+ sdkdir = $(libdir)/$(MOZ_APP_NAME)-devel-$(MOZ_APP_VERSION)
+ ifndef TOP_DIST
+ TOP_DIST = dist

Copied: firefox/repos/testing-i686/firefox-symbolic.svg (from rev 305778, firefox/trunk/firefox-symbolic.svg)
===================================================================
--- testing-i686/firefox-symbolic.svg	                        (rev 0)
+++ testing-i686/firefox-symbolic.svg	2017-09-18 09:45:54 UTC (rev 305779)
@@ -0,0 +1,30 @@
+<?xml version='1.0' encoding='UTF-8' standalone='no'?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg xmlns:cc='http://creativecommons.org/ns#' xmlns:dc='http://purl.org/dc/elements/1.1/' sodipodi:docname='firefox-symbolic.svg' height='16' id='svg7384' xmlns:inkscape='http://www.inkscape.org/namespaces/inkscape' xmlns:osb='http://www.openswatchbook.org/uri/2009/osb' xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns:sodipodi='http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd' xmlns:svg='http://www.w3.org/2000/svg' version='1.1' inkscape:version='0.91 r13725' width='16' xmlns='http://www.w3.org/2000/svg'>
+  <metadata id='metadata90'>
+    <rdf:RDF>
+      <cc:Work rdf:about=''>
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type rdf:resource='http://purl.org/dc/dcmitype/StillImage'/>
+        <dc:title>Gnome Symbolic Icon Theme</dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview inkscape:bbox-paths='true' bordercolor='#666666' borderopacity='1' inkscape:current-layer='layer9' inkscape:cx='-10.975734' inkscape:cy='233.73843' gridtolerance='10' inkscape:guide-bbox='true' guidetolerance='10' id='namedview88' inkscape:object-nodes='false' inkscape:object-paths='false' objecttolerance='10' pagecolor='#555753' inkscape:pageopacity='1' inkscape:pageshadow='2' showborder='false' showgrid='false' showguides='true' inkscape:snap-bbox='true' inkscape:snap-bbox-midpoints='false' inkscape:snap-global='true' inkscape:snap-grids='true' inkscape:snap-nodes='true' inkscape:snap-others='false' inkscape:snap-to-guides='true' inkscape:window-height='1403' inkscape:window-maximized='1' inkscape:window-width='2560' inkscape:window-x='2560' inkscape:window-y='0' inkscape:zoom='1'>
+    <inkscape:grid empspacing='2' enabled='true' id='grid4866' originx='-222.00001' originy='-381.99852' snapvisiblegridlinesonly='true' spacingx='1px' spacingy='1px' type='xygrid' visible='true'/>
+  </sodipodi:namedview>
+  <title id='title9167'>Gnome Symbolic Icon Theme</title>
+  <defs id='defs7386'>
+    <linearGradient id='linearGradient7212' osb:paint='solid'>
+      <stop id='stop7214' offset='0' style='stop-color:#000000;stop-opacity:1;'/>
+    </linearGradient>
+  </defs>
+  <g inkscape:groupmode='layer' id='layer9' inkscape:label='apps' style='display:inline' transform='translate(-463.00021,164.99852)'>
+    
+    <path inkscape:connector-curvature='0' d='M 469.05437,-154.9679 Z' id='path17747' style='fill:none;stroke:#000000;stroke-width:0.99851286px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1'/>
+    <path inkscape:connector-curvature='0' d='M 469.08553,-154.9054 Z' id='path17749' style='fill:none;stroke:#000000;stroke-width:0.99851286px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1'/>
+    <path inkscape:connector-curvature='0' d='m 473.0627,-162.9375 c -0.41568,-0.0182 -0.62813,0.0274 -0.625,0.0312 0.006,0.008 1.72988,0.32697 2.03125,0.75 0,0 -0.71915,0.007 -1.4375,0.21875 -0.0325,0.01 2.64053,0.33122 3.1875,3.0625 0,0 -0.29354,-0.64386 -0.65625,-0.75 0.23852,0.74134 0.16466,2.17583 -0.0625,2.875 -0.0292,0.0899 -0.0525,-0.38762 -0.5,-0.59375 0.14332,1.04923 -0.006,2.6978 -0.71875,3.15625 -0.0555,0.0357 0.43942,-1.64894 0.0937,-1 -2.06368,3.2325 -4.50486,1.31102 -5.5,0.625 0.79871,0.19996 1.80035,0.0704 2.125,-0.15625 0.49572,-0.34615 0.79916,-0.59107 1.0625,-0.53125 0.26322,0.0601 0.42318,-0.22934 0.21875,-0.46875 -0.20466,-0.23989 -0.70268,-0.55471 -1.375,-0.375 -0.47415,0.12687 -1.04057,0.54268 -1.9375,0 -0.7652,-0.46319 -0.67076,-0.69942 -0.67076,-0.93907 0,-0.23977 0.21387,-0.59107 0.59375,-0.53125 0.0851,0.0134 0.15074,0.009 0.1875,0 0.18483,0.0422 0.35743,0.0964 0.53125,0.1875 0.008,-0.2241 -0.0292,-0.87345 -0.15625,-1.23012 0.0106,0.004 0.0289,0.011 0.0312
 ,0 0.0384,-0.17687 1.05477,-0.18386 1.37388,-0.59643 0.20404,-0.26362 0.14073,-0.79683 0.14073,-0.79683 l -1,0 c -0.52354,0.002 -0.97244,-0.75086 -1.01451,-0.85669 0.11444,-0.62597 0.48612,-0.83952 1.01451,-1.14331 -0.39748,-0.003 -0.18871,0 -1,0 -0.52875,0 -0.84718,0.36158 -1.01451,0.54956 -0.70058,-0.16587 -1.38144,-0.25227 -1.86049,-0.0609 -0.22125,-0.22941 -0.39604,-0.80055 -0.42188,-1.48863 0,0 -1.20486,0.73864 -1.07812,2.55113 -0.002,0.14904 -0.0499,0.21348 -0.0625,0.3125 -0.13061,0.22845 -0.1553,0.40492 -0.125,0.375 -0.0656,0.13627 -0.15391,0.28402 -0.21875,0.46875 -0.0149,0.0362 -0.0495,0.0463 -0.0625,0.0937 -0.009,0.0322 0.002,0.0638 0,0.0937 -0.11512,0.36099 -0.21516,0.98244 -0.3125,1.54262 0,0 0.12424,-0.51425 0.3125,-0.88637 -0.15639,0.54353 -0.26211,1.54974 -0.1875,2.73012 0,0 0.015,-0.20429 0.0625,-0.5 0.0465,0.80102 0.25925,1.72737 0.84375,2.75 1.46152,2.5575 3.89248,3.68885 6.4375,3.46875 0.44516,-0.0296 0.89639,-0.10834 1.34375,-0.21875 5.92923,-1.46449 5.28125,-8.7
 8118 5.28125,-8.78118 l -0.15625,1.09375 c 0,0 -0.24147,-1.99977 -0.53125,-2.75 -0.44412,-1.14957 -0.62372,-1.15791 -0.625,-1.15625 0.29743,0.77226 0.21875,1.1875 0.21875,1.1875 0,0 -0.51279,-1.43939 -1.90625,-1.90625 -0.82515,-0.27632 -1.45932,-0.38807 -1.875,-0.40625 z' id='path159-6' sodipodi:nodetypes='sccccccccccsccccscccccscccccccccccccccccccccccccccs' style='fill:#bebebe;fill-opacity:1;stroke:none'/>
+    <path inkscape:connector-curvature='0' d='m 470.87695,-164.01953 c -0.83043,0.0139 -1.67042,0.17659 -2.48047,0.5 l -0.46289,0.18359 c 0.66083,0.79767 1.84339,0.43951 1.84339,0.43951 2.50802,-0.52344 5.12427,0.6034 6.44177,2.89252 1.49591,2.59908 0.85463,5.89258 -1.50586,7.74219 -2.36049,1.84961 -5.71108,1.68349 -7.87695,-0.39062 -2.16588,-2.07412 -2.47623,-5.41522 -0.73047,-7.85352 l 0.29101,-0.40625 -0.81445,-0.58203 -0.29101,0.40625 c -2.03104,2.83673 -1.66628,6.74516 0.85351,9.1582 2.5198,2.41305 6.43934,2.60693 9.18555,0.45508 2.74621,-2.15185 3.49621,-6.00355 1.75586,-9.02734 -1.30527,-2.26785 -3.7177,-3.55935 -6.20899,-3.51758 z' id='path22109' sodipodi:nodetypes='ccccsssccccsssc' style='color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;lett
 er-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#bebebe;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.99999994;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;paint-order:normal;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate'/>
+  </g>
+</svg>

Copied: firefox/repos/testing-i686/firefox.desktop (from rev 305778, firefox/trunk/firefox.desktop)
===================================================================
--- testing-i686/firefox.desktop	                        (rev 0)
+++ testing-i686/firefox.desktop	2017-09-18 09:45:54 UTC (rev 305779)
@@ -0,0 +1,310 @@
+[Desktop Entry]
+Version=1.0
+Name=Firefox
+GenericName=Web Browser
+GenericName[ar]=متصفح وِب
+GenericName[ast]=Restolador Web
+GenericName[bn]=ওয়েব ব্রাউজার
+GenericName[ca]=Navegador web
+GenericName[cs]=Webový prohlížeč
+GenericName[da]=Webbrowser
+GenericName[de]=Webbrowser
+GenericName[el]=Περιηγητής διαδικτύου
+GenericName[es]=Navegador web
+GenericName[et]=Veebibrauser
+GenericName[fa]=مرورگر اینترنتی
+GenericName[fi]=WWW-selain
+GenericName[fr]=Navigateur Web
+GenericName[gl]=Navegador Web
+GenericName[he]=דפדפן אינטרנט
+GenericName[hr]=Web preglednik
+GenericName[hu]=Webböngésző
+GenericName[it]=Browser Web
+GenericName[ja]=ウェブ・ブラウザ
+GenericName[ko]=웹 브라우저
+GenericName[ku]=Geroka torê
+GenericName[lt]=Interneto naršyklė
+GenericName[nb]=Nettleser
+GenericName[nl]=Webbrowser
+GenericName[nn]=Nettlesar
+GenericName[no]=Nettleser
+GenericName[pl]=Przeglądarka WWW
+GenericName[pt]=Navegador Web
+GenericName[pt_BR]=Navegador Web
+GenericName[ro]=Navigator Internet
+GenericName[ru]=Веб-браузер
+GenericName[sk]=Internetový prehliadač
+GenericName[sl]=Spletni brskalnik
+GenericName[sv]=Webbläsare
+GenericName[tr]=Web Tarayıcı
+GenericName[ug]=توركۆرگۈ
+GenericName[uk]=Веб-браузер
+GenericName[vi]=Trình duyệt Web
+GenericName[zh_CN]=网络浏览器
+GenericName[zh_TW]=網路瀏覽器
+Comment=Browse the Web
+Comment[ar]=تصفح الوِب
+Comment[ast]=Restola pela Rede
+Comment[bn]=ইন্টারনেট ব্রাউজ করুন
+Comment[ca]=Navegueu per el web
+Comment[cs]=Prohlížení stránek World Wide Webu
+Comment[da]=Surf på internettet
+Comment[de]=Im Internet surfen
+Comment[el]=Μπορείτε να περιηγηθείτε στο διαδίκτυο (Web)
+Comment[es]=Navegue por la web
+Comment[et]=Lehitse veebi
+Comment[fa]=صفحات شبکه جهانی اینترنت را مرور نمایید
+Comment[fi]=Selaa Internetin WWW-sivuja
+Comment[fr]=Naviguer sur le Web
+Comment[gl]=Navegar pola rede
+Comment[he]=גלישה ברחבי האינטרנט
+Comment[hr]=Pretražite web
+Comment[hu]=A világháló böngészése
+Comment[it]=Esplora il web
+Comment[ja]=ウェブを閲覧します
+Comment[ko]=웹을 돌아 다닙니다
+Comment[ku]=Li torê bigere
+Comment[lt]=Naršykite internete
+Comment[nb]=Surf på nettet
+Comment[nl]=Verken het internet
+Comment[nn]=Surf på nettet
+Comment[no]=Surf på nettet
+Comment[pl]=Przeglądanie stron WWW
+Comment[pt]=Navegue na Internet
+Comment[pt_BR]=Navegue na Internet
+Comment[ro]=Navigați pe Internet
+Comment[ru]=Доступ в Интернет
+Comment[sk]=Prehliadanie internetu
+Comment[sl]=Brskajte po spletu
+Comment[sv]=Surfa på webben
+Comment[tr]=İnternet'te Gezinin
+Comment[ug]=دۇنيادىكى توربەتلەرنى كۆرگىلى بولىدۇ
+Comment[uk]=Перегляд сторінок Інтернету
+Comment[vi]=Để duyệt các trang web
+Comment[zh_CN]=浏览互联网
+Comment[zh_TW]=瀏覽網際網路
+Exec=/usr/lib/firefox/firefox %u
+Icon=firefox
+Terminal=false
+Type=Application
+MimeType=text/html;text/xml;application/xhtml+xml;application/vnd.mozilla.xul+xml;text/mml;x-scheme-handler/http;x-scheme-handler/https;
+StartupNotify=true
+Categories=Network;WebBrowser;
+Keywords=web;browser;internet;
+Actions=new-window;new-private-window;
+
+[Desktop Action new-window]
+Name=New Window
+Name[ach]=Dirica manyen
+Name[af]=Nuwe venster
+Name[an]=Nueva finestra
+Name[ar]=نافذة جديدة
+Name[as]=নতুন উইন্ডো
+Name[ast]=Ventana nueva
+Name[az]=Yeni Pəncərə
+Name[be]=Новае акно
+Name[bg]=Нов прозорец
+Name[bn_BD]=নতুন উইন্ডো (N)
+Name[bn_IN]=নতুন উইন্ডো
+Name[br]=Prenestr nevez
+Name[brx]=गोदान उइन्ड'(N)
+Name[bs]=Novi prozor
+Name[ca]=Finestra nova
+Name[cak]=K'ak'a' tzuwäch
+Name[cs]=Nové okno
+Name[cy]=Ffenestr Newydd
+Name[da]=Nyt vindue
+Name[de]=Neues Fenster
+Name[dsb]=Nowe wokno
+Name[el]=Νέο παράθυρο
+Name[en_GB]=New Window
+Name[en_US]=New Window
+Name[en_ZA]=New Window
+Name[eo]=Nova fenestro
+Name[es_AR]=Nueva ventana
+Name[es_CL]=Nueva ventana
+Name[es_ES]=Nueva ventana
+Name[es_MX]=Nueva ventana
+Name[et]=Uus aken
+Name[eu]=Leiho berria
+Name[fa]=پنجره جدید
+Name[ff]=Henorde Hesere
+Name[fi]=Uusi ikkuna
+Name[fr]=Nouvelle fenêtre
+Name[fy_NL]=Nij finster
+Name[ga_IE]=Fuinneog Nua
+Name[gd]=Uinneag ùr
+Name[gl]=Nova xanela
+Name[gn]=Ovetã pyahu
+Name[gu_IN]=નવી વિન્ડો
+Name[he]=חלון חדש
+Name[hi_IN]=नया विंडो
+Name[hr]=Novi prozor
+Name[hsb]=Nowe wokno
+Name[hu]=Új ablak
+Name[hy_AM]=Նոր Պատուհան
+Name[id]=Jendela Baru
+Name[is]=Nýr gluggi
+Name[it]=Nuova finestra
+Name[ja]=新しいウィンドウ
+Name[ja_JP-mac]=新規ウインドウ
+Name[ka]=ახალი ფანჯარა
+Name[kk]=Жаңа терезе
+Name[km]=បង្អួចថ្មី
+Name[kn]=ಹೊಸ ಕಿಟಕಿ
+Name[ko]=새 창
+Name[kok]=नवें जनेल
+Name[ks]=نئئ وِنڈو
+Name[lij]=Neuvo barcon
+Name[lo]=ຫນ້າຕ່າງໃຫມ່
+Name[lt]=Naujas langas
+Name[ltg]=Jauns lūgs
+Name[lv]=Jauns logs
+Name[mai]=नव विंडो
+Name[mk]=Нов прозорец
+Name[ml]=പുതിയ ജാലകം
+Name[mr]=नवीन पटल
+Name[ms]=Tetingkap Baru
+Name[my]=ဝင်းဒိုးအသစ်
+Name[nb_NO]=Nytt vindu
+Name[ne_NP]=नयाँ सञ्झ्याल
+Name[nl]=Nieuw venster
+Name[nn_NO]=Nytt vindauge
+Name[or]=ନୂତନ ୱିଣ୍ଡୋ
+Name[pa_IN]=ਨਵੀਂ ਵਿੰਡੋ
+Name[pl]=Nowe okno
+Name[pt_BR]=Nova janela
+Name[pt_PT]=Nova janela
+Name[rm]=Nova fanestra
+Name[ro]=Fereastră nouă
+Name[ru]=Новое окно
+Name[sat]=नावा विंडो (N)
+Name[si]=නව කවුළුවක්
+Name[sk]=Nové okno
+Name[sl]=Novo okno
+Name[son]=Zanfun taaga
+Name[sq]=Dritare e Re
+Name[sr]=Нови прозор
+Name[sv_SE]=Nytt fönster
+Name[ta]=புதிய சாளரம்
+Name[te]=కొత్త విండో
+Name[th]=หน้าต่างใหม่
+Name[tr]=Yeni pencere
+Name[tsz]=Eraatarakua jimpani
+Name[uk]=Нове вікно
+Name[ur]=نیا دریچہ
+Name[uz]=Yangi oyna
+Name[vi]=Cửa sổ mới
+Name[wo]=Palanteer bu bees
+Name[xh]=Ifestile entsha
+Name[zh_CN]=新建窗口
+Name[zh_TW]=開新視窗
+Exec=/usr/lib/firefox/firefox --new-window %u
+
+[Desktop Action new-private-window]
+Name=New Private Window
+Name[ach]=Dirica manyen me mung
+Name[af]=Nuwe privaatvenster
+Name[an]=Nueva finestra privada
+Name[ar]=نافذة خاصة جديدة
+Name[as]=নতুন ব্যক্তিগত উইন্ডো
+Name[ast]=Ventana privada nueva
+Name[az]=Yeni Məxfi Pəncərə
+Name[be]=Новае акно адасаблення
+Name[bg]=Нов прозорец за поверително сърфиране
+Name[bn_BD]=নতুন ব্যক্তিগত উইন্ডো
+Name[bn_IN]=নতুন ব্যক্তিগত উইন্ডো
+Name[br]=Prenestr merdeiñ prevez nevez
+Name[brx]=गोदान प्राइभेट उइन्ड'
+Name[bs]=Novi privatni prozor
+Name[ca]=Finestra privada nova
+Name[cak]=K'ak'a' ichinan tzuwäch
+Name[cs]=Nové anonymní okno
+Name[cy]=Ffenestr Breifat Newydd
+Name[da]=Nyt privat vindue
+Name[de]=Neues privates Fenster
+Name[dsb]=Nowe priwatne wokno
+Name[el]=Νέο παράθυρο ιδιωτικής περιήγησης
+Name[en_GB]=New Private Window
+Name[en_US]=New Private Window
+Name[en_ZA]=New Private Window
+Name[eo]=Nova privata fenestro
+Name[es_AR]=Nueva ventana privada
+Name[es_CL]=Nueva ventana privada
+Name[es_ES]=Nueva ventana privada
+Name[es_MX]=Nueva ventana privada
+Name[et]=Uus privaatne aken
+Name[eu]=Leiho pribatu berria
+Name[fa]=پنجره ناشناس جدید
+Name[ff]=Henorde Suturo Hesere
+Name[fi]=Uusi yksityinen ikkuna
+Name[fr]=Nouvelle fenêtre de navigation privée
+Name[fy_NL]=Nij priveefinster
+Name[ga_IE]=Fuinneog Nua Phríobháideach
+Name[gd]=Uinneag phrìobhaideach ùr
+Name[gl]=Nova xanela privada
+Name[gn]=Ovetã ñemi pyahu
+Name[gu_IN]=નવી ખાનગી વિન્ડો
+Name[he]=חלון פרטי חדש
+Name[hi_IN]=नयी निजी विंडो
+Name[hr]=Novi privatni prozor
+Name[hsb]=Nowe priwatne wokno
+Name[hu]=Új privát ablak
+Name[hy_AM]=Սկսել Գաղտնի դիտարկում
+Name[id]=Jendela Mode Pribadi Baru
+Name[is]=Nýr huliðsgluggi
+Name[it]=Nuova finestra anonima
+Name[ja]=新しいプライベートウィンドウ
+Name[ja_JP-mac]=新規プライベートウインドウ
+Name[ka]=ახალი პირადი ფანჯარა
+Name[kk]=Жаңа жекелік терезе
+Name[km]=បង្អួចឯកជនថ្មី
+Name[kn]=ಹೊಸ ಖಾಸಗಿ ಕಿಟಕಿ
+Name[ko]=새 사생활 보호 모드
+Name[kok]=नवो खाजगी विंडो
+Name[ks]=نْو پرایوٹ وینڈو
+Name[lij]=Nêuvo barcón privòu
+Name[lo]=ເປີດຫນ້າຕ່າງສວນຕົວຂື້ນມາໃຫມ່
+Name[lt]=Naujas privataus naršymo langas
+Name[ltg]=Jauns privatais lūgs
+Name[lv]=Jauns privātais logs
+Name[mai]=नया निज विंडो (W)
+Name[mk]=Нов приватен прозорец
+Name[ml]=പുതിയ സ്വകാര്യ ജാലകം
+Name[mr]=नवीन वैयक्तिक पटल
+Name[ms]=Tetingkap Persendirian Baharu
+Name[my]=New Private Window
+Name[nb_NO]=Nytt privat vindu
+Name[ne_NP]=नयाँ निजी सञ्झ्याल
+Name[nl]=Nieuw privévenster
+Name[nn_NO]=Nytt privat vindauge
+Name[or]=ନୂତନ ବ୍ୟକ୍ତିଗତ ୱିଣ୍ଡୋ
+Name[pa_IN]=ਨਵੀਂ ਪ੍ਰਾਈਵੇਟ ਵਿੰਡੋ
+Name[pl]=Nowe okno prywatne
+Name[pt_BR]=Nova janela privativa
+Name[pt_PT]=Nova janela privada
+Name[rm]=Nova fanestra privata
+Name[ro]=Fereastră privată nouă
+Name[ru]=Новое приватное окно
+Name[sat]=नावा निजेराक् विंडो (W )
+Name[si]=නව පුද්ගලික කවුළුව (W)
+Name[sk]=Nové okno v režime Súkromné prehliadanie
+Name[sl]=Novo zasebno okno
+Name[son]=Sutura zanfun taaga
+Name[sq]=Dritare e Re Private
+Name[sr]=Нови приватан прозор
+Name[sv_SE]=Nytt privat fönster
+Name[ta]=புதிய தனிப்பட்ட சாளரம்
+Name[te]=కొత్త ఆంతరంగిక విండో
+Name[th]=หน้าต่างส่วนตัวใหม่
+Name[tr]=Yeni gizli pencere
+Name[tsz]=Juchiiti eraatarakua jimpani
+Name[uk]=Приватне вікно
+Name[ur]=نیا نجی دریچہ
+Name[uz]=Yangi maxfiy oyna
+Name[vi]=Cửa sổ riêng tư mới
+Name[wo]=Panlanteeru biir bu bees
+Name[xh]=Ifestile yangasese entsha
+Name[zh_CN]=新建隐私浏览窗口
+Name[zh_TW]=新增隱私視窗
+Exec=/usr/lib/firefox/firefox --private-window %u

Copied: firefox/repos/testing-i686/glibc-2.26-fix.diff (from rev 305778, firefox/trunk/glibc-2.26-fix.diff)
===================================================================
--- testing-i686/glibc-2.26-fix.diff	                        (rev 0)
+++ testing-i686/glibc-2.26-fix.diff	2017-09-18 09:45:54 UTC (rev 305779)
@@ -0,0 +1,258 @@
+From 6a0b7c8ecf0734ba1bcdccf8e0ee97e721fd5420 Mon Sep 17 00:00:00 2001
+Message-Id: <6a0b7c8ecf0734ba1bcdccf8e0ee97e721fd5420.1505113337.git.jan.steffens at gmail.com>
+From: =?UTF-8?q?Emilio=20Cobos=20=C3=81lvarez?= <emilio at crisal.io>
+Date: Sat, 19 Aug 2017 20:14:25 +0200
+Subject: [PATCH] Fix use of struct ucontext (squash 2 commits)
+
+Needed for building with glibc 2.26.
+
+Bug 1385667: Use ucontext_t consistently in breakpad-client. r=ted
+MozReview-Commit-ID: AJhzJdNXP0f
+
+Bug 1394149: Fix remaining uses of ucontext in breakpad-client. r=ted
+MozReview-Commit-ID: 5tP7fXsI7dQ
+---
+ .../linux/dump_writer_common/ucontext_reader.cc    | 30 +++++++++++-----------
+ .../linux/dump_writer_common/ucontext_reader.h     | 10 ++++----
+ .../linux/handler/exception_handler.cc             | 10 ++++----
+ .../linux/handler/exception_handler.h              |  2 +-
+ .../linux/microdump_writer/microdump_writer.cc     |  2 +-
+ .../linux/minidump_writer/minidump_writer.cc       |  2 +-
+ 6 files changed, 28 insertions(+), 28 deletions(-)
+
+diff --git a/toolkit/crashreporter/breakpad-client/linux/dump_writer_common/ucontext_reader.cc b/toolkit/crashreporter/breakpad-client/linux/dump_writer_common/ucontext_reader.cc
+index 999960912e459e1b..303c0ebd32b663c4 100644
+--- a/toolkit/crashreporter/breakpad-client/linux/dump_writer_common/ucontext_reader.cc
++++ b/toolkit/crashreporter/breakpad-client/linux/dump_writer_common/ucontext_reader.cc
+@@ -40,15 +40,15 @@ namespace google_breakpad {
+ 
+ #if defined(__i386__)
+ 
+-uintptr_t UContextReader::GetStackPointer(const struct ucontext* uc) {
++uintptr_t UContextReader::GetStackPointer(const ucontext_t* uc) {
+   return uc->uc_mcontext.gregs[REG_ESP];
+ }
+ 
+-uintptr_t UContextReader::GetInstructionPointer(const struct ucontext* uc) {
++uintptr_t UContextReader::GetInstructionPointer(const ucontext_t* uc) {
+   return uc->uc_mcontext.gregs[REG_EIP];
+ }
+ 
+-void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext *uc,
++void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext_t *uc,
+                                     const struct _libc_fpstate* fp) {
+   const greg_t* regs = uc->uc_mcontext.gregs;
+ 
+@@ -88,15 +88,15 @@ void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext *uc,
+ 
+ #elif defined(__x86_64)
+ 
+-uintptr_t UContextReader::GetStackPointer(const struct ucontext* uc) {
++uintptr_t UContextReader::GetStackPointer(const ucontext_t* uc) {
+   return uc->uc_mcontext.gregs[REG_RSP];
+ }
+ 
+-uintptr_t UContextReader::GetInstructionPointer(const struct ucontext* uc) {
++uintptr_t UContextReader::GetInstructionPointer(const ucontext_t* uc) {
+   return uc->uc_mcontext.gregs[REG_RIP];
+ }
+ 
+-void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext *uc,
++void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext_t *uc,
+                                     const struct _libc_fpstate* fpregs) {
+   const greg_t* regs = uc->uc_mcontext.gregs;
+ 
+@@ -145,15 +145,15 @@ void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext *uc,
+ 
+ #elif defined(__ARM_EABI__)
+ 
+-uintptr_t UContextReader::GetStackPointer(const struct ucontext* uc) {
++uintptr_t UContextReader::GetStackPointer(const ucontext_t* uc) {
+   return uc->uc_mcontext.arm_sp;
+ }
+ 
+-uintptr_t UContextReader::GetInstructionPointer(const struct ucontext* uc) {
++uintptr_t UContextReader::GetInstructionPointer(const ucontext_t* uc) {
+   return uc->uc_mcontext.arm_pc;
+ }
+ 
+-void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext *uc) {
++void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext_t *uc) {
+   out->context_flags = MD_CONTEXT_ARM_FULL;
+ 
+   out->iregs[0] = uc->uc_mcontext.arm_r0;
+@@ -184,41 +184,41 @@ void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext *uc) {
+ 
+ #elif defined(__aarch64__)
+ 
+-uintptr_t UContextReader::GetStackPointer(const struct ucontext* uc) {
++uintptr_t UContextReader::GetStackPointer(const ucontext_t* uc) {
+   return uc->uc_mcontext.sp;
+ }
+ 
+-uintptr_t UContextReader::GetInstructionPointer(const struct ucontext* uc) {
++uintptr_t UContextReader::GetInstructionPointer(const ucontext_t* uc) {
+   return uc->uc_mcontext.pc;
+ }
+ 
+-void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext *uc,
++void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext_t *uc,
+                                     const struct fpsimd_context* fpregs) {
+   out->context_flags = MD_CONTEXT_ARM64_FULL;
+ 
+   out->cpsr = static_cast<uint32_t>(uc->uc_mcontext.pstate);
+   for (int i = 0; i < MD_CONTEXT_ARM64_REG_SP; ++i)
+     out->iregs[i] = uc->uc_mcontext.regs[i];
+   out->iregs[MD_CONTEXT_ARM64_REG_SP] = uc->uc_mcontext.sp;
+   out->iregs[MD_CONTEXT_ARM64_REG_PC] = uc->uc_mcontext.pc;
+ 
+   out->float_save.fpsr = fpregs->fpsr;
+   out->float_save.fpcr = fpregs->fpcr;
+   my_memcpy(&out->float_save.regs, &fpregs->vregs,
+       MD_FLOATINGSAVEAREA_ARM64_FPR_COUNT * 16);
+ }
+ 
+ #elif defined(__mips__)
+ 
+-uintptr_t UContextReader::GetStackPointer(const struct ucontext* uc) {
++uintptr_t UContextReader::GetStackPointer(const ucontext_t* uc) {
+   return uc->uc_mcontext.gregs[MD_CONTEXT_MIPS_REG_SP];
+ }
+ 
+-uintptr_t UContextReader::GetInstructionPointer(const struct ucontext* uc) {
++uintptr_t UContextReader::GetInstructionPointer(const ucontext_t* uc) {
+   return uc->uc_mcontext.pc;
+ }
+ 
+-void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext *uc) {
++void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext_t *uc) {
+ #if _MIPS_SIM == _ABI64
+   out->context_flags = MD_CONTEXT_MIPS64_FULL;
+ #elif _MIPS_SIM == _ABIO32
+diff --git a/toolkit/crashreporter/breakpad-client/linux/dump_writer_common/ucontext_reader.h b/toolkit/crashreporter/breakpad-client/linux/dump_writer_common/ucontext_reader.h
+index c533e28ba7441e83..039752a2dfb6e589 100644
+--- a/toolkit/crashreporter/breakpad-client/linux/dump_writer_common/ucontext_reader.h
++++ b/toolkit/crashreporter/breakpad-client/linux/dump_writer_common/ucontext_reader.h
+@@ -41,21 +41,21 @@ namespace google_breakpad {
+ 
+ // Wraps platform-dependent implementations of accessors to ucontext structs.
+ struct UContextReader {
+-  static uintptr_t GetStackPointer(const struct ucontext* uc);
++  static uintptr_t GetStackPointer(const ucontext_t* uc);
+ 
+-  static uintptr_t GetInstructionPointer(const struct ucontext* uc);
++  static uintptr_t GetInstructionPointer(const ucontext_t* uc);
+ 
+   // Juggle a arch-specific ucontext into a minidump format
+   //   out: the minidump structure
+   //   info: the collection of register structures.
+ #if defined(__i386__) || defined(__x86_64)
+-  static void FillCPUContext(RawContextCPU *out, const ucontext *uc,
++  static void FillCPUContext(RawContextCPU *out, const ucontext_t *uc,
+                              const struct _libc_fpstate* fp);
+ #elif defined(__aarch64__)
+-  static void FillCPUContext(RawContextCPU *out, const ucontext *uc,
++  static void FillCPUContext(RawContextCPU *out, const ucontext_t *uc,
+                              const struct fpsimd_context* fpregs);
+ #else
+-  static void FillCPUContext(RawContextCPU *out, const ucontext *uc);
++  static void FillCPUContext(RawContextCPU *out, const ucontext_t *uc);
+ #endif
+ };
+ 
+diff --git a/toolkit/crashreporter/breakpad-client/linux/handler/exception_handler.cc b/toolkit/crashreporter/breakpad-client/linux/handler/exception_handler.cc
+index 71a51a763938e39d..12df9bc96ec45fea 100644
+--- a/toolkit/crashreporter/breakpad-client/linux/handler/exception_handler.cc
++++ b/toolkit/crashreporter/breakpad-client/linux/handler/exception_handler.cc
+@@ -439,44 +439,44 @@ bool ExceptionHandler::HandleSignal(int sig, siginfo_t* info, void* uc) {
+   // Fill in all the holes in the struct to make Valgrind happy.
+   memset(&g_crash_context_, 0, sizeof(g_crash_context_));
+   memcpy(&g_crash_context_.siginfo, info, sizeof(siginfo_t));
+-  memcpy(&g_crash_context_.context, uc, sizeof(struct ucontext));
++  memcpy(&g_crash_context_.context, uc, sizeof(ucontext_t));
+ #if defined(__aarch64__)
+-  struct ucontext* uc_ptr = (struct ucontext*)uc;
++  ucontext_t* uc_ptr = (ucontext_t*)uc;
+   struct fpsimd_context* fp_ptr =
+       (struct fpsimd_context*)&uc_ptr->uc_mcontext.__reserved;
+   if (fp_ptr->head.magic == FPSIMD_MAGIC) {
+     memcpy(&g_crash_context_.float_state, fp_ptr,
+            sizeof(g_crash_context_.float_state));
+   }
+ #elif !defined(__ARM_EABI__) && !defined(__mips__)
+   // FP state is not part of user ABI on ARM Linux.
+-  // In case of MIPS Linux FP state is already part of struct ucontext
++  // In case of MIPS Linux FP state is already part of ucontext_t
+   // and 'float_state' is not a member of CrashContext.
+-  struct ucontext* uc_ptr = (struct ucontext*)uc;
++  ucontext_t* uc_ptr = (ucontext_t*)uc;
+   if (uc_ptr->uc_mcontext.fpregs) {
+     memcpy(&g_crash_context_.float_state, uc_ptr->uc_mcontext.fpregs,
+            sizeof(g_crash_context_.float_state));
+   }
+ #endif
+   g_crash_context_.tid = syscall(__NR_gettid);
+   if (crash_handler_ != NULL) {
+     if (crash_handler_(&g_crash_context_, sizeof(g_crash_context_),
+                        callback_context_)) {
+       return true;
+     }
+   }
+   return GenerateDump(&g_crash_context_);
+ }
+ 
+ // This is a public interface to HandleSignal that allows the client to
+ // generate a crash dump. This function may run in a compromised context.
+ bool ExceptionHandler::SimulateSignalDelivery(int sig) {
+   siginfo_t siginfo = {};
+   // Mimic a trusted signal to allow tracing the process (see
+   // ExceptionHandler::HandleSignal().
+   siginfo.si_code = SI_USER;
+   siginfo.si_pid = getpid();
+-  struct ucontext context;
++  ucontext_t context;
+   getcontext(&context);
+   return HandleSignal(sig, &siginfo, &context);
+ }
+diff --git a/toolkit/crashreporter/breakpad-client/linux/handler/exception_handler.h b/toolkit/crashreporter/breakpad-client/linux/handler/exception_handler.h
+index 711586fec7ddae59..be1880170e2826b0 100644
+--- a/toolkit/crashreporter/breakpad-client/linux/handler/exception_handler.h
++++ b/toolkit/crashreporter/breakpad-client/linux/handler/exception_handler.h
+@@ -191,7 +191,7 @@ class ExceptionHandler {
+   struct CrashContext {
+     siginfo_t siginfo;
+     pid_t tid;  // the crashing thread.
+-    struct ucontext context;
++    ucontext_t context;
+ #if !defined(__ARM_EABI__) && !defined(__mips__)
+     // #ifdef this out because FP state is not part of user ABI for Linux ARM.
+     // In case of MIPS Linux FP state is already part of struct
+diff --git a/toolkit/crashreporter/breakpad-client/linux/microdump_writer/microdump_writer.cc b/toolkit/crashreporter/breakpad-client/linux/microdump_writer/microdump_writer.cc
+index ff20bf36584c876b..a0b90e08fc5f0cff 100644
+--- a/toolkit/crashreporter/breakpad-client/linux/microdump_writer/microdump_writer.cc
++++ b/toolkit/crashreporter/breakpad-client/linux/microdump_writer/microdump_writer.cc
+@@ -571,7 +571,7 @@ class MicrodumpWriter {
+ 
+   void* Alloc(unsigned bytes) { return dumper_->allocator()->Alloc(bytes); }
+ 
+-  const struct ucontext* const ucontext_;
++  const ucontext_t* const ucontext_;
+ #if !defined(__ARM_EABI__) && !defined(__mips__)
+   const google_breakpad::fpstate_t* const float_state_;
+ #endif
+diff --git a/toolkit/crashreporter/breakpad-client/linux/minidump_writer/minidump_writer.cc b/toolkit/crashreporter/breakpad-client/linux/minidump_writer/minidump_writer.cc
+index 0650bb95c179464a..6b5304bcd605ca3a 100644
+--- a/toolkit/crashreporter/breakpad-client/linux/minidump_writer/minidump_writer.cc
++++ b/toolkit/crashreporter/breakpad-client/linux/minidump_writer/minidump_writer.cc
+@@ -1247,7 +1247,7 @@ class MinidumpWriter {
+   const int fd_;  // File descriptor where the minidum should be written.
+   const char* path_;  // Path to the file where the minidum should be written.
+ 
+-  const struct ucontext* const ucontext_;  // also from the signal handler
++  const ucontext_t* const ucontext_;  // also from the signal handler
+ #if !defined(__ARM_EABI__) && !defined(__mips__)
+   const google_breakpad::fpstate_t* const float_state_;  // ditto
+ #endif
+-- 
+2.14.1
+

Copied: firefox/repos/testing-i686/harmony-fix.diff (from rev 305778, firefox/trunk/harmony-fix.diff)
===================================================================
--- testing-i686/harmony-fix.diff	                        (rev 0)
+++ testing-i686/harmony-fix.diff	2017-09-18 09:45:54 UTC (rev 305779)
@@ -0,0 +1,16 @@
+diff --git i/gfx/skia/skia/src/ports/SkFontHost_cairo.cpp w/gfx/skia/skia/src/ports/SkFontHost_cairo.cpp
+index 42da19280fce8235..2c221c32d097b462 100644
+--- i/gfx/skia/skia/src/ports/SkFontHost_cairo.cpp
++++ w/gfx/skia/skia/src/ports/SkFontHost_cairo.cpp
+@@ -666,10 +666,7 @@ void SkScalerContext_CairoFT::generateMetrics(SkGlyph* glyph)
+         glyph->fTop    = -SkToS16(SkFDot6Floor(bbox.yMax));
+         glyph->fLeft   = SkToS16(SkFDot6Floor(bbox.xMin));
+ 
+-        if (isLCD(fRec) &&
+-            gSetLcdFilter &&
+-            (fLcdFilter == FT_LCD_FILTER_DEFAULT ||
+-             fLcdFilter == FT_LCD_FILTER_LIGHT)) {
++        if (isLCD(fRec)) {
+             if (fRec.fFlags & kLCD_Vertical_Flag) {
+                 glyph->fTop -= 1;
+                 glyph->fHeight += 2;

Copied: firefox/repos/testing-i686/no-crmf.diff (from rev 305778, firefox/trunk/no-crmf.diff)
===================================================================
--- testing-i686/no-crmf.diff	                        (rev 0)
+++ testing-i686/no-crmf.diff	2017-09-18 09:45:54 UTC (rev 305779)
@@ -0,0 +1,15 @@
+diff --git i/old-configure.in w/old-configure.in
+index 0a06e470d2085922..d41c8e9d5dd2dbfb 100644
+--- i/old-configure.in
++++ w/old-configure.in
+@@ -2020,9 +2020,7 @@ if test -n "$_USE_SYSTEM_NSS"; then
+     AM_PATH_NSS(3.31, [MOZ_SYSTEM_NSS=1], [AC_MSG_ERROR([you don't have NSS installed or your version is too old])])
+ fi
+ 
+-if test -n "$MOZ_SYSTEM_NSS"; then
+-   NSS_LIBS="$NSS_LIBS -lcrmf"
+-else
++if test -z "$MOZ_SYSTEM_NSS"; then
+    NSS_CFLAGS="-I${DIST}/include/nss"
+    case "${OS_ARCH}" in
+         # Only few platforms have been tested with GYP

Copied: firefox/repos/testing-i686/upload-symbol-archive (from rev 305778, firefox/trunk/upload-symbol-archive)
===================================================================
--- testing-i686/upload-symbol-archive	                        (rev 0)
+++ testing-i686/upload-symbol-archive	2017-09-18 09:45:54 UTC (rev 305779)
@@ -0,0 +1,23 @@
+#!/bin/bash -e
+
+die() {
+  echo >&2 "$@"
+  exit 1
+}
+
+(( $# >= 2 )) || die "Usage: $0 TOKEN-FILE SYMBOL-ARCHIVE..."
+token="$1"
+shift
+
+[[ -f $token && -s $token ]] || die "Invalid TOKEN-FILE ${token at Q}"
+
+for zip; do
+  [[ $(file -Ebi "$zip") == application/zip* ]] || die "Invalid SYMBOL-ARCHIVE ${zip at Q}"
+done
+
+for zip; do
+  echo >&2 "Uploading ${zip at Q} ..."
+  curl -X POST -H "Auth-Token: $(<"$token")" -F "${zip##*/}=@$zip" \
+    https://crash-stats.mozilla.com/symbols/upload
+  echo
+done

Copied: firefox/repos/testing-i686/wifi-disentangle.patch (from rev 305778, firefox/trunk/wifi-disentangle.patch)
===================================================================
--- testing-i686/wifi-disentangle.patch	                        (rev 0)
+++ testing-i686/wifi-disentangle.patch	2017-09-18 09:45:54 UTC (rev 305779)
@@ -0,0 +1,245 @@
+# HG changeset patch
+# Parent  2edd69b245fbc493c3a1cf17c40c63b0280ead12
+Bug 1314968 - Disentangle nsWifiScannerDBus::SendMessage. r?kanru
+
+Make a copy of the function and specialize it for each message sent.
+Avoids the mess of comparing the method name to figure out what to do.
+
+diff --git a/netwerk/wifi/nsWifiScannerDBus.cpp b/netwerk/wifi/nsWifiScannerDBus.cpp
+--- a/netwerk/wifi/nsWifiScannerDBus.cpp
++++ b/netwerk/wifi/nsWifiScannerDBus.cpp
+@@ -34,19 +34,47 @@ nsWifiScannerDBus::Scan()
+   if (!mConnection) {
+     return NS_ERROR_NOT_AVAILABLE;
+   }
+-  return SendMessage("org.freedesktop.NetworkManager",
+-                     "/org/freedesktop/NetworkManager",
+-                     "GetDevices");
++  return SendGetDevices();
+ }
+ 
++// http://dbus.freedesktop.org/doc/api/html/group__DBusConnection.html
++// Refer to function dbus_connection_send_with_reply_and_block.
++static const uint32_t DBUS_DEFAULT_TIMEOUT = -1;
++
+ nsresult
+-nsWifiScannerDBus::SendMessage(const char* aInterface,
+-                               const char* aPath,
+-                               const char* aFuncCall)
+-{
+-  RefPtr<DBusMessage> msg = already_AddRefed<DBusMessage>(
+-    dbus_message_new_method_call("org.freedesktop.NetworkManager",
+-                                 aPath, aInterface, aFuncCall));
++nsWifiScannerDBus::SendGetDevices()
++{
++  RefPtr<DBusMessage> msg = already_AddRefed<DBusMessage>(
++    dbus_message_new_method_call("org.freedesktop.NetworkManager",
++                                 "/org/freedesktop/NetworkManager",
++                                 "org.freedesktop.NetworkManager",
++                                 "GetDevices"));
++  if (!msg) {
++    return NS_ERROR_FAILURE;
++  }
++
++  DBusError err;
++  dbus_error_init(&err);
++
++  RefPtr<DBusMessage> reply = already_AddRefed<DBusMessage>(
++    dbus_connection_send_with_reply_and_block(mConnection, msg,
++                                              DBUS_DEFAULT_TIMEOUT, &err));
++  if (dbus_error_is_set(&err)) {
++    dbus_error_free(&err);
++    return NS_ERROR_FAILURE;
++  }
++
++  return IdentifyDevices(reply);
++}
++
++nsresult
++nsWifiScannerDBus::SendGetDeviceType(const char* aPath)
++{
++  RefPtr<DBusMessage> msg = already_AddRefed<DBusMessage>(
++    dbus_message_new_method_call("org.freedesktop.NetworkManager",
++                                 aPath,
++                                 "org.freedesktop.DBus.Properties",
++                                 "Get"));
+   if (!msg) {
+     return NS_ERROR_FAILURE;
+   }
+@@ -54,58 +82,92 @@ nsWifiScannerDBus::SendMessage(const cha
+   DBusMessageIter argsIter;
+   dbus_message_iter_init_append(msg, &argsIter);
+ 
+-  if (!strcmp(aFuncCall, "Get")) {
+-    const char* paramInterface = "org.freedesktop.NetworkManager.Device";
+-    if (!dbus_message_iter_append_basic(&argsIter, DBUS_TYPE_STRING,
+-                                        &paramInterface)) {
+-      return NS_ERROR_FAILURE;
+-    }
+-
+-    const char* paramDeviceType = "DeviceType";
+-    if (!dbus_message_iter_append_basic(&argsIter, DBUS_TYPE_STRING,
+-                                        &paramDeviceType)) {
+-      return NS_ERROR_FAILURE;
+-    }
+-  } else if (!strcmp(aFuncCall, "GetAll")) {
+-    const char* param = "";
+-    if (!dbus_message_iter_append_basic(&argsIter, DBUS_TYPE_STRING, &param)) {
+-      return NS_ERROR_FAILURE;
+-    }
+-  }
++  const char* paramInterface = "org.freedesktop.NetworkManager.Device";
++  if (!dbus_message_iter_append_basic(&argsIter, DBUS_TYPE_STRING,
++                                      &paramInterface)) {
++    return NS_ERROR_FAILURE;
++  }
++
++  const char* paramDeviceType = "DeviceType";
++  if (!dbus_message_iter_append_basic(&argsIter, DBUS_TYPE_STRING,
++                                      &paramDeviceType)) {
++    return NS_ERROR_FAILURE;
++  }
++
++  DBusError err;
++  dbus_error_init(&err);
++
++  RefPtr<DBusMessage> reply = already_AddRefed<DBusMessage>(
++    dbus_connection_send_with_reply_and_block(mConnection, msg,
++                                              DBUS_DEFAULT_TIMEOUT, &err));
++  if (dbus_error_is_set(&err)) {
++    dbus_error_free(&err);
++    return NS_ERROR_FAILURE;
++  }
++
++  return IdentifyDeviceType(reply, aPath);
++}
++
++nsresult
++nsWifiScannerDBus::SendGetAccessPoints(const char* aPath)
++{
++  RefPtr<DBusMessage> msg = already_AddRefed<DBusMessage>(
++    dbus_message_new_method_call("org.freedesktop.NetworkManager",
++                                 aPath,
++                                 "org.freedesktop.NetworkManager.Device.Wireless",
++                                 "GetAccessPoints"));
++  if (!msg) {
++    return NS_ERROR_FAILURE;
++  }
+ 
+   DBusError err;
+   dbus_error_init(&err);
+ 
+-  // http://dbus.freedesktop.org/doc/api/html/group__DBusConnection.html
+-  // Refer to function dbus_connection_send_with_reply_and_block.
+-  const uint32_t DBUS_DEFAULT_TIMEOUT = -1;
+   RefPtr<DBusMessage> reply = already_AddRefed<DBusMessage>(
+     dbus_connection_send_with_reply_and_block(mConnection, msg,
+                                               DBUS_DEFAULT_TIMEOUT, &err));
+   if (dbus_error_is_set(&err)) {
+     dbus_error_free(&err);
+-
+     // In the GetAccessPoints case, if there are no access points, error is set.
+     // We don't want to error out here.
+-    if (!strcmp(aFuncCall, "GetAccessPoints")) {
+-      return NS_OK;
+-    }
+-    return NS_ERROR_FAILURE;
++    return NS_OK;
+   }
+ 
+-  nsresult rv;
+-  if (!strcmp(aFuncCall, "GetDevices")) {
+-    rv = IdentifyDevices(reply);
+-  } else if (!strcmp(aFuncCall, "Get")) {
+-    rv = IdentifyDeviceType(reply, aPath);
+-  } else if (!strcmp(aFuncCall, "GetAccessPoints")) {
+-    rv = IdentifyAccessPoints(reply);
+-  } else if (!strcmp(aFuncCall, "GetAll")) {
+-    rv = IdentifyAPProperties(reply);
+-  } else {
+-    rv = NS_ERROR_FAILURE;
+-  }
+-  return rv;
++  return IdentifyAccessPoints(reply);
++}
++
++nsresult
++nsWifiScannerDBus::SendGetAPProperties(const char* aPath)
++{
++  RefPtr<DBusMessage> msg = already_AddRefed<DBusMessage>(
++    dbus_message_new_method_call("org.freedesktop.NetworkManager",
++                                 aPath,
++                                 "org.freedesktop.DBus.Properties",
++                                 "GetAll"));
++  if (!msg) {
++    return NS_ERROR_FAILURE;
++  }
++
++  DBusMessageIter argsIter;
++  dbus_message_iter_init_append(msg, &argsIter);
++
++  const char* param = "";
++  if (!dbus_message_iter_append_basic(&argsIter, DBUS_TYPE_STRING, &param)) {
++    return NS_ERROR_FAILURE;
++  }
++
++  DBusError err;
++  dbus_error_init(&err);
++
++  RefPtr<DBusMessage> reply = already_AddRefed<DBusMessage>(
++    dbus_connection_send_with_reply_and_block(mConnection, msg,
++                                              DBUS_DEFAULT_TIMEOUT, &err));
++  if (dbus_error_is_set(&err)) {
++    dbus_error_free(&err);
++    return NS_ERROR_FAILURE;
++  }
++
++  return IdentifyAPProperties(reply);
+ }
+ 
+ nsresult
+@@ -126,7 +188,7 @@ nsWifiScannerDBus::IdentifyDevices(DBusM
+       return NS_ERROR_FAILURE;
+     }
+ 
+-    rv = SendMessage("org.freedesktop.DBus.Properties", devicePath, "Get");
++    rv = SendGetDeviceType(devicePath);
+     NS_ENSURE_SUCCESS(rv, rv);
+   } while (dbus_message_iter_next(&iter));
+ 
+@@ -159,8 +221,7 @@ nsWifiScannerDBus::IdentifyDeviceType(DB
+   const uint32_t NM_DEVICE_TYPE_WIFI = 2;
+   nsresult rv = NS_OK;
+   if (deviceType == NM_DEVICE_TYPE_WIFI) {
+-    rv = SendMessage("org.freedesktop.NetworkManager.Device.Wireless",
+-                     aDevicePath, "GetAccessPoints");
++    rv = SendGetAccessPoints(aDevicePath);
+   }
+ 
+   return rv;
+@@ -183,7 +244,7 @@ nsWifiScannerDBus::IdentifyAccessPoints(
+       return NS_ERROR_FAILURE;
+     }
+ 
+-    rv = SendMessage("org.freedesktop.DBus.Properties", path, "GetAll");
++    rv = SendGetAPProperties(path);
+     NS_ENSURE_SUCCESS(rv, rv);
+   } while (dbus_message_iter_next(&iter));
+ 
+diff --git a/netwerk/wifi/nsWifiScannerDBus.h b/netwerk/wifi/nsWifiScannerDBus.h
+--- a/netwerk/wifi/nsWifiScannerDBus.h
++++ b/netwerk/wifi/nsWifiScannerDBus.h
+@@ -25,9 +25,10 @@ public:
+   nsresult Scan();
+ 
+ private:
+-  nsresult SendMessage(const char* aInterface,
+-                       const char* aPath,
+-                       const char* aFuncCall);
++  nsresult SendGetDevices();
++  nsresult SendGetDeviceType(const char* aPath);
++  nsresult SendGetAccessPoints(const char* aPath);
++  nsresult SendGetAPProperties(const char* aPath);
+   nsresult IdentifyDevices(DBusMessage* aMsg);
+   nsresult IdentifyDeviceType(DBusMessage* aMsg, const char* aDevicePath);
+   nsresult IdentifyAccessPoints(DBusMessage* aMsg);

Copied: firefox/repos/testing-i686/wifi-fix-interface.patch (from rev 305778, firefox/trunk/wifi-fix-interface.patch)
===================================================================
--- testing-i686/wifi-fix-interface.patch	                        (rev 0)
+++ testing-i686/wifi-fix-interface.patch	2017-09-18 09:45:54 UTC (rev 305779)
@@ -0,0 +1,26 @@
+# HG changeset patch
+# Parent  7a6d836b62779aa61988981c6ca646495574a505
+Bug 1314968 - Explicitly specify the AccessPoint interface name. r?kanru
+
+The DBus specification allows passing an empty string as the interface to the
+org.freedesktop.DBus.Properties.GetAll call to get all properties, throwing away the namespace
+(interface) information.
+
+However, GDBus does not allow this. When NetworkManager moved to using GDBus, Firefox lost the
+ability to retrieve access points from NetworkManager.
+
+Since we're only interested in properties from the org.freedesktop.NetworkManager.AccessPoint
+interface, name it explicitly. This works with both the old and the new NetworkManager.
+
+diff --git a/netwerk/wifi/nsWifiScannerDBus.cpp b/netwerk/wifi/nsWifiScannerDBus.cpp
+--- a/netwerk/wifi/nsWifiScannerDBus.cpp
++++ b/netwerk/wifi/nsWifiScannerDBus.cpp
+@@ -151,7 +151,7 @@ nsWifiScannerDBus::SendGetAll(const char
+   DBusMessageIter argsIter;
+   dbus_message_iter_init_append(msg, &argsIter);
+ 
+-  const char* param = "";
++  const char* param = "org.freedesktop.NetworkManager.AccessPoint";
+   if (!dbus_message_iter_append_basic(&argsIter, DBUS_TYPE_STRING, &param)) {
+     return NS_ERROR_FAILURE;
+   }

Copied: firefox/repos/testing-x86_64/PKGBUILD (from rev 305778, firefox/trunk/PKGBUILD)
===================================================================
--- testing-x86_64/PKGBUILD	                        (rev 0)
+++ testing-x86_64/PKGBUILD	2017-09-18 09:45:54 UTC (rev 305779)
@@ -0,0 +1,196 @@
+# $Id$
+# Maintainer: Jan Alexander Steffens (heftig) <jan.steffens at gmail.com>
+# Contributor: Ionut Biru <ibiru at archlinux.org>
+# Contributor: Jakub Schmidtke <sjakub at gmail.com>
+
+pkgname=firefox
+pkgver=55.0.3
+pkgrel=2
+pkgdesc="Standalone web browser from mozilla.org"
+arch=(i686 x86_64)
+license=(MPL GPL LGPL)
+url="https://www.mozilla.org/firefox/"
+depends=(gtk3 gtk2 mozilla-common libxt startup-notification mime-types dbus-glib ffmpeg
+         nss hunspell sqlite ttf-font libpulse icu)
+makedepends=(unzip zip diffutils python2 yasm mesa imake gconf inetutils xorg-server-xvfb
+             autoconf2.13 rust mercurial)
+optdepends=('networkmanager: Location detection via available WiFi networks'
+            'libnotify: Notification integration'
+            'pulseaudio: Audio support'
+            'speech-dispatcher: Text-to-Speech')
+options=(!emptydirs !makeflags !strip)
+_repo=https://hg.mozilla.org/mozilla-unified
+source=("hg+$_repo#tag=FIREFOX_${pkgver//./_}_RELEASE"
+        $pkgname.desktop firefox-symbolic.svg
+        wifi-disentangle.patch wifi-fix-interface.patch
+        firefox-install-dir.patch no-crmf.diff glibc-2.26-fix.diff harmony-fix.diff)
+sha256sums=('SKIP'
+            'ada313750e6fb14558b37c764409a17c1672a351a46c73b350aa1fe4ea9220ef'
+            'a2474b32b9b2d7e0fb53a4c89715507ad1c194bef77713d798fa39d507def9e9'
+            'f068b84ad31556095145d8fefc012dd3d1458948533ed3fff6cbc7250b6e73ed'
+            'e98a3453d803cc7ddcb81a7dc83f883230dd8591bdf936fc5a868428979ed1f1'
+            'd86e41d87363656ee62e12543e2f5181aadcff448e406ef3218e91865ae775cd'
+            'fb85a538044c15471c12cf561d6aa74570f8de7b054a7063ef88ee1bdfc1ccbb'
+            'cd7ff441da66a287f8712e60cdc9e216c30355d521051e2eaae28a66d81915e8'
+            '16bb776e9f3039321db747b2eaece0cda1320f3711fb853a68d67247b0aa065d')
+
+# Google API keys (see http://www.chromium.org/developers/how-tos/api-keys)
+# Note: These are for Arch Linux use ONLY. For your own distribution, please
+# get your own set of keys. Feel free to contact foutrelis at archlinux.org for
+# more information.
+_google_api_key=AIzaSyDwr302FpOSkGRpLlUpPThNTDPbXcIn_FM
+
+# Mozilla API keys (see https://location.services.mozilla.com/api)
+# Note: These are for Arch Linux use ONLY. For your own distribution, please
+# get your own set of keys. Feel free to contact heftig at archlinux.org for
+# more information.
+_mozilla_api_key=16674381-f021-49de-8622-3021c5942aff
+
+prepare() {
+  mkdir path
+  ln -s /usr/bin/python2 path/python
+
+  cd mozilla-unified
+  patch -Np1 -i ../firefox-install-dir.patch
+
+  # https://bugzilla.mozilla.org/show_bug.cgi?id=1371991
+  patch -Np1 -i ../no-crmf.diff
+
+  # https://bugzilla.mozilla.org/show_bug.cgi?id=1385667
+  # https://bugzilla.mozilla.org/show_bug.cgi?id=1394149
+  patch -Np1 -i ../glibc-2.26-fix.diff
+
+  # https://bugzilla.mozilla.org/show_bug.cgi?id=1314968
+  patch -Np1 -i ../wifi-disentangle.patch
+  patch -Np1 -i ../wifi-fix-interface.patch
+
+  # https://bugzilla.mozilla.org/show_bug.cgi?id=1400721
+  patch -Np1 -i ../harmony-fix.diff
+
+  echo -n "$_google_api_key" >google-api-key
+  echo -n "$_mozilla_api_key" >mozilla-api-key
+
+  cat >.mozconfig <<END
+ac_add_options --enable-application=browser
+
+ac_add_options --prefix=/usr
+ac_add_options --enable-release
+ac_add_options --enable-gold
+ac_add_options --enable-pie
+ac_add_options --enable-optimize="-O2"
+
+# Branding
+ac_add_options --enable-official-branding
+ac_add_options --enable-update-channel=release
+ac_add_options --with-distribution-id=org.archlinux
+export MOZILLA_OFFICIAL=1
+export MOZ_TELEMETRY_REPORTING=1
+export MOZ_ADDON_SIGNING=1
+export MOZ_REQUIRE_SIGNING=1
+
+# Keys
+ac_add_options --with-google-api-keyfile=${PWD at Q}/google-api-key
+ac_add_options --with-mozilla-api-keyfile=${PWD at Q}/mozilla-api-key
+
+# System libraries
+ac_add_options --with-system-nspr
+ac_add_options --with-system-nss
+ac_add_options --with-system-icu
+ac_add_options --with-system-zlib
+ac_add_options --with-system-bz2
+ac_add_options --enable-system-hunspell
+ac_add_options --enable-system-sqlite
+ac_add_options --enable-system-ffi
+ac_add_options --enable-system-pixman
+
+# Features
+ac_add_options --enable-startup-notification
+ac_add_options --enable-crashreporter
+ac_add_options --disable-updater
+END
+}
+
+build() {
+  cd mozilla-unified
+
+  # _FORTIFY_SOURCE causes configure failures
+  CPPFLAGS+=" -O2"
+
+  export PATH="$srcdir/path:$PATH"
+  export MOZ_SOURCE_REPO="$_repo"
+
+  # Do PGO
+  #xvfb-run -a -n 95 -s "-extension GLX -screen 0 1280x1024x24" \
+  #  MOZ_PGO=1 ./mach build
+  ./mach build
+  ./mach buildsymbols
+}
+
+package() {
+  cd mozilla-unified
+  DESTDIR="$pkgdir" ./mach install
+  find . -name '*crashreporter-symbols.zip' -exec cp -fvt "$startdir" {} +
+
+  _vendorjs="$pkgdir/usr/lib/$pkgname/browser/defaults/preferences/vendor.js"
+  install -Dm644 /dev/stdin "$_vendorjs" <<END
+// Use LANG environment variable to choose locale
+pref("intl.locale.matchOS", true);
+
+// Disable default browser checking.
+pref("browser.shell.checkDefaultBrowser", false);
+
+// Don't disable our bundled extensions in the application directory
+pref("extensions.autoDisableScopes", 11);
+pref("extensions.shownSelectionUI", true);
+
+// Opt all of us into e10s, instead of just 50%
+pref("browser.tabs.remote.autostart", true);
+END
+
+  _distini="$pkgdir/usr/lib/$pkgname/distribution/distribution.ini"
+  install -Dm644 /dev/stdin "$_distini" <<END
+[Global]
+id=archlinux
+version=1.0
+about=Mozilla Firefox for Arch Linux
+
+[Preferences]
+app.distributor=archlinux
+app.distributor.channel=$pkgname
+app.partner.archlinux=archlinux
+END
+
+  for i in 16 22 24 32 48 256; do
+    install -Dm644 browser/branding/official/default$i.png \
+      "$pkgdir/usr/share/icons/hicolor/${i}x${i}/apps/$pkgname.png"
+  done
+  install -Dm644 browser/branding/official/content/icon64.png \
+    "$pkgdir/usr/share/icons/hicolor/64x64/apps/$pkgname.png"
+  install -Dm644 browser/branding/official/mozicon128.png \
+    "$pkgdir/usr/share/icons/hicolor/128x128/apps/$pkgname.png"
+  install -Dm644 browser/branding/official/content/about-logo.png \
+    "$pkgdir/usr/share/icons/hicolor/192x192/apps/$pkgname.png"
+  install -Dm644 browser/branding/official/content/about-logo at 2x.png \
+    "$pkgdir/usr/share/icons/hicolor/384x384/apps/$pkgname.png"
+  install -Dm644 ../firefox-symbolic.svg \
+    "$pkgdir/usr/share/icons/hicolor/symbolic/apps/$pkgname-symbolic.svg"
+
+  install -Dm644 ../$pkgname.desktop \
+    "$pkgdir/usr/share/applications/$pkgname.desktop"
+
+  # Use system-provided dictionaries
+  rm -r "$pkgdir"/usr/lib/$pkgname/dictionaries
+  ln -Ts /usr/share/hunspell "$pkgdir/usr/lib/$pkgname/dictionaries"
+  ln -Ts /usr/share/hyphen "$pkgdir/usr/lib/$pkgname/hyphenation"
+
+  # Install a wrapper to avoid confusion about binary path
+  install -Dm755 /dev/stdin "$pkgdir/usr/bin/$pkgname" <<END
+#!/bin/sh
+exec /usr/lib/$pkgname/firefox "\$@"
+END
+
+  # Replace duplicate binary with wrapper
+  # https://bugzilla.mozilla.org/show_bug.cgi?id=658850
+  ln -srf "$pkgdir/usr/bin/$pkgname" \
+    "$pkgdir/usr/lib/$pkgname/firefox-bin"
+}

Copied: firefox/repos/testing-x86_64/firefox-install-dir.patch (from rev 305778, firefox/trunk/firefox-install-dir.patch)
===================================================================
--- testing-x86_64/firefox-install-dir.patch	                        (rev 0)
+++ testing-x86_64/firefox-install-dir.patch	2017-09-18 09:45:54 UTC (rev 305779)
@@ -0,0 +1,12 @@
+diff -up firefox-29.0/mozilla-release/config/baseconfig.mk.orig firefox-29.0/mozilla-release/config/baseconfig.mk
+--- mozilla-release/config/baseconfig.mk.orig	2014-04-22 15:38:52.948165295 +0200
++++ mozilla-release/config/baseconfig.mk	2014-04-22 15:42:20.387481673 +0200
+@@ -4,7 +4,7 @@
+ # whether a normal build is happening or whether the check is running.
+ includedir := $(includedir)/$(MOZ_APP_NAME)-$(MOZ_APP_VERSION)
+ idldir = $(datadir)/idl/$(MOZ_APP_NAME)-$(MOZ_APP_VERSION)
+-installdir = $(libdir)/$(MOZ_APP_NAME)-$(MOZ_APP_VERSION)
++installdir = $(libdir)/$(MOZ_APP_NAME)
+ sdkdir = $(libdir)/$(MOZ_APP_NAME)-devel-$(MOZ_APP_VERSION)
+ ifndef TOP_DIST
+ TOP_DIST = dist

Copied: firefox/repos/testing-x86_64/firefox-symbolic.svg (from rev 305778, firefox/trunk/firefox-symbolic.svg)
===================================================================
--- testing-x86_64/firefox-symbolic.svg	                        (rev 0)
+++ testing-x86_64/firefox-symbolic.svg	2017-09-18 09:45:54 UTC (rev 305779)
@@ -0,0 +1,30 @@
+<?xml version='1.0' encoding='UTF-8' standalone='no'?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg xmlns:cc='http://creativecommons.org/ns#' xmlns:dc='http://purl.org/dc/elements/1.1/' sodipodi:docname='firefox-symbolic.svg' height='16' id='svg7384' xmlns:inkscape='http://www.inkscape.org/namespaces/inkscape' xmlns:osb='http://www.openswatchbook.org/uri/2009/osb' xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns:sodipodi='http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd' xmlns:svg='http://www.w3.org/2000/svg' version='1.1' inkscape:version='0.91 r13725' width='16' xmlns='http://www.w3.org/2000/svg'>
+  <metadata id='metadata90'>
+    <rdf:RDF>
+      <cc:Work rdf:about=''>
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type rdf:resource='http://purl.org/dc/dcmitype/StillImage'/>
+        <dc:title>Gnome Symbolic Icon Theme</dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview inkscape:bbox-paths='true' bordercolor='#666666' borderopacity='1' inkscape:current-layer='layer9' inkscape:cx='-10.975734' inkscape:cy='233.73843' gridtolerance='10' inkscape:guide-bbox='true' guidetolerance='10' id='namedview88' inkscape:object-nodes='false' inkscape:object-paths='false' objecttolerance='10' pagecolor='#555753' inkscape:pageopacity='1' inkscape:pageshadow='2' showborder='false' showgrid='false' showguides='true' inkscape:snap-bbox='true' inkscape:snap-bbox-midpoints='false' inkscape:snap-global='true' inkscape:snap-grids='true' inkscape:snap-nodes='true' inkscape:snap-others='false' inkscape:snap-to-guides='true' inkscape:window-height='1403' inkscape:window-maximized='1' inkscape:window-width='2560' inkscape:window-x='2560' inkscape:window-y='0' inkscape:zoom='1'>
+    <inkscape:grid empspacing='2' enabled='true' id='grid4866' originx='-222.00001' originy='-381.99852' snapvisiblegridlinesonly='true' spacingx='1px' spacingy='1px' type='xygrid' visible='true'/>
+  </sodipodi:namedview>
+  <title id='title9167'>Gnome Symbolic Icon Theme</title>
+  <defs id='defs7386'>
+    <linearGradient id='linearGradient7212' osb:paint='solid'>
+      <stop id='stop7214' offset='0' style='stop-color:#000000;stop-opacity:1;'/>
+    </linearGradient>
+  </defs>
+  <g inkscape:groupmode='layer' id='layer9' inkscape:label='apps' style='display:inline' transform='translate(-463.00021,164.99852)'>
+    
+    <path inkscape:connector-curvature='0' d='M 469.05437,-154.9679 Z' id='path17747' style='fill:none;stroke:#000000;stroke-width:0.99851286px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1'/>
+    <path inkscape:connector-curvature='0' d='M 469.08553,-154.9054 Z' id='path17749' style='fill:none;stroke:#000000;stroke-width:0.99851286px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1'/>
+    <path inkscape:connector-curvature='0' d='m 473.0627,-162.9375 c -0.41568,-0.0182 -0.62813,0.0274 -0.625,0.0312 0.006,0.008 1.72988,0.32697 2.03125,0.75 0,0 -0.71915,0.007 -1.4375,0.21875 -0.0325,0.01 2.64053,0.33122 3.1875,3.0625 0,0 -0.29354,-0.64386 -0.65625,-0.75 0.23852,0.74134 0.16466,2.17583 -0.0625,2.875 -0.0292,0.0899 -0.0525,-0.38762 -0.5,-0.59375 0.14332,1.04923 -0.006,2.6978 -0.71875,3.15625 -0.0555,0.0357 0.43942,-1.64894 0.0937,-1 -2.06368,3.2325 -4.50486,1.31102 -5.5,0.625 0.79871,0.19996 1.80035,0.0704 2.125,-0.15625 0.49572,-0.34615 0.79916,-0.59107 1.0625,-0.53125 0.26322,0.0601 0.42318,-0.22934 0.21875,-0.46875 -0.20466,-0.23989 -0.70268,-0.55471 -1.375,-0.375 -0.47415,0.12687 -1.04057,0.54268 -1.9375,0 -0.7652,-0.46319 -0.67076,-0.69942 -0.67076,-0.93907 0,-0.23977 0.21387,-0.59107 0.59375,-0.53125 0.0851,0.0134 0.15074,0.009 0.1875,0 0.18483,0.0422 0.35743,0.0964 0.53125,0.1875 0.008,-0.2241 -0.0292,-0.87345 -0.15625,-1.23012 0.0106,0.004 0.0289,0.011 0.0312
 ,0 0.0384,-0.17687 1.05477,-0.18386 1.37388,-0.59643 0.20404,-0.26362 0.14073,-0.79683 0.14073,-0.79683 l -1,0 c -0.52354,0.002 -0.97244,-0.75086 -1.01451,-0.85669 0.11444,-0.62597 0.48612,-0.83952 1.01451,-1.14331 -0.39748,-0.003 -0.18871,0 -1,0 -0.52875,0 -0.84718,0.36158 -1.01451,0.54956 -0.70058,-0.16587 -1.38144,-0.25227 -1.86049,-0.0609 -0.22125,-0.22941 -0.39604,-0.80055 -0.42188,-1.48863 0,0 -1.20486,0.73864 -1.07812,2.55113 -0.002,0.14904 -0.0499,0.21348 -0.0625,0.3125 -0.13061,0.22845 -0.1553,0.40492 -0.125,0.375 -0.0656,0.13627 -0.15391,0.28402 -0.21875,0.46875 -0.0149,0.0362 -0.0495,0.0463 -0.0625,0.0937 -0.009,0.0322 0.002,0.0638 0,0.0937 -0.11512,0.36099 -0.21516,0.98244 -0.3125,1.54262 0,0 0.12424,-0.51425 0.3125,-0.88637 -0.15639,0.54353 -0.26211,1.54974 -0.1875,2.73012 0,0 0.015,-0.20429 0.0625,-0.5 0.0465,0.80102 0.25925,1.72737 0.84375,2.75 1.46152,2.5575 3.89248,3.68885 6.4375,3.46875 0.44516,-0.0296 0.89639,-0.10834 1.34375,-0.21875 5.92923,-1.46449 5.28125,-8.7
 8118 5.28125,-8.78118 l -0.15625,1.09375 c 0,0 -0.24147,-1.99977 -0.53125,-2.75 -0.44412,-1.14957 -0.62372,-1.15791 -0.625,-1.15625 0.29743,0.77226 0.21875,1.1875 0.21875,1.1875 0,0 -0.51279,-1.43939 -1.90625,-1.90625 -0.82515,-0.27632 -1.45932,-0.38807 -1.875,-0.40625 z' id='path159-6' sodipodi:nodetypes='sccccccccccsccccscccccscccccccccccccccccccccccccccs' style='fill:#bebebe;fill-opacity:1;stroke:none'/>
+    <path inkscape:connector-curvature='0' d='m 470.87695,-164.01953 c -0.83043,0.0139 -1.67042,0.17659 -2.48047,0.5 l -0.46289,0.18359 c 0.66083,0.79767 1.84339,0.43951 1.84339,0.43951 2.50802,-0.52344 5.12427,0.6034 6.44177,2.89252 1.49591,2.59908 0.85463,5.89258 -1.50586,7.74219 -2.36049,1.84961 -5.71108,1.68349 -7.87695,-0.39062 -2.16588,-2.07412 -2.47623,-5.41522 -0.73047,-7.85352 l 0.29101,-0.40625 -0.81445,-0.58203 -0.29101,0.40625 c -2.03104,2.83673 -1.66628,6.74516 0.85351,9.1582 2.5198,2.41305 6.43934,2.60693 9.18555,0.45508 2.74621,-2.15185 3.49621,-6.00355 1.75586,-9.02734 -1.30527,-2.26785 -3.7177,-3.55935 -6.20899,-3.51758 z' id='path22109' sodipodi:nodetypes='ccccsssccccsssc' style='color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;lett
 er-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#bebebe;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.99999994;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;paint-order:normal;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate'/>
+  </g>
+</svg>

Copied: firefox/repos/testing-x86_64/firefox.desktop (from rev 305778, firefox/trunk/firefox.desktop)
===================================================================
--- testing-x86_64/firefox.desktop	                        (rev 0)
+++ testing-x86_64/firefox.desktop	2017-09-18 09:45:54 UTC (rev 305779)
@@ -0,0 +1,310 @@
+[Desktop Entry]
+Version=1.0
+Name=Firefox
+GenericName=Web Browser
+GenericName[ar]=متصفح وِب
+GenericName[ast]=Restolador Web
+GenericName[bn]=ওয়েব ব্রাউজার
+GenericName[ca]=Navegador web
+GenericName[cs]=Webový prohlížeč
+GenericName[da]=Webbrowser
+GenericName[de]=Webbrowser
+GenericName[el]=Περιηγητής διαδικτύου
+GenericName[es]=Navegador web
+GenericName[et]=Veebibrauser
+GenericName[fa]=مرورگر اینترنتی
+GenericName[fi]=WWW-selain
+GenericName[fr]=Navigateur Web
+GenericName[gl]=Navegador Web
+GenericName[he]=דפדפן אינטרנט
+GenericName[hr]=Web preglednik
+GenericName[hu]=Webböngésző
+GenericName[it]=Browser Web
+GenericName[ja]=ウェブ・ブラウザ
+GenericName[ko]=웹 브라우저
+GenericName[ku]=Geroka torê
+GenericName[lt]=Interneto naršyklė
+GenericName[nb]=Nettleser
+GenericName[nl]=Webbrowser
+GenericName[nn]=Nettlesar
+GenericName[no]=Nettleser
+GenericName[pl]=Przeglądarka WWW
+GenericName[pt]=Navegador Web
+GenericName[pt_BR]=Navegador Web
+GenericName[ro]=Navigator Internet
+GenericName[ru]=Веб-браузер
+GenericName[sk]=Internetový prehliadač
+GenericName[sl]=Spletni brskalnik
+GenericName[sv]=Webbläsare
+GenericName[tr]=Web Tarayıcı
+GenericName[ug]=توركۆرگۈ
+GenericName[uk]=Веб-браузер
+GenericName[vi]=Trình duyệt Web
+GenericName[zh_CN]=网络浏览器
+GenericName[zh_TW]=網路瀏覽器
+Comment=Browse the Web
+Comment[ar]=تصفح الوِب
+Comment[ast]=Restola pela Rede
+Comment[bn]=ইন্টারনেট ব্রাউজ করুন
+Comment[ca]=Navegueu per el web
+Comment[cs]=Prohlížení stránek World Wide Webu
+Comment[da]=Surf på internettet
+Comment[de]=Im Internet surfen
+Comment[el]=Μπορείτε να περιηγηθείτε στο διαδίκτυο (Web)
+Comment[es]=Navegue por la web
+Comment[et]=Lehitse veebi
+Comment[fa]=صفحات شبکه جهانی اینترنت را مرور نمایید
+Comment[fi]=Selaa Internetin WWW-sivuja
+Comment[fr]=Naviguer sur le Web
+Comment[gl]=Navegar pola rede
+Comment[he]=גלישה ברחבי האינטרנט
+Comment[hr]=Pretražite web
+Comment[hu]=A világháló böngészése
+Comment[it]=Esplora il web
+Comment[ja]=ウェブを閲覧します
+Comment[ko]=웹을 돌아 다닙니다
+Comment[ku]=Li torê bigere
+Comment[lt]=Naršykite internete
+Comment[nb]=Surf på nettet
+Comment[nl]=Verken het internet
+Comment[nn]=Surf på nettet
+Comment[no]=Surf på nettet
+Comment[pl]=Przeglądanie stron WWW
+Comment[pt]=Navegue na Internet
+Comment[pt_BR]=Navegue na Internet
+Comment[ro]=Navigați pe Internet
+Comment[ru]=Доступ в Интернет
+Comment[sk]=Prehliadanie internetu
+Comment[sl]=Brskajte po spletu
+Comment[sv]=Surfa på webben
+Comment[tr]=İnternet'te Gezinin
+Comment[ug]=دۇنيادىكى توربەتلەرنى كۆرگىلى بولىدۇ
+Comment[uk]=Перегляд сторінок Інтернету
+Comment[vi]=Để duyệt các trang web
+Comment[zh_CN]=浏览互联网
+Comment[zh_TW]=瀏覽網際網路
+Exec=/usr/lib/firefox/firefox %u
+Icon=firefox
+Terminal=false
+Type=Application
+MimeType=text/html;text/xml;application/xhtml+xml;application/vnd.mozilla.xul+xml;text/mml;x-scheme-handler/http;x-scheme-handler/https;
+StartupNotify=true
+Categories=Network;WebBrowser;
+Keywords=web;browser;internet;
+Actions=new-window;new-private-window;
+
+[Desktop Action new-window]
+Name=New Window
+Name[ach]=Dirica manyen
+Name[af]=Nuwe venster
+Name[an]=Nueva finestra
+Name[ar]=نافذة جديدة
+Name[as]=নতুন উইন্ডো
+Name[ast]=Ventana nueva
+Name[az]=Yeni Pəncərə
+Name[be]=Новае акно
+Name[bg]=Нов прозорец
+Name[bn_BD]=নতুন উইন্ডো (N)
+Name[bn_IN]=নতুন উইন্ডো
+Name[br]=Prenestr nevez
+Name[brx]=गोदान उइन्ड'(N)
+Name[bs]=Novi prozor
+Name[ca]=Finestra nova
+Name[cak]=K'ak'a' tzuwäch
+Name[cs]=Nové okno
+Name[cy]=Ffenestr Newydd
+Name[da]=Nyt vindue
+Name[de]=Neues Fenster
+Name[dsb]=Nowe wokno
+Name[el]=Νέο παράθυρο
+Name[en_GB]=New Window
+Name[en_US]=New Window
+Name[en_ZA]=New Window
+Name[eo]=Nova fenestro
+Name[es_AR]=Nueva ventana
+Name[es_CL]=Nueva ventana
+Name[es_ES]=Nueva ventana
+Name[es_MX]=Nueva ventana
+Name[et]=Uus aken
+Name[eu]=Leiho berria
+Name[fa]=پنجره جدید
+Name[ff]=Henorde Hesere
+Name[fi]=Uusi ikkuna
+Name[fr]=Nouvelle fenêtre
+Name[fy_NL]=Nij finster
+Name[ga_IE]=Fuinneog Nua
+Name[gd]=Uinneag ùr
+Name[gl]=Nova xanela
+Name[gn]=Ovetã pyahu
+Name[gu_IN]=નવી વિન્ડો
+Name[he]=חלון חדש
+Name[hi_IN]=नया विंडो
+Name[hr]=Novi prozor
+Name[hsb]=Nowe wokno
+Name[hu]=Új ablak
+Name[hy_AM]=Նոր Պատուհան
+Name[id]=Jendela Baru
+Name[is]=Nýr gluggi
+Name[it]=Nuova finestra
+Name[ja]=新しいウィンドウ
+Name[ja_JP-mac]=新規ウインドウ
+Name[ka]=ახალი ფანჯარა
+Name[kk]=Жаңа терезе
+Name[km]=បង្អួចថ្មី
+Name[kn]=ಹೊಸ ಕಿಟಕಿ
+Name[ko]=새 창
+Name[kok]=नवें जनेल
+Name[ks]=نئئ وِنڈو
+Name[lij]=Neuvo barcon
+Name[lo]=ຫນ້າຕ່າງໃຫມ່
+Name[lt]=Naujas langas
+Name[ltg]=Jauns lūgs
+Name[lv]=Jauns logs
+Name[mai]=नव विंडो
+Name[mk]=Нов прозорец
+Name[ml]=പുതിയ ജാലകം
+Name[mr]=नवीन पटल
+Name[ms]=Tetingkap Baru
+Name[my]=ဝင်းဒိုးအသစ်
+Name[nb_NO]=Nytt vindu
+Name[ne_NP]=नयाँ सञ्झ्याल
+Name[nl]=Nieuw venster
+Name[nn_NO]=Nytt vindauge
+Name[or]=ନୂତନ ୱିଣ୍ଡୋ
+Name[pa_IN]=ਨਵੀਂ ਵਿੰਡੋ
+Name[pl]=Nowe okno
+Name[pt_BR]=Nova janela
+Name[pt_PT]=Nova janela
+Name[rm]=Nova fanestra
+Name[ro]=Fereastră nouă
+Name[ru]=Новое окно
+Name[sat]=नावा विंडो (N)
+Name[si]=නව කවුළුවක්
+Name[sk]=Nové okno
+Name[sl]=Novo okno
+Name[son]=Zanfun taaga
+Name[sq]=Dritare e Re
+Name[sr]=Нови прозор
+Name[sv_SE]=Nytt fönster
+Name[ta]=புதிய சாளரம்
+Name[te]=కొత్త విండో
+Name[th]=หน้าต่างใหม่
+Name[tr]=Yeni pencere
+Name[tsz]=Eraatarakua jimpani
+Name[uk]=Нове вікно
+Name[ur]=نیا دریچہ
+Name[uz]=Yangi oyna
+Name[vi]=Cửa sổ mới
+Name[wo]=Palanteer bu bees
+Name[xh]=Ifestile entsha
+Name[zh_CN]=新建窗口
+Name[zh_TW]=開新視窗
+Exec=/usr/lib/firefox/firefox --new-window %u
+
+[Desktop Action new-private-window]
+Name=New Private Window
+Name[ach]=Dirica manyen me mung
+Name[af]=Nuwe privaatvenster
+Name[an]=Nueva finestra privada
+Name[ar]=نافذة خاصة جديدة
+Name[as]=নতুন ব্যক্তিগত উইন্ডো
+Name[ast]=Ventana privada nueva
+Name[az]=Yeni Məxfi Pəncərə
+Name[be]=Новае акно адасаблення
+Name[bg]=Нов прозорец за поверително сърфиране
+Name[bn_BD]=নতুন ব্যক্তিগত উইন্ডো
+Name[bn_IN]=নতুন ব্যক্তিগত উইন্ডো
+Name[br]=Prenestr merdeiñ prevez nevez
+Name[brx]=गोदान प्राइभेट उइन्ड'
+Name[bs]=Novi privatni prozor
+Name[ca]=Finestra privada nova
+Name[cak]=K'ak'a' ichinan tzuwäch
+Name[cs]=Nové anonymní okno
+Name[cy]=Ffenestr Breifat Newydd
+Name[da]=Nyt privat vindue
+Name[de]=Neues privates Fenster
+Name[dsb]=Nowe priwatne wokno
+Name[el]=Νέο παράθυρο ιδιωτικής περιήγησης
+Name[en_GB]=New Private Window
+Name[en_US]=New Private Window
+Name[en_ZA]=New Private Window
+Name[eo]=Nova privata fenestro
+Name[es_AR]=Nueva ventana privada
+Name[es_CL]=Nueva ventana privada
+Name[es_ES]=Nueva ventana privada
+Name[es_MX]=Nueva ventana privada
+Name[et]=Uus privaatne aken
+Name[eu]=Leiho pribatu berria
+Name[fa]=پنجره ناشناس جدید
+Name[ff]=Henorde Suturo Hesere
+Name[fi]=Uusi yksityinen ikkuna
+Name[fr]=Nouvelle fenêtre de navigation privée
+Name[fy_NL]=Nij priveefinster
+Name[ga_IE]=Fuinneog Nua Phríobháideach
+Name[gd]=Uinneag phrìobhaideach ùr
+Name[gl]=Nova xanela privada
+Name[gn]=Ovetã ñemi pyahu
+Name[gu_IN]=નવી ખાનગી વિન્ડો
+Name[he]=חלון פרטי חדש
+Name[hi_IN]=नयी निजी विंडो
+Name[hr]=Novi privatni prozor
+Name[hsb]=Nowe priwatne wokno
+Name[hu]=Új privát ablak
+Name[hy_AM]=Սկսել Գաղտնի դիտարկում
+Name[id]=Jendela Mode Pribadi Baru
+Name[is]=Nýr huliðsgluggi
+Name[it]=Nuova finestra anonima
+Name[ja]=新しいプライベートウィンドウ
+Name[ja_JP-mac]=新規プライベートウインドウ
+Name[ka]=ახალი პირადი ფანჯარა
+Name[kk]=Жаңа жекелік терезе
+Name[km]=បង្អួចឯកជនថ្មី
+Name[kn]=ಹೊಸ ಖಾಸಗಿ ಕಿಟಕಿ
+Name[ko]=새 사생활 보호 모드
+Name[kok]=नवो खाजगी विंडो
+Name[ks]=نْو پرایوٹ وینڈو
+Name[lij]=Nêuvo barcón privòu
+Name[lo]=ເປີດຫນ້າຕ່າງສວນຕົວຂື້ນມາໃຫມ່
+Name[lt]=Naujas privataus naršymo langas
+Name[ltg]=Jauns privatais lūgs
+Name[lv]=Jauns privātais logs
+Name[mai]=नया निज विंडो (W)
+Name[mk]=Нов приватен прозорец
+Name[ml]=പുതിയ സ്വകാര്യ ജാലകം
+Name[mr]=नवीन वैयक्तिक पटल
+Name[ms]=Tetingkap Persendirian Baharu
+Name[my]=New Private Window
+Name[nb_NO]=Nytt privat vindu
+Name[ne_NP]=नयाँ निजी सञ्झ्याल
+Name[nl]=Nieuw privévenster
+Name[nn_NO]=Nytt privat vindauge
+Name[or]=ନୂତନ ବ୍ୟକ୍ତିଗତ ୱିଣ୍ଡୋ
+Name[pa_IN]=ਨਵੀਂ ਪ੍ਰਾਈਵੇਟ ਵਿੰਡੋ
+Name[pl]=Nowe okno prywatne
+Name[pt_BR]=Nova janela privativa
+Name[pt_PT]=Nova janela privada
+Name[rm]=Nova fanestra privata
+Name[ro]=Fereastră privată nouă
+Name[ru]=Новое приватное окно
+Name[sat]=नावा निजेराक् विंडो (W )
+Name[si]=නව පුද්ගලික කවුළුව (W)
+Name[sk]=Nové okno v režime Súkromné prehliadanie
+Name[sl]=Novo zasebno okno
+Name[son]=Sutura zanfun taaga
+Name[sq]=Dritare e Re Private
+Name[sr]=Нови приватан прозор
+Name[sv_SE]=Nytt privat fönster
+Name[ta]=புதிய தனிப்பட்ட சாளரம்
+Name[te]=కొత్త ఆంతరంగిక విండో
+Name[th]=หน้าต่างส่วนตัวใหม่
+Name[tr]=Yeni gizli pencere
+Name[tsz]=Juchiiti eraatarakua jimpani
+Name[uk]=Приватне вікно
+Name[ur]=نیا نجی دریچہ
+Name[uz]=Yangi maxfiy oyna
+Name[vi]=Cửa sổ riêng tư mới
+Name[wo]=Panlanteeru biir bu bees
+Name[xh]=Ifestile yangasese entsha
+Name[zh_CN]=新建隐私浏览窗口
+Name[zh_TW]=新增隱私視窗
+Exec=/usr/lib/firefox/firefox --private-window %u

Copied: firefox/repos/testing-x86_64/glibc-2.26-fix.diff (from rev 305778, firefox/trunk/glibc-2.26-fix.diff)
===================================================================
--- testing-x86_64/glibc-2.26-fix.diff	                        (rev 0)
+++ testing-x86_64/glibc-2.26-fix.diff	2017-09-18 09:45:54 UTC (rev 305779)
@@ -0,0 +1,258 @@
+From 6a0b7c8ecf0734ba1bcdccf8e0ee97e721fd5420 Mon Sep 17 00:00:00 2001
+Message-Id: <6a0b7c8ecf0734ba1bcdccf8e0ee97e721fd5420.1505113337.git.jan.steffens at gmail.com>
+From: =?UTF-8?q?Emilio=20Cobos=20=C3=81lvarez?= <emilio at crisal.io>
+Date: Sat, 19 Aug 2017 20:14:25 +0200
+Subject: [PATCH] Fix use of struct ucontext (squash 2 commits)
+
+Needed for building with glibc 2.26.
+
+Bug 1385667: Use ucontext_t consistently in breakpad-client. r=ted
+MozReview-Commit-ID: AJhzJdNXP0f
+
+Bug 1394149: Fix remaining uses of ucontext in breakpad-client. r=ted
+MozReview-Commit-ID: 5tP7fXsI7dQ
+---
+ .../linux/dump_writer_common/ucontext_reader.cc    | 30 +++++++++++-----------
+ .../linux/dump_writer_common/ucontext_reader.h     | 10 ++++----
+ .../linux/handler/exception_handler.cc             | 10 ++++----
+ .../linux/handler/exception_handler.h              |  2 +-
+ .../linux/microdump_writer/microdump_writer.cc     |  2 +-
+ .../linux/minidump_writer/minidump_writer.cc       |  2 +-
+ 6 files changed, 28 insertions(+), 28 deletions(-)
+
+diff --git a/toolkit/crashreporter/breakpad-client/linux/dump_writer_common/ucontext_reader.cc b/toolkit/crashreporter/breakpad-client/linux/dump_writer_common/ucontext_reader.cc
+index 999960912e459e1b..303c0ebd32b663c4 100644
+--- a/toolkit/crashreporter/breakpad-client/linux/dump_writer_common/ucontext_reader.cc
++++ b/toolkit/crashreporter/breakpad-client/linux/dump_writer_common/ucontext_reader.cc
+@@ -40,15 +40,15 @@ namespace google_breakpad {
+ 
+ #if defined(__i386__)
+ 
+-uintptr_t UContextReader::GetStackPointer(const struct ucontext* uc) {
++uintptr_t UContextReader::GetStackPointer(const ucontext_t* uc) {
+   return uc->uc_mcontext.gregs[REG_ESP];
+ }
+ 
+-uintptr_t UContextReader::GetInstructionPointer(const struct ucontext* uc) {
++uintptr_t UContextReader::GetInstructionPointer(const ucontext_t* uc) {
+   return uc->uc_mcontext.gregs[REG_EIP];
+ }
+ 
+-void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext *uc,
++void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext_t *uc,
+                                     const struct _libc_fpstate* fp) {
+   const greg_t* regs = uc->uc_mcontext.gregs;
+ 
+@@ -88,15 +88,15 @@ void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext *uc,
+ 
+ #elif defined(__x86_64)
+ 
+-uintptr_t UContextReader::GetStackPointer(const struct ucontext* uc) {
++uintptr_t UContextReader::GetStackPointer(const ucontext_t* uc) {
+   return uc->uc_mcontext.gregs[REG_RSP];
+ }
+ 
+-uintptr_t UContextReader::GetInstructionPointer(const struct ucontext* uc) {
++uintptr_t UContextReader::GetInstructionPointer(const ucontext_t* uc) {
+   return uc->uc_mcontext.gregs[REG_RIP];
+ }
+ 
+-void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext *uc,
++void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext_t *uc,
+                                     const struct _libc_fpstate* fpregs) {
+   const greg_t* regs = uc->uc_mcontext.gregs;
+ 
+@@ -145,15 +145,15 @@ void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext *uc,
+ 
+ #elif defined(__ARM_EABI__)
+ 
+-uintptr_t UContextReader::GetStackPointer(const struct ucontext* uc) {
++uintptr_t UContextReader::GetStackPointer(const ucontext_t* uc) {
+   return uc->uc_mcontext.arm_sp;
+ }
+ 
+-uintptr_t UContextReader::GetInstructionPointer(const struct ucontext* uc) {
++uintptr_t UContextReader::GetInstructionPointer(const ucontext_t* uc) {
+   return uc->uc_mcontext.arm_pc;
+ }
+ 
+-void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext *uc) {
++void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext_t *uc) {
+   out->context_flags = MD_CONTEXT_ARM_FULL;
+ 
+   out->iregs[0] = uc->uc_mcontext.arm_r0;
+@@ -184,41 +184,41 @@ void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext *uc) {
+ 
+ #elif defined(__aarch64__)
+ 
+-uintptr_t UContextReader::GetStackPointer(const struct ucontext* uc) {
++uintptr_t UContextReader::GetStackPointer(const ucontext_t* uc) {
+   return uc->uc_mcontext.sp;
+ }
+ 
+-uintptr_t UContextReader::GetInstructionPointer(const struct ucontext* uc) {
++uintptr_t UContextReader::GetInstructionPointer(const ucontext_t* uc) {
+   return uc->uc_mcontext.pc;
+ }
+ 
+-void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext *uc,
++void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext_t *uc,
+                                     const struct fpsimd_context* fpregs) {
+   out->context_flags = MD_CONTEXT_ARM64_FULL;
+ 
+   out->cpsr = static_cast<uint32_t>(uc->uc_mcontext.pstate);
+   for (int i = 0; i < MD_CONTEXT_ARM64_REG_SP; ++i)
+     out->iregs[i] = uc->uc_mcontext.regs[i];
+   out->iregs[MD_CONTEXT_ARM64_REG_SP] = uc->uc_mcontext.sp;
+   out->iregs[MD_CONTEXT_ARM64_REG_PC] = uc->uc_mcontext.pc;
+ 
+   out->float_save.fpsr = fpregs->fpsr;
+   out->float_save.fpcr = fpregs->fpcr;
+   my_memcpy(&out->float_save.regs, &fpregs->vregs,
+       MD_FLOATINGSAVEAREA_ARM64_FPR_COUNT * 16);
+ }
+ 
+ #elif defined(__mips__)
+ 
+-uintptr_t UContextReader::GetStackPointer(const struct ucontext* uc) {
++uintptr_t UContextReader::GetStackPointer(const ucontext_t* uc) {
+   return uc->uc_mcontext.gregs[MD_CONTEXT_MIPS_REG_SP];
+ }
+ 
+-uintptr_t UContextReader::GetInstructionPointer(const struct ucontext* uc) {
++uintptr_t UContextReader::GetInstructionPointer(const ucontext_t* uc) {
+   return uc->uc_mcontext.pc;
+ }
+ 
+-void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext *uc) {
++void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext_t *uc) {
+ #if _MIPS_SIM == _ABI64
+   out->context_flags = MD_CONTEXT_MIPS64_FULL;
+ #elif _MIPS_SIM == _ABIO32
+diff --git a/toolkit/crashreporter/breakpad-client/linux/dump_writer_common/ucontext_reader.h b/toolkit/crashreporter/breakpad-client/linux/dump_writer_common/ucontext_reader.h
+index c533e28ba7441e83..039752a2dfb6e589 100644
+--- a/toolkit/crashreporter/breakpad-client/linux/dump_writer_common/ucontext_reader.h
++++ b/toolkit/crashreporter/breakpad-client/linux/dump_writer_common/ucontext_reader.h
+@@ -41,21 +41,21 @@ namespace google_breakpad {
+ 
+ // Wraps platform-dependent implementations of accessors to ucontext structs.
+ struct UContextReader {
+-  static uintptr_t GetStackPointer(const struct ucontext* uc);
++  static uintptr_t GetStackPointer(const ucontext_t* uc);
+ 
+-  static uintptr_t GetInstructionPointer(const struct ucontext* uc);
++  static uintptr_t GetInstructionPointer(const ucontext_t* uc);
+ 
+   // Juggle a arch-specific ucontext into a minidump format
+   //   out: the minidump structure
+   //   info: the collection of register structures.
+ #if defined(__i386__) || defined(__x86_64)
+-  static void FillCPUContext(RawContextCPU *out, const ucontext *uc,
++  static void FillCPUContext(RawContextCPU *out, const ucontext_t *uc,
+                              const struct _libc_fpstate* fp);
+ #elif defined(__aarch64__)
+-  static void FillCPUContext(RawContextCPU *out, const ucontext *uc,
++  static void FillCPUContext(RawContextCPU *out, const ucontext_t *uc,
+                              const struct fpsimd_context* fpregs);
+ #else
+-  static void FillCPUContext(RawContextCPU *out, const ucontext *uc);
++  static void FillCPUContext(RawContextCPU *out, const ucontext_t *uc);
+ #endif
+ };
+ 
+diff --git a/toolkit/crashreporter/breakpad-client/linux/handler/exception_handler.cc b/toolkit/crashreporter/breakpad-client/linux/handler/exception_handler.cc
+index 71a51a763938e39d..12df9bc96ec45fea 100644
+--- a/toolkit/crashreporter/breakpad-client/linux/handler/exception_handler.cc
++++ b/toolkit/crashreporter/breakpad-client/linux/handler/exception_handler.cc
+@@ -439,44 +439,44 @@ bool ExceptionHandler::HandleSignal(int sig, siginfo_t* info, void* uc) {
+   // Fill in all the holes in the struct to make Valgrind happy.
+   memset(&g_crash_context_, 0, sizeof(g_crash_context_));
+   memcpy(&g_crash_context_.siginfo, info, sizeof(siginfo_t));
+-  memcpy(&g_crash_context_.context, uc, sizeof(struct ucontext));
++  memcpy(&g_crash_context_.context, uc, sizeof(ucontext_t));
+ #if defined(__aarch64__)
+-  struct ucontext* uc_ptr = (struct ucontext*)uc;
++  ucontext_t* uc_ptr = (ucontext_t*)uc;
+   struct fpsimd_context* fp_ptr =
+       (struct fpsimd_context*)&uc_ptr->uc_mcontext.__reserved;
+   if (fp_ptr->head.magic == FPSIMD_MAGIC) {
+     memcpy(&g_crash_context_.float_state, fp_ptr,
+            sizeof(g_crash_context_.float_state));
+   }
+ #elif !defined(__ARM_EABI__) && !defined(__mips__)
+   // FP state is not part of user ABI on ARM Linux.
+-  // In case of MIPS Linux FP state is already part of struct ucontext
++  // In case of MIPS Linux FP state is already part of ucontext_t
+   // and 'float_state' is not a member of CrashContext.
+-  struct ucontext* uc_ptr = (struct ucontext*)uc;
++  ucontext_t* uc_ptr = (ucontext_t*)uc;
+   if (uc_ptr->uc_mcontext.fpregs) {
+     memcpy(&g_crash_context_.float_state, uc_ptr->uc_mcontext.fpregs,
+            sizeof(g_crash_context_.float_state));
+   }
+ #endif
+   g_crash_context_.tid = syscall(__NR_gettid);
+   if (crash_handler_ != NULL) {
+     if (crash_handler_(&g_crash_context_, sizeof(g_crash_context_),
+                        callback_context_)) {
+       return true;
+     }
+   }
+   return GenerateDump(&g_crash_context_);
+ }
+ 
+ // This is a public interface to HandleSignal that allows the client to
+ // generate a crash dump. This function may run in a compromised context.
+ bool ExceptionHandler::SimulateSignalDelivery(int sig) {
+   siginfo_t siginfo = {};
+   // Mimic a trusted signal to allow tracing the process (see
+   // ExceptionHandler::HandleSignal().
+   siginfo.si_code = SI_USER;
+   siginfo.si_pid = getpid();
+-  struct ucontext context;
++  ucontext_t context;
+   getcontext(&context);
+   return HandleSignal(sig, &siginfo, &context);
+ }
+diff --git a/toolkit/crashreporter/breakpad-client/linux/handler/exception_handler.h b/toolkit/crashreporter/breakpad-client/linux/handler/exception_handler.h
+index 711586fec7ddae59..be1880170e2826b0 100644
+--- a/toolkit/crashreporter/breakpad-client/linux/handler/exception_handler.h
++++ b/toolkit/crashreporter/breakpad-client/linux/handler/exception_handler.h
+@@ -191,7 +191,7 @@ class ExceptionHandler {
+   struct CrashContext {
+     siginfo_t siginfo;
+     pid_t tid;  // the crashing thread.
+-    struct ucontext context;
++    ucontext_t context;
+ #if !defined(__ARM_EABI__) && !defined(__mips__)
+     // #ifdef this out because FP state is not part of user ABI for Linux ARM.
+     // In case of MIPS Linux FP state is already part of struct
+diff --git a/toolkit/crashreporter/breakpad-client/linux/microdump_writer/microdump_writer.cc b/toolkit/crashreporter/breakpad-client/linux/microdump_writer/microdump_writer.cc
+index ff20bf36584c876b..a0b90e08fc5f0cff 100644
+--- a/toolkit/crashreporter/breakpad-client/linux/microdump_writer/microdump_writer.cc
++++ b/toolkit/crashreporter/breakpad-client/linux/microdump_writer/microdump_writer.cc
+@@ -571,7 +571,7 @@ class MicrodumpWriter {
+ 
+   void* Alloc(unsigned bytes) { return dumper_->allocator()->Alloc(bytes); }
+ 
+-  const struct ucontext* const ucontext_;
++  const ucontext_t* const ucontext_;
+ #if !defined(__ARM_EABI__) && !defined(__mips__)
+   const google_breakpad::fpstate_t* const float_state_;
+ #endif
+diff --git a/toolkit/crashreporter/breakpad-client/linux/minidump_writer/minidump_writer.cc b/toolkit/crashreporter/breakpad-client/linux/minidump_writer/minidump_writer.cc
+index 0650bb95c179464a..6b5304bcd605ca3a 100644
+--- a/toolkit/crashreporter/breakpad-client/linux/minidump_writer/minidump_writer.cc
++++ b/toolkit/crashreporter/breakpad-client/linux/minidump_writer/minidump_writer.cc
+@@ -1247,7 +1247,7 @@ class MinidumpWriter {
+   const int fd_;  // File descriptor where the minidum should be written.
+   const char* path_;  // Path to the file where the minidum should be written.
+ 
+-  const struct ucontext* const ucontext_;  // also from the signal handler
++  const ucontext_t* const ucontext_;  // also from the signal handler
+ #if !defined(__ARM_EABI__) && !defined(__mips__)
+   const google_breakpad::fpstate_t* const float_state_;  // ditto
+ #endif
+-- 
+2.14.1
+

Copied: firefox/repos/testing-x86_64/harmony-fix.diff (from rev 305778, firefox/trunk/harmony-fix.diff)
===================================================================
--- testing-x86_64/harmony-fix.diff	                        (rev 0)
+++ testing-x86_64/harmony-fix.diff	2017-09-18 09:45:54 UTC (rev 305779)
@@ -0,0 +1,16 @@
+diff --git i/gfx/skia/skia/src/ports/SkFontHost_cairo.cpp w/gfx/skia/skia/src/ports/SkFontHost_cairo.cpp
+index 42da19280fce8235..2c221c32d097b462 100644
+--- i/gfx/skia/skia/src/ports/SkFontHost_cairo.cpp
++++ w/gfx/skia/skia/src/ports/SkFontHost_cairo.cpp
+@@ -666,10 +666,7 @@ void SkScalerContext_CairoFT::generateMetrics(SkGlyph* glyph)
+         glyph->fTop    = -SkToS16(SkFDot6Floor(bbox.yMax));
+         glyph->fLeft   = SkToS16(SkFDot6Floor(bbox.xMin));
+ 
+-        if (isLCD(fRec) &&
+-            gSetLcdFilter &&
+-            (fLcdFilter == FT_LCD_FILTER_DEFAULT ||
+-             fLcdFilter == FT_LCD_FILTER_LIGHT)) {
++        if (isLCD(fRec)) {
+             if (fRec.fFlags & kLCD_Vertical_Flag) {
+                 glyph->fTop -= 1;
+                 glyph->fHeight += 2;

Copied: firefox/repos/testing-x86_64/no-crmf.diff (from rev 305778, firefox/trunk/no-crmf.diff)
===================================================================
--- testing-x86_64/no-crmf.diff	                        (rev 0)
+++ testing-x86_64/no-crmf.diff	2017-09-18 09:45:54 UTC (rev 305779)
@@ -0,0 +1,15 @@
+diff --git i/old-configure.in w/old-configure.in
+index 0a06e470d2085922..d41c8e9d5dd2dbfb 100644
+--- i/old-configure.in
++++ w/old-configure.in
+@@ -2020,9 +2020,7 @@ if test -n "$_USE_SYSTEM_NSS"; then
+     AM_PATH_NSS(3.31, [MOZ_SYSTEM_NSS=1], [AC_MSG_ERROR([you don't have NSS installed or your version is too old])])
+ fi
+ 
+-if test -n "$MOZ_SYSTEM_NSS"; then
+-   NSS_LIBS="$NSS_LIBS -lcrmf"
+-else
++if test -z "$MOZ_SYSTEM_NSS"; then
+    NSS_CFLAGS="-I${DIST}/include/nss"
+    case "${OS_ARCH}" in
+         # Only few platforms have been tested with GYP

Copied: firefox/repos/testing-x86_64/upload-symbol-archive (from rev 305778, firefox/trunk/upload-symbol-archive)
===================================================================
--- testing-x86_64/upload-symbol-archive	                        (rev 0)
+++ testing-x86_64/upload-symbol-archive	2017-09-18 09:45:54 UTC (rev 305779)
@@ -0,0 +1,23 @@
+#!/bin/bash -e
+
+die() {
+  echo >&2 "$@"
+  exit 1
+}
+
+(( $# >= 2 )) || die "Usage: $0 TOKEN-FILE SYMBOL-ARCHIVE..."
+token="$1"
+shift
+
+[[ -f $token && -s $token ]] || die "Invalid TOKEN-FILE ${token at Q}"
+
+for zip; do
+  [[ $(file -Ebi "$zip") == application/zip* ]] || die "Invalid SYMBOL-ARCHIVE ${zip at Q}"
+done
+
+for zip; do
+  echo >&2 "Uploading ${zip at Q} ..."
+  curl -X POST -H "Auth-Token: $(<"$token")" -F "${zip##*/}=@$zip" \
+    https://crash-stats.mozilla.com/symbols/upload
+  echo
+done

Copied: firefox/repos/testing-x86_64/wifi-disentangle.patch (from rev 305778, firefox/trunk/wifi-disentangle.patch)
===================================================================
--- testing-x86_64/wifi-disentangle.patch	                        (rev 0)
+++ testing-x86_64/wifi-disentangle.patch	2017-09-18 09:45:54 UTC (rev 305779)
@@ -0,0 +1,245 @@
+# HG changeset patch
+# Parent  2edd69b245fbc493c3a1cf17c40c63b0280ead12
+Bug 1314968 - Disentangle nsWifiScannerDBus::SendMessage. r?kanru
+
+Make a copy of the function and specialize it for each message sent.
+Avoids the mess of comparing the method name to figure out what to do.
+
+diff --git a/netwerk/wifi/nsWifiScannerDBus.cpp b/netwerk/wifi/nsWifiScannerDBus.cpp
+--- a/netwerk/wifi/nsWifiScannerDBus.cpp
++++ b/netwerk/wifi/nsWifiScannerDBus.cpp
+@@ -34,19 +34,47 @@ nsWifiScannerDBus::Scan()
+   if (!mConnection) {
+     return NS_ERROR_NOT_AVAILABLE;
+   }
+-  return SendMessage("org.freedesktop.NetworkManager",
+-                     "/org/freedesktop/NetworkManager",
+-                     "GetDevices");
++  return SendGetDevices();
+ }
+ 
++// http://dbus.freedesktop.org/doc/api/html/group__DBusConnection.html
++// Refer to function dbus_connection_send_with_reply_and_block.
++static const uint32_t DBUS_DEFAULT_TIMEOUT = -1;
++
+ nsresult
+-nsWifiScannerDBus::SendMessage(const char* aInterface,
+-                               const char* aPath,
+-                               const char* aFuncCall)
+-{
+-  RefPtr<DBusMessage> msg = already_AddRefed<DBusMessage>(
+-    dbus_message_new_method_call("org.freedesktop.NetworkManager",
+-                                 aPath, aInterface, aFuncCall));
++nsWifiScannerDBus::SendGetDevices()
++{
++  RefPtr<DBusMessage> msg = already_AddRefed<DBusMessage>(
++    dbus_message_new_method_call("org.freedesktop.NetworkManager",
++                                 "/org/freedesktop/NetworkManager",
++                                 "org.freedesktop.NetworkManager",
++                                 "GetDevices"));
++  if (!msg) {
++    return NS_ERROR_FAILURE;
++  }
++
++  DBusError err;
++  dbus_error_init(&err);
++
++  RefPtr<DBusMessage> reply = already_AddRefed<DBusMessage>(
++    dbus_connection_send_with_reply_and_block(mConnection, msg,
++                                              DBUS_DEFAULT_TIMEOUT, &err));
++  if (dbus_error_is_set(&err)) {
++    dbus_error_free(&err);
++    return NS_ERROR_FAILURE;
++  }
++
++  return IdentifyDevices(reply);
++}
++
++nsresult
++nsWifiScannerDBus::SendGetDeviceType(const char* aPath)
++{
++  RefPtr<DBusMessage> msg = already_AddRefed<DBusMessage>(
++    dbus_message_new_method_call("org.freedesktop.NetworkManager",
++                                 aPath,
++                                 "org.freedesktop.DBus.Properties",
++                                 "Get"));
+   if (!msg) {
+     return NS_ERROR_FAILURE;
+   }
+@@ -54,58 +82,92 @@ nsWifiScannerDBus::SendMessage(const cha
+   DBusMessageIter argsIter;
+   dbus_message_iter_init_append(msg, &argsIter);
+ 
+-  if (!strcmp(aFuncCall, "Get")) {
+-    const char* paramInterface = "org.freedesktop.NetworkManager.Device";
+-    if (!dbus_message_iter_append_basic(&argsIter, DBUS_TYPE_STRING,
+-                                        &paramInterface)) {
+-      return NS_ERROR_FAILURE;
+-    }
+-
+-    const char* paramDeviceType = "DeviceType";
+-    if (!dbus_message_iter_append_basic(&argsIter, DBUS_TYPE_STRING,
+-                                        &paramDeviceType)) {
+-      return NS_ERROR_FAILURE;
+-    }
+-  } else if (!strcmp(aFuncCall, "GetAll")) {
+-    const char* param = "";
+-    if (!dbus_message_iter_append_basic(&argsIter, DBUS_TYPE_STRING, &param)) {
+-      return NS_ERROR_FAILURE;
+-    }
+-  }
++  const char* paramInterface = "org.freedesktop.NetworkManager.Device";
++  if (!dbus_message_iter_append_basic(&argsIter, DBUS_TYPE_STRING,
++                                      &paramInterface)) {
++    return NS_ERROR_FAILURE;
++  }
++
++  const char* paramDeviceType = "DeviceType";
++  if (!dbus_message_iter_append_basic(&argsIter, DBUS_TYPE_STRING,
++                                      &paramDeviceType)) {
++    return NS_ERROR_FAILURE;
++  }
++
++  DBusError err;
++  dbus_error_init(&err);
++
++  RefPtr<DBusMessage> reply = already_AddRefed<DBusMessage>(
++    dbus_connection_send_with_reply_and_block(mConnection, msg,
++                                              DBUS_DEFAULT_TIMEOUT, &err));
++  if (dbus_error_is_set(&err)) {
++    dbus_error_free(&err);
++    return NS_ERROR_FAILURE;
++  }
++
++  return IdentifyDeviceType(reply, aPath);
++}
++
++nsresult
++nsWifiScannerDBus::SendGetAccessPoints(const char* aPath)
++{
++  RefPtr<DBusMessage> msg = already_AddRefed<DBusMessage>(
++    dbus_message_new_method_call("org.freedesktop.NetworkManager",
++                                 aPath,
++                                 "org.freedesktop.NetworkManager.Device.Wireless",
++                                 "GetAccessPoints"));
++  if (!msg) {
++    return NS_ERROR_FAILURE;
++  }
+ 
+   DBusError err;
+   dbus_error_init(&err);
+ 
+-  // http://dbus.freedesktop.org/doc/api/html/group__DBusConnection.html
+-  // Refer to function dbus_connection_send_with_reply_and_block.
+-  const uint32_t DBUS_DEFAULT_TIMEOUT = -1;
+   RefPtr<DBusMessage> reply = already_AddRefed<DBusMessage>(
+     dbus_connection_send_with_reply_and_block(mConnection, msg,
+                                               DBUS_DEFAULT_TIMEOUT, &err));
+   if (dbus_error_is_set(&err)) {
+     dbus_error_free(&err);
+-
+     // In the GetAccessPoints case, if there are no access points, error is set.
+     // We don't want to error out here.
+-    if (!strcmp(aFuncCall, "GetAccessPoints")) {
+-      return NS_OK;
+-    }
+-    return NS_ERROR_FAILURE;
++    return NS_OK;
+   }
+ 
+-  nsresult rv;
+-  if (!strcmp(aFuncCall, "GetDevices")) {
+-    rv = IdentifyDevices(reply);
+-  } else if (!strcmp(aFuncCall, "Get")) {
+-    rv = IdentifyDeviceType(reply, aPath);
+-  } else if (!strcmp(aFuncCall, "GetAccessPoints")) {
+-    rv = IdentifyAccessPoints(reply);
+-  } else if (!strcmp(aFuncCall, "GetAll")) {
+-    rv = IdentifyAPProperties(reply);
+-  } else {
+-    rv = NS_ERROR_FAILURE;
+-  }
+-  return rv;
++  return IdentifyAccessPoints(reply);
++}
++
++nsresult
++nsWifiScannerDBus::SendGetAPProperties(const char* aPath)
++{
++  RefPtr<DBusMessage> msg = already_AddRefed<DBusMessage>(
++    dbus_message_new_method_call("org.freedesktop.NetworkManager",
++                                 aPath,
++                                 "org.freedesktop.DBus.Properties",
++                                 "GetAll"));
++  if (!msg) {
++    return NS_ERROR_FAILURE;
++  }
++
++  DBusMessageIter argsIter;
++  dbus_message_iter_init_append(msg, &argsIter);
++
++  const char* param = "";
++  if (!dbus_message_iter_append_basic(&argsIter, DBUS_TYPE_STRING, &param)) {
++    return NS_ERROR_FAILURE;
++  }
++
++  DBusError err;
++  dbus_error_init(&err);
++
++  RefPtr<DBusMessage> reply = already_AddRefed<DBusMessage>(
++    dbus_connection_send_with_reply_and_block(mConnection, msg,
++                                              DBUS_DEFAULT_TIMEOUT, &err));
++  if (dbus_error_is_set(&err)) {
++    dbus_error_free(&err);
++    return NS_ERROR_FAILURE;
++  }
++
++  return IdentifyAPProperties(reply);
+ }
+ 
+ nsresult
+@@ -126,7 +188,7 @@ nsWifiScannerDBus::IdentifyDevices(DBusM
+       return NS_ERROR_FAILURE;
+     }
+ 
+-    rv = SendMessage("org.freedesktop.DBus.Properties", devicePath, "Get");
++    rv = SendGetDeviceType(devicePath);
+     NS_ENSURE_SUCCESS(rv, rv);
+   } while (dbus_message_iter_next(&iter));
+ 
+@@ -159,8 +221,7 @@ nsWifiScannerDBus::IdentifyDeviceType(DB
+   const uint32_t NM_DEVICE_TYPE_WIFI = 2;
+   nsresult rv = NS_OK;
+   if (deviceType == NM_DEVICE_TYPE_WIFI) {
+-    rv = SendMessage("org.freedesktop.NetworkManager.Device.Wireless",
+-                     aDevicePath, "GetAccessPoints");
++    rv = SendGetAccessPoints(aDevicePath);
+   }
+ 
+   return rv;
+@@ -183,7 +244,7 @@ nsWifiScannerDBus::IdentifyAccessPoints(
+       return NS_ERROR_FAILURE;
+     }
+ 
+-    rv = SendMessage("org.freedesktop.DBus.Properties", path, "GetAll");
++    rv = SendGetAPProperties(path);
+     NS_ENSURE_SUCCESS(rv, rv);
+   } while (dbus_message_iter_next(&iter));
+ 
+diff --git a/netwerk/wifi/nsWifiScannerDBus.h b/netwerk/wifi/nsWifiScannerDBus.h
+--- a/netwerk/wifi/nsWifiScannerDBus.h
++++ b/netwerk/wifi/nsWifiScannerDBus.h
+@@ -25,9 +25,10 @@ public:
+   nsresult Scan();
+ 
+ private:
+-  nsresult SendMessage(const char* aInterface,
+-                       const char* aPath,
+-                       const char* aFuncCall);
++  nsresult SendGetDevices();
++  nsresult SendGetDeviceType(const char* aPath);
++  nsresult SendGetAccessPoints(const char* aPath);
++  nsresult SendGetAPProperties(const char* aPath);
+   nsresult IdentifyDevices(DBusMessage* aMsg);
+   nsresult IdentifyDeviceType(DBusMessage* aMsg, const char* aDevicePath);
+   nsresult IdentifyAccessPoints(DBusMessage* aMsg);

Copied: firefox/repos/testing-x86_64/wifi-fix-interface.patch (from rev 305778, firefox/trunk/wifi-fix-interface.patch)
===================================================================
--- testing-x86_64/wifi-fix-interface.patch	                        (rev 0)
+++ testing-x86_64/wifi-fix-interface.patch	2017-09-18 09:45:54 UTC (rev 305779)
@@ -0,0 +1,26 @@
+# HG changeset patch
+# Parent  7a6d836b62779aa61988981c6ca646495574a505
+Bug 1314968 - Explicitly specify the AccessPoint interface name. r?kanru
+
+The DBus specification allows passing an empty string as the interface to the
+org.freedesktop.DBus.Properties.GetAll call to get all properties, throwing away the namespace
+(interface) information.
+
+However, GDBus does not allow this. When NetworkManager moved to using GDBus, Firefox lost the
+ability to retrieve access points from NetworkManager.
+
+Since we're only interested in properties from the org.freedesktop.NetworkManager.AccessPoint
+interface, name it explicitly. This works with both the old and the new NetworkManager.
+
+diff --git a/netwerk/wifi/nsWifiScannerDBus.cpp b/netwerk/wifi/nsWifiScannerDBus.cpp
+--- a/netwerk/wifi/nsWifiScannerDBus.cpp
++++ b/netwerk/wifi/nsWifiScannerDBus.cpp
+@@ -151,7 +151,7 @@ nsWifiScannerDBus::SendGetAll(const char
+   DBusMessageIter argsIter;
+   dbus_message_iter_init_append(msg, &argsIter);
+ 
+-  const char* param = "";
++  const char* param = "org.freedesktop.NetworkManager.AccessPoint";
+   if (!dbus_message_iter_append_basic(&argsIter, DBUS_TYPE_STRING, &param)) {
+     return NS_ERROR_FAILURE;
+   }



More information about the arch-commits mailing list