]> git.draconx.ca Git - gentoo-fixes.git/commitdiff
Resurrect firefox-52.9.0 ebuild.
authorNick Bowler <nbowler@draconx.ca>
Wed, 21 Dec 2022 01:34:33 +0000 (20:34 -0500)
committerNick Bowler <nbowler@draconx.ca>
Wed, 21 Dec 2022 01:34:33 +0000 (20:34 -0500)
The last XUL-based version from Mozilla, with some small fixes to build
successfully with modern toolchains.

14 files changed:
eclass/mozconfig-v6.52.eclass [new file with mode: 0644]
eclass/mozcoreconf-v5.eclass [new file with mode: 0644]
www-client/firefox/Manifest [new file with mode: 0644]
www-client/firefox/files/firefox-52.9.0-blessings-TERM.patch [new file with mode: 0644]
www-client/firefox/files/firefox-52.9.0-fix-idb-name-conflict.patch [new file with mode: 0644]
www-client/firefox/files/firefox-52.9.0-fix-missing-includes.patch [new file with mode: 0644]
www-client/firefox/files/firefox-52.9.0-fix-thebes-templates.patch [new file with mode: 0644]
www-client/firefox/files/firefox-52.9.0-glibc-2.30.patch [new file with mode: 0644]
www-client/firefox/files/firefox-52.9.0-glibc-2.36.patch [new file with mode: 0644]
www-client/firefox/files/firefox-52.9.0-less-werror.patch [new file with mode: 0644]
www-client/firefox/files/gentoo-default-prefs.js-1 [new file with mode: 0644]
www-client/firefox/files/gentoo-hwaccel-prefs.js-1 [new file with mode: 0644]
www-client/firefox/files/icon/firefox.desktop [new file with mode: 0644]
www-client/firefox/firefox-52.9.0-r2.ebuild [new file with mode: 0644]

diff --git a/eclass/mozconfig-v6.52.eclass b/eclass/mozconfig-v6.52.eclass
new file mode 100644 (file)
index 0000000..96efaa7
--- /dev/null
@@ -0,0 +1,398 @@
+# This eclass is a modified version of the work originally distributed with
+# Gentoo GNU/Linux, covered by the following copyright and permission notice:
+#
+#   Copyright 1999-2020 Gentoo Authors
+#   Distributed under the terms of the GNU General Public License v2
+#
+# The modifications are:
+#
+#   * Update libffi dependency (2022-12)
+#
+# @ECLASS: mozconfig-v6.52.eclass
+# @MAINTAINER:
+# mozilla team <mozilla@gentoo.org>
+# @SUPPORTED_EAPIS: 5 6 7
+# @BLURB: the new mozilla common configuration eclass for FF33 and newer, v6
+# @DESCRIPTION:
+# This eclass is used in mozilla ebuilds (firefox, thunderbird, seamonkey)
+# to provide a single common place for the common mozilla engine compoments.
+#
+# The eclass provides all common dependencies as well as common use flags.
+#
+# Some use flags which may be optional in particular mozilla packages can be
+# supported through setting eclass variables.
+#
+# This eclass inherits mozconfig helper functions as defined in mozcoreconf-v3,
+# and so ebuilds inheriting this eclass do not need to inherit that.
+
+case ${EAPI} in
+       0|1|2|3|4)
+               die "EAPI=${EAPI} not supported"
+               ;;
+       5)
+               inherit multilib
+               ;;
+esac
+
+inherit flag-o-matic toolchain-funcs mozcoreconf-v5
+
+# @ECLASS-VARIABLE: MOZCONFIG_OPTIONAL_WIFI
+# @DEFAULT_UNSET
+# @DESCRIPTION:
+# Set this variable before the inherit line, when an ebuild needs to provide
+# optional necko-wifi support via IUSE="wifi".  Currently this would include
+# ebuilds for firefox, and potentially seamonkey.
+#
+# Leave the variable UNSET if necko-wifi support should not be available.
+# Set the variable to "enabled" if the use flag should be enabled by default.
+# Set the variable to any value if the use flag should exist but not be default-enabled.
+
+# @ECLASS-VARIABLE: MOZCONFIG_OPTIONAL_JIT
+# @DEFAULT_UNSET
+# @DESCRIPTION:
+# Set this variable before the inherit line, when an ebuild needs to provide
+# deterministic jit support via IUSE="jit".  The upstream default will be used
+# otherwise, which is generally to enable jit unless support for the platform
+# is missing.
+#
+# Set the variable to "enabled" if the use flag should be enabled by default.
+# Set the variable to any value if the use flag should exist but not be default-enabled.
+
+# @ECLASS-VARIABLE: MOZCONFIG_OPTIONAL_GTK3
+# @DEFAULT_UNSET
+# @DESCRIPTION:
+# Set this variable before the inherit line, when an ebuild can provide
+# optional gtk3 support via IUSE="force-gtk3".  Currently this would include
+# thunderbird and seamonkey in the future, once support is ready for testing.
+#
+# Leave the variable UNSET if gtk3 support should not be optionally available.
+# Set the variable to "enabled" if the use flag should be enabled by default.
+# Set the variable to any value if the use flag should exist but not be default-enabled.
+# If gtk+:3 is to be the standard toolkit, do not use this and instead use
+# MOZCONFIG_OPTIONAL_GTK2ONLY.
+
+# @ECLASS-VARIABLE: MOZCONFIG_OPTIONAL_GTK2ONLY
+# @DEFAULT_UNSET
+# @DESCRIPTION:
+# Set this variable before the inherit line, when an ebuild can provide
+# optional gtk2-only support via IUSE="gtk2".
+#
+# Note that this option conflicts directly with MOZCONFIG_OPTIONAL_GTK3, both
+# variables cannot be set at the same time and this variable will be ignored if
+# MOZCONFIG_OPTIONAL_GTK3 is set.
+#
+# Leave the variable UNSET if gtk2-only support should not be available.
+# Set the variable to "enabled" if the use flag should be enabled by default.
+# Set the variable to any value if the use flag should exist but not be default-enabled.
+
+# @ECLASS-VARIABLE: MOZCONFIG_OPTIONAL_QT5
+# @DEFAULT_UNSET
+# @DESCRIPTION:
+# Set this variable before the inherit line, when an ebuild can provide
+# optional qt5 support via IUSE="qt5".  Currently this would include
+# ebuilds for firefox, but thunderbird and seamonkey could follow in the future.
+#
+# Leave the variable UNSET if qt5 support should not be available.
+# Set the variable to "enabled" if the use flag should be enabled by default.
+# Set the variable to any value if the use flag should exist but not be default-enabled.
+
+# use-flags common among all mozilla ebuilds
+IUSE="${IUSE} dbus debug +jemalloc neon pulseaudio selinux startup-notification system-cairo
+       system-harfbuzz system-icu system-jpeg system-libevent system-sqlite system-libvpx"
+
+# some notes on deps:
+# gtk:2 minimum is technically 2.10 but gio support (enabled by default) needs 2.14
+# media-libs/mesa needs to be 10.2 or above due to a bug with flash+vdpau
+
+RDEPEND=">=app-text/hunspell-1.2:=
+       dev-libs/atk
+       dev-libs/expat
+       >=x11-libs/cairo-1.10[X]
+       >=x11-libs/gtk+-2.18:2
+       x11-libs/gdk-pixbuf
+       >=x11-libs/pango-1.22.0
+       >=media-libs/libpng-1.6.25:0=[apng]
+       >=media-libs/mesa-10.2:*
+       media-libs/fontconfig
+       >=media-libs/freetype-2.4.10
+       kernel_linux? ( !pulseaudio? ( media-libs/alsa-lib ) )
+       pulseaudio? ( || ( media-sound/pulseaudio
+               >=media-sound/apulse-0.1.9 ) )
+       virtual/freedesktop-icon-theme
+       dbus? ( >=sys-apps/dbus-0.60
+               >=dev-libs/dbus-glib-0.72 )
+       startup-notification? ( >=x11-libs/startup-notification-0.8 )
+       >=dev-libs/glib-2.26:2
+       >=sys-libs/zlib-1.2.3
+       >=dev-libs/libffi-3.0.10:=
+       media-video/ffmpeg
+       x11-libs/libX11
+       x11-libs/libXcomposite
+       x11-libs/libXdamage
+       x11-libs/libXext
+       x11-libs/libXfixes
+       x11-libs/libXrender
+       x11-libs/libXt
+       system-cairo? ( >=x11-libs/cairo-1.12[X,xcb(+)] >=x11-libs/pixman-0.19.2 )
+       system-icu? ( >=dev-libs/icu-58.1:= )
+       system-jpeg? ( >=media-libs/libjpeg-turbo-1.2.1 )
+       system-libevent? ( >=dev-libs/libevent-2.0:0=[threads] )
+       system-sqlite? ( >=dev-db/sqlite-3.17.0:3[secure-delete,debug=] )
+       system-libvpx? ( >=media-libs/libvpx-1.5.0:0=[postproc] )
+       system-harfbuzz? ( >=media-libs/harfbuzz-1.3.3:0= >=media-gfx/graphite2-1.3.8 )
+"
+
+if [[ -n ${MOZCONFIG_OPTIONAL_GTK3} ]]; then
+       MOZCONFIG_OPTIONAL_GTK2ONLY=
+       if [[ ${MOZCONFIG_OPTIONAL_GTK3} = "enabled" ]]; then
+               IUSE+=" +force-gtk3"
+       else
+               IUSE+=" force-gtk3"
+       fi
+       RDEPEND+=" force-gtk3? ( >=x11-libs/gtk+-3.4.0:3 )"
+elif [[ -n ${MOZCONFIG_OPTIONAL_GTK2ONLY} ]]; then
+       if [[ ${MOZCONFIG_OPTIONAL_GTK2ONLY} = "enabled" ]]; then
+               IUSE+=" +gtk2"
+       else
+               IUSE+=" gtk2"
+       fi
+       RDEPEND+=" !gtk2? ( >=x11-libs/gtk+-3.4.0:3 )"
+fi
+if [[ -n ${MOZCONFIG_OPTIONAL_WIFI} ]]; then
+       if [[ ${MOZCONFIG_OPTIONAL_WIFI} = "enabled" ]]; then
+               IUSE+=" +wifi"
+       else
+               IUSE+=" wifi"
+       fi
+       RDEPEND+="
+       wifi? (
+               kernel_linux? ( >=sys-apps/dbus-0.60
+                       >=dev-libs/dbus-glib-0.72
+                       net-misc/networkmanager )
+       )"
+fi
+
+DEPEND="app-arch/zip
+       app-arch/unzip
+       >=sys-devel/binutils-2.16.1
+       sys-apps/findutils
+       pulseaudio? ( media-sound/pulseaudio )
+       ${RDEPEND}"
+
+RDEPEND+="
+       pulseaudio? ( || ( media-sound/pulseaudio
+               >=media-sound/apulse-0.1.9 ) )
+       selinux? ( sec-policy/selinux-mozilla )"
+
+# @FUNCTION: mozconfig_config
+# @DESCRIPTION:
+# Set common configure options for mozilla packages.
+# Call this within src_configure() phase, after mozconfig_init
+#
+# Example:
+#
+# inherit mozconfig-v6.46
+#
+# src_configure() {
+#      mozconfig_init
+#      mozconfig_config
+#      # ... misc ebuild-unique settings via calls to
+#      # ... mozconfig_{annotate,use_with,use_enable}
+#      mozconfig_final
+# }
+
+mozconfig_config() {
+       # Migrated from mozcoreconf-2
+       mozconfig_annotate 'system_libs' \
+               --with-system-zlib \
+               --with-system-bz2
+
+       if has bindist ${IUSE}; then
+               mozconfig_use_enable !bindist official-branding
+               if [[ ${PN} == firefox ]] && use bindist ; then
+                       mozconfig_annotate '' --with-branding=browser/branding/aurora
+               fi
+       fi
+
+       # Enable position independent executables
+       mozconfig_annotate 'enabled by Gentoo' --enable-pie
+       mozconfig_use_enable debug
+       mozconfig_use_enable debug tests
+
+       if ! use debug ; then
+               mozconfig_annotate 'disabled by Gentoo' --disable-debug-symbols
+       else
+               mozconfig_annotate 'enabled by Gentoo' --enable-debug-symbols
+       fi
+
+       mozconfig_use_enable startup-notification
+
+       if [[ -n ${MOZCONFIG_OPTIONAL_WIFI} ]] ; then
+               # wifi pulls in dbus so manage both here
+               mozconfig_use_enable wifi necko-wifi
+               if use kernel_linux && use wifi && ! use dbus; then
+                       echo "Enabling dbus support due to wifi request"
+                       mozconfig_annotate 'dbus required by necko-wifi on linux' --enable-dbus
+               else
+                       mozconfig_use_enable dbus
+               fi
+       else
+               mozconfig_use_enable dbus
+               mozconfig_annotate 'disabled' --disable-necko-wifi
+       fi
+
+       if [[ -n ${MOZCONFIG_OPTIONAL_JIT} ]]; then
+               mozconfig_use_enable jit ion
+       fi
+
+       # These are enabled by default in all mozilla applications
+       mozconfig_annotate '' --with-system-nspr --with-nspr-prefix="${SYSROOT}${EPREFIX}"/usr
+       mozconfig_annotate '' --with-system-nss --with-nss-prefix="${SYSROOT}${EPREFIX}"/usr
+       mozconfig_annotate '' --x-includes="${SYSROOT}${EPREFIX}"/usr/include --x-libraries="${SYSROOT}${EPREFIX}"/usr/$(get_libdir)
+       if use system-libevent; then
+               mozconfig_annotate '' --with-system-libevent="${SYSROOT}${EPREFIX}"/usr
+       fi
+       mozconfig_annotate '' --prefix="${EPREFIX}"/usr
+       mozconfig_annotate '' --libdir="${EPREFIX}"/usr/$(get_libdir)
+       mozconfig_annotate 'Gentoo default' --enable-system-hunspell
+       mozconfig_annotate '' --disable-gnomeui
+       mozconfig_annotate '' --enable-gio
+       mozconfig_annotate '' --disable-crashreporter
+       mozconfig_annotate 'Gentoo default' --with-system-png
+       mozconfig_annotate '' --enable-system-ffi
+       mozconfig_annotate 'Gentoo default to honor system linker' --disable-gold
+       mozconfig_annotate '' --disable-gconf
+       mozconfig_annotate '' --with-intl-api
+
+       # skia has no support for big-endian platforms
+       if [[ $(tc-endian) == "big" ]]; then
+               mozconfig_annotate 'big endian target' --disable-skia
+       else
+               mozconfig_annotate '' --enable-skia
+       fi
+
+       # default toolkit is cairo-gtk2, optional use flags can change this
+       local toolkit="cairo-gtk2"
+       local toolkit_comment=""
+       if [[ -n ${MOZCONFIG_OPTIONAL_GTK3} ]]; then
+               if use force-gtk3; then
+                       toolkit="cairo-gtk3"
+                       toolkit_comment="force-gtk3 use flag"
+               fi
+       fi
+       if [[ -n ${MOZCONFIG_OPTIONAL_GTK2ONLY} ]]; then
+               if ! use gtk2 ; then
+                       toolkit="cairo-gtk3"
+               else
+                       toolkit_comment="gtk2 use flag"
+               fi
+       fi
+       if [[ -n ${MOZCONFIG_OPTIONAL_QT5} ]]; then
+               if use qt5; then
+                       toolkit="cairo-qt"
+                       toolkit_comment="qt5 use flag"
+                       # need to specify these vars because the qt5 versions are not found otherwise,
+                       # and setting --with-qtdir overrides the pkg-config include dirs
+                       local i
+                       for i in qmake moc rcc; do
+                               echo "export HOST_${i^^}=\"$(qt5_get_bindir)/${i}\"" \
+                                       >> "${S}"/.mozconfig || die
+                       done
+                       echo 'unset QTDIR' >> "${S}"/.mozconfig || die
+                       mozconfig_annotate '+qt5' --disable-gio
+               fi
+       fi
+       mozconfig_annotate "${toolkit_comment}" --enable-default-toolkit=${toolkit}
+
+       # Use jemalloc unless libc is not glibc >= 2.4
+       # at this time the minimum glibc in the tree is 2.9 so we should be safe.
+       if use elibc_glibc && use jemalloc; then
+               # We must force-enable jemalloc 4 via .mozconfig
+               echo "export MOZ_JEMALLOC4=1" >> "${S}"/.mozconfig || die
+               mozconfig_annotate '' --enable-replace-malloc
+       fi
+
+       # Instead of the standard --build= and --host=, mozilla uses --host instead
+       # of --build, and --target intstead of --host.
+       # Note, mozilla also has --build but it does not do what you think it does.
+       # Set both --target and --host as mozilla uses python to guess values otherwise
+       mozconfig_annotate '' --target="${CHOST}"
+       mozconfig_annotate '' --host="${CBUILD:-${CHOST}}"
+
+       mozconfig_use_enable pulseaudio
+       # force the deprecated alsa sound code if pulseaudio is disabled
+       if use kernel_linux && ! use pulseaudio ; then
+               mozconfig_annotate '-pulseaudio' --enable-alsa
+       fi
+
+       mozconfig_use_enable system-cairo
+       mozconfig_use_enable system-sqlite
+       mozconfig_use_with system-jpeg
+       mozconfig_use_with system-icu
+       mozconfig_use_with system-libvpx
+       mozconfig_use_with system-harfbuzz
+       mozconfig_use_with system-harfbuzz system-graphite2
+
+       # Modifications to better support ARM, bug 553364
+       if use neon ; then
+               mozconfig_annotate '' --with-fpu=neon
+               mozconfig_annotate '' --with-thumb=yes
+               mozconfig_annotate '' --with-thumb-interwork=no
+       fi
+       if [[ ${CHOST} == armv* ]] ; then
+               mozconfig_annotate '' --with-float-abi=hard
+               if ! use system-libvpx ; then
+                       sed -i -e "s|softfp|hard|" \
+                               "${S}"/media/libvpx/moz.build
+               fi
+       fi
+}
+
+# @FUNCTION: mozconfig_install_prefs
+# @DESCRIPTION:
+# Set preferences into the prefs.js file specified as a parameter to
+# the function.  This sets both some common prefs to all mozilla
+# packages, and any prefs that may relate to the use flags administered
+# by mozconfig_config().
+#
+# Call this within src_install() phase, after copying the template
+# prefs file (if any) from ${FILESDIR}
+#
+# Example:
+#
+# inherit mozconfig-v6.46
+#
+# src_install() {
+#      cp "${FILESDIR}"/gentoo-default-prefs.js \
+#      "${BUILD_OBJ_DIR}/dist/bin/browser/defaults/preferences/all-gentoo.js"  \
+#      || die
+#
+#      mozconfig_install_prefs \
+#      "${BUILD_OBJ_DIR}/dist/bin/browser/defaults/preferences/all-gentoo.js"
+#
+#      ...
+# }
+
+mozconfig_install_prefs() {
+       local prefs_file="${1}"
+
+       einfo "Adding prefs from mozconfig to ${prefs_file}"
+
+       # set dictionary path, to use system hunspell
+       echo "pref(\"spellchecker.dictionary_path\", \"${EPREFIX}/usr/share/myspell\");" \
+               >>"${prefs_file}" || die
+
+       # force the graphite pref if system-harfbuzz is enabled, since the pref cant disable it
+       if use system-harfbuzz ; then
+               echo "sticky_pref(\"gfx.font_rendering.graphite.enabled\",true);" \
+                       >>"${prefs_file}" || die
+       fi
+
+       # force cairo as the canvas renderer on platforms without skia support
+       if [[ $(tc-endian) == "big" ]] ; then
+               echo "sticky_pref(\"gfx.canvas.azure.backends\",\"cairo\");" \
+                       >>"${prefs_file}" || die
+               echo "sticky_pref(\"gfx.content.azure.backends\",\"cairo\");" \
+                       >>"${prefs_file}" || die
+       fi
+}
diff --git a/eclass/mozcoreconf-v5.eclass b/eclass/mozcoreconf-v5.eclass
new file mode 100644 (file)
index 0000000..ce0e2a4
--- /dev/null
@@ -0,0 +1,275 @@
+# This eclass is a modified version of the work originally distributed with
+# Gentoo GNU/Linux, covered by the following copyright and permission notice:
+#
+#   Copyright 1999-2022 Gentoo Authors
+#   Distributed under the terms of the GNU General Public License v2
+#
+# The modifications are:
+#
+#   * Avoid python eclasses which no longer support python2 (2022-12)
+#
+# @DEAD
+# @ECLASS: mozcoreconf-v5.eclass
+# @MAINTAINER:
+# Mozilla team <mozilla@gentoo.org>
+# @BLURB: core options and configuration functions for mozilla
+# @DESCRIPTION:
+#
+# inherit mozconfig-v6.* or above for mozilla configuration support
+
+# @ECLASS_VARIABLE: MOZILLA_FIVE_HOME
+# @DESCRIPTION:
+# This is an eclass-generated variable that defines the rpath that the mozilla
+# product will be installed in.  Read-only
+
+if [[ ! ${_MOZCORECONF} ]]; then
+
+inherit multilib toolchain-funcs flag-o-matic versionator
+
+IUSE="${IUSE} custom-cflags custom-optimization"
+
+DEPEND="virtual/pkgconfig
+       dev-lang/python:2.7[ncurses,sqlite,ssl,threads(+)]"
+
+# @FUNCTION: mozconfig_annotate
+# @DESCRIPTION:
+# add an annotated line to .mozconfig
+#
+# Example:
+# mozconfig_annotate "building on ultrasparc" --enable-js-ultrasparc
+# => ac_add_options --enable-js-ultrasparc # building on ultrasparc
+mozconfig_annotate() {
+       declare reason=$1 x ; shift
+       [[ $# -gt 0 ]] || die "mozconfig_annotate missing flags for ${reason}\!"
+       for x in ${*}; do
+               echo "ac_add_options ${x} # ${reason}" >>.mozconfig
+       done
+}
+
+# @FUNCTION: mozconfig_use_enable
+# @DESCRIPTION:
+# add a line to .mozconfig based on a USE-flag
+#
+# Example:
+# mozconfig_use_enable truetype freetype2
+# => ac_add_options --enable-freetype2 # +truetype
+mozconfig_use_enable() {
+       declare flag=$(use_enable "$@")
+       mozconfig_annotate "$(use $1 && echo +$1 || echo -$1)" "${flag}"
+}
+
+# @FUNCTION: mozconfig_use_with
+# @DESCRIPTION:
+# add a line to .mozconfig based on a USE-flag
+#
+# Example:
+# mozconfig_use_with kerberos gss-api /usr/$(get_libdir)
+# => ac_add_options --with-gss-api=/usr/lib # +kerberos
+mozconfig_use_with() {
+       declare flag=$(use_with "$@")
+       mozconfig_annotate "$(use $1 && echo +$1 || echo -$1)" "${flag}"
+}
+
+# @FUNCTION: mozconfig_use_extension
+# @DESCRIPTION:
+# enable or disable an extension based on a USE-flag
+#
+# Example:
+# mozconfig_use_extension gnome gnomevfs
+# => ac_add_options --enable-extensions=gnomevfs
+mozconfig_use_extension() {
+       declare minus=$(use $1 || echo -)
+       mozconfig_annotate "${minus:-+}$1" --enable-extensions=${minus}${2}
+}
+
+moz_pkgsetup() {
+       # Ensure we use C locale when building
+       export LANG="C"
+       export LC_ALL="C"
+       export LC_MESSAGES="C"
+       export LC_CTYPE="C"
+
+       # Ensure we use correct toolchain
+       export HOST_CC="$(tc-getBUILD_CC)"
+       export HOST_CXX="$(tc-getBUILD_CXX)"
+       tc-export CC CXX LD PKG_CONFIG
+
+       # Ensure that we have a sane build enviroment
+       export MOZILLA_CLIENT=1
+       export BUILD_OPT=1
+       export NO_STATIC_LIB=1
+       export USE_PTHREADS=1
+       export ALDFLAGS=${LDFLAGS}
+       # ensure MOZCONFIG is not defined
+       unset MOZCONFIG
+
+       # set MOZILLA_FIVE_HOME
+       export MOZILLA_FIVE_HOME="/usr/$(get_libdir)/${PN}"
+
+       # nested configure scripts in mozilla products generate unrecognized options
+       # false positives when toplevel configure passes downwards.
+       export QA_CONFIGURE_OPTIONS=".*"
+
+       export PYTHON=python2.7
+}
+
+# @FUNCTION: mozconfig_init
+# @DESCRIPTION:
+# Initialize mozilla configuration and populate with core settings.
+# This should be called in src_configure before any other mozconfig_* functions.
+mozconfig_init() {
+       declare enable_optimize pango_version myext x
+       declare XUL=$([[ ${PN} == xulrunner ]] && echo true || echo false)
+       declare FF=$([[ ${PN} == firefox ]] && echo true || echo false)
+       declare SM=$([[ ${PN} == seamonkey ]] && echo true || echo false)
+       declare TB=$([[ ${PN} == thunderbird ]] && echo true || echo false)
+       declare WF=$([[ ${PN} == waterfox* ]] && echo true || echo false)
+
+       ####################################
+       #
+       # Setup the initial .mozconfig
+       # See http://www.mozilla.org/build/configure-build.html
+       #
+       ####################################
+
+       case ${PN} in
+               *xulrunner)
+                       cp xulrunner/config/mozconfig .mozconfig \
+                               || die "cp xulrunner/config/mozconfig failed" ;;
+               *firefox|waterfox*)
+                       cp browser/config/mozconfig .mozconfig \
+                               || die "cp browser/config/mozconfig failed" ;;
+               seamonkey)
+                       # Must create the initial mozconfig to enable application
+                       : >.mozconfig || die "initial mozconfig creation failed"
+                       mozconfig_annotate "" --enable-application=suite ;;
+               *thunderbird)
+                       # Must create the initial mozconfig to enable application
+                       : >.mozconfig || die "initial mozconfig creation failed"
+                       mozconfig_annotate "" --enable-application=mail ;;
+       esac
+
+       ####################################
+       #
+       # CFLAGS setup and ARCH support
+       #
+       ####################################
+
+       # Set optimization level
+       mozconfig_annotate "Workaround known breakage" --enable-optimize=-O2
+
+       if [[ ${ARCH} == hppa ]]; then
+               mozconfig_annotate "more than -O0 causes a segfault on hppa" --enable-optimize=-O0
+       elif [[ ${ARCH} == x86 ]]; then
+               mozconfig_annotate "less then -O2 causes a segfault on x86" --enable-optimize=-O2
+       elif use custom-optimization || [[ ${ARCH} =~ (alpha|ia64) ]]; then
+               # Set optimization level based on CFLAGS
+               if is-flag -O0; then
+                       mozconfig_annotate "from CFLAGS" --enable-optimize=-O0
+               elif [[ ${ARCH} == ppc ]] && has_version '>=sys-libs/glibc-2.8'; then
+                       mozconfig_annotate "more than -O1 segfaults on ppc with glibc-2.8" --enable-optimize=-O1
+               elif is-flag -O4; then
+                       mozconfig_annotate "from CFLAGS" --enable-optimize=-O4
+               elif is-flag -O3; then
+                       mozconfig_annotate "from CFLAGS" --enable-optimize=-O3
+               elif is-flag -O1; then
+                       mozconfig_annotate "from CFLAGS" --enable-optimize=-O1
+               elif is-flag -Os; then
+                       mozconfig_annotate "from CFLAGS" --enable-optimize=-Os
+               else
+                       mozconfig_annotate "Gentoo's default optimization" --enable-optimize=-O2
+               fi
+       else
+               # Enable Mozilla's default
+               mozconfig_annotate "mozilla default" --enable-optimize
+       fi
+
+       # Strip optimization so it does not end up in compile string
+       filter-flags '-O*'
+
+       # Strip over-aggressive CFLAGS
+       use custom-cflags || strip-flags
+
+       # Additional ARCH support
+       case "${ARCH}" in
+       arm)
+               # Reduce the memory requirements for linking
+               append-ldflags -Wl,--no-keep-memory -Wl,--reduce-memory-overheads
+               ;;
+       alpha)
+               # Historically we have needed to add -fPIC manually for 64-bit.
+               # Additionally, alpha should *always* build with -mieee for correct math
+               # operation
+               append-flags -fPIC -mieee
+               ;;
+       ia64)
+               # Historically we have needed to add this manually for 64-bit
+               append-flags -fPIC
+               ;;
+       ppc64)
+               append-flags -fPIC -mminimal-toc
+               # Reduce the memory requirements for linking
+               append-ldflags -Wl,--no-keep-memory -Wl,--reduce-memory-overheads
+               ;;
+       esac
+
+       # We need to append flags for >= gcc-6 support
+       append-cxxflags -fno-delete-null-pointer-checks -fno-lifetime-dse -fno-schedule-insns2
+
+       # Use the MOZILLA_FIVE_HOME for the rpath
+       append-ldflags -Wl,-rpath="${MOZILLA_FIVE_HOME}",--enable-new-dtags
+       # Set MOZILLA_FIVE_HOME in mozconfig
+       mozconfig_annotate '' --with-default-mozilla-five-home=${MOZILLA_FIVE_HOME}
+
+       ####################################
+       #
+       # mozconfig setup
+       #
+       ####################################
+
+       mozconfig_annotate disable_update_strip \
+               --disable-updater \
+               --disable-strip \
+               --disable-install-strip
+
+       # jemalloc won't build with older glibc
+       ! has_version ">=sys-libs/glibc-2.4" && mozconfig_annotate "we have old glibc" --disable-jemalloc
+}
+
+# @FUNCTION: mozconfig_final
+# @DESCRIPTION:
+# Apply EXTRA_ECONF values to .mozconfig
+# Display a table describing all configuration options paired
+# with reasons, then clean up extensions list.
+# This should be called in src_configure at the end of all other mozconfig_* functions.
+mozconfig_final() {
+       declare ac opt hash reason
+
+       # Apply EXTRA_ECONF entries to .mozconfig
+       if [[ -n ${EXTRA_ECONF} ]]; then
+               IFS=\! read -a ac <<<${EXTRA_ECONF// --/\!}
+               for opt in "${ac[@]}"; do
+                       mozconfig_annotate "EXTRA_ECONF" --${opt#--}
+               done
+       fi
+
+       echo
+       echo "=========================================================="
+       echo "Building ${PF} with the following configuration"
+       grep ^ac_add_options .mozconfig | while read ac opt hash reason; do
+               [[ -z ${hash} || ${hash} == \# ]] \
+                       || die "error reading mozconfig: ${ac} ${opt} ${hash} ${reason}"
+               printf "    %-30s  %s\n" "${opt}" "${reason:-mozilla.org default}"
+       done
+       echo "=========================================================="
+       echo
+
+       # Resolve multiple --enable-extensions down to one
+       declare exts=$(sed -n 's/^ac_add_options --enable-extensions=\([^ ]*\).*/\1/p' \
+               .mozconfig | xargs)
+       sed -i '/^ac_add_options --enable-extensions/d' .mozconfig
+       echo "ac_add_options --enable-extensions=${exts// /,}" >> .mozconfig
+}
+
+_MOZCORECONF=1
+fi
diff --git a/www-client/firefox/Manifest b/www-client/firefox/Manifest
new file mode 100644 (file)
index 0000000..d961a05
--- /dev/null
@@ -0,0 +1,104 @@
+AUX firefox-52.9.0-blessings-TERM.patch 2276 BLAKE2B 2413368995dd8421a634e2a50f4bd9ee01062043a18bef4cd07645ecca05459891ff5aaa294f3abbc85e7ed9515e8936ede8b7faacfb19fadd81ec98ff8080b0 SHA512 08f8d2ba3258b3ef6bda1d2f8ea429e579e1f616dd940f6dc25ef231199d9155b22631f4366908c77ec5b9c4ce63310c9b9e075a6a7a7503b6423e13082f2b91
+AUX firefox-52.9.0-fix-idb-name-conflict.patch 10116 BLAKE2B 0f285f2918b1c3f50c5b31cfb6527b8cdf4593f4a21f09a6ee200f7c2c8b0840b99eac58c6a0dc24beb873c7cd1b451ce3cc9d39f8e336d2c4094d70766bb9e9 SHA512 848aef9eb4eb5e677e69522be3051afb1bfa508f098f8b06eec9f224356c2480f10a36e053c8555d74454ad40ecca13708c2abb140ad857d9bd5663a0b469ed3
+AUX firefox-52.9.0-fix-missing-includes.patch 1238 BLAKE2B 7046a0c6e5846732ef7ab3714c2e98bf6b77d0a711a5ae616cadb3dc65f2c82cbf2efdc4af932d0e2b1eb1497b6124b9b453d143f52d2e07d6531535738d5279 SHA512 ef6aa3c6d50ced3cde973429b3ce9a227e608463cdb8130cb3a4329ce01694765782c4cfa4a14284e29d98262bdf33cc5b7bcee7a925135d580c12139e74860f
+AUX firefox-52.9.0-fix-thebes-templates.patch 5806 BLAKE2B 568d3bd61f43daa84957c719f38bad93c8cbbdb863156c9f350d96a2af020ff3c1f32e3dd211b2636f822bb34116c98c82c101e25d3d0b3c147b07ee77279467 SHA512 5d5f28fbd3cd6818aa11bf8dd2d14e6a6887f2b44d04a5e824696151e176273a7a2a384772ba748761ff2c2c9c6e1f6b43d6355e64a293cb3b76715313194798
+AUX firefox-52.9.0-glibc-2.30.patch 492 BLAKE2B a73d3da636cb65c882ad4f06a8aae26df32ce77aea74b8d9477eb7f6aa9eb1046ad9acf47f4a70dde55c9c98da6506846f83e75a4cf5f09d63d56a883effa8f6 SHA512 d028c35d3e33f2cfc1f3e806d16975810be5a5fad4b4e9c68a02d0159aed9258b5540728bbcadd31d7959691cfed5940e90b47a9733d1b1a6e1b944216e38174
+AUX firefox-52.9.0-glibc-2.36.patch 2475 BLAKE2B 93c6eeab26f5fcdc5a9a5acf6a78834b35839dd7511499edea0fbb9ea70b7c3a95982b4488619f6c132ec03f63f97c7b4c7c22b02d77d010bd469f180f60175c SHA512 3efa72a036a49f48461f6b36e39a71c79c03e7a41e55cc9195175886fc299e6bcf5966c98b52200aa0b84c3eadbe273a5db0dc88087165dfbf43ec3cf479c5bd
+AUX firefox-52.9.0-less-werror.patch 395 BLAKE2B 32310b52988d6b54a4acfdba5fbb0b2baff5a5b1383b5e1336dc55c3c11c9f8d444bbdb68ed280fdece828c0d4b6969e86a60a6bd6c0bcc50c4530f6e661b4a2 SHA512 caacf8522ce05fa1fe1461719cf8381a2dac4f928c0077f7862c3b41103f9bfcc7710cd053e9d1f68c6bfd86406c68a960538a9ad4e6623a3edbb7480f01700f
+AUX gentoo-default-prefs.js-1 821 BLAKE2B 2af9a9e9f3a71fae918a4098397e931c02df5a8021d0bc87ebc4981076674aba99d88c5b8acf2380c915e92ad07a7636891ea8a07cfc850e9c4d15e58d0cd276 SHA512 b63542c51edfe0158ce487b317ea6d36ffc17cf8457534adb6aa3f613d9a027f4285c9dcf76eb1b96de6bbc10ba09948fa6c081e00cfb25ca47450cbc32923f2
+AUX gentoo-hwaccel-prefs.js-1 100 BLAKE2B 08be790b58524077a5681cc06e10890b72dc6e8155c9e03e6ef9165035087d4b8cbcac4a6b8997f61db3721895c9247a12171eec7d082fa15e1d5312bf51fbee SHA512 cf5385c793056e66b8853fd641dce2e7804d6878675afd24485487f2201801e1bdd5d27c15cb0d483eb34bfb75e7a21c01f1bbf701cb1c2dfa48f8f6422ed42c
+AUX icon/firefox.desktop 277 BLAKE2B 944a7b4706ba5f6b93a1369416adc31203dfaf0d12291a035ce05830f2c79bd14d1f7d5324c16d3e5be21fdda2a9237223901030a974f3ff778b1def7f8bb3e3 SHA512 99b57d36601bba420bb2e6647e0fa4baa1c31f15bf7c602ac43a347d7fe78f4350b3fb10af3a709a5aac02a4c4f283dcfacd780bacb43e7e8ed46b83b97d6f4d
+DIST firefox-52.5-patches-02.tar.xz 15084 BLAKE2B 538dd61dbb7b290add4782b323a62f9ab4dbc57326a9a085710d207752118c504eb030a8741c1eed2e281c8d18e5453210b1905d71439250caa588137bbc37d0 SHA512 b80f9acaf49226cd5c2864714826c5b0e7e918e94c31ec81521b90c47edbb88ea85faa34fc22791efefbcd3867ddc413c563de58ca0f8ce21e10a3858899efce
+DIST firefox-52.9.0esr-ach.xpi 420286 BLAKE2B 41643f6cdc43722dc2a61249720902a503c5f547979e80ace08bef097e2efef7b67d6d44b04a66965ee80722194b2183feed15d3b2f13d5b6ccdc993415eb9e3 SHA512 8a28262b9bb44592801e063348401924b2dc8ab1b4e042d11f560d892e276b7d14279a1a2ab3f6ad27068113969ca59377493839f1efbdd61a77f5246815989c
+DIST firefox-52.9.0esr-af.xpi 429469 BLAKE2B 224617fcee13cbc62863dca9ecde4f45f1dc1a83535780a0f3b13f74ddd492ffd46b544ba93cb0ba505e99afc7327a5398c7bce735ba2d24612ea5ea80717221 SHA512 a723edc72c1e373e250fb878a73024054c670f0fd3ceadbd4a1306981f8cb560ec8f078a017cafb84dc49a11bb0d17046b102a6f67dba65b67d64946d909b189
+DIST firefox-52.9.0esr-an.xpi 437887 BLAKE2B 5be731c8d5f044c773ae34ac27009dae5f8bf9c87fb0c6a50d64e752810fd497533b74a5d409b98f53fbfab58b037904c418f5fe45da70c9da79ee1be3d6293f SHA512 07cbdfc2296a96b9fa9d286d803b1acabc14bffedefaf009ffb324909e4c4a923ca4a023cab92562821c1a5d30abd23debbc825ecd1121476924216c3668bed8
+DIST firefox-52.9.0esr-ar.xpi 466028 BLAKE2B e431e58c94de1c00d019534c4025977861864d1eaa32f5acc51052252ef7d20818464fc4c92b39ca955eff063b4b6df50cc3ccc0fb2322412d4d711dddc9def8 SHA512 037336c659890256fecc4bf0028c14a73a6e52fd0524da29bf4d58efc61a89a66fcb8a32f4a31e789e0ec7a7a376ddc232f9e0f850fc485e7e908b2caab00b96
+DIST firefox-52.9.0esr-as.xpi 479635 BLAKE2B 7ba88cc70b21a90dfce4ffee844434ea4ee756cf8d0d425f82e71009d325d74b8728fb28a7b8c1ab0826accf71144b126ee6f91d84821dd3ab037864aaf15303 SHA512 62038ed87f45c865a3fe2d10487ba69dc48cdb6f166e040cb2942f02afb9222bf7ff325bb47d2c0dd3582e752fe20e89440fd488028dd3f1b9cba5f696107a6a
+DIST firefox-52.9.0esr-ast.xpi 432775 BLAKE2B 391aeaba518ac560d789fc7b6771b08c7f2437075767231b13e5575cb552d5fc388329ea794843a43dd4dd6ba68831fa28330a6120eafda60b215899543589c4 SHA512 97582f59348f18ec858bf09d8e496632ed618088d88a030a4d2801627f6c54c70e67595008483065e1df33d02661410fa49c17fe5a6625c7fb97140bb1749ea1
+DIST firefox-52.9.0esr-az.xpi 454923 BLAKE2B d6172b0ec8e90f843617f1b5e749b722dad8adfda51d5a0c8a464238202884f11f0583a19e4bbc005eea0d5bb94a0637d9be34693ccd78c473ddfb70bb52ffd4 SHA512 beb7758cc3d369b14dfe606144e1c6e64c3a6f6178f69ee91a64e5a3fb9df827e103afc6d8490a3a1359efd766d1c73bbfe2d00814c66f9d95d13c3be9a9d81f
+DIST firefox-52.9.0esr-bg.xpi 487891 BLAKE2B a1acf93b23a68374f1af0e4cb017ee3da8ab33c54891b1aad62e6e5ed7ce5616f646df988a82fe58fb92b2d844de0cf5f8bc882a46166695fda1980b4d009d1e SHA512 cf416bfebeb56c32ac0a985cd3e3c532f7f6900833dd15c3d1ddb915189a18a382376b8b0909c1d4ba4beedd4dbbe652ebaa29fa0f1a480736effd1b2c6992a5
+DIST firefox-52.9.0esr-bn-BD.xpi 504634 BLAKE2B 17b4b7c8befe136b99ce869223dbf7e7172c878e07a0705726a04b41539596639c5c8299b01e50dba19b4d88a7da59ea9dd311abe43968f517b9181e991ecd5e SHA512 092e92a29700c9d5fe344aa027a5a01a6ffbae4aca4e15e852c5fa032eea81d7744f8901712efcca5819813d3d37877d104c3d96abf9c57732d3fe3a13a1bfe9
+DIST firefox-52.9.0esr-bn-IN.xpi 502114 BLAKE2B 26b90f95451b92d5c112e70687a99b9a24e6f3f948fac9fbd46aefb11d19e02a498111eec9673e3289a56995a92df0d86f7401e744b5e2ddf9e586565d0b79f8 SHA512 767016400fa3f582fe11e120250f158347270d66ba0b297961a3f362f09bbcaa8ad588c0b5ec25682e3b87bebb0cd68279d9a52e6ba91cf9f33264b7a63b5cfd
+DIST firefox-52.9.0esr-br.xpi 428216 BLAKE2B 173495fad24e1bd24b2f8fd47e05256df47866bb0af3d1f254dd747cd753ef2d6555e83a1733a8bfc56b0c0b2ff83e5c8dca0ff0360c10354ff82def4c0233ef SHA512 78bc39ae71ce041d6cf8c202f6f0f9370711113363b6b01c14157b0762455c9f2da86539c77574d47402d3765bd05c6ab6798f9ffdd8b512b1c50fab768ce86b
+DIST firefox-52.9.0esr-bs.xpi 434428 BLAKE2B 9f29aad62bab6480653a891249d2e922ee0828d6660e511f40ef064affe73486bd4e242831497f437477246cf8cc90e0517cfcf3575df8530a66eea6ea67458c SHA512 5d1377013e08e066b683d6b25677eb9fef4aa10a8fe3999b2e332c7f9971dcd571787e0268baf65a9288ce6a4bfdb6cb763692f0334ef76a7c7abff0a9467e28
+DIST firefox-52.9.0esr-ca.xpi 443304 BLAKE2B 9d9496eed906a40ca8c69e380c7849d5d927af1ec1cf754d6ee3da79d6de9c99551269a7b4593ec3a29594724c2c232b67441d3423bc54fe96d52862f1e85f4e SHA512 dbb2b09fbffbe3b69916ec36658764820e69125f51fae7be490e1d903444db7fdfea05736c4ab791b6cda3070aba592a736c787bb7fe283820fc91009ec10e4b
+DIST firefox-52.9.0esr-cak.xpi 451911 BLAKE2B 4dbb016fe0f5dc5634d94f564514672583a324d2bf48f067aa2c911b0b6dd4239e9fea9405d4f4e34ccbaa48cd80a04218d229cb54a41ceebaccb76894c9aa07 SHA512 266bf767a4cc8ee7611b5e92903eecb8ff0f89b13cabb5bd2cb547a6345e20a52f1bcb59ed34f0b8f991c46d03062b0bb0a6edcf4732f7ca800f79cb1675626f
+DIST firefox-52.9.0esr-cs.xpi 444075 BLAKE2B a39d90b7cdcc5bcc45e8bfbe971bd80036f1b01154dd65d14d2d68f2ed0468938d2a58e9db11841fdfc04c63496ba37fefef76da2b9c0b9a102a20bff38a1842 SHA512 8e3ca731a99c6aa774564aa8aba0de8ce0cd2c5c81d9f1bfd31a78546f03d2ba07999d296cd12bf02ebdff6e4874d7a82e58b412d21f6862dcfea296e90ef3fc
+DIST firefox-52.9.0esr-cy.xpi 429300 BLAKE2B dba43dd71e970295b810bd6d27a7ead237e3ac67b83c5700b7cc26085b58c6ec3130f63146f72e3c7e688606905ed58ad4712d3ea535b96a91be47337ad36f81 SHA512 dc643461bf3ea0b7ef480bdef805522d0eac83ca0e41e9fa211282bc7e7b8110a5e06c76789e5d3f9f55da2699769c8622d06b351ad86569a2852d06ca4ac0cf
+DIST firefox-52.9.0esr-da.xpi 424394 BLAKE2B 64018098d96ffda08caa6b260bfd6820844d94fb8d2bf02677812d10934068ed6ac7439bed93c559b16ecf731ef6f3744718bb98f390485015491a2667260c54 SHA512 80dc86a3dfa15c5cb4dfd349411a226267f12ecdb548e27f436750feb126bfed06d60389da3184432617f02853d62e8a2d98bcfb19c154f67144d42604435023
+DIST firefox-52.9.0esr-de.xpi 435228 BLAKE2B 7daaf9b278dd4cf48c5183dd92978f01719d06cb88a6b15c3e8059c423be9ef2a17760934e2746a3dff5e3211fe90109c53b60cb5a6d2c53ced87a84d1a965a2 SHA512 827fe20427fa3f9b81e1c256418c27ae917f964960ae3baa38ac3754530b682fbd6b54cfb8eaa943992180b16d72a474ad84fa7b02e1f809cf1c973a09c3840a
+DIST firefox-52.9.0esr-dsb.xpi 452168 BLAKE2B 07a033dc80b73446d2342eb1a549a9b96a7ac5ab58ae53d2544a6c60f05767c350958d0c188b8e768b29880fb02b561ffa925bc80d480f5c18028d353782363c SHA512 494cfefce19ad75f254a4fda494f8a215773bff610ee88bd241ba034353ee2e4b7327791eb8c658a30b249e62e2f5430cff894c3e8e9064fe9f567e5c5e2669e
+DIST firefox-52.9.0esr-el.xpi 509237 BLAKE2B 9391cd81457b15d5aa0bd62891e4e7e480a090e61e3cccdc789d8ac055a26071ba58963daeb66ffa8a2476f1d61ef55cd22ac196eb99dbca0b09a8d9944e5462 SHA512 9f4fc865795804b67d89542b28fe82c18a7b9ccdd3683928f876e24442336c43100a7881e4127439a1bf97dab90d919dd88e464410d321fe10a2cde116e8c38a
+DIST firefox-52.9.0esr-en-GB.xpi 412038 BLAKE2B c5001c4f3a65d2427c8eab998852e7ef33f62735f6e423521e8bb281ff85bf8dadda7888aa3555b9e40a6d8ebb438345a21375fc1df4c54913f43e46f26993c2 SHA512 c16fb52dbb09c8e6ffdcb19c3e4ceca780ec69d521f5f422da3b0c58bce8da15d34c5c85dbf3f004865040f03de0c8c0b8ee0c4b21dfbc2be00dca04fc82358e
+DIST firefox-52.9.0esr-en-ZA.xpi 412212 BLAKE2B 893c371bd5f8a8a84f3161395827d3b1e5dbdf1c31319f5e10f20d860324fce344795abe175eec8aef44c60f9c0ade56ee301d7810495dbcfb38370cbb8dc3a8 SHA512 12d2e7608c8a5964bdd237882cccb6b1e824918366ab7788a80b741046e8cb14cd5fa1c1c7d9d3b0641a03aab16e3ae5ed1af64d79cf384884bff26b7cad4395
+DIST firefox-52.9.0esr-eo.xpi 430117 BLAKE2B e707d92b1b02f42aa936ccddc3a613020f4ba73083e5f095670dc3e41628bdc2c530b8f83695a6bda92765a934f7e8ed823e0e1b040bba4a4af69de397e50d02 SHA512 a48039bc9e060fb6b7939effc5d0c7e223dcd47080d01fcbd8b4f1fca90621024dae408cc052b166f085e694d00ffc40d48c6a434006dfde088e75e4b509ec25
+DIST firefox-52.9.0esr-es-AR.xpi 438659 BLAKE2B de1cbb21cbbc4da5b608fd51ea4d3b21eef83ead67200e21a71887456b9837f641dd42fde33ffec40d1d3052950f70279af1a80a02eaa7c842957d3b8085ef61 SHA512 fb3d70ea97af2cfa3b0023473be9e6fb474e15c0622b9c247961222424e563027ff57a451e3dbb32b73d2fde06f6f857aca0d367ee38b8ed1d777ec1f2b21378
+DIST firefox-52.9.0esr-es-CL.xpi 438407 BLAKE2B 5bf5c07b5715762a81fd7b35338a3d4bf8d384de3df42e76940e386ab83c207ff7d9a11b7211e4bb3925e0e4f47a8ee8ccd82edb27f9fb9f2d7ec277ca9ab9e3 SHA512 a08d2de92afdcbd2ca238f70d425887154caf7fdc7df5df1c0475b21d4e40c2ae00192d6985986a8a30f81d29538832ae573da06c5b924723a19894a9f747702
+DIST firefox-52.9.0esr-es-ES.xpi 337614 BLAKE2B 3df8f326ebe81ea688b3b1c7ad2351f6d3aa3ddd954f923f5551a02fdcb3c1dd5dcc170140f0a202ea9ee102a3adba97331751bfa1d293789ae209a0dcaf871a SHA512 e4e8d5c434313416b8f07ce656a0d73de53e65412e99c29a41ccc3436d76eb3584df79351e56a6334ec2e46dff3c8c0c486b2a1be08b88ff3880d04502123ca8
+DIST firefox-52.9.0esr-es-MX.xpi 441127 BLAKE2B 97563eafb96234cd7f03e2a9c5092879812d0056037004ca023fd494d7163ad75842c1613ccab792a415aaba3eec786fd87b0ce5b84c9de667b03717574784ab SHA512 47cc9989fcdd99960befc310c259b84695a298b4472ea99a4f42a3c4b0024e6690b0957ef2588fe66a6cca2ec2a819df2264a6943da2caa1a293c1cd33a51965
+DIST firefox-52.9.0esr-et.xpi 425113 BLAKE2B 493abaf01932eb9e956cc805ea83036590186b8a3a40380d9b16119d8608ad034d5a0d332174b1de62ce365d443f3b9a70f2edfb7aa99fee0df4495123300348 SHA512 c8c26d1f60fa5d40bd34cb3c7d1f0e97f1a49f27ac43d7219bef2e8bf496cb8b358df30749118c21449393f9a5b1a9d2cbdda893fc90e6d4351efb648b86e122
+DIST firefox-52.9.0esr-eu.xpi 431124 BLAKE2B ed8ec8c178ea21befe2826dc08622e0d59f288f5f3ab23eb1de2ffa0caec2654800e4298ce5179e2366f46e11b2a35721e9ab3c2c783a9dec4e7b546225e0758 SHA512 4e5368994ed64f06fee4b5e7da0aea6f0b2f275b8d8a3d64ca0f09031b14efcf9198f62dfc7fccb273fc0028a963d9501e174224019780814fdd151e66261c64
+DIST firefox-52.9.0esr-fa.xpi 483990 BLAKE2B 4e94c51a04212f482dba4c1cdb20d5c36bc38da422d2038a1f3f03e04316a7f6bdffc11b26a1577021b396ee65cad60911694caa8e65d5bfc7501da2f38b2a73 SHA512 1ca907bb17f608d2225ea0749a25dfee5c76b7231fd95c21cc14e84db2c3ab09a55a2615560c51e88b47071ce1ada31ae8d23c92ed6246bbabb3109f536a5ac5
+DIST firefox-52.9.0esr-ff.xpi 433662 BLAKE2B b8a851374299b440ffed1b7ead4dbc6771eee3aee006802edaf3845566e53879547d244e1c84179ebeed8d6c66b0cc19bc8916bd6257ccf003ef01a2d417b49f SHA512 b537fc8239672e2d0ecb7439782052e196c41ba450abc05e5d2286711243d8dbabea81f376b85be904f9f77c3d1a1f5fb91b9eb2701e9af377d587d0868356e1
+DIST firefox-52.9.0esr-fi.xpi 422807 BLAKE2B cbaa72baf469b30f2d7d95b27bbf7f388e0555e45468a23f6b2b6b0305904c8bef8538c505202c0cf87099b15dc32b8cd85a464fc6e84b79e68eeea03bea1747 SHA512 3b86434f57fe6f5ce481f8e36187d6eafad0d467039eb62ca4e002634f911cfc9876c182557f39217c8bf80b0f14d0bbc6b654fdc43d0f9222aa980e8202482a
+DIST firefox-52.9.0esr-fr.xpi 442944 BLAKE2B 8affb0817ac4108ae5f8102d7b03a6d097f0b7aad9435d39649c75e2efd20c617d1939594849b40c4af563b81c07dea8a330eb6219b0177e37298adfc3d7b535 SHA512 dc23b244ea163571beb8aa2a89f8f3fa63cd7afe63b2eb18e215133c2adb4aaeee5b262e08d5b64877a3374d53ab962baa1e85dff178680122f0560e6f788cea
+DIST firefox-52.9.0esr-fy-NL.xpi 437699 BLAKE2B d31af005d37ce674e8397c8235cdc8718c8277708d788c342e53701a77589b5379a5868b67f3d8f68343bdd0029b3666622cda505e3b71b0488595724ebb921d SHA512 5d7a1b9ee9c95c785b73a618087bd3e9dda30dcd1396a3d107f0beb43caa67d75dc0def13f87177ff9a7a4f8d5c2b99b18834ddedf89e1d5013ae3ba33b219dc
+DIST firefox-52.9.0esr-ga-IE.xpi 450875 BLAKE2B d80b05ccf9935d634ca6562f4785493ba392f2cee27b0d841b80317b67782e3644a76e16d5c77e132a1c551363827e03e5321426cbd77c6f02acc5b183c269f8 SHA512 2db28cc2b5223c3d8b48eb58049634ef1e3a1a954bfd77a31e3fa12fb28535ab65605c18b6672e3b5805afc12a3739b1e7a9a5563cdc3267214fcdd25916dc7e
+DIST firefox-52.9.0esr-gd.xpi 439988 BLAKE2B f3e10713438a46a97281c56dc4fd58173684c7a38453bf88914b908dddd282f220bab86b14d5b164a795b301783fb5cf24250560c080ae8fd31e3d1f7f06794b SHA512 aef56c42cdd5a82349f9ded656a4c11a941ea3279fe0d2ee7a5229d33c67bc8b9ead560a4427c372e62385834b1b8ef1bcda2d50c92e94213a1f5135704d1f6b
+DIST firefox-52.9.0esr-gl.xpi 440039 BLAKE2B 619cd93b30e041a6dbacd7357e7f24be16d14435e6c834ccf4f10c326440bc603e2de2e13ff66a2b000093769ae375a3879798262bc4cd72b69d449c010e926c SHA512 7972dda939fa001100cb212adaf946dbbf7b03e54216f67dc45885ceb764d9b8a5e3b819360c55b59cd7c1aa6168c945186d39be8b5280b6c3ed50c816353835
+DIST firefox-52.9.0esr-gn.xpi 448957 BLAKE2B 11b41c30a8cdae5a10047c7aff568844a74462359cf9853e7b20d7e4c21aa1c39c226bddc8b15c5c7a445556faccc1982d524ca39287a4f9455756065e58b2f4 SHA512 211b1a2f31fdbec47b0e77023671b080f55da7b19699fb4e32e7004e0813bd20aa6cbbfe8a1abe5d47ab0c93d3b5a0bbce75db1714b0a217f2081288e6bd0d32
+DIST firefox-52.9.0esr-gu-IN.xpi 482104 BLAKE2B 3c14cf446fa5d2c1c8ee4c2b4db8806396339b571ce9e6e1d4b7db25ea8b567d7d22dea6b19269e152d55cd25dde715acfc9ee4ac7714c74ac0592f77256e97e SHA512 d86e9a8b606ded3fb76b233b1513cd38e99be8bc882e8b2b8c5df7a332fcb4fb03dfaa286e52387e93ad744fe94a30cac41e80b42ed63b5b4744049349b4a390
+DIST firefox-52.9.0esr-he.xpi 447928 BLAKE2B f4978a409669d8d99f46ce7479a8e9f44b289d3094277f612065a95b867a68fe4a443dbaedb50593f420abb6f3d6767a29b0eb140cad60d11b39a4fa8d123a5c SHA512 f628411851367bc7dcc417cddba235a05e4f12dece9684f241a35d0c9f9b1c8841f75cc9c52f1f25759f45f0e894f6d43e161381ac4ce3ebd71f0c07c71f115c
+DIST firefox-52.9.0esr-hi-IN.xpi 499257 BLAKE2B 3f3869f5265ec60c0a53ea11c61fa01508bf92817e97bc8a581f55c3b2bf0967ea767da48d644e246c93bda74221af6fe34fc6e1d44596795b3df17897514b0b SHA512 cbac7d87136df32d148682e1d82d8b0fd3c35720bdcc0b81be64ebd77a3ee1dc7e97bbdbb21d5afb3772eedd9d9202e17d915deca07463fcc1dc123a0ca7391a
+DIST firefox-52.9.0esr-hr.xpi 440149 BLAKE2B 2e9a24250360014d8de360efda6d18ab007ac6641784b9fa709879aa9c712a34f61481f8f10dece5cdaacaf37f0c91c69dfb3cfce9f18a482139024037fd2660 SHA512 cdb66c3a0ef98c8016c3bcd1d3cf3d450c558a14abc1196b157621c4492f07f23dc93f915cdbbfe59444d2155fe088418e6d9c4b7f1f73ffe5ad9bb48627113f
+DIST firefox-52.9.0esr-hsb.xpi 450002 BLAKE2B dcb67bf9a0162b7c2688f1ec3ab25b279e876dc957c1defbb8a84f4be2a1215dbd7cd5113fe9f3c98b3aa69703d1cc591d80c400074ffd3dc06e894e1f068e65 SHA512 159dfe8bbeef38643abb7392c57b427bc9e1bbf1402e6dca3ad8fd356f62702d67f499d2fd26be81b14cfc83a4b01169d9df9a0f29f0c085e88a921c252ff513
+DIST firefox-52.9.0esr-hu.xpi 451496 BLAKE2B 212e7bb20a4b98c6949160e39c4f47ea932fe415fa7ac0404b2515695e002e9fa0e75fba064a43c7098f950c65d1e1be92c8754c5d0bad775c6b4b46466413b9 SHA512 6f5a22354c7d9d9eb89611e94c80a9af7e6d7f0ef1b725bc16524ebe074c7e257e76255e831791640b98b19c055e82f8dd55be91697cf3d5e916c8199a05af2e
+DIST firefox-52.9.0esr-hy-AM.xpi 488414 BLAKE2B d819c52642f4415d2b5d08e356051968f9cdfaea32be30fff3f7fb047ac0b351fff5bb9a1544720489c43eb075a199466bf1a44b68c6bf75a3121d7e6d6046d5 SHA512 65b11ceaeeb469eae121094f3d0213c7bfdca597de41a0d4b9cedafcc7d88c96ab7d5b9b26278b043f9630bc9e07b2aed5fc159d42c17960225c886e8f031959
+DIST firefox-52.9.0esr-id.xpi 418764 BLAKE2B ddefdf19d968ca8e638af6732704ef705384321a6329d2c481f7fff5d368ad4038c34072192739f2059269852f9d6a811e126323e0fc7d4bfa23fbfa6302bf30 SHA512 141482d12faea6e43a504d8e31328c3062d82c8022745caa4bd23a73e5df9ed64d853752597599ae414049ce9ea632e44c8e86ed3ae707546f75f94f96fa8e42
+DIST firefox-52.9.0esr-is.xpi 435339 BLAKE2B d0766d545566a90f6a5375d11fc773e2ec1c8a85ca9ae98bd0ad606e37fc22e63450f26991f303add43ca5b79bf9848fd9479dc80b6ff9b5df21056e9afe8cac SHA512 b0221f06de4c601443048149803be8cd5c69e9f304d6d9eedcd37cbf6bd26d0604c5152616a1f870c74926380a725a4b842e82eb182d271bf0b51f03490e4b47
+DIST firefox-52.9.0esr-it.xpi 331969 BLAKE2B 98959c1dc78bf6bfd30699e38f903ca8b00065da68b46cbacc858a585bb65e4469ebc80b9dd8ad6811f30cb1de4888bd354229944295bbb19bcc109be4cfa843 SHA512 67e7f2078fe373e31df041b569d3c90b69b32527a681b14e32ccb9af625daabfc6e68fd95ec4362600f894e8342839da907b71e30c8ef843f2ceaf3b68c2ebcb
+DIST firefox-52.9.0esr-ja.xpi 488343 BLAKE2B 81418ab2289e83b81f33e6dc44cd1ed3fb4df15e572b23e94e2ab2b004aa09003459ba54b1d7fa014e06e877c71be88ea7eba53caceeec98c28668f49d052ac0 SHA512 e29fdfc09d780d9dfd952731fa12410a7709c3e2abfcde6b7d3e2bdf8476b2d0379390bf24590df5ad4815b85c4dce5b3a91d9c38caabe08f15f5cdaefbed809
+DIST firefox-52.9.0esr-ka.xpi 468023 BLAKE2B 3c167ea7fb92261d169bd3d23ee337534816e6ffa95538d202ac136dcf9a5c9a35eeddcd1bebd5d64ed43a9aa74981a9707ebf0bcde39c8c984200a8f77adc05 SHA512 bf0a4392b10479b7929786b6e8aa6a1065db19ee7c1c14fc472ecbf25d881558885b0905454c840bd25535b299253dcd154ed9c283720b3595e9d9ea33a99eb9
+DIST firefox-52.9.0esr-kab.xpi 437247 BLAKE2B dd9494064d6fcd4cdfd26b982800c4a9307b06110d5a95f3263eb62f04fef174e634b0fa92423644fc0bcd638b9192986ef189ff2bf977c6b89825b1f8ef184c SHA512 5d195c1f971a526881a1173542624ca9e3719e695a273421ceda8146f3d77d4a201f4906e4c0b5b29a14999447222818b1ec0b32959e710488bbb25092ac4c42
+DIST firefox-52.9.0esr-kk.xpi 496939 BLAKE2B ec2e0b3268761a9d87617551ea427d68c459dfacfeaeff1f0032a367ddf3e8ab69d0f5a6c9677e248787927a27945dbb0396455716611e75efe860efb8cb4558 SHA512 74ba2bf40a6a848639dec9503c2b3dcc827db260ee5afc58db127ea6a8c89e8b2e480313c2bd9a9de04e4fd2cef6cad478d331e5063447a9c4b73cc5b0def770
+DIST firefox-52.9.0esr-km.xpi 512989 BLAKE2B af9f819c635161285d8839b6920101208c20ac3b4022c052b03b01cce4ac06e630744268850ae9f2cb6a41e00f95e6b61ecb2b44e0f82a6a5d0d16c31706374f SHA512 87b6e4084321c996e1a806b1750f53158a4703ca5cd3042036bb6e961a1ac4c43f3163563c7e55b5c918559da3192e5e21d9c969e9f52e9d440dfa5f7248d02f
+DIST firefox-52.9.0esr-kn.xpi 512200 BLAKE2B 37bfa1e3ecbd4c506241b91d18f9369e061b0b31f130577b78e2955699a88095f47202bb810c81b4c152925149869266e803c6890185f2ecc539cd9c2604fa76 SHA512 97cbf192278271ac9a80c02373ab69addd9c4be9403347a2a9da2dfdba4ffb8f772d7b4ee680ce6f48a9b6afd725cd6ae2dc6726776b8becc78c59ec973f0d6a
+DIST firefox-52.9.0esr-ko.xpi 463630 BLAKE2B 1c782d20719976b59177e4f55794ae80bcac0c514fcd7f3e7ae1813f09ee29f0c8a28ef53443b6ec2d1f1c2bd913aa658782252d9a53b12dd2ec79ef29a9ee27 SHA512 b7533be9612d558f33a49fea3f071c84dbdc7a8faefe3791f458412d5107d5583534264166454170aff3daa9390bdee5d2f13c8b8077990e27631309f9820b5f
+DIST firefox-52.9.0esr-lij.xpi 413817 BLAKE2B f5b2a630847dda4cc54d0795c5da95ccd0722e4e7f825c892fd18747be3545d900794638c8fd5af7e9ef99e99a5e62e4c72ff78686012f2127287c3294cc4e16 SHA512 fb45a04b078de54c1d9d8c395b839465efa7ded0db0733b9946d84a0dd38e6ac02d5de4fecda8e15036575d64ff20899cecc767d6531d4640d198eadc6925150
+DIST firefox-52.9.0esr-lt.xpi 452235 BLAKE2B a9938a725c35f5e515faa6b502785056712bb4faff2b4da396a39746c4c0207984989dc52123d00f1565b71c0de07eb2175fc9991a4982f6d9f5e214bc64d8a5 SHA512 912e6391587794457f2b314f36c77f395d634e41a2a0be7956015f3395b59c94b3cb854c0c9f424f6283f683934aab88732dcf36fbcbc8a26c860f354a516e1f
+DIST firefox-52.9.0esr-lv.xpi 441096 BLAKE2B bf0ad68435f5224a24a4c994c592e38ed1e61d8200a71e47b6c4cdd3f8df4539a1780d840a6a46dde9265c10ee8097bfaa7e43061caa88f9552d2be4e334fa19 SHA512 a102f7d8e16ed9769b6d57a8fd7042e55b6fd66501f128e8d18ec22600997d66aba2c0ec0483fb7d5ed13fc539feeb64d93520f5298a982bf9840ab07932fba3
+DIST firefox-52.9.0esr-mai.xpi 492585 BLAKE2B 0e934428b6b81c427d340f373ab890c28ae8aa8c59e12ca2f53e8920196540088f3a656be43966e93c4fab90cb021d0a35db6e912f44b9c2b2e569ab9c558a4f SHA512 a545589ce072654cd68020da0bd31b48e780ebd9b2c2af0126bd96787c4a44931382de2b46f0d4e85c177f120263db5f1d1e10dfc961d0e420845a9e64e9368d
+DIST firefox-52.9.0esr-mk.xpi 488846 BLAKE2B 674db9b2a50abd25e3002d6f0d16431137140f66f0cc5fd9462e43169cfe0f0f35a3cebdc6180e2b4747ffbcbf629c53952d66cb7023bade03b363844372d6d8 SHA512 7e0aa7aaebc4913b3ba7b688caa4d1013df635e768cbc33f4a018301ceae352ae9485c3b31e1237d98922f12e45046c875b09ce9ce0d02efe17d36eab040d5b6
+DIST firefox-52.9.0esr-ml.xpi 516487 BLAKE2B 2eee153f1a39c6c7064997c80026344e53fdd58cc503c437f1326644ca11eec835675ec16ee84d64816545bde8c456c6ccca2076928a1ae42d27c09d58b0d99d SHA512 d4adebc0a02e2d4ce05b5e83f688f4bca3cd4dce4eec34421c52e9c2452e11ca93e228b4a6d75aa67a9d9242f0ed34c0e802c70cd1c7d413ff5e8eb9da588174
+DIST firefox-52.9.0esr-mr.xpi 495178 BLAKE2B c1670230e9b26cf3a7e5b276d9fde1791056184155cbf96d36068124d46e57f696bfbfacb6793e2d24a594ca60d0152a13f2e106ae8aa620ac05185cd294b663 SHA512 2d9e642e9ec6719857fdf72577482d6a1a06620c9631970d4d67c07311c2a62bbf93da183a969b4b8c8c76f319d411867a199f4e31613b777ab80ea213a99ad0
+DIST firefox-52.9.0esr-ms.xpi 428635 BLAKE2B ba80493bd652777b9da12f98d698098a4f92db9c205a4ffd523023ae57aa1e5c10a4a54778f42d6ef0fa6a7ad2302f51a16e41f66f57387335b21e9ec3427a6c SHA512 ed7501b04c69782b810540b81df84ad4db48947ce8cb0f39b6f61b3d7cee155ca913edc31282b27f35a9c6d2971da802eafee7dbfe275eba101d19555eba7074
+DIST firefox-52.9.0esr-nb-NO.xpi 427148 BLAKE2B dcf7467a6c975b175668f05768dd8d1f9fca226fcc4241c2fab0a70148d0471fb457fdcfaaebc46cab35328b13813a55fe320f034cf62f909f881326c43515ff SHA512 0a00c4c4aa1522ce68f3303f08c510215e5273d35e7f7406c19fb85ae08fde86553f2ea9c2787555ebc3aefa20f18f7ecf630ff1314f317f994207e74f4aa380
+DIST firefox-52.9.0esr-nl.xpi 432007 BLAKE2B 371536f670062f6ec72363f2bc80d90993970fa17f1ae9de4d3e148ffe8ee23e621b43ecb123251985fd6c946fd10eb7e0523615c52f23a0ea2f0d9d8741c24a SHA512 bb3e47867fd63a2d0a92ad4502d51c57c210e9d46974a954e6f1f11c796b59a808063ff843d6126b5988c62b79dee654792a996502acf636fb4967b385aff1ed
+DIST firefox-52.9.0esr-nn-NO.xpi 428645 BLAKE2B d0f230de22c79e8b36b585c0804a94cb48a1f75d775fdf84fde6b0f4c480a06e0622813ad3b0dd7e00c283ff76e7fdcee6f1b04ae748c01c12e532e49d88b0e0 SHA512 53cc4f9b1b77652dbbf3a3e3b665ab1b3e8fb5de4d02895104a2d10a9921729e6a2d5f8218d837f0af4ed041efcb376bdc1f6e6f8168a50921919d6883c0d765
+DIST firefox-52.9.0esr-or.xpi 489664 BLAKE2B 50423a7676ae406b32d4740c0503e1da4ca85335498f73d1f365636d6ad23f3e93491762bda54dd796a0b4c142f2e9936e460220ef62b28221d306873993be24 SHA512 10d32ec4ce701449e2bcf1b4189eb92d264f60cf023b2f570d51948beae90fbdff2727df94fd627a313795f7d92baaf3b0dd01b3db4fc73dd5ab2661f8c7868c
+DIST firefox-52.9.0esr-pa-IN.xpi 469325 BLAKE2B 5921ceb576a2ea1889bab794b946c13c40906f5670e95e514aafe3009f3f29375891ec570f80e4a3cf4ae51ae4bf9a039086eac3060304a04cff025fdd8b8bd2 SHA512 e31cd78bfbea7eb1814fe094b2ece31c09fd024b20e090ff32c5af061a399ca5aedebff14a2db5fa47d35bfa7e417acf559dd7e5e766a72b5f900d19c6eef07f
+DIST firefox-52.9.0esr-pl.xpi 352851 BLAKE2B 8c9b74f45b944ccb81483e25a4680bc03b02c7c85bab7ce922c69d215dd159a7cd9dd43fc90da081f631bb31ea5a7dbbbe5b02bb8c867013de47de4c8c0e63b6 SHA512 aa7f20805ee5acf997d613cc3001c255f362a6272fc59f1fa114f4fb57e901fcdd0aa8eb28ac588b30032165661dc5d2d075d8dd17fd7339774df1c233b641b0
+DIST firefox-52.9.0esr-pt-BR.xpi 430903 BLAKE2B 0f40107be529b3880129ebcdd1c5a56f5dcf4e70d25315015a8d9e8b68df098fdfd1a9d006577286e80dc1e4aa86146e060d4ca2ee4adcd1939ef56e4f0f82f1 SHA512 8643b1e7f5fd5a9b07b69a47b210a0e4d3749d03c5ab63d52517e88d126c6c76627fb09b31943bf35a5380864af8af5ff361092e7591aaa22070a373942068d4
+DIST firefox-52.9.0esr-pt-PT.xpi 436727 BLAKE2B 4a7aa318484d7c9e6ecc055b29d3f5b82d82b63e3763faa3f577864e96546e4de10fce6bad91a6a48f97f964bd16df72400144e9b345e253ef9b9c5c5ac827aa SHA512 eef828d957fc473ce6584a30f2ea3671ffc27d411ada3071336f1a2cd91f69dcf6d9f360a58efb7a40bdc5c8f5c413f3eaf2c4f430187f66c4701b8027a76352
+DIST firefox-52.9.0esr-rm.xpi 427342 BLAKE2B f66e25ea7da4af8adc91a54be715757c391df7b09957e5fab09dc4166d0324aa03a1acc19b83041d178b2bc3f9298e070da4e810eb95568fd4ac5aaeb930a766 SHA512 d927b6a139f385dce58efa16fade8f3c20912ceacfe565d3fd75ca68de3c57978bbc086aea990f835ecac2947fe66c555f6033871917b03ce1e14c4074d31ee6
+DIST firefox-52.9.0esr-ro.xpi 442585 BLAKE2B fc94f31cdef97ebc32098a38b2ac983431996dec99f8d11eea75bec52345d2fc4baef389e88ba5fe8c5757a15704a0b99cecc0bca870796dc643ffde569f4fe0 SHA512 476f07dd570526a21521d79c037caae93af7f3ee35fa02ed4979e9b9467ef6bfa92f1dcb55dbf903057111eccf384c309733d258096a6ac61698e22b4486d277
+DIST firefox-52.9.0esr-ru.xpi 395364 BLAKE2B e3d84689499863008c8e2232a66162aeb64549daafc4577cd71b6dccee3ec9c5d5acdc9f85d73a25992d2c67a85bfb82215dfcb07e97506f14c449506aac87b6 SHA512 7ab459b8a5612a2c9febcd092e6635058888323b72f243c39b22e066e2551b58d83c0168322499b2d1b452ee143e9de3c50b65667ee6c78879a3c91b5a55e91c
+DIST firefox-52.9.0esr-si.xpi 484605 BLAKE2B f6f7427c96f9c4a96514104ac6eb3442b99ce776a3f57d78c86ef242b66df8c75ca752d5ef1639e53b85e2a2c4e815d6e32c9521260acb6d171bada4997e056a SHA512 8af28e2638d5ea386e9590af105eaa4df3e233a7b823b8a77cf1e9d1ec76abeb2479140fb6367657fbc80c0baf304cd0a42f09183e4c062b48011580c948ae11
+DIST firefox-52.9.0esr-sk.xpi 455820 BLAKE2B 57f5df2145aa45f7990a1d5de43a9b270ba00a4d52822aa1d617f170d950b11af04a0cb35c92f6ba946e2068e829cbdaaae825adcf08759254bd27dce3a832c6 SHA512 38bcf41427b96c021bcfd4f738ff2c33bb29cf5178cf0011a4e5f6549eca85e4d04ac8bbbe38c964e962d07b10227ee072c7a22c2594ce73e4efdf8927fe1c8b
+DIST firefox-52.9.0esr-sl.xpi 433482 BLAKE2B cf3b598ad3daf81394f540d06663677fd1315a2896d69dfcf9aaa495f1d8bdd5f983dae8a4d0f0ab4226cbfef1c8a3d5e4e95b0feb985f2449ac75a07ff93c81 SHA512 0f17e2066f020a6117ecd5a1c7fbde6ace96cef3b0a14b481722a2d473e849ca9cff67500a33d56ddcb6ae420b5e7afe54483256c4d7fc11fa7b834c80172ff8
+DIST firefox-52.9.0esr-son.xpi 427860 BLAKE2B 1849c829572ee203a8210c150ec67276277618e3388110593c095bc18cfc9f61bc6bfa5c896b3569994a10aa8e51c19862296ef56e5ce5c969fc2c051807ef5f SHA512 6061748dd7b0694910c512d8af070e4e3372df47dd24ff707a9c4c0f9083cb0f60afe5eccc34c1bb7f091624604bc488a04a2e0682c321bcfad7bd6fc091a2cf
+DIST firefox-52.9.0esr-sq.xpi 440802 BLAKE2B 3279141a3c7dd3fb84f26c1fdcf44a48314dc403488454ef26375fd065db3578277824116f0dd4169e97a65ebd128d1a5324c2f6f288892339719d5bf00fa462 SHA512 edfae845dacbe0a43946bdd8ccd4b9a6117d8f96b874a40ab00e0be739c6071f8b7fb680792c1a6fc3f218d6f2f000f5577b4ea3c4474bf4f455cb1a038f188d
+DIST firefox-52.9.0esr-sr.xpi 463395 BLAKE2B 7cffd36615b93071b3eca75b581e055d23abab4aa41f53b473e4cf542696c381083176bfdf0a1120821b8f19389f2462bce76e4a795cc49263963d6ac011a1cd SHA512 069908acbfcfdc659b1da9148dd7b24af07b37112799f51c8c091f1af308f5f3d936b4473d0636c29550a3a8ed63e3f48638c981b7fe2d0b856a789c43e2f20b
+DIST firefox-52.9.0esr-sv-SE.xpi 433908 BLAKE2B c3e8553b7963d3d1d291ef9ea7a4c081044cc6f54a5eb359575b9e60ad6cd824e478bee9b1a07087d1250090bb70f3768dda5f2c59948a19b82aa543044e464d SHA512 94dae19d2d94673d266eea3e9d496c39426ed9ef578bc65fa74cb2ab23153c824467ce75bb6e76c8115bbe939d8b07d8f75350dc6dcdf9729c10ea4d0792eafa
+DIST firefox-52.9.0esr-ta.xpi 487541 BLAKE2B 41826cf559bb4e2d5c5471cf41e0903e81f5d1f01ced19a286905a13398cd43f25e9b3767324457b2a8a45061c7d203a09a4ed3d5aea7b55555bd3235f7db9a8 SHA512 e60a24bc6111ca3f3923c14ea59b4bb1a2bd8ea244bef2e0ecc123192f23f2e5e198b893811bc6edf4187fc11fb21935b4d8a35bc9010d5ac416770f4eec9e1a
+DIST firefox-52.9.0esr-te.xpi 507988 BLAKE2B e362ddf9ac9b30a54800a3654849793f34d13a2ac00f349e0f9f77b1b7f6b8ea63582a418f73b237c334bafdf108d5dffde6cf70a7f95dd8ad320555b866a235 SHA512 2506b3c7be92a75dfb9cf0d91c049efc383ef6c3a08806f93b8909a89badef175d994b4b68d67d3bea8e1dd45a5293a796777c6b5b8764718a6ce3e604f351ba
+DIST firefox-52.9.0esr-th.xpi 482022 BLAKE2B 19b036e40247d3eaf2c3098894ddb34e42e55fd261314c63192eec512d4aba1a43230be22ce5ad539a34d17dfc8a68d01535631c17cfcd90a38a9ca11f779400 SHA512 3c4c849a8b427f2e73d40ee8967713f5449b695a12e77c21f8d09ce18d605f68c0cdcaaf7edc6aa8d18f7c8e8e2a3467f6e1ed8b0f124ef43cc5c24a70980e5d
+DIST firefox-52.9.0esr-tr.xpi 443673 BLAKE2B df7fb2fc035db9b965aba2ca5fe4658c9e4f10c09f15036449155e07f805ba3f09b0ead560df76aeaaf786d0d3d4fe45001c1b5c817fa0866c25abcf363a2b64 SHA512 3b36df56158713957a2b8b257623cf98a1b7955d079cf677b17f92e59639c69f144dd856688436ab10cfcadb1285173d73af8119e96b52e7a266f72286672c46
+DIST firefox-52.9.0esr-uk.xpi 495095 BLAKE2B 72202898138dfcd667c15b79fe22e9a5fb17b96473d674deea34c749477f1f09532a3c088d40c5d61d66aad51f63a1761ea534997780450eb7bf75a77eccfa8d SHA512 ab4d62f1198eeca113e68898e1af280644518cf934c94445d961cdcb8219ce9235d4f5208de8b27db2a6c741ab1f627f396b88e3414043e0d511e61d975b4c31
+DIST firefox-52.9.0esr-uz.xpi 440565 BLAKE2B 848c6fc36556fd89d026bd62b3b6005da3bc44b10c814492fed17d96ef92df5827fb230c036f606afa13e9066dde27a2ab5066f270bc27e84850e75a58b3335a SHA512 8f5df148343de6d01eb5125fe2933a349c491a63ad4f8a4b6f60efe7555bd4512c84160b24d653e5bd1ea48f9cc4a9ad900fb67fb5cd96b1cfc3c492c611ab83
+DIST firefox-52.9.0esr-vi.xpi 450805 BLAKE2B 9dacebac235a738cf7f068e16335b8b15ca977ec4a1f8787ce1bf2998442b2a80b4d027f70d3df0f1e565566e3530fd4aca4dc9813dea13786b6b74590c53142 SHA512 cff7ae8ef44ea5d19710f7e604847d7020e1d5ad4b33ccb990df6d37fa52da296f3fbebf53dab0573bacf57e20c3cb9fee45aa0f276a1693aebc4489104ca771
+DIST firefox-52.9.0esr-xh.xpi 441173 BLAKE2B 3e1b907a7659c639d17d25a1825f472853242891d55f6a5ad93c1f5a12e12f05706173dc6ef5594f27e049d9b9a4c748d7371780843f1da204c5d93a39213197 SHA512 54ac64f0c119ab42d4f87dd2663ba7e14310c215a1ea76acd463b4c1a9073491f8df8c9b03d391ecc6f9ffbbdccc3756a7b13ed559336a6d1527fad3097ddb53
+DIST firefox-52.9.0esr-zh-CN.xpi 461679 BLAKE2B 745b2cfb86e93a379e13fa73b7e3721bae06694768316e31a2aed608e3050f585a9603375cd35b90affca11b3e5e44401b1e676f9c8050ade287ed0feb442a7a SHA512 ca62e0e2ab075086741159b185b5eba44c6bdfc29fd9ba1cf25808f127c1aed8875ea61c1c33e4f742fa26af4455a8873730f96ad9c7bec1f66aed0595f253f1
+DIST firefox-52.9.0esr-zh-TW.xpi 453068 BLAKE2B 84e08ea4fd119db1f1c6f84b212fbbb5d6999c5ac6010c0e7836d8734726d281107f3d91ba7bac1aeaf855dc36d3b018ae3913dccdbe2b11aad02a8d8aaa893c SHA512 a99042ef7d00820e341dfcf2c45a8b5bd77eaf2cc8ecf0ff5ee982b7bd9beac7cb4bf051c57ef3b7a5d9b67cd35858dca396d21e65718e248f3b1fdba5273999
+DIST firefox-52.9.0esr.source.tar.xz 214087304 BLAKE2B eba5305ae3fc9a4306cbcbcd8d4610272ca5b75e369367961e9d94919b003de8aae8f3c58fe1c628787d98105a85fab575ae2b051e92a0b35bbb8b402c100766 SHA512 bfca42668ca78a12a9fb56368f4aae5334b1f7a71966fbba4c32b9c5e6597aac79a6e340ac3966779d2d5563eb47c054ab33cc40bfb7306172138ccbd3adb2b9
+EBUILD firefox-52.9.0-r2.ebuild 13549 BLAKE2B 281f186f41637bfb17ebefe56ee09b2da3c2fce051bb62fed0bfdacc390e1f69b50b50e9fc581aac90782e083bf3e0e18d8e049b3234684dcadb201eaf21b239 SHA512 f15de8a23a8e6350b93d49a773b664361752f2971b865e1e9b9464883c5df59f5f717fabfb2ad5ba42d208da2fae3876a9205a68303daa6a82d729a85992ba60
diff --git a/www-client/firefox/files/firefox-52.9.0-blessings-TERM.patch b/www-client/firefox/files/firefox-52.9.0-blessings-TERM.patch
new file mode 100644 (file)
index 0000000..271a62a
--- /dev/null
@@ -0,0 +1,56 @@
+https://github.com/erikrose/blessings/pull/137
+
+Fixes: https://bugs.gentoo.org/654316
+
+From 5fefc65c306cf9ec492e7b422d6bb4842385afbc Mon Sep 17 00:00:00 2001
+From: Jay Kamat <jaygkamat@gmail.com>
+Date: Fri, 24 Aug 2018 11:11:57 -0700
+Subject: [PATCH 1/2] Fix error when TERM is unset or improperly set
+
+---
+ blessings/__init__.py | 9 +++++++--
+ 1 file changed, 7 insertions(+), 2 deletions(-)
+
+diff --git a/blessings/__init__.py b/blessings/__init__.py
+index 98b75c3..3872b5f 100644
+--- a/python/blessings/blessings/__init__.py
++++ b/python/blessings/blessings/__init__.py
+@@ -94,8 +94,13 @@ def __init__(self, kind=None, stream=None, force_styling=False):
+             # init sequences to the stream if it has a file descriptor, and
+             # send them to stdout as a fallback, since they have to go
+             # somewhere.
+-            setupterm(kind or environ.get('TERM', 'unknown'),
+-                      self._init_descriptor)
++            try:
++                setupterm(kind or environ.get('TERM', 'dumb') or 'dumb',
++                          self._init_descriptor)
++            except:
++                # There was an error setting up the terminal, either curses is
++                # not supported or TERM is incorrectly set. Fall back to dumb.
++                self._does_styling = False
+         self.stream = stream
+
+From d885df78c6f931abf3259343aaaa897e16c8cba1 Mon Sep 17 00:00:00 2001
+From: Jay Kamat <jaygkamat@gmail.com>
+Date: Sat, 1 Sep 2018 13:20:32 -0700
+Subject: [PATCH 2/2] Explicitly catch curses.error
+
+---
+ blessings/__init__.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/blessings/__init__.py b/blessings/__init__.py
+index 3872b5f..fdceb09 100644
+--- a/python/blessings/blessings/__init__.py
++++ b/python/blessings/blessings/__init__.py
+@@ -97,7 +97,7 @@ def __init__(self, kind=None, stream=None, force_styling=False):
+             try:
+                 setupterm(kind or environ.get('TERM', 'dumb'),
+                           self._init_descriptor)
+-            except:
++            except curses.error:
+                 # There was an error setting up the terminal, either curses is
+                 # not supported or TERM is incorrectly set. Fall back to dumb.
+                 self._does_styling = False
diff --git a/www-client/firefox/files/firefox-52.9.0-fix-idb-name-conflict.patch b/www-client/firefox/files/firefox-52.9.0-fix-idb-name-conflict.patch
new file mode 100644 (file)
index 0000000..8026f62
--- /dev/null
@@ -0,0 +1,226 @@
+diff --git a/dom/indexedDB/ActorsParent.cpp b/dom/indexedDB/ActorsParent.cpp
+index 1118ece64..ac8e28828 100644
+--- a/dom/indexedDB/ActorsParent.cpp
++++ b/dom/indexedDB/ActorsParent.cpp
+@@ -11529,7 +11529,7 @@ AutoSavepoint::~AutoSavepoint()
+     MOZ_ASSERT(mDEBUGTransaction->GetMode() == IDBTransaction::READ_WRITE ||
+                mDEBUGTransaction->GetMode() ==
+                  IDBTransaction::READ_WRITE_FLUSH ||
+-               mDEBUGTransaction->GetMode() == IDBTransaction::CLEANUP ||
++               mDEBUGTransaction->GetMode() == IDBTransaction::IDB_MODE_CLEANUP ||
+                mDEBUGTransaction->GetMode() == IDBTransaction::VERSION_CHANGE);
+     if (NS_FAILED(mConnection->RollbackSavepoint())) {
+@@ -11545,7 +11545,7 @@ AutoSavepoint::Start(const TransactionBase* aTransaction)
+   MOZ_ASSERT(aTransaction);
+   MOZ_ASSERT(aTransaction->GetMode() == IDBTransaction::READ_WRITE ||
+              aTransaction->GetMode() == IDBTransaction::READ_WRITE_FLUSH ||
+-             aTransaction->GetMode() == IDBTransaction::CLEANUP ||
++             aTransaction->GetMode() == IDBTransaction::IDB_MODE_CLEANUP ||
+              aTransaction->GetMode() == IDBTransaction::VERSION_CHANGE);
+   DatabaseConnection* connection = aTransaction->GetDatabase()->GetConnection();
+@@ -14692,7 +14692,7 @@ Database::AllocPBackgroundIDBTransactionParent(
+   if (NS_WARN_IF(aMode != IDBTransaction::READ_ONLY &&
+                  aMode != IDBTransaction::READ_WRITE &&
+                  aMode != IDBTransaction::READ_WRITE_FLUSH &&
+-                 aMode != IDBTransaction::CLEANUP)) {
++                 aMode != IDBTransaction::IDB_MODE_CLEANUP)) {
+     ASSERT_UNLESS_FUZZING();
+     return nullptr;
+   }
+@@ -14701,7 +14701,7 @@ Database::AllocPBackgroundIDBTransactionParent(
+   // has write access.
+   if (NS_WARN_IF((aMode == IDBTransaction::READ_WRITE ||
+                   aMode == IDBTransaction::READ_WRITE_FLUSH ||
+-                  aMode == IDBTransaction::CLEANUP) &&
++                  aMode == IDBTransaction::IDB_MODE_CLEANUP) &&
+                  mPrincipalInfo.type() == PrincipalInfo::TSystemPrincipalInfo &&
+                  !mChromeWriteAccessAllowed)) {
+     return nullptr;
+@@ -14767,7 +14767,7 @@ Database::RecvPBackgroundIDBTransactionConstructor(
+   MOZ_ASSERT(aMode == IDBTransaction::READ_ONLY ||
+              aMode == IDBTransaction::READ_WRITE ||
+              aMode == IDBTransaction::READ_WRITE_FLUSH ||
+-             aMode == IDBTransaction::CLEANUP);
++             aMode == IDBTransaction::IDB_MODE_CLEANUP);
+   MOZ_ASSERT(!mClosed);
+   if (IsInvalidated()) {
+@@ -14926,7 +14926,7 @@ StartTransactionOp::DoDatabaseWork(DatabaseConnection* aConnection)
+   Transaction()->SetActiveOnConnectionThread();
+-  if (Transaction()->GetMode() == IDBTransaction::CLEANUP) {
++  if (Transaction()->GetMode() == IDBTransaction::IDB_MODE_CLEANUP) {
+     nsresult rv = aConnection->DisableQuotaChecks();
+     if (NS_WARN_IF(NS_FAILED(rv))) {
+       return rv;
+@@ -15245,7 +15245,7 @@ TransactionBase::VerifyRequestParams(const RequestParams& aParams) const
+     case RequestParams::TObjectStoreDeleteParams: {
+       if (NS_WARN_IF(mMode != IDBTransaction::READ_WRITE &&
+                      mMode != IDBTransaction::READ_WRITE_FLUSH &&
+-                     mMode != IDBTransaction::CLEANUP &&
++                     mMode != IDBTransaction::IDB_MODE_CLEANUP &&
+                      mMode != IDBTransaction::VERSION_CHANGE)) {
+         ASSERT_UNLESS_FUZZING();
+         return false;
+@@ -15269,7 +15269,7 @@ TransactionBase::VerifyRequestParams(const RequestParams& aParams) const
+     case RequestParams::TObjectStoreClearParams: {
+       if (NS_WARN_IF(mMode != IDBTransaction::READ_WRITE &&
+                      mMode != IDBTransaction::READ_WRITE_FLUSH &&
+-                     mMode != IDBTransaction::CLEANUP &&
++                     mMode != IDBTransaction::IDB_MODE_CLEANUP &&
+                      mMode != IDBTransaction::VERSION_CHANGE)) {
+         ASSERT_UNLESS_FUZZING();
+         return false;
+@@ -23959,7 +23959,7 @@ CommitOp::WriteAutoIncrementCounts()
+   mTransaction->AssertIsOnConnectionThread();
+   MOZ_ASSERT(mTransaction->GetMode() == IDBTransaction::READ_WRITE ||
+              mTransaction->GetMode() == IDBTransaction::READ_WRITE_FLUSH ||
+-             mTransaction->GetMode() == IDBTransaction::CLEANUP ||
++             mTransaction->GetMode() == IDBTransaction::IDB_MODE_CLEANUP ||
+              mTransaction->GetMode() == IDBTransaction::VERSION_CHANGE);
+   const nsTArray<RefPtr<FullObjectStoreMetadata>>& metadataArray =
+@@ -24027,7 +24027,7 @@ CommitOp::CommitOrRollbackAutoIncrementCounts()
+   mTransaction->AssertIsOnConnectionThread();
+   MOZ_ASSERT(mTransaction->GetMode() == IDBTransaction::READ_WRITE ||
+              mTransaction->GetMode() == IDBTransaction::READ_WRITE_FLUSH ||
+-             mTransaction->GetMode() == IDBTransaction::CLEANUP ||
++             mTransaction->GetMode() == IDBTransaction::IDB_MODE_CLEANUP ||
+              mTransaction->GetMode() == IDBTransaction::VERSION_CHANGE);
+   nsTArray<RefPtr<FullObjectStoreMetadata>>& metadataArray =
+@@ -24161,7 +24161,7 @@ CommitOp::Run()
+       connection->FinishWriteTransaction();
+-      if (mTransaction->GetMode() == IDBTransaction::CLEANUP) {
++      if (mTransaction->GetMode() == IDBTransaction::IDB_MODE_CLEANUP) {
+         connection->DoIdleProcessing(/* aNeedsCheckpoint */ true);
+         connection->EnableQuotaChecks();
+diff --git a/dom/indexedDB/IDBCursor.cpp b/dom/indexedDB/IDBCursor.cpp
+index e5d8913f9..4ef7e8c7c 100644
+--- a/dom/indexedDB/IDBCursor.cpp
++++ b/dom/indexedDB/IDBCursor.cpp
+@@ -696,7 +696,7 @@ IDBCursor::Update(JSContext* aCx, JS::Handle<JS::Value> aValue,
+     return nullptr;
+   }
+-  if (mTransaction->GetMode() == IDBTransaction::CLEANUP ||
++  if (mTransaction->GetMode() == IDBTransaction::IDB_MODE_CLEANUP ||
+       IsSourceDeleted() ||
+       !mHaveValue ||
+       mType == Type_ObjectStoreKey ||
+diff --git a/dom/indexedDB/IDBDatabase.cpp b/dom/indexedDB/IDBDatabase.cpp
+index 5592e7f93..49f18093d 100644
+--- a/dom/indexedDB/IDBDatabase.cpp
++++ b/dom/indexedDB/IDBDatabase.cpp
+@@ -668,7 +668,7 @@ IDBDatabase::Transaction(JSContext* aCx,
+       break;
+     case IDBTransactionMode::Readwrite:
+       if (mQuotaExceeded) {
+-        mode = IDBTransaction::CLEANUP;
++        mode = IDBTransaction::IDB_MODE_CLEANUP;
+         mQuotaExceeded = false;
+       } else {
+         mode = IDBTransaction::READ_WRITE;
+@@ -678,7 +678,7 @@ IDBDatabase::Transaction(JSContext* aCx,
+       mode = IDBTransaction::READ_WRITE_FLUSH;
+       break;
+     case IDBTransactionMode::Cleanup:
+-      mode = IDBTransaction::CLEANUP;
++      mode = IDBTransaction::IDB_MODE_CLEANUP;
+       mQuotaExceeded = false;
+       break;
+     case IDBTransactionMode::Versionchange:
+@@ -713,7 +713,7 @@ IDBDatabase::Transaction(JSContext* aCx,
+   transaction->SetBackgroundActor(actor);
+-  if (mode == IDBTransaction::CLEANUP) {
++  if (mode == IDBTransaction::IDB_MODE_CLEANUP) {
+     ExpireFileActors(/* aExpireAll */ true);
+   }
+@@ -863,7 +863,7 @@ IDBDatabase::AbortTransactions(bool aShouldWarn)
+             // We warn for any transactions that could have written data.
+             case IDBTransaction::READ_WRITE:
+             case IDBTransaction::READ_WRITE_FLUSH:
+-            case IDBTransaction::CLEANUP:
++            case IDBTransaction::IDB_MODE_CLEANUP:
+             case IDBTransaction::VERSION_CHANGE:
+               transactionsThatNeedWarning.AppendElement(transaction);
+               break;
+diff --git a/dom/indexedDB/IDBObjectStore.cpp b/dom/indexedDB/IDBObjectStore.cpp
+index c28979c87..4694746cc 100644
+--- a/dom/indexedDB/IDBObjectStore.cpp
++++ b/dom/indexedDB/IDBObjectStore.cpp
+@@ -1406,7 +1406,7 @@ IDBObjectStore::AddOrPut(JSContext* aCx,
+   MOZ_ASSERT(aCx);
+   MOZ_ASSERT_IF(aFromCursor, aOverwrite);
+-  if (mTransaction->GetMode() == IDBTransaction::CLEANUP ||
++  if (mTransaction->GetMode() == IDBTransaction::IDB_MODE_CLEANUP ||
+       mDeletedSpec) {
+     aRv.Throw(NS_ERROR_DOM_INDEXEDDB_NOT_ALLOWED_ERR);
+     return nullptr;
+diff --git a/dom/indexedDB/IDBTransaction.cpp b/dom/indexedDB/IDBTransaction.cpp
+index a50489898..ef9d02414 100644
+--- a/dom/indexedDB/IDBTransaction.cpp
++++ b/dom/indexedDB/IDBTransaction.cpp
+@@ -216,7 +216,7 @@ IDBTransaction::Create(JSContext* aCx, IDBDatabase* aDatabase,
+   MOZ_ASSERT(aMode == READ_ONLY ||
+              aMode == READ_WRITE ||
+              aMode == READ_WRITE_FLUSH ||
+-             aMode == CLEANUP);
++             aMode == IDB_MODE_CLEANUP);
+   RefPtr<IDBTransaction> transaction =
+     new IDBTransaction(aDatabase, aObjectStoreNames, aMode);
+@@ -871,7 +871,7 @@ IDBTransaction::GetMode(ErrorResult& aRv) const
+     case READ_WRITE_FLUSH:
+       return IDBTransactionMode::Readwriteflush;
+-    case CLEANUP:
++    case IDB_MODE_CLEANUP:
+       return IDBTransactionMode::Cleanup;
+     case VERSION_CHANGE:
+diff --git a/dom/indexedDB/IDBTransaction.h b/dom/indexedDB/IDBTransaction.h
+index 1c3e8be99..4fc189902 100644
+--- a/dom/indexedDB/IDBTransaction.h
++++ b/dom/indexedDB/IDBTransaction.h
+@@ -59,7 +59,7 @@ public:
+     READ_ONLY = 0,
+     READ_WRITE,
+     READ_WRITE_FLUSH,
+-    CLEANUP,
++    IDB_MODE_CLEANUP,
+     VERSION_CHANGE,
+     // Only needed for IPC serialization helper, should never be used in code.
+@@ -189,7 +189,7 @@ public:
+     AssertIsOnOwningThread();
+     return mMode == READ_WRITE ||
+            mMode == READ_WRITE_FLUSH ||
+-           mMode == CLEANUP ||
++           mMode == IDB_MODE_CLEANUP ||
+            mMode == VERSION_CHANGE;
+   }
+diff --git a/dom/indexedDB/ProfilerHelpers.h b/dom/indexedDB/ProfilerHelpers.h
+index 63fdafcce..b9192d5d6 100644
+--- a/dom/indexedDB/ProfilerHelpers.h
++++ b/dom/indexedDB/ProfilerHelpers.h
+@@ -129,7 +129,7 @@ public:
+       case IDBTransaction::READ_WRITE_FLUSH:
+         AppendLiteral("\"readwriteflush\"");
+         break;
+-      case IDBTransaction::CLEANUP:
++      case IDBTransaction::IDB_MODE_CLEANUP:
+         AppendLiteral("\"cleanup\"");
+         break;
+       case IDBTransaction::VERSION_CHANGE:
diff --git a/www-client/firefox/files/firefox-52.9.0-fix-missing-includes.patch b/www-client/firefox/files/firefox-52.9.0-fix-missing-includes.patch
new file mode 100644 (file)
index 0000000..7f57d32
--- /dev/null
@@ -0,0 +1,37 @@
+diff --git a/gfx/2d/BaseRect.h b/gfx/2d/BaseRect.h
+index 57d01ba09..b1eed9ddb 100644
+--- a/gfx/2d/BaseRect.h
++++ b/gfx/2d/BaseRect.h
+@@ -9,6 +9,7 @@
+ #include <algorithm>
+ #include <cmath>
+ #include <ostream>
++#include <limits>
+ #include "mozilla/Assertions.h"
+ #include "mozilla/FloatingPoint.h"
+diff --git a/gfx/2d/Matrix.h b/gfx/2d/Matrix.h
+index 22a01ca10..e221ba3d2 100644
+--- a/gfx/2d/Matrix.h
++++ b/gfx/2d/Matrix.h
+@@ -13,6 +13,7 @@
+ #include "Quaternion.h"
+ #include <iosfwd>
+ #include <math.h>
++#include <limits>
+ #include "mozilla/Attributes.h"
+ #include "mozilla/DebugOnly.h"
+ #include "mozilla/FloatingPoint.h"
+diff --git a/media/webrtc/trunk/webrtc/modules/audio_coding/codecs/opus/audio_encoder_opus.cc b/media/webrtc/trunk/webrtc/modules/audio_coding/codecs/opus/audio_encoder_opus.cc
+index 941e635b1..3668a5047 100644
+--- a/media/webrtc/trunk/webrtc/modules/audio_coding/codecs/opus/audio_encoder_opus.cc
++++ b/media/webrtc/trunk/webrtc/modules/audio_coding/codecs/opus/audio_encoder_opus.cc
+@@ -8,6 +8,8 @@
+  *  be found in the AUTHORS file in the root of the source tree.
+  */
++#include <limits>
++
+ #include "webrtc/modules/audio_coding/codecs/opus/interface/audio_encoder_opus.h"
+ #include "webrtc/base/checks.h"
diff --git a/www-client/firefox/files/firefox-52.9.0-fix-thebes-templates.patch b/www-client/firefox/files/firefox-52.9.0-fix-thebes-templates.patch
new file mode 100644 (file)
index 0000000..ac62839
--- /dev/null
@@ -0,0 +1,183 @@
+diff --git a/gfx/thebes/gfxFont.cpp b/gfx/thebes/gfxFont.cpp
+index d0b747fff..9ec629285 100644
+--- a/gfx/thebes/gfxFont.cpp
++++ b/gfx/thebes/gfxFont.cpp
+@@ -2535,85 +2535,6 @@ IsBoundarySpace(char16_t aChar, char16_t aNextChar)
+     return 0;
+ }
+-#ifdef __GNUC__
+-#define GFX_MAYBE_UNUSED __attribute__((unused))
+-#else
+-#define GFX_MAYBE_UNUSED
+-#endif
+-
+-template<typename T>
+-gfxShapedWord*
+-gfxFont::GetShapedWord(DrawTarget *aDrawTarget,
+-                       const T    *aText,
+-                       uint32_t    aLength,
+-                       uint32_t    aHash,
+-                       Script      aRunScript,
+-                       bool        aVertical,
+-                       int32_t     aAppUnitsPerDevUnit,
+-                       uint32_t    aFlags,
+-                       gfxTextPerfMetrics *aTextPerf GFX_MAYBE_UNUSED)
+-{
+-    // if the cache is getting too big, flush it and start over
+-    uint32_t wordCacheMaxEntries =
+-        gfxPlatform::GetPlatform()->WordCacheMaxEntries();
+-    if (mWordCache->Count() > wordCacheMaxEntries) {
+-        NS_WARNING("flushing shaped-word cache");
+-        ClearCachedWords();
+-    }
+-
+-    // if there's a cached entry for this word, just return it
+-    CacheHashKey key(aText, aLength, aHash,
+-                     aRunScript,
+-                     aAppUnitsPerDevUnit,
+-                     aFlags);
+-
+-    CacheHashEntry *entry = mWordCache->PutEntry(key);
+-    if (!entry) {
+-        NS_WARNING("failed to create word cache entry - expect missing text");
+-        return nullptr;
+-    }
+-    gfxShapedWord* sw = entry->mShapedWord.get();
+-
+-    bool isContent = !mStyle.systemFont;
+-
+-    if (sw) {
+-        sw->ResetAge();
+-        Telemetry::Accumulate((isContent ? Telemetry::WORD_CACHE_HITS_CONTENT :
+-                                   Telemetry::WORD_CACHE_HITS_CHROME),
+-                              aLength);
+-#ifndef RELEASE_OR_BETA
+-        if (aTextPerf) {
+-            aTextPerf->current.wordCacheHit++;
+-        }
+-#endif
+-        return sw;
+-    }
+-
+-    Telemetry::Accumulate((isContent ? Telemetry::WORD_CACHE_MISSES_CONTENT :
+-                               Telemetry::WORD_CACHE_MISSES_CHROME),
+-                          aLength);
+-#ifndef RELEASE_OR_BETA
+-    if (aTextPerf) {
+-        aTextPerf->current.wordCacheMiss++;
+-    }
+-#endif
+-
+-    sw = gfxShapedWord::Create(aText, aLength, aRunScript, aAppUnitsPerDevUnit,
+-                               aFlags);
+-    entry->mShapedWord.reset(sw);
+-    if (!sw) {
+-        NS_WARNING("failed to create gfxShapedWord - expect missing text");
+-        return nullptr;
+-    }
+-
+-    DebugOnly<bool> ok =
+-        ShapeText(aDrawTarget, aText, 0, aLength, aRunScript, aVertical, sw);
+-
+-    NS_WARNING_ASSERTION(ok, "failed to shape word - expect garbled text");
+-
+-    return sw;
+-}
+-
+ bool
+ gfxFont::CacheHashEntry::KeyEquals(const KeyTypePointer aKey) const
+ {
+diff --git a/gfx/thebes/gfxFont.h b/gfx/thebes/gfxFont.h
+index ead0b7666..c38d06675 100644
+--- a/gfx/thebes/gfxFont.h
++++ b/gfx/thebes/gfxFont.h
+@@ -2220,4 +2220,88 @@ struct EmphasisMarkDrawParams {
+     bool isVertical;
+ };
++#include "mozilla/Telemetry.h"
++#include "mozilla/DebugOnly.h"
++
++#ifdef __GNUC__
++#define GFX_MAYBE_UNUSED __attribute__((unused))
++#else
++#define GFX_MAYBE_UNUSED
++#endif
++
++template<typename T>
++gfxShapedWord*
++gfxFont::GetShapedWord(DrawTarget *aDrawTarget,
++                       const T    *aText,
++                       uint32_t    aLength,
++                       uint32_t    aHash,
++                       Script      aRunScript,
++                       bool        aVertical,
++                       int32_t     aAppUnitsPerDevUnit,
++                       uint32_t    aFlags,
++                       gfxTextPerfMetrics *aTextPerf GFX_MAYBE_UNUSED)
++{
++    using namespace mozilla;
++
++    // if the cache is getting too big, flush it and start over
++    uint32_t wordCacheMaxEntries =
++        gfxPlatform::GetPlatform()->WordCacheMaxEntries();
++    if (mWordCache->Count() > wordCacheMaxEntries) {
++        NS_WARNING("flushing shaped-word cache");
++        ClearCachedWords();
++    }
++
++    // if there's a cached entry for this word, just return it
++    CacheHashKey key(aText, aLength, aHash,
++                     aRunScript,
++                     aAppUnitsPerDevUnit,
++                     aFlags);
++
++    CacheHashEntry *entry = mWordCache->PutEntry(key);
++    if (!entry) {
++        NS_WARNING("failed to create word cache entry - expect missing text");
++        return nullptr;
++    }
++    gfxShapedWord* sw = entry->mShapedWord.get();
++
++    bool isContent = !mStyle.systemFont;
++
++    if (sw) {
++        sw->ResetAge();
++        Telemetry::Accumulate((isContent ? Telemetry::WORD_CACHE_HITS_CONTENT :
++                                   Telemetry::WORD_CACHE_HITS_CHROME),
++                              aLength);
++#ifndef RELEASE_OR_BETA
++        if (aTextPerf) {
++            aTextPerf->current.wordCacheHit++;
++        }
++#endif
++        return sw;
++    }
++
++    Telemetry::Accumulate((isContent ? Telemetry::WORD_CACHE_MISSES_CONTENT :
++                               Telemetry::WORD_CACHE_MISSES_CHROME),
++                          aLength);
++#ifndef RELEASE_OR_BETA
++    if (aTextPerf) {
++        aTextPerf->current.wordCacheMiss++;
++    }
++#endif
++
++    sw = gfxShapedWord::Create(aText, aLength, aRunScript, aAppUnitsPerDevUnit,
++                               aFlags);
++    entry->mShapedWord.reset(sw);
++    if (!sw) {
++        NS_WARNING("failed to create gfxShapedWord - expect missing text");
++        return nullptr;
++    }
++
++    DebugOnly<bool> ok =
++        ShapeText(aDrawTarget, aText, 0, aLength, aRunScript, aVertical, sw);
++
++    NS_WARNING_ASSERTION(ok, "failed to shape word - expect garbled text");
++
++    return sw;
++}
++
+ #endif
diff --git a/www-client/firefox/files/firefox-52.9.0-glibc-2.30.patch b/www-client/firefox/files/firefox-52.9.0-glibc-2.30.patch
new file mode 100644 (file)
index 0000000..caa1141
--- /dev/null
@@ -0,0 +1,13 @@
+diff --git a/tools/profiler/core/platform.h b/tools/profiler/core/platform.h
+index 2e736d97c..8f9c2ede3 100644
+--- a/tools/profiler/core/platform.h
++++ b/tools/profiler/core/platform.h
+@@ -61,7 +61,7 @@
+ // We need a definition of gettid(), but Linux libc implementations don't
+ // provide a wrapper for it (except for Bionic)
+-#if defined(__linux__)
++#if defined(__linux__) && __GLIBC__ <= 2 && __GLIBC_MINOR__ < 30
+ #include <unistd.h>
+ #if !defined(__BIONIC__)
+ #include <sys/syscall.h>
diff --git a/www-client/firefox/files/firefox-52.9.0-glibc-2.36.patch b/www-client/firefox/files/firefox-52.9.0-glibc-2.36.patch
new file mode 100644 (file)
index 0000000..774e903
--- /dev/null
@@ -0,0 +1,61 @@
+diff --git a/ipc/chromium/src/third_party/libevent/evutil_rand.c b/ipc/chromium/src/third_party/libevent/evutil_rand.c
+index 3bab23121..c1e8a98ef 100644
+--- a/ipc/chromium/src/third_party/libevent/evutil_rand.c
++++ b/ipc/chromium/src/third_party/libevent/evutil_rand.c
+@@ -39,7 +39,7 @@
+ #include "util-internal.h"
+ #include "evthread-internal.h"
+-#ifdef _EVENT_HAVE_ARC4RANDOM
++#if _EVENT_HAVE_ARC4RANDOM
+ #include <stdlib.h>
+ #include <string.h>
+ int
+@@ -58,7 +58,7 @@ evutil_secure_rng_global_setup_locks_(const int enable_locks)
+ static void
+ ev_arc4random_buf(void *buf, size_t n)
+ {
+-#if defined(_EVENT_HAVE_ARC4RANDOM_BUF) && !(defined(__APPLE__) || defined(__ANDROID__))
++#if _EVENT_HAVE_ARC4RANDOM_BUF && !(defined(__APPLE__) || defined(__ANDROID__))
+       arc4random_buf(buf, n);
+ #else
+       unsigned char *b = buf;
+@@ -139,7 +139,7 @@ evutil_secure_rng_get_bytes(void *buf, size_t n)
+       ev_arc4random_buf(buf, n);
+ }
+-#if !defined(__OpenBSD__) && !defined(ANDROID)
++#if 0
+ void
+ evutil_secure_rng_add_bytes(const char *buf, size_t n)
+ {
+diff --git a/ipc/chromium/src/third_party/libevent/include/event2/util.h b/ipc/chromium/src/third_party/libevent/include/event2/util.h
+index 42a28adcb..ed6b6207f 100644
+--- a/ipc/chromium/src/third_party/libevent/include/event2/util.h
++++ b/ipc/chromium/src/third_party/libevent/include/event2/util.h
+@@ -672,7 +672,7 @@ void evutil_secure_rng_get_bytes(void *buf, size_t n);
+  */
+ int evutil_secure_rng_init(void);
+-#if !defined(__OpenBSD__) && !defined(ANDROID)
++#if 0
+ /** Seed the random number generator with extra random bytes.
+     You should almost never need to call this function; it should be
+diff --git a/ipc/chromium/src/third_party/libevent/linux/event2/event-config.h b/ipc/chromium/src/third_party/libevent/linux/event2/event-config.h
+index 56ebd3aba..21717abed 100644
+--- a/ipc/chromium/src/third_party/libevent/linux/event2/event-config.h
++++ b/ipc/chromium/src/third_party/libevent/linux/event2/event-config.h
+@@ -24,10 +24,10 @@
+ /* #undef _EVENT_DISABLE_THREAD_SUPPORT */
+ /* Define to 1 if you have the `arc4random' function. */
+-/* #undef _EVENT_HAVE_ARC4RANDOM */
++#define _EVENT_HAVE_ARC4RANDOM (__GLIBC__ >= 2 && __GLIBC_MINOR__ >= 36)
+ /* Define to 1 if you have the `arc4random_buf' function. */
+-/* #undef _EVENT_HAVE_ARC4RANDOM_BUF */
++#define _EVENT_HAVE_ARC4RANDOM_BUF _EVENT_HAVE_ARC4RANDOM
+ /* Define to 1 if you have the <arpa/inet.h> header file. */
+ #define _EVENT_HAVE_ARPA_INET_H 1
diff --git a/www-client/firefox/files/firefox-52.9.0-less-werror.patch b/www-client/firefox/files/firefox-52.9.0-less-werror.patch
new file mode 100644 (file)
index 0000000..7e624e3
--- /dev/null
@@ -0,0 +1,13 @@
+diff --git a/js/src/moz.build b/js/src/moz.build
+index 1162cb70c..595ea9842 100644
+--- a/js/src/moz.build
++++ b/js/src/moz.build
+@@ -785,7 +785,7 @@ if CONFIG['JS_HAS_CTYPES']:
+         DEFINES['FFI_BUILDING'] = True
+ if CONFIG['GNU_CXX']:
+-    CXXFLAGS += ['-Wno-shadow', '-Werror=format']
++    CXXFLAGS += ['-Wno-shadow']
+ # Suppress warnings in third-party code.
+ if CONFIG['CLANG_CXX']:
diff --git a/www-client/firefox/files/gentoo-default-prefs.js-1 b/www-client/firefox/files/gentoo-default-prefs.js-1
new file mode 100644 (file)
index 0000000..22a51ff
--- /dev/null
@@ -0,0 +1,17 @@
+pref("app.update.enabled",                 false);
+pref("app.update.autoInstallEnabled",      false);
+pref("browser.display.use_system_colors",  true);
+pref("browser.link.open_external",         3);
+pref("general.smoothScroll",               true);
+pref("general.autoScroll",                 false);
+pref("browser.tabs.tabMinWidth",           15);
+pref("browser.backspace_action",           0);
+pref("browser.urlbar.hideGoButton",        true);
+pref("accessibility.typeaheadfind",        true);
+pref("browser.shell.checkDefaultBrowser",  false); 
+pref("browser.EULA.override",              true); 
+pref("general.useragent.vendor", "Gentoo");
+pref("intl.locale.matchOS", true);
+pref("general.useragent.locale", "chrome://global/locale/intl.properties");
+pref("extensions.autoDisableScopes", 0);
+pref("layout.css.dpi", 0);
diff --git a/www-client/firefox/files/gentoo-hwaccel-prefs.js-1 b/www-client/firefox/files/gentoo-hwaccel-prefs.js-1
new file mode 100644 (file)
index 0000000..0cb92b0
--- /dev/null
@@ -0,0 +1,2 @@
+pref("layers.acceleration.force-enabled",  true);
+pref("webgl.force-enabled",                true);
diff --git a/www-client/firefox/files/icon/firefox.desktop b/www-client/firefox/files/icon/firefox.desktop
new file mode 100644 (file)
index 0000000..1affce8
--- /dev/null
@@ -0,0 +1,10 @@
+[Desktop Entry]
+Name=@NAME@
+Comment=Web Browser
+Exec=firefox %u
+Icon=@ICON@
+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;
+Categories=Network;WebBrowser;
+
diff --git a/www-client/firefox/firefox-52.9.0-r2.ebuild b/www-client/firefox/firefox-52.9.0-r2.ebuild
new file mode 100644 (file)
index 0000000..f60ba25
--- /dev/null
@@ -0,0 +1,424 @@
+# This ebuild is a modified version of the work originally distributed with
+# Gentoo GNU/Linux, covered by the following copyright and permission notice:
+#
+#   Copyright 1999-2020 Gentoo Authors
+#   Distributed under the terms of the GNU General Public License v2
+#
+# The modifications are:
+#
+#   * Apply patches to build on modern systems (2022-12)
+
+EAPI=6
+VIRTUALX_REQUIRED="pgo"
+WANT_AUTOCONF="2.1"
+MOZ_ESR=1
+
+# This list can be updated with scripts/get_langs.sh from the mozilla overlay
+MOZ_LANGS=( ach af an ar as ast az bg bn-BD bn-IN br bs ca cak cs cy da de dsb
+el en en-GB en-US en-ZA eo es-AR es-CL es-ES es-MX et eu fa ff fi fr fy-NL ga-IE
+gd gl gn gu-IN he hi-IN hr hsb hu hy-AM id is it ja ka kab kk km kn ko lij lt lv
+mai mk ml mr ms nb-NO nl nn-NO or pa-IN pl pt-BR pt-PT rm ro ru si sk sl son sq
+sr sv-SE ta te th tr uk uz vi xh zh-CN zh-TW )
+
+# Convert the ebuild version to the upstream mozilla version, used by mozlinguas
+MOZ_PV="${PV/_alpha/a}" # Handle alpha for SRC_URI
+MOZ_PV="${MOZ_PV/_beta/b}" # Handle beta for SRC_URI
+MOZ_PV="${MOZ_PV/_rc/rc}" # Handle rc for SRC_URI
+
+if [[ ${MOZ_ESR} == 1 ]]; then
+       # ESR releases have slightly different version numbers
+       MOZ_PV="${MOZ_PV}esr"
+fi
+
+# Patch version
+PATCH="${PN}-52.5-patches-02"
+MOZ_HTTP_URI="https://archive.mozilla.org/pub/${PN}/releases"
+
+MOZCONFIG_OPTIONAL_GTK2ONLY=1
+MOZCONFIG_OPTIONAL_WIFI=1
+
+inherit check-reqs flag-o-matic toolchain-funcs eutils gnome2-utils mozconfig-v6.52 pax-utils xdg-utils autotools virtualx mozlinguas-v2
+
+DESCRIPTION="Firefox Web Browser"
+HOMEPAGE="https://www.mozilla.org/firefox"
+
+KEYWORDS="~alpha amd64 ~arm ~arm64 ~ia64 ~ppc ~ppc64 x86 ~amd64-linux ~x86-linux"
+
+SLOT="0"
+LICENSE="MPL-2.0 GPL-2 LGPL-2.1"
+IUSE="bindist eme-free +gmp-autoupdate hardened hwaccel jack pgo rust selinux test"
+RESTRICT="!bindist? ( bindist ) !test? ( test )"
+
+PATCH_URIS=( https://dev.gentoo.org/~{anarchy,axs,polynomial-c}/mozilla/patchsets/${PATCH}.tar.xz )
+SRC_URI="${SRC_URI}
+       ${MOZ_HTTP_URI}/${MOZ_PV}/source/firefox-${MOZ_PV}.source.tar.xz
+       ${PATCH_URIS[@]}"
+
+ASM_DEPEND=">=dev-lang/yasm-1.1"
+
+RDEPEND="
+       jack? ( virtual/jack )
+       >=dev-libs/nss-3.28.3
+       >=dev-libs/nspr-4.13.1
+       selinux? ( sec-policy/selinux-mozilla )"
+
+DEPEND="${RDEPEND}
+       pgo? ( >=sys-devel/gcc-4.5 )
+       rust? ( virtual/rust )
+       amd64? ( ${ASM_DEPEND} virtual/opengl )
+       x86? ( ${ASM_DEPEND} virtual/opengl )"
+
+S="${WORKDIR}/firefox-${MOZ_PV}"
+
+QA_PRESTRIPPED="usr/lib*/${PN}/firefox"
+
+BUILD_OBJ_DIR="${S}/ff"
+
+# allow GMP_PLUGIN_LIST to be set in an eclass or
+# overridden in the enviromnent (advanced hackers only)
+if [[ -z $GMP_PLUGIN_LIST ]]; then
+       GMP_PLUGIN_LIST=( gmp-gmpopenh264 gmp-widevinecdm )
+fi
+
+pkg_setup() {
+       moz_pkgsetup
+
+       # Avoid PGO profiling problems due to enviroment leakage
+       # These should *always* be cleaned up anyway
+       unset DBUS_SESSION_BUS_ADDRESS \
+               DISPLAY \
+               ORBIT_SOCKETDIR \
+               SESSION_MANAGER \
+               XDG_SESSION_COOKIE \
+               XAUTHORITY
+
+       if ! use bindist; then
+               einfo
+               elog "You are enabling official branding. You may not redistribute this build"
+               elog "to any users on your network or the internet. Doing so puts yourself into"
+               elog "a legal problem with Mozilla Foundation"
+               elog "You can disable it by emerging ${PN} _with_ the bindist USE-flag"
+       fi
+
+       if use pgo; then
+               einfo
+               ewarn "You will do a double build for profile guided optimization."
+               ewarn "This will result in your build taking at least twice as long as before."
+       fi
+
+       if use rust; then
+               einfo
+               ewarn "This is very experimental, should only be used by those developing firefox."
+       fi
+}
+
+pkg_pretend() {
+       # Ensure we have enough disk space to compile
+       if use pgo || use debug || use test ; then
+               CHECKREQS_DISK_BUILD="8G"
+       else
+               CHECKREQS_DISK_BUILD="4G"
+       fi
+       check-reqs_pkg_setup
+}
+
+src_unpack() {
+       unpack ${A}
+
+       # Unpack language packs
+       mozlinguas_src_unpack
+}
+
+src_prepare() {
+       # Apply our patches
+       rm -f "${WORKDIR}"/firefox/2007_fix_nvidia_latest.patch
+       eapply "${WORKDIR}/firefox"
+
+       eapply "${FILESDIR}"/${P}-blessings-TERM.patch # 654316
+       eapply "${FILESDIR}"/${P}-fix-missing-includes.patch
+       eapply "${FILESDIR}"/${P}-fix-idb-name-conflict.patch
+       eapply "${FILESDIR}"/${P}-glibc-2.30.patch
+       eapply "${FILESDIR}"/${P}-glibc-2.36.patch
+       eapply "${FILESDIR}"/${P}-less-werror.patch
+       eapply "${FILESDIR}"/${P}-fix-thebes-templates.patch
+
+       # Enable gnomebreakpad
+       if use debug ; then
+               sed -i -e "s:GNOME_DISABLE_CRASH_DIALOG=1:GNOME_DISABLE_CRASH_DIALOG=0:g" \
+                       "${S}"/build/unix/run-mozilla.sh || die "sed failed!"
+       fi
+
+       # Drop -Wl,--as-needed related manipulation for ia64 as it causes ld sefgaults, bug #582432
+       if use ia64 ; then
+               sed -i \
+               -e '/^OS_LIBS += no_as_needed/d' \
+               -e '/^OS_LIBS += as_needed/d' \
+               "${S}"/widget/gtk/mozgtk/gtk2/moz.build \
+               "${S}"/widget/gtk/mozgtk/gtk3/moz.build \
+               || die "sed failed to drop --as-needed for ia64"
+       fi
+
+       # Ensure that our plugins dir is enabled as default
+       sed -i -e "s:/usr/lib/mozilla/plugins:/usr/lib/nsbrowser/plugins:" \
+               "${S}"/xpcom/io/nsAppFileLocationProvider.cpp || die "sed failed to replace plugin path for 32bit!"
+       sed -i -e "s:/usr/lib64/mozilla/plugins:/usr/lib64/nsbrowser/plugins:" \
+               "${S}"/xpcom/io/nsAppFileLocationProvider.cpp || die "sed failed to replace plugin path for 64bit!"
+
+       # Fix sandbox violations during make clean, bug 372817
+       sed -e "s:\(/no-such-file\):${T}\1:g" \
+               -i "${S}"/config/rules.mk \
+               -i "${S}"/nsprpub/configure{.in,} \
+               || die
+
+       # Don't exit with error when some libs are missing which we have in
+       # system.
+       sed '/^MOZ_PKG_FATAL_WARNINGS/s@= 1@= 0@' \
+               -i "${S}"/browser/installer/Makefile.in || die
+
+       # Don't error out when there's no files to be removed:
+       sed 's@\(xargs rm\)$@\1 -f@' \
+               -i "${S}"/toolkit/mozapps/installer/packager.mk || die
+
+       # Keep codebase the same even if not using official branding
+       sed '/^MOZ_DEV_EDITION=1/d' \
+               -i "${S}"/browser/branding/aurora/configure.sh || die
+
+       # Allow user to apply any additional patches without modifing ebuild
+       eapply_user
+
+       # Autotools configure is now called old-configure.in
+       # This works because there is still a configure.in that happens to be for the
+       # shell wrapper configure script
+       eautoreconf old-configure.in
+
+       # Must run autoconf in js/src
+       cd "${S}"/js/src || die
+       eautoconf old-configure.in
+
+       # Need to update jemalloc's configure
+       cd "${S}"/memory/jemalloc/src || die
+       WANT_AUTOCONF= eautoconf
+}
+
+src_configure() {
+       MEXTENSIONS="default"
+       # Google API keys (see http://www.chromium.org/developers/how-tos/api-keys)
+       # Note: These are for Gentoo Linux use ONLY. For your own distribution, please
+       # get your own set of keys.
+       _google_api_key=AIzaSyDEAOvatFo0eTgsV_ZlEzx0ObmepsMzfAc
+
+       ####################################
+       #
+       # mozconfig, CFLAGS and CXXFLAGS setup
+       #
+       ####################################
+
+       mozconfig_init
+       mozconfig_config
+
+       # enable JACK, bug 600002
+       mozconfig_use_enable jack
+
+       use eme-free && mozconfig_annotate '+eme-free' --disable-eme
+
+       # It doesn't compile on alpha without this LDFLAGS
+       use alpha && append-ldflags "-Wl,--no-relax"
+
+       # Add full relro support for hardened
+       use hardened && append-ldflags "-Wl,-z,relro,-z,now"
+
+       # Only available on mozilla-overlay for experimentation -- Removed in Gentoo repo per bug 571180
+       #use egl && mozconfig_annotate 'Enable EGL as GL provider' --with-gl-provider=EGL
+
+       # Setup api key for location services
+       echo -n "${_google_api_key}" > "${S}"/google-api-key
+       mozconfig_annotate '' --with-google-api-keyfile="${S}/google-api-key"
+
+       mozconfig_annotate '' --enable-extensions="${MEXTENSIONS}"
+
+       mozconfig_use_enable rust
+
+       # Allow for a proper pgo build
+       if use pgo; then
+               echo "mk_add_options PROFILE_GEN_SCRIPT='EXTRA_TEST_ARGS=10 \$(MAKE) -C \$(MOZ_OBJDIR) pgo-profile-run'" >> "${S}"/.mozconfig
+       fi
+
+       echo "mk_add_options MOZ_OBJDIR=${BUILD_OBJ_DIR}" >> "${S}"/.mozconfig
+       echo "mk_add_options XARGS=/usr/bin/xargs" >> "${S}"/.mozconfig
+
+       # Finalize and report settings
+       mozconfig_final
+
+       if [[ $(gcc-major-version) -lt 4 ]]; then
+               append-cxxflags -fno-stack-protector
+#      else
+#              append-cxxflags -fpermissive
+       fi
+
+       # workaround for funky/broken upstream configure...
+       SHELL="${SHELL:-${EPREFIX}/bin/bash}" \
+       emake -f client.mk configure
+}
+
+src_compile() {
+       if use pgo; then
+               addpredict /root
+               addpredict /etc/gconf
+               # Reset and cleanup environment variables used by GNOME/XDG
+               gnome2_environment_reset
+
+               # Firefox tries to use dri stuff when it's run, see bug 380283
+               shopt -s nullglob
+               cards=$(echo -n /dev/dri/card* | sed 's/ /:/g')
+               if test -z "${cards}"; then
+                       cards=$(echo -n /dev/ati/card* /dev/nvidiactl* | sed 's/ /:/g')
+                       if test -n "${cards}"; then
+                               # Binary drivers seem to cause access violations anyway, so
+                               # let's use indirect rendering so that the device files aren't
+                               # touched at all. See bug 394715.
+                               export LIBGL_ALWAYS_INDIRECT=1
+                       fi
+               fi
+               shopt -u nullglob
+               [[ -n "${cards}" ]] && addpredict "${cards}"
+
+               MOZ_MAKE_FLAGS="${MAKEOPTS}" SHELL="${SHELL:-${EPREFIX}/bin/bash}" \
+               virtx emake -f client.mk profiledbuild
+       else
+               MOZ_MAKE_FLAGS="${MAKEOPTS}" SHELL="${SHELL:-${EPREFIX}/bin/bash}" \
+               emake -f client.mk realbuild
+       fi
+
+}
+
+src_install() {
+       cd "${BUILD_OBJ_DIR}" || die
+
+       # Pax mark xpcshell for hardened support, only used for startupcache creation.
+       pax-mark m "${BUILD_OBJ_DIR}"/dist/bin/xpcshell
+
+       # Add our default prefs for firefox
+       cp "${FILESDIR}"/gentoo-default-prefs.js-1 \
+               "${BUILD_OBJ_DIR}/dist/bin/browser/defaults/preferences/all-gentoo.js" \
+               || die
+
+       mozconfig_install_prefs \
+               "${BUILD_OBJ_DIR}/dist/bin/browser/defaults/preferences/all-gentoo.js"
+
+       # Augment this with hwaccel prefs
+       if use hwaccel ; then
+               cat "${FILESDIR}"/gentoo-hwaccel-prefs.js-1 >> \
+               "${BUILD_OBJ_DIR}/dist/bin/browser/defaults/preferences/all-gentoo.js" \
+               || die
+       fi
+
+       echo "pref(\"extensions.autoDisableScopes\", 3);" >> \
+               "${BUILD_OBJ_DIR}/dist/bin/browser/defaults/preferences/all-gentoo.js" \
+               || die
+
+       local plugin
+       use gmp-autoupdate || use eme-free || for plugin in "${GMP_PLUGIN_LIST[@]}" ; do
+               echo "pref(\"media.${plugin}.autoupdate\", false);" >> \
+                       "${BUILD_OBJ_DIR}/dist/bin/browser/defaults/preferences/all-gentoo.js" \
+                       || die
+       done
+
+       MOZ_MAKE_FLAGS="${MAKEOPTS}" SHELL="${SHELL:-${EPREFIX}/bin/bash}" \
+       emake DESTDIR="${D}" install
+
+       # Install language packs
+       mozlinguas_src_install
+
+       local size sizes icon_path icon name
+       if use bindist; then
+               sizes="16 32 48"
+               icon_path="${S}/browser/branding/aurora"
+               # Firefox's new rapid release cycle means no more codenames
+               # Let's just stick with this one...
+               icon="aurora"
+               name="Aurora"
+
+               # Override preferences to set the MOZ_DEV_EDITION defaults, since we
+               # don't define MOZ_DEV_EDITION to avoid profile debaucles.
+               # (source: browser/app/profile/firefox.js)
+               cat >>"${BUILD_OBJ_DIR}/dist/bin/browser/defaults/preferences/all-gentoo.js" <<PROFILE_EOF
+pref("app.feedback.baseURL", "https://input.mozilla.org/%LOCALE%/feedback/firefoxdev/%VERSION%/");
+sticky_pref("lightweightThemes.selectedThemeID", "firefox-devedition@mozilla.org");
+sticky_pref("browser.devedition.theme.enabled", true);
+sticky_pref("devtools.theme", "dark");
+PROFILE_EOF
+
+       else
+               sizes="16 22 24 32 256"
+               icon_path="${S}/browser/branding/official"
+               icon="${PN}"
+               name="Mozilla Firefox"
+       fi
+
+       # Install icons and .desktop for menu entry
+       for size in ${sizes}; do
+               insinto "/usr/share/icons/hicolor/${size}x${size}/apps"
+               newins "${icon_path}/default${size}.png" "${icon}.png"
+       done
+       # The 128x128 icon has a different name
+       insinto "/usr/share/icons/hicolor/128x128/apps"
+       newins "${icon_path}/mozicon128.png" "${icon}.png"
+       # Install a 48x48 icon into /usr/share/pixmaps for legacy DEs
+       newicon "${icon_path}/content/icon48.png" "${icon}.png"
+       newmenu "${FILESDIR}/icon/${PN}.desktop" "${PN}.desktop"
+       sed -i -e "s:@NAME@:${name}:" -e "s:@ICON@:${icon}:" \
+               "${ED}/usr/share/applications/${PN}.desktop" || die
+
+       # Add StartupNotify=true bug 237317
+       if use startup-notification ; then
+               echo "StartupNotify=true"\
+                        >> "${ED}/usr/share/applications/${PN}.desktop" \
+                       || die
+       fi
+
+       # Required in order to use plugins and even run firefox on hardened.
+       pax-mark m "${ED}"${MOZILLA_FIVE_HOME}/{firefox,firefox-bin,plugin-container}
+}
+
+pkg_preinst() {
+       gnome2_icon_savelist
+
+       # if the apulse libs are available in MOZILLA_FIVE_HOME then apulse
+       # doesn't need to be forced into the LD_LIBRARY_PATH
+       if use pulseaudio && has_version ">=media-sound/apulse-0.1.9" ; then
+               einfo "APULSE found - Generating library symlinks for sound support"
+               local lib
+               pushd "${ED}"${MOZILLA_FIVE_HOME} &>/dev/null || die
+               for lib in ../apulse/libpulse{.so{,.0},-simple.so{,.0}} ; do
+                       # a quickpkg rolled by hand will grab symlinks as part of the package,
+                       # so we need to avoid creating them if they already exist.
+                       if ! [ -L ${lib##*/} ]; then
+                               ln -s "${lib}" ${lib##*/} || die
+                       fi
+               done
+               popd &>/dev/null || die
+       fi
+}
+
+pkg_postinst() {
+       # Update mimedb for the new .desktop file
+       xdg_desktop_database_update
+       gnome2_icon_cache_update
+
+       if ! use gmp-autoupdate && ! use eme-free ; then
+               elog "USE='-gmp-autoupdate' has disabled the following plugins from updating or"
+               elog "installing into new profiles:"
+               local plugin
+               for plugin in "${GMP_PLUGIN_LIST[@]}"; do elog "\t ${plugin}" ; done
+       fi
+
+       if use pulseaudio && has_version ">=media-sound/apulse-0.1.9" ; then
+               elog "Apulse was detected at merge time on this system and so it will always be"
+               elog "used for sound.  If you wish to use pulseaudio instead please unmerge"
+               elog "media-sound/apulse."
+       fi
+}
+
+pkg_postrm() {
+       gnome2_icon_cache_update
+}