Alexander Pyhalov
2013-12-26 19364bc98e54de97ee80f4a687e3aa42d547eced
Add firefox 17 component
53 files added
20797 ■■■■■ changed files
components/firefox/Makefile 107 ●●●●● patch | view | raw | blame | history
components/firefox/files/firefox-js.pc 11 ●●●●● patch | view | raw | blame | history
components/firefox/files/firefox-plugin.pc 9 ●●●●● patch | view | raw | blame | history
components/firefox/files/firefox-xpcom.pc 11 ●●●●● patch | view | raw | blame | history
components/firefox/files/firefox.desktop 45 ●●●●● patch | view | raw | blame | history
components/firefox/files/mozilla-plugin.pc 8 ●●●●● patch | view | raw | blame | history
components/firefox/files/openindiana-default-bookmarks.html 30 ●●●●● patch | view | raw | blame | history
components/firefox/firefox-bookmarks.p5m 27 ●●●●● patch | view | raw | blame | history
components/firefox/firefox.license 373 ●●●●● patch | view | raw | blame | history
components/firefox/firefox.p5m 4238 ●●●●● patch | view | raw | blame | history
components/firefox/patches/firefox-01-locale.patch 13 ●●●●● patch | view | raw | blame | history
components/firefox/patches/firefox-02-js-ctypes-compiler-workaround.patch 33 ●●●●● patch | view | raw | blame | history
components/firefox/patches/firefox-03-g11n-nav-lang.patch 10 ●●●●● patch | view | raw | blame | history
components/firefox/patches/firefox-04-donot-delay-stopping-realplayer.patch 23 ●●●●● patch | view | raw | blame | history
components/firefox/patches/firefox-09-ipc.patch 4401 ●●●●● patch | view | raw | blame | history
components/firefox/patches/firefox-10-appname-tr.patch 31 ●●●●● patch | view | raw | blame | history
components/firefox/patches/firefox-11-sqlite-unix-excl.patch 16 ●●●●● patch | view | raw | blame | history
components/firefox/patches/firefox-12-xpcom-glue-no-hidden.patch 22 ●●●●● patch | view | raw | blame | history
components/firefox/patches/firefox-15-use-system-theora.patch 62 ●●●●● patch | view | raw | blame | history
components/firefox/patches/firefox-18-libvpx-compile.patch 32 ●●●●● patch | view | raw | blame | history
components/firefox/patches/firefox-23-ycbcr.patch 695 ●●●●● patch | view | raw | blame | history
components/firefox/patches/firefox-24-stackwalk.patch 30 ●●●●● patch | view | raw | blame | history
components/firefox/patches/firefox-25-json-compile.patch 18 ●●●●● patch | view | raw | blame | history
components/firefox/patches/firefox-29-selectAddons-app-scope.patch 14 ●●●●● patch | view | raw | blame | history
components/firefox/patches/firefox-30-gfxAlphaRecovery.patch 20 ●●●●● patch | view | raw | blame | history
components/firefox/patches/firefox-31-async-channel-crash.patch 53 ●●●●● patch | view | raw | blame | history
components/firefox/patches/firefox-34-js-numeric-limits.patch 22 ●●●●● patch | view | raw | blame | history
components/firefox/patches/firefox-35-static-assert.patch 28 ●●●●● patch | view | raw | blame | history
components/firefox/patches/firefox-36-gtkembed.patch 9117 ●●●●● patch | view | raw | blame | history
components/firefox/patches/firefox-37-sunaudio-buffer.patch 175 ●●●●● patch | view | raw | blame | history
components/firefox/patches/firefox-40-gthread-dlopen.patch 12 ●●●●● patch | view | raw | blame | history
components/firefox/patches/firefox-41-xBGR-performance.patch 47 ●●●●● patch | view | raw | blame | history
components/firefox/patches/firefox-43-donot-disable-locale-addon.patch 13 ●●●●● patch | view | raw | blame | history
components/firefox/patches/firefox-51-graphite2.patch 718 ●●●●● patch | view | raw | blame | history
components/firefox/patches/firefox-63-asyncchannel-std-queue.patch 20 ●●●●● patch | view | raw | blame | history
components/firefox/patches/firefox-76-libxul-link-error.patch 11 ●●●●● patch | view | raw | blame | history
components/firefox/patches/firefox-94-ogg-webm-no-hidden.patch 20 ●●●●● patch | view | raw | blame | history
components/firefox/patches/firefox-95-paths.patch 16 ●●●●● patch | view | raw | blame | history
components/firefox/patches/firefox-96-remove-sections.patch 22 ●●●●● patch | view | raw | blame | history
components/firefox/patches/firefox-99-mozalloc-abort.patch 14 ●●●●● patch | view | raw | blame | history
components/firefox/patches/patch-branding.patch 11 ●●●●● patch | view | raw | blame | history
components/firefox/patches/patch-browser_installer_package-manifest.in.patch 15 ●●●●● patch | view | raw | blame | history
components/firefox/patches/patch-gfx_ycrbcr_chromium_types.h.patch 14 ●●●●● patch | view | raw | blame | history
components/firefox/patches/patch-jsmath_cpp.patch 11 ●●●●● patch | view | raw | blame | history
components/firefox/patches/patch-nss_lib_ckfw_builtins_manifest.mn.patch 11 ●●●●● patch | view | raw | blame | history
components/firefox/patches/patch-nss_lib_freebl_manifest.mn.patch 11 ●●●●● patch | view | raw | blame | history
components/firefox/patches/patch-nss_lib_nss_manifest.mn.patch 11 ●●●●● patch | view | raw | blame | history
components/firefox/patches/patch-nss_lib_nss_ssl_manifest.mn.patch 11 ●●●●● patch | view | raw | blame | history
components/firefox/patches/patch-nss_lib_smime_manifest.mn.patch 11 ●●●●● patch | view | raw | blame | history
components/firefox/patches/patch-nss_lib_softoken_legacydb_manifest.mn.patch 11 ●●●●● patch | view | raw | blame | history
components/firefox/patches/patch-nss_lib_softoken_manifest.mn.patch 11 ●●●●● patch | view | raw | blame | history
components/firefox/patches/patch-nss_lib_util_manifest.mn.patch 11 ●●●●● patch | view | raw | blame | history
components/firefox/patches/patch-rename-log2.patch 91 ●●●●● patch | view | raw | blame | history
components/firefox/Makefile
New file
@@ -0,0 +1,107 @@
#
# This file and its contents are supplied under the terms of the
# Common Development and Distribution License ("CDDL"), version 1.0.
# You may only use this file in accordance with the terms of version
# 1.0 of the CDDL.
#
# A full copy of the text of the CDDL should have accompanied this
# source.  A copy of the CDDL is also available via the Internet at
# http://www.illumos.org/license/CDDL.
#
#
# Copyright 2013 Alexander Pyhalov.  All rights reserved.
#
include ../../make-rules/shared-macros.mk
COMPONENT_NAME=     firefox
COMPONENT_VERSION=     17.0.6esr
IPS_COMPONENT_VERSION=    17.0.6
COMPONENT_SUMMARY=     Mozilla Firefox Web browser
COMPONENT_SRC=         mozilla-esr17
COMPONENT_ARCHIVE=     $(COMPONENT_NAME)-$(COMPONENT_VERSION).source.tar.bz2
COMPONENT_ARCHIVE_HASH= \
  sha256:a8d05a2ce61c5b8c0ab93acb01191e282f7387d285ac59a9db2d9fd685cb6401
COMPONENT_ARCHIVE_URL= \
  ftp://ftp.mozilla.org/pub/firefox/releases/$(COMPONENT_VERSION)/source/$(COMPONENT_ARCHIVE)
COMPONENT_PROJECT_URL = http://www.mozilla.com/en-US/firefox/
LANG_LIST=    ar be bg ca cs da de el es-AR es-CL es-ES et fi fr he hi-IN hr hu id is it ja kk ko lt lv mk nb-NO nl nn-NO pl pt-BR pt-PT ro ru sk sl sq sr sv-SE th tr uk vi zh-CN zh-TW
LANG_FILES_LOCATION=    http://ftp.mozilla.org/pub/mozilla.org/firefox/releases/$(COMPONENT_VERSION)/linux-i686/xpi/
include $(WS_TOP)/make-rules/prep.mk
include $(WS_TOP)/make-rules/configure.mk
include $(WS_TOP)/make-rules/ips.mk
COMPONENT_PRE_CONFIGURE_ACTION = ($(CLONEY) $(SOURCE_DIR) $(@D) )
PATH=/usr/bin:/usr/gnu/bin:/usr/sbin
CONFIGURE_OPTIONS =    --disable-alsa
CONFIGURE_OPTIONS +=    --enable-gnomevfs
CONFIGURE_OPTIONS +=    --enable-dbus
CONFIGURE_OPTIONS +=    --enable-gnomeui
CONFIGURE_OPTIONS +=    --enable-libnotify
CONFIGURE_OPTIONS +=    --enable-libxul
CONFIGURE_OPTIONS +=    --enable-extensions=gnomevfs
CONFIGURE_OPTIONS +=    --disable-jemalloc
CONFIGURE_OPTIONS +=    --disable-debug
CONFIGURE_OPTIONS +=    --disable-tests
#CONFIGURE_OPTIONS +=    --enable-debug
CONFIGURE_OPTIONS +=    --disable-debug-symbols
#CONFIGURE_OPTIONS +=    --enable-debug-symbols
CONFIGURE_OPTIONS +=    --enable-install-strip
#CONFIGURE_OPTIONS +=    --enable-optimize=-O2
CONFIGURE_OPTIONS +=    --disable-webrtc
CONFIGURE_OPTIONS +=    --enable-dtrace
CONFIGURE_OPTIONS +=    --enable-official-branding
CONFIGURE_OPTIONS +=    --disable-updater
CONFIGURE_OPTIONS +=    --enable-ipc
CONFIGURE_OPTIONS +=    --enable-system-ffi
CONFIGURE_OPTIONS +=    --enable-system-sqlite
CONFIGURE_OPTIONS +=    --with-system-libevent
CONFIGURE_OPTIONS +=    --with-system-zlib
CONFIGURE_OPTIONS +=    --with-system-bz2
CONFIGURE_OPTIONS +=    --disable-crashreporter
CONFIGURE_OPTIONS +=    --disable-necko-wifi
CONFIGURE_OPTIONS +=    --enable-startup-notification
CONFIGURE_OPTIONS +=    --enable-application=browser
CONFIGURE_OPTIONS +=    --prefix=/usr
CONFIGURE_OPTIONS +=    --libdir=/usr/lib
ENV +=    CC=$(CC)
ENV +=    CXX=$(CXX)
ENV +=    MOZILLA_OFFICIAL=1
ENV +=    MOZ_PKG_FORMAT=BZ2
ENV +=    PKG_SKIP_STRIP=1
ENV +=    MOZILLA_PKG_NAME=firefox
CONFIGURE_ENV =    $(ENV)
COMPONENT_BUILD_ENV =    $(ENV)
CPUS=$(shell /usr/sbin/psrinfo | grep on-line | wc -l | tr -d ' ')
COMPONENT_BUILD_GMAKE_ARGS= -j $(CPUS)
LANG_FILES=$(addsuffix .xpi,$(LANG_LIST))
CLEAN_PATHS += $(LANG_FILES)
$(LANG_FILES):
    $(FETCH) --file $@  --url $(LANG_FILES_LOCATION)/$@
download prep:: $(LANG_FILES)
build: $(BUILD_32)
COMPONENT_POST_INSTALL_ACTION  = ( \
    for file in $(PROTO_DIR)/usr/lib/firefox/browser/components/libbrowsercomps.so \
          $(PROTO_DIR)/usr/lib/firefox/sdk/bin/xpcshell ; do \
        /usr/bin/elfedit -e 'dyn:value -s  RPATH "/usr/lib:/usr/lib/firefox:$$ORIGIN:$$ORIGIN/.."'  \
        $$file ;\
    done ; \
    for file in $(PROTO_DIR)/usr/lib/firefox/sdk/bin/*.py; do \
        $(GSED) -i -e 's:/usr/bin/env python:$(PYTHON):' $$file; \
    done )
install: $(INSTALL_32)
components/firefox/files/firefox-js.pc
New file
@@ -0,0 +1,11 @@
prefix=/usr
exec_prefix=/usr
libdir=/usr/lib/firefox
includedir=/usr/include/firefox
Name: JavaScript
Description: The Mozilla JavaScript Library
Version: 24.0
Libs: -L${libdir} -R${libdir}  -lxul -lnspr4
Cflags: -I${includedir} -I${includedir}/nspr
components/firefox/files/firefox-plugin.pc
New file
@@ -0,0 +1,9 @@
prefix=/usr
exec_prefix=/usr
libdir=/usr/lib/firefox
includedir=/usr/include/firefox
Name: Mozilla Plug-In API
Description: Mozilla Plug-In API
Version: 17.0
Cflags: -I${includedir} -DXP_UNIX
components/firefox/files/firefox-xpcom.pc
New file
@@ -0,0 +1,11 @@
prefix=/usr
exec_prefix=/usr/lib/firefox
libdir=/usr/lib/firefox
includedir=/usr/include/firefox
idldir=/usr/share/idl/firefox
Name: XPCOM
Description: The Mozilla Cross Platform Component Library
Version: 17.0
Libs: -L${libdir} -R${libdir} -lxpcom -lxul -lmozalloc -lplds4 -lplc4 -lnspr4 -lpthread -ldl -lposix4 -L${libdir}/lib -lxpcomglue_s
Cflags:-I${includedir}
components/firefox/files/firefox.desktop
New file
@@ -0,0 +1,45 @@
[Desktop Entry]
Encoding=UTF-8
Name=Firefox Web Browser
Name[cs]=Firefox WWW prohlížeč
Name[cz]=Firefox WWW prohlížeč
Name[de]=Firefox Webbrowser
Name[es]=Firefox Navegador web
Name[fr]=Firefox Navigateur Web
Name[hu]=Firefox Internet böngésző
Name[it]=Firefox Browser Web
Name[ja]=Firefox Web ブラウザ
Name[ko]=Firefox 웹 브라우저
Name[pl]=Firefox Przeglądarka sieci Web
Name[pt_BR]=Firefox Navegador da Web
Name[ru]=Firefox Веб-браузер
Name[sv]=Firefox Webbläsare
Name[zh_CN]=Firefox Web 浏览器
Name[zh_HK]=Firefox 網路瀏覽器
Name[zh_TW]=Firefox 網路瀏覽器
GenericName=Web Browser
Comment=Browse the worldwide web
Comment[cs]=Prohlížení Internetu
Comment[cz]=Prohlížení Internetu
Comment[de]=Browsen im Internet
Comment[es]=Examinar Internet
Comment[fr]=Parcourir Internet
Comment[hu]=Az internet böngészése
Comment[it]=Naviga in Internet
Comment[ja]=インターネットのブラウズ
Comment[ko]=인터넷 검색
Comment[pl]=Przeglądaj Internet
Comment[pt_BR]=Navega pela Internet
Comment[ru]=Работать в интернете
Comment[sv]=Surfa på Internet
Comment[zh_CN]=浏览互联网
Comment[zh_HK]=瀏覽網際網路
Comment[zh_TW]=瀏覽網際網路
Exec=/usr/bin/firefox %u
TryExec=/usr/bin/firefox
Icon=firefox-icon
Terminal=false
Type=Application
StartupNotify=true
Categories=Application;Network;X-Sun-Quick-Start;
MimeType=text/html;text/xml;application/xhtml+xml;application/vnd.mozilla.xul+xml;text/mml;
components/firefox/files/mozilla-plugin.pc
New file
@@ -0,0 +1,8 @@
prefix=/usr
sdkdir=/usr/lib/xulrunner
includedir=/usr/include/xulrunner
Name: Mozilla Plug-In API
Description: Mozilla Plug-In API
Version: 10.0.12
Cflags: -I${includedir} -DXP_UNIX
components/firefox/files/openindiana-default-bookmarks.html
New file
@@ -0,0 +1,30 @@
<!DOCTYPE NETSCAPE-Bookmark-file-1>
<!-- This is an automatically generated file.
     It will be read and overwritten.
     DO NOT EDIT! -->
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8">
<TITLE>Bookmarks</TITLE>
<H1>Bookmarks</H1>
<DL><p>
    <DT><A HREF="https://en-US.add-ons.mozilla.com/en-US/firefox/bookmarks/" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAFo9M%2F3AAAABGdBTUEAANbY1E9YMgAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAPkSURBVHjaYmAAgrjyOnOGiKxqxT9%2F%2FvwHCCCGuNJKLpAo49KTL%2F5%2F%2F8PMABBADJFZFWwXnn%2F%2FDxJYeOLNf0aQ9AIg48%2Ff%2Fwwfvv1hAAggZpBAYlWdnrqJLcPVE4e%2Bsuy7%2FfH%2F%2B88%2FGdjY2Bj%2BcCqHMey6%2Ben%2F379%2F%2F%2F8B6unZ9ew%2Fy54jV249f6%2Bm9uXnX4Y9qyaoAAQAhAB7%2FwEAAAAAY3h%2BG1RdbeMMCgkB9%2Fr%2BAPL2%2FAC3vsyi5NG6YQFcbnwdZ3F44uru9gAAAQAAUjEVALPT7wDu9v4A5erz%2FgL19vr16PD6AAUHBgDu9PwA%2F%2F8AAO%2F2%2FgD0%2BP0A7e7x8QPYzsX38vj9g%2BPk6hkLFiAxy%2BP4AeHj5%2FXFtp9GonxaagII7AawXyprpf%2F%2FZ5L5%2Fe%2Fv9%2B%2Fff91ZN7nrG0icJSqrkknJxHm1h5Nl0J8%2F%2Fxg%2B%2FwDa%2Febzv39%2FWKQ2TG97ycIvq%2Bvn52oVxMHGxHDj8RcGQT4uEGZyCct98e3LL3YmJ2enNYxAi%2B48%2B8QQaizGIMLFBLaSlYWZgYWDWZaJhY2V%2BcvPfwz%2BeiIMf%2F%2F%2BY9CV4GAQ42Zh%2BPPvP8O%2Fv%2F%2BZmG7cff7u49c%2FDNtufGZgYmJiOHLvG8Pt1z8Yfv3%2Bz%2FDn19%2B3TCd2LNV7%2F%2FU3w7vPvxkWnHzDcOPFd4ZvQBPv3L79aM%2BS3nfMN88d%2BfyXkW0Lq6BiGAs7J8fHT9%2F%2FXTy%2BY82Lp0cdb5889hcgQJNU85JYFMXP%2B5aHqRmmZJ9kKMGAEBgtDCYYY6BFa%2BlrPc6yRf0LYYtZzG4YaNGibUNJVLuIcBNUTLMQM8ZoppdiaXnf9Xlf5z4ounDu4p57f%2Ff8Pt50SH9ZEfUuLehy93yMRBNroVAg6PV2yBbO9c94tK5v7suF3%2FlMs1o8oU27ltvIMic7fJv7uuqLJGa2UpPxlCILICBtGz1pYWooakeoDaTFgBtNWm04zl%2Fkbs53FnZ%2FZO%2BldGbFP5aaP50cj41pigi8XFjF2zp8ivpgsFMFHp0GgrQZL4DuYGCE6f3pzoBnUwRB8sYi4QGKHf7b5d8HiHWpMBsPvLKDeFiHmVEPBN0yMJyMIUhfb6gXbMkr4xtq1J6Z36eLpmiDH508LNShbDzB4kTIATguNsBqA1CHElJDhGdCGWsDkYY%2FTJh3lUelu384yTlzrtgDWVaggvG8qhDnYcEwwWi0wET%2FTNTh9Gh%2FvVn7v%2B2I%2BHlpWXS59ORgfOr7UGRkVNMUAWPtCMnHdbjjATFNKJeKpdLZYQY0crDzLUvfbHxdqfllj6a7p2VVjUqyGhYwPpZFqxYlf6hZ%2F7X3c736%2Fv4LV1blv94gEvsAAAAASUVORK5CYII%3D">Get Bookmark Add-ons</A>
    <HR>
    <DT><H3 PERSONAL_TOOLBAR_FOLDER="true">Bookmarks Toolbar Folder</H3>
<DD>Add bookmarks to this folder to see them displayed on the Bookmarks Toolbar
  <DL><p>
    <DT><H3>OpenIndiana</H3>
    <DL><p>
        <DT><A HREF="file:///usr/share/doc/openindiana-welcome/html/index.html" ICON="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD////y//////////////////////Tgyv/hrHL/4axy//Tgyv////////////b7+f/////////////////////y////7f////////////////79/P/hrHL/15dR/9eXUf/hrHL/4fDp/4zDq/9VpYH/jMOr/+Hw6f//////////7f///+3///////////////////3/4axy/9eXUf/XlE3/4axy/7zg1f8uj2P/Lo9j/y6PY/9ssZH//////////+3s49z/7OPc/7aSd/+2knf/7OPc//Tgyv/hrHL/4axy//Tgyv9VpYH/Lo9j//b6+P8uj2P/VaWB///////////t7OPc/3s6Cf97Ogn/ezoJ/3s6Cf/s49z/9PPx/6Oiov/8/v//0Ojf/y6PY/8uj2P/Lo9j/4zDq///////////7baSd/97Ogn///////////97Ogn/tpJ3/6Oiov9EQUH/o6Ki/8Gfhv+nw6z/VaWB/77e0v/h8On///79/////+22knf/ezoJ////////////ezoJ/7aSd//08/H/o6Ki/8m0pP97Ogn/gD4O/9W5qf//8eT/4axy/+Gscv/25tbt7OPc/3s6Cf97Ogn/ezoJ/3s6Cf/s49z/9ODK//Tgyv/Bn4b/ezoJ/3o4Bv+2knf/4axy/9iVUP/Xl1H/4axy/+zj3P/s49z/tpJ3/7aSd//JtKT/7OPc/9WQSP/VkEf/9uXT/8Gfhv/Bn4b//fv5/+Gscv/XlU//15ZQ/+Gscv/////t///////////p9vL/jMOr/9nr4f/VkUj/1ZFI/9rZ2f+Vk5P/lZOT/9rZ2f/04Mr/4axy/+Gscv/y3sjt////7f/////b7OT/Lo9j/y6PY/8uj2P/zOfd/9rZ2f9aV1f/WldX/1pXV/9aV1f/2tnZ//369//8+vb/////7f///+3b7OT/Lo9j/4zDq///////jMOr/y6PY/+npaX/WldX/8C/v//V1NP/WldX/6Ohof///////////////+3////t2+zk/y6PY/+Mw6v//////4zDq/8uj2P/p6Wl/1pXV//5+fn//////1pXV/+Vk5P////////////////t////7f/////b7OT/Lo9j/y6PY/8uj2P/2+zk/9rZ2f9aV1f/WldX/1pXV/9aV1f/2tnZ////////////////7f////L//////////9vs5P+Mw6v/2+zk////////////2tnZ/5WTk/+Vk5P/2tnZ//////////////////////L////c////7f///+3////t////7f///+3////t////7f///+3////t////7f///+3////t////7f///+3////cAAAAwAAAAMAAAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//w==">Welcome to OpenIndiana</A>
        <DT><A HREF="http://www.openindiana.org/" ADD_DATE="1283351642" LAST_MODIFIED="1283351651" LAST_CHARSET="ISO-8859-1">OpenIndiana Homepage</A>
        <DT><A HREF="http://wiki.openindiana.org/" ADD_DATE="1283351581" LAST_MODIFIED="1283351589" ICON_URI="http://wiki.openindiana.org:8080/favicon.ico" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAB+ElEQVQ4jbWTT0gTYBjG5zLt3ko6VHhI1ilsTh3dWmugeVjrkkVCf7a1SdrcqFZOcIYNWrlCDYJklo6xyTwkNTKaKEyGK0kIRn8I6TCjrZSx1jR+HcYmS6mD9cJ7eb/3+308z8MnEEg0bKj/CUAo1VLZaEMkNxYc1rfc5ai5v2C29eBF9p/oQijVrgKKqrScsj5geu4D+hvDCCQa9h7rYD6WIBZfpLLRhkCi4Uyni9Dr95zrekhRlbZQQkmtnttD4wD0+yZodXjIlanHx62hZwD0eYOUyvTreyCUanE8yi5+WvhKMpXm+48M87FEHlxcrfuzicXVOu6NTPB7DY6FCl/+WwruQDh/eTQ4yyapbt29AsDuI1c4bOhB2ezM+5HTnZuXN1jWAmqaunEHwgQjUeyup/R5g2SWV/KA5ZWf3PdP0j3whGAkinc8woHT9iyg5aaHZCrN2NQc5Q0WyhQmpmbfAeAOhHE9DgEw8+YjO5RmdtVfZuT5S1LpDFd7RxGctQ3yObGUz99gHyYWX2Ty1Vt21l2iTGHixUyUhfgSZqcPgURDU8cAX74laXV4shL2He/E0uun7sIdKlTtbDvUxhaZIa+zVKZHJDdSoWpH2ezE0utHcvL6WhPFaititZXtijZKalcj21xzHpHcyB7VNcRq63/4TBvpX3MeMN5WPsksAAAAAElFTkSuQmCC" LAST_CHARSET="UTF-8">OpenIndiana Wiki</A>
        <DT><A HREF="http://hg.openindiana.org/" ADD_DATE="1283353262" LAST_MODIFIED="1283353262" ICON_URI="http://pkgdev.openindiana.org/hg/static/hgicon.png" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAABiVBMVEX8/Pz+/v7////5+fn5+fn8/Pz7+/vy8vL39/f7+/v5+fnf39/j4uPs7Oz39/fo6Oj29vbv7+/c3Nzf39/p6enU09Tu7u7x8fHZ2dnNzM3d3d3u7u7Ly8vl5eXJycm6urrX19fl5eW0s7S/v7+srKy6ubq+vr7d3d3W1tbJycmYmJiVlZWioaLNzc24uLjGxsavr6/Gxsa9vb2ioqKNjI2ampqqqqqvr69gYGCxsbFTUlNvb2+8vLxvb2+4uLh0dHS6urqzs7Nra2u9vb2Dg4OJiYmVlZWVlZVMS0y0tLSJiYmRkZFLS0urq6uPj4+cnJyqqqp3d3eqqqo7OztoaGhnZ2d5eXmsrKxJSUlbW1uEhIQ4ODg7Ozs/Pz9SUlJYWFhbW1tpaWlxcXFycnJ4eHh7e3uHh4eNjY2WlpaZmZmampqbm5ucnJydnZ2fn5+hoaGoqKiurq64uLi5ubm6urq9vb3BwcHCwsLExMTFxcXKysrMzMzR0dHT09Pf39/q6urt7e3z8/P///8+3LJEAAAAW3RSTlMAAAACAwQICgoKDRgYGBgZGh4hJykqKiouMzs7QEBMT1NWV1daYm10jJCWmJ2eoqKjq62xtLm6w8XFyMzM1dbb293f5OXn5+jr7u/v9fb39/f4+Pr7/Pz9/v7+1x4CPgAAAAFiS0dEgouz/0QAAADWSURBVBgZNcGFWsIAFIDRux+7sDuwuzuxu7sD82447MJ8c8fnPEeISK0ZWl0YqI4HBEfBjKmO4HA2CBA3pq7JNATw3arL6jQEqLrRf7v5ElOaUxgIqitUL23mckbPqa1/7EFZfH4rSeo7Clxa6ribl7qd/liiyjo2r1TVelwTI9FDRN7cterD+ahAQuNIawo0mWq/77UINKuaXdAduv+82C4SPEuqL+vRmVtfP0/77YYgUxr+8Bu14e/Xg/FkBCo3zlaK6T05PJ7IBQGyKtKhfHq2wQv8Amr7PaR9/LeGAAAAAElFTkSuQmCC" LAST_CHARSET="us-ascii">OpenIndiana Source Code Repositories</A>
        <DT><A HREF="http://openindiana.org/mailman/listinfo" ADD_DATE="1283351663" LAST_MODIFIED="1283351663" ICON_URI="http://openindiana.org/icons/mm-icon.png" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAA4ElEQVR4nJVSwQ3CMAw8IzZxR+g4vMMGfcM3G8CbcRjB7JANjgey5YYAxVJU53x3ulgVM8OW0qbE9Rj3x7IIAAhLYaDl8vp2RBe7CAC0Vj6WRSQn0FqZ3XvyW6pauXcRyiWEOe5ImGsfonqkAvGcX0Jt+uKyFPJOmhny4Z1kKYGv+jQTM4u39zXaRT8T4ESzQxCn6Rb3UZ8xANj5sDXlNN3YG2VsVDsAMDvIPJ+Rnd3kmzgM3KQfjjA3dnPZ+iv/TJDjjvbxqQ8DB1pTzvN5hfXLdN4qAbB9mc57M/DhP9gTMATOwhAoi14AAAAASUVORK5CYII=" LAST_CHARSET="us-ascii">OpenIndiana Mailing Lists</A>
        <DT><A HREF="http://www.illumos.org/projects/openindiana/issues" ADD_DATE="1284716406" LAST_MODIFIED="1284716406" ICON_URI="http://www.illumos.org/favicon.ico" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADMElEQVQ4jXVTWUwTURR9KIgRN9wlblEsokSgjRstdoG2g8QYNXH5wMTEHz/0R43RoNZoNH6KH6YmLoiImVawIgVEJbSWLjMGMBJLiEthljdvpmoFCS7t9UMjIOF83pyce+859yI0AaACpfbXLDv30bG8AABNnoj3D6wdpdD0CPFdi2aW0Kh+hZvyOyJPdOl/y0lg16SAXZOCEEoa6WYzJHNViw5E6tYWie7C+aTbMB23FuQQn+knaTclJJ9xdzdtmI5rCxYItVlH+aqMg+wfkVECj1QHxGZ1QvJujZGQ5THxW/cQxnqThMy3pCB1TgmYL+GXBoybNQmhXqUDG5o0ZoW3zzbOFT2F75UQFeOebjjDOVZHyfMiUHz7QWgwfsf16htyiIoSr/6zUG+YN84Dgd0+DQfNp8VW7XHBlZ2Idh6Egcg1GOQrYeDDVVB8e0F0ZV8nQTMddmlnjIxPo8kdt/Nmix5jKWG3XebuZ/QQvxm+frgIQ1EnfB8IwhBxQKz3PHDONcMCYy2TPEZtxKtLb7WtmIp4Z0a+6M4NEJ8xQZhSB/dQNSwzJRD7eBKGvtTA8GADfJOr4HP4GIjuPFAC1lukvSguNOaF+QfLriC+ZvlxsSE3SHzGHzJT6uIdmQMyQ0G0pwy+4rMwqFyDWOQkKJ27QGxYD4Sx3iTtRXGxSe3BD5bmoN4KlBq9t2km/0KbpQSsZX2Vi72SVw9K5w6IhvfBp579oLzeCSRgBo5eoUgMdUJpM5mi7k0zAUYlgbssaVKg+C72U0c5euWQ5NWDzFAgMyVA/MUguLITQsvmchIwX8VdlrRxKcSatszBbTpMQtQ3ibUc7qtc7BUcmYPcQ9UwV53Rgz1bTikhKoY9ekVy5SyEMZcIKElyZq0XG/PjpE3fT/ymC5ilymV2Wx1hS2tx0HpIChTbJY+eF5vU8X5n5tluet2UfwI2G0rur1qym3esOiK6C+cLrGaa1La1gLw0/SI+U1z2FKq77lrSvnh16SK9bu37O4v2sHaUMmYFsKFkdtSThF3aGYI7t1l0577puJ03e/S0YEPJ4zz4HwBoUqRatbKveml5bwVKnYj3GxHw1Ye0sOdnAAAAAElFTkSuQmCC" LAST_CHARSET="UTF-8">Report a bug in OpenIndiana</A>
    </DL><p>
    <DT><H3>Illumos</H3>
    <DL><p>
        <DT><A HREF="http://www.illumos.org/" ADD_DATE="1283351704" LAST_MODIFIED="1283351704" ICON_URI="http://www.illumos.org/favicon.ico" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADMElEQVQ4jXVTWUwTURR9KIgRN9wlblEsokSgjRstdoG2g8QYNXH5wMTEHz/0R43RoNZoNH6KH6YmLoiImVawIgVEJbSWLjMGMBJLiEthljdvpmoFCS7t9UMjIOF83pyce+859yI0AaACpfbXLDv30bG8AABNnoj3D6wdpdD0CPFdi2aW0Kh+hZvyOyJPdOl/y0lg16SAXZOCEEoa6WYzJHNViw5E6tYWie7C+aTbMB23FuQQn+knaTclJJ9xdzdtmI5rCxYItVlH+aqMg+wfkVECj1QHxGZ1QvJujZGQ5THxW/cQxnqThMy3pCB1TgmYL+GXBoybNQmhXqUDG5o0ZoW3zzbOFT2F75UQFeOebjjDOVZHyfMiUHz7QWgwfsf16htyiIoSr/6zUG+YN84Dgd0+DQfNp8VW7XHBlZ2Idh6Egcg1GOQrYeDDVVB8e0F0ZV8nQTMddmlnjIxPo8kdt/Nmix5jKWG3XebuZ/QQvxm+frgIQ1EnfB8IwhBxQKz3PHDONcMCYy2TPEZtxKtLb7WtmIp4Z0a+6M4NEJ8xQZhSB/dQNSwzJRD7eBKGvtTA8GADfJOr4HP4GIjuPFAC1lukvSguNOaF+QfLriC+ZvlxsSE3SHzGHzJT6uIdmQMyQ0G0pwy+4rMwqFyDWOQkKJ27QGxYD4Sx3iTtRXGxSe3BD5bmoN4KlBq9t2km/0KbpQSsZX2Vi72SVw9K5w6IhvfBp579oLzeCSRgBo5eoUgMdUJpM5mi7k0zAUYlgbssaVKg+C72U0c5euWQ5NWDzFAgMyVA/MUguLITQsvmchIwX8VdlrRxKcSatszBbTpMQtQ3ibUc7qtc7BUcmYPcQ9UwV53Rgz1bTikhKoY9ekVy5SyEMZcIKElyZq0XG/PjpE3fT/ymC5ilymV2Wx1hS2tx0HpIChTbJY+eF5vU8X5n5tluet2UfwI2G0rur1qym3esOiK6C+cLrGaa1La1gLw0/SI+U1z2FKq77lrSvnh16SK9bu37O4v2sHaUMmYFsKFkdtSThF3aGYI7t1l0577puJ03e/S0YEPJ4zz4HwBoUqRatbKveml5bwVKnYj3GxHw1Ye0sOdnAAAAAElFTkSuQmCC" LAST_CHARSET="UTF-8">Illumos Project Homepage</A>
        <DT><A HREF="http://wiki.illumos.org/display/illumos/illumos+Mailing+Lists" ADD_DATE="1283351736" LAST_MODIFIED="1283351736" ICON_URI="http://lists.illumos.org/icons/mm-icon.png" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAA4ElEQVR4nJVSwQ3CMAw8IzZxR+g4vMMGfcM3G8CbcRjB7JANjgey5YYAxVJU53x3ulgVM8OW0qbE9Rj3x7IIAAhLYaDl8vp2RBe7CAC0Vj6WRSQn0FqZ3XvyW6pauXcRyiWEOe5ImGsfonqkAvGcX0Jt+uKyFPJOmhny4Z1kKYGv+jQTM4u39zXaRT8T4ESzQxCn6Rb3UZ8xANj5sDXlNN3YG2VsVDsAMDvIPJ+Rnd3kmzgM3KQfjjA3dnPZ+iv/TJDjjvbxqQ8DB1pTzvN5hfXLdN4qAbB9mc57M/DhP9gTMATOwhAoi14AAAAASUVORK5CYII=" LAST_CHARSET="us-ascii">Illumos Project Mailing Lists</A>
    </DL><p>
  </DL><p>
</DL><p>
components/firefox/firefox-bookmarks.p5m
New file
@@ -0,0 +1,27 @@
#
# This file and its contents are supplied under the terms of the
# Common Development and Distribution License ("CDDL"), version 1.0.
# You may only use this file in accordance with the terms of version
# 1.0 of the CDDL.
#
# A full copy of the text of the CDDL should have accompanied this
# source.  A copy of the CDDL is also available via the Internet at
# http://www.illumos.org/license/CDDL.
#
#
# Copyright 2013 Alexander Pyhalov.  All rights reserved.
#
set name=pkg.fmri value=pkg:/web/data/firefox-bookmarks@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION)
set name=pkg.summary value="Firefox's default bookmark"
set name=info.classification value="org.opensolaris.category.2008:Applications/Internet"
set name=info.source-url value=$(COMPONENT_ARCHIVE_URL)
set name=info.upstream-url value=$(COMPONENT_PROJECT_URL)
set name=org.opensolaris.consolidation value=$(CONSOLIDATION)
license firefox.license license="MPL v2.0"
file files/openindiana-default-bookmarks.html  path=usr/lib/firefox/defaults/profile/bookmarks.html
depend type=require fmri=web/browser/firefox@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION)
components/firefox/firefox.license
New file
@@ -0,0 +1,373 @@
Mozilla Public License Version 2.0
==================================
1. Definitions
--------------
1.1. "Contributor"
    means each individual or legal entity that creates, contributes to
    the creation of, or owns Covered Software.
1.2. "Contributor Version"
    means the combination of the Contributions of others (if any) used
    by a Contributor and that particular Contributor's Contribution.
1.3. "Contribution"
    means Covered Software of a particular Contributor.
1.4. "Covered Software"
    means Source Code Form to which the initial Contributor has attached
    the notice in Exhibit A, the Executable Form of such Source Code
    Form, and Modifications of such Source Code Form, in each case
    including portions thereof.
1.5. "Incompatible With Secondary Licenses"
    means
    (a) that the initial Contributor has attached the notice described
        in Exhibit B to the Covered Software; or
    (b) that the Covered Software was made available under the terms of
        version 1.1 or earlier of the License, but not also under the
        terms of a Secondary License.
1.6. "Executable Form"
    means any form of the work other than Source Code Form.
1.7. "Larger Work"
    means a work that combines Covered Software with other material, in
    a separate file or files, that is not Covered Software.
1.8. "License"
    means this document.
1.9. "Licensable"
    means having the right to grant, to the maximum extent possible,
    whether at the time of the initial grant or subsequently, any and
    all of the rights conveyed by this License.
1.10. "Modifications"
    means any of the following:
    (a) any file in Source Code Form that results from an addition to,
        deletion from, or modification of the contents of Covered
        Software; or
    (b) any new file in Source Code Form that contains any Covered
        Software.
1.11. "Patent Claims" of a Contributor
    means any patent claim(s), including without limitation, method,
    process, and apparatus claims, in any patent Licensable by such
    Contributor that would be infringed, but for the grant of the
    License, by the making, using, selling, offering for sale, having
    made, import, or transfer of either its Contributions or its
    Contributor Version.
1.12. "Secondary License"
    means either the GNU General Public License, Version 2.0, the GNU
    Lesser General Public License, Version 2.1, the GNU Affero General
    Public License, Version 3.0, or any later versions of those
    licenses.
1.13. "Source Code Form"
    means the form of the work preferred for making modifications.
1.14. "You" (or "Your")
    means an individual or a legal entity exercising rights under this
    License. For legal entities, "You" includes any entity that
    controls, is controlled by, or is under common control with You. For
    purposes of this definition, "control" means (a) the power, direct
    or indirect, to cause the direction or management of such entity,
    whether by contract or otherwise, or (b) ownership of more than
    fifty percent (50%) of the outstanding shares or beneficial
    ownership of such entity.
2. License Grants and Conditions
--------------------------------
2.1. Grants
Each Contributor hereby grants You a world-wide, royalty-free,
non-exclusive license:
(a) under intellectual property rights (other than patent or trademark)
    Licensable by such Contributor to use, reproduce, make available,
    modify, display, perform, distribute, and otherwise exploit its
    Contributions, either on an unmodified basis, with Modifications, or
    as part of a Larger Work; and
(b) under Patent Claims of such Contributor to make, use, sell, offer
    for sale, have made, import, and otherwise transfer either its
    Contributions or its Contributor Version.
2.2. Effective Date
The licenses granted in Section 2.1 with respect to any Contribution
become effective for each Contribution on the date the Contributor first
distributes such Contribution.
2.3. Limitations on Grant Scope
The licenses granted in this Section 2 are the only rights granted under
this License. No additional rights or licenses will be implied from the
distribution or licensing of Covered Software under this License.
Notwithstanding Section 2.1(b) above, no patent license is granted by a
Contributor:
(a) for any code that a Contributor has removed from Covered Software;
    or
(b) for infringements caused by: (i) Your and any other third party's
    modifications of Covered Software, or (ii) the combination of its
    Contributions with other software (except as part of its Contributor
    Version); or
(c) under Patent Claims infringed by Covered Software in the absence of
    its Contributions.
This License does not grant any rights in the trademarks, service marks,
or logos of any Contributor (except as may be necessary to comply with
the notice requirements in Section 3.4).
2.4. Subsequent Licenses
No Contributor makes additional grants as a result of Your choice to
distribute the Covered Software under a subsequent version of this
License (see Section 10.2) or under the terms of a Secondary License (if
permitted under the terms of Section 3.3).
2.5. Representation
Each Contributor represents that the Contributor believes its
Contributions are its original creation(s) or it has sufficient rights
to grant the rights to its Contributions conveyed by this License.
2.6. Fair Use
This License is not intended to limit any rights You have under
applicable copyright doctrines of fair use, fair dealing, or other
equivalents.
2.7. Conditions
Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted
in Section 2.1.
3. Responsibilities
-------------------
3.1. Distribution of Source Form
All distribution of Covered Software in Source Code Form, including any
Modifications that You create or to which You contribute, must be under
the terms of this License. You must inform recipients that the Source
Code Form of the Covered Software is governed by the terms of this
License, and how they can obtain a copy of this License. You may not
attempt to alter or restrict the recipients' rights in the Source Code
Form.
3.2. Distribution of Executable Form
If You distribute Covered Software in Executable Form then:
(a) such Covered Software must also be made available in Source Code
    Form, as described in Section 3.1, and You must inform recipients of
    the Executable Form how they can obtain a copy of such Source Code
    Form by reasonable means in a timely manner, at a charge no more
    than the cost of distribution to the recipient; and
(b) You may distribute such Executable Form under the terms of this
    License, or sublicense it under different terms, provided that the
    license for the Executable Form does not attempt to limit or alter
    the recipients' rights in the Source Code Form under this License.
3.3. Distribution of a Larger Work
You may create and distribute a Larger Work under terms of Your choice,
provided that You also comply with the requirements of this License for
the Covered Software. If the Larger Work is a combination of Covered
Software with a work governed by one or more Secondary Licenses, and the
Covered Software is not Incompatible With Secondary Licenses, this
License permits You to additionally distribute such Covered Software
under the terms of such Secondary License(s), so that the recipient of
the Larger Work may, at their option, further distribute the Covered
Software under the terms of either this License or such Secondary
License(s).
3.4. Notices
You may not remove or alter the substance of any license notices
(including copyright notices, patent notices, disclaimers of warranty,
or limitations of liability) contained within the Source Code Form of
the Covered Software, except that You may alter any license notices to
the extent required to remedy known factual inaccuracies.
3.5. Application of Additional Terms
You may choose to offer, and to charge a fee for, warranty, support,
indemnity or liability obligations to one or more recipients of Covered
Software. However, You may do so only on Your own behalf, and not on
behalf of any Contributor. You must make it absolutely clear that any
such warranty, support, indemnity, or liability obligation is offered by
You alone, and You hereby agree to indemnify every Contributor for any
liability incurred by such Contributor as a result of warranty, support,
indemnity or liability terms You offer. You may include additional
disclaimers of warranty and limitations of liability specific to any
jurisdiction.
4. Inability to Comply Due to Statute or Regulation
---------------------------------------------------
If it is impossible for You to comply with any of the terms of this
License with respect to some or all of the Covered Software due to
statute, judicial order, or regulation then You must: (a) comply with
the terms of this License to the maximum extent possible; and (b)
describe the limitations and the code they affect. Such description must
be placed in a text file included with all distributions of the Covered
Software under this License. Except to the extent prohibited by statute
or regulation, such description must be sufficiently detailed for a
recipient of ordinary skill to be able to understand it.
5. Termination
--------------
5.1. The rights granted under this License will terminate automatically
if You fail to comply with any of its terms. However, if You become
compliant, then the rights granted under this License from a particular
Contributor are reinstated (a) provisionally, unless and until such
Contributor explicitly and finally terminates Your grants, and (b) on an
ongoing basis, if such Contributor fails to notify You of the
non-compliance by some reasonable means prior to 60 days after You have
come back into compliance. Moreover, Your grants from a particular
Contributor are reinstated on an ongoing basis if such Contributor
notifies You of the non-compliance by some reasonable means, this is the
first time You have received notice of non-compliance with this License
from such Contributor, and You become compliant prior to 30 days after
Your receipt of the notice.
5.2. If You initiate litigation against any entity by asserting a patent
infringement claim (excluding declaratory judgment actions,
counter-claims, and cross-claims) alleging that a Contributor Version
directly or indirectly infringes any patent, then the rights granted to
You by any and all Contributors for the Covered Software under Section
2.1 of this License shall terminate.
5.3. In the event of termination under Sections 5.1 or 5.2 above, all
end user license agreements (excluding distributors and resellers) which
have been validly granted by You or Your distributors under this License
prior to termination shall survive termination.
************************************************************************
*                                                                      *
*  6. Disclaimer of Warranty                                           *
*  -------------------------                                           *
*                                                                      *
*  Covered Software is provided under this License on an "as is"       *
*  basis, without warranty of any kind, either expressed, implied, or  *
*  statutory, including, without limitation, warranties that the       *
*  Covered Software is free of defects, merchantable, fit for a        *
*  particular purpose or non-infringing. The entire risk as to the     *
*  quality and performance of the Covered Software is with You.        *
*  Should any Covered Software prove defective in any respect, You     *
*  (not any Contributor) assume the cost of any necessary servicing,   *
*  repair, or correction. This disclaimer of warranty constitutes an   *
*  essential part of this License. No use of any Covered Software is   *
*  authorized under this License except under this disclaimer.         *
*                                                                      *
************************************************************************
************************************************************************
*                                                                      *
*  7. Limitation of Liability                                          *
*  --------------------------                                          *
*                                                                      *
*  Under no circumstances and under no legal theory, whether tort      *
*  (including negligence), contract, or otherwise, shall any           *
*  Contributor, or anyone who distributes Covered Software as          *
*  permitted above, be liable to You for any direct, indirect,         *
*  special, incidental, or consequential damages of any character      *
*  including, without limitation, damages for lost profits, loss of    *
*  goodwill, work stoppage, computer failure or malfunction, or any    *
*  and all other commercial damages or losses, even if such party      *
*  shall have been informed of the possibility of such damages. This   *
*  limitation of liability shall not apply to liability for death or   *
*  personal injury resulting from such party's negligence to the       *
*  extent applicable law prohibits such limitation. Some               *
*  jurisdictions do not allow the exclusion or limitation of           *
*  incidental or consequential damages, so this exclusion and          *
*  limitation may not apply to You.                                    *
*                                                                      *
************************************************************************
8. Litigation
-------------
Any litigation relating to this License may be brought only in the
courts of a jurisdiction where the defendant maintains its principal
place of business and such litigation shall be governed by laws of that
jurisdiction, without reference to its conflict-of-law provisions.
Nothing in this Section shall prevent a party's ability to bring
cross-claims or counter-claims.
9. Miscellaneous
----------------
This License represents the complete agreement concerning the subject
matter hereof. If any provision of this License is held to be
unenforceable, such provision shall be reformed only to the extent
necessary to make it enforceable. Any law or regulation which provides
that the language of a contract shall be construed against the drafter
shall not be used to construe this License against a Contributor.
10. Versions of the License
---------------------------
10.1. New Versions
Mozilla Foundation is the license steward. Except as provided in Section
10.3, no one other than the license steward has the right to modify or
publish new versions of this License. Each version will be given a
distinguishing version number.
10.2. Effect of New Versions
You may distribute the Covered Software under the terms of the version
of the License under which You originally received the Covered Software,
or under the terms of any subsequent version published by the license
steward.
10.3. Modified Versions
If you create software not governed by this License, and you want to
create a new license for such software, you may create and use a
modified version of this License if you rename the license and remove
any references to the name of the license steward (except to note that
such modified license differs from this License).
10.4. Distributing Source Code Form that is Incompatible With Secondary
Licenses
If You choose to distribute Source Code Form that is Incompatible With
Secondary Licenses under the terms of this version of the License, the
notice described in Exhibit B of this License must be attached.
Exhibit A - Source Code Form License Notice
-------------------------------------------
  This Source Code Form is subject to the terms of the Mozilla Public
  License, v. 2.0. If a copy of the MPL was not distributed with this
  file, You can obtain one at http://mozilla.org/MPL/2.0/.
If it is not possible or desirable to put the notice in a particular
file, then You may include the notice in a location (such as a LICENSE
file in a relevant directory) where a recipient would be likely to look
for such a notice.
You may add additional accurate notices of copyright ownership.
Exhibit B - "Incompatible With Secondary Licenses" Notice
---------------------------------------------------------
  This Source Code Form is "Incompatible With Secondary Licenses", as
  defined by the Mozilla Public License, v. 2.0.
components/firefox/firefox.p5m
New file
Diff too large
components/firefox/patches/firefox-01-locale.patch
New file
@@ -0,0 +1,13 @@
diff --git a/modules/libpref/src/init/all.js b/modules/libpref/src/init/all.js
index 4e40cfa..b44ec96 100644
--- a/modules/libpref/src/init/all.js
+++ b/modules/libpref/src/init/all.js
@@ -1024,7 +1024,7 @@ pref("intl.charsetmenu.browser.cache.size", 5);
 pref("intl.charset.detector",               "chrome://global/locale/intl.properties");
 pref("intl.charset.default",                "chrome://global-platform/locale/intl.properties");
 pref("intl.ellipsis",                       "chrome://global-platform/locale/intl.properties");
-pref("intl.locale.matchOS",                 false);
+pref("intl.locale.matchOS",                 true);
 // fallback charset list for Unicode conversion (converting from Unicode)
 // currently used for mail send only to handle symbol characters (e.g Euro, trademark, smartquotes)
 // for ISO-8859-1
components/firefox/patches/firefox-02-js-ctypes-compiler-workaround.patch
New file
@@ -0,0 +1,33 @@
diff --git a/js/src/ctypes/CTypes.cpp b/js/src/ctypes/CTypes.cpp
index 763d6e6..8b04fc8 100644
--- a/js/src/ctypes/CTypes.cpp
+++ b/js/src/ctypes/CTypes.cpp
@@ -1023,6 +1023,19 @@ static JS_ALWAYS_INLINE TargetType Convert(FromType d)
   return ConvertImpl<TargetType, FromType>::Convert(d);
 }
+template<class Type>
+class no_bug_numeric_digits
+{
+  public:
+    static const int digits = numeric_limits<Type>::digits;
+};
+template<>
+class no_bug_numeric_digits<unsigned long long>
+{
+  public:
+    static const int digits = 64;
+};
+
 template<class TargetType, class FromType>
 static JS_ALWAYS_INLINE bool IsAlwaysExact()
 {
@@ -1035,7 +1048,7 @@ static JS_ALWAYS_INLINE bool IsAlwaysExact()
   // 2) If FromType is signed, TargetType must also be signed. (Floating point
   //    types are always signed.)
   // 3) If TargetType is an exact integral type, FromType must be also.
-  if (numeric_limits<TargetType>::digits < numeric_limits<FromType>::digits)
+  if (numeric_limits<TargetType>::digits < no_bug_numeric_digits<FromType>::digits)
     return false;
   if (numeric_limits<FromType>::is_signed &&
components/firefox/patches/firefox-03-g11n-nav-lang.patch
New file
@@ -0,0 +1,10 @@
diff --git a/browser/locales/en-US/firefox-l10n.js b/browser/locales/en-US/firefox-l10n.js
index e9027aa..10bdcdb 100644
--- a/browser/locales/en-US/firefox-l10n.js
+++ b/browser/locales/en-US/firefox-l10n.js
@@ -36,4 +36,4 @@
 #filter substitution
-pref("general.useragent.locale", "@AB_CD@");
+pref("general.useragent.locale", "chrome://global/locale/intl.properties");
components/firefox/patches/firefox-04-donot-delay-stopping-realplayer.patch
New file
@@ -0,0 +1,23 @@
diff --git a/content/base/src/nsObjectLoadingContent.cpp b/content/base/src/nsObjectLoadingContent.cpp
index b857452..1dab089 100644
--- a/content/base/src/nsObjectLoadingContent.cpp
+++ b/content/base/src/nsObjectLoadingContent.cpp
@@ -2225,7 +2225,8 @@ DoDelayedStop(nsPluginInstanceOwner* aInstanceOwner,
 #endif
   // Don't delay stopping QuickTime (bug 425157), Flip4Mac (bug 426524),
-  // XStandard (bug 430219), CMISS Zinc (bug 429604).
+  // XStandard (bug 430219), CMISS Zinc (bug 429604),
+  // RealPlayer/Helix (bug 451007).
   if (aDelayedStop
 #if !(defined XP_WIN || defined MOZ_X11)
       && !aInstanceOwner->MatchPluginName("QuickTime")
@@ -2233,6 +2234,8 @@ DoDelayedStop(nsPluginInstanceOwner* aInstanceOwner,
       && !aInstanceOwner->MatchPluginName("XStandard plugin")
       && !aInstanceOwner->MatchPluginName("CMISS Zinc Plugin")
 #endif
+      && !aInstanceOwner->MatchPluginName("RealPlayer")
+      && !aInstanceOwner->MatchPluginName("Helix")
       ) {
     nsCOMPtr<nsIRunnable> evt =
       new nsStopPluginRunnable(aInstanceOwner, aContent);
components/firefox/patches/firefox-09-ipc.patch
New file
Diff too large
components/firefox/patches/firefox-10-appname-tr.patch
New file
@@ -0,0 +1,31 @@
diff --git a/configure b/configure
index 19028c1..794c6f0 100755
--- a/configure
+++ b/configure
@@ -21032,7 +21031,7 @@ fi
 # Check whether --enable-update-channel or --disable-update-channel was given.
 if test "${enable_update_channel+set}" = set; then
   enableval="$enable_update_channel"
-  MOZ_UPDATE_CHANNEL=`echo $enableval | tr A-Z a-z`
+  MOZ_UPDATE_CHANNEL=`echo $enableval | tr -s '[:upper:]' '[:lower:]'`
 fi
@@ -24121,7 +24120,7 @@ fi
 # Check whether --enable-chrome-format or --disable-chrome-format was given.
 if test "${enable_chrome_format+set}" = set; then
   enableval="$enable_chrome_format"
-  MOZ_CHROME_FILE_FORMAT=`echo $enableval | tr A-Z a-z`
+  MOZ_CHROME_FILE_FORMAT=`echo $enableval | tr -s '[:upper:]' '[:lower:]'`
 fi
@@ -26253,7 +26252,7 @@ EOF
 # - MOZ_EXTENSION_MANAGER: When set, enabled extension manager.
 if test -z "$MOZ_APP_NAME"; then
-   MOZ_APP_NAME=`echo $MOZ_APP_BASENAME | tr A-Z a-z`
+   MOZ_APP_NAME=`echo $MOZ_APP_BASENAME | tr -s '[:upper:]' '[:lower:]'`
 fi
 # For extensions and langpacks, we require a max version that is compatible
components/firefox/patches/firefox-11-sqlite-unix-excl.patch
New file
@@ -0,0 +1,16 @@
diff --git a/storage/src/mozStorageConnection.cpp b/storage/src/mozStorageConnection.cpp
--- a/storage/src/mozStorageConnection.cpp
+++ b/storage/src/mozStorageConnection.cpp
@@ -608,6 +608,12 @@
 Connection::initialize(nsIFile *aDatabaseFile,
                        const char* aVFSName)
 {
+#ifdef SOLARIS
+  if (!aVFSName) {
+    aVFSName = "unix-excl";
+  }
+#endif
+
   NS_ASSERTION (!mDBConn, "Initialize called on already opened database!");
   SAMPLE_LABEL("storage", "Connection::initialize");
components/firefox/patches/firefox-12-xpcom-glue-no-hidden.patch
New file
@@ -0,0 +1,22 @@
--- mozilla-esr10/xpcom/glue/Makefile.in.~1~    2013-01-03 21:44:00.000000000 +0400
+++ mozilla-esr10/xpcom/glue/Makefile.in    2013-12-18 19:44:32.632530413 +0400
@@ -44,6 +44,7 @@
 include $(srcdir)/objs.mk
 EXTRA_DEPS += $(srcdir)/objs.mk
+VISIBILITY_FLAGS =
 DIRS            = standalone nomozalloc
diff --git a/xpcom/build/Makefile.in b/xpcom/build/Makefile.in
index 2ff9f82..481d720 100644
--- a/xpcom/build/Makefile.in
+++ b/xpcom/build/Makefile.in
@@ -51,6 +51,7 @@
 SHORT_LIBNAME    = xpcomcor
 LIBXUL_LIBRARY = 1
 EXPORT_LIBRARY = 1
+VISIBILITY_FLAGS =
 GRE_MODULE    = 1
 MOZILLA_INTERNAL_API = 1
components/firefox/patches/firefox-15-use-system-theora.patch
New file
@@ -0,0 +1,62 @@
diff --git a/toolkit/library/Makefile.in b/toolkit/library/Makefile.in
index afdcb02..e5204b9 100644
--- a/toolkit/library/Makefile.in
+++ b/toolkit/library/Makefile.in
@@ -240,6 +240,10 @@ EXTRA_DSO_LDOPTS += -lbe -ltracker
 endif
 ifeq ($(OS_ARCH),SunOS)
+EXTRA_DSO_LDOPTS += -lvorbis -ltheora -logg
+endif
+
+ifeq ($(OS_ARCH),SunOS)
 ifdef GNU_CC
 EXTRA_DSO_LDOPTS += -lelf
 else
diff --git a/toolkit/toolkit-tiers.mk b/toolkit/toolkit-tiers.mk
index 5c381a2..58d900a 100644
--- a/toolkit/toolkit-tiers.mk
+++ b/toolkit/toolkit-tiers.mk
@@ -144,7 +144,6 @@ endif
 ifdef MOZ_VORBIS
 tier_platform_dirs += \
-        media/libvorbis \
         $(NULL)
 endif
@@ -163,8 +162,6 @@ endif
 ifdef MOZ_OGG
 tier_platform_dirs += \
-        media/libogg \
-        media/libtheora \
         $(NULL)
 endif
diff --git a/layout/media/Makefile.in b/layout/media/Makefile.in
index 8e68d73..3ec0263 100644
--- a/layout/media/Makefile.in
+++ b/layout/media/Makefile.in
@@ -37,21 +37,17 @@ endif
 ifdef MOZ_VORBIS
 SHARED_LIBRARY_LIBS     += \
-    $(DEPTH)/media/libvorbis/lib/$(LIB_PREFIX)vorbis.$(LIB_SUFFIX) \
-    $(DEPTH)/media/libogg/src/$(LIB_PREFIX)ogg.$(LIB_SUFFIX) \
     $(NULL)
 endif
 ifdef MOZ_TREMOR
 SHARED_LIBRARY_LIBS    += \
     $(DEPTH)/media/libtremor/lib/$(LIB_PREFIX)tremor.$(LIB_SUFFIX) \
-    $(DEPTH)/media/libogg/src/$(LIB_PREFIX)ogg.$(LIB_SUFFIX) \
     $(NULL)
 endif
 ifdef MOZ_OGG
 SHARED_LIBRARY_LIBS     += \
-    $(DEPTH)/media/libtheora/lib/$(LIB_PREFIX)theora.$(LIB_SUFFIX) \
     $(NULL)
 endif
components/firefox/patches/firefox-18-libvpx-compile.patch
New file
@@ -0,0 +1,32 @@
diff --git a/media/libvpx/Makefile.in b/media/libvpx/Makefile.in
index a5b455e..9c7d5f1 100644
--- a/media/libvpx/Makefile.in
+++ b/media/libvpx/Makefile.in
@@ -96,6 +96,10 @@ ASFLAGS=$(VPX_ASFLAGS) -I. -I$(topsrcdir)/media/libvpx/ -I$(topsrcdir)/media/lib
 AS_DASH_C_FLAG=$(VPX_DASH_C_FLAG)
 ASM_SUFFIX=$(VPX_ASM_SUFFIX)
+#if SOLARIS
+ASFLAGS+=-DSOLARIS=1
+#endif
+
 EXPORTS_NAMESPACES = vpx
 EXPORTS_vpx = \
diff --git a/media/libvpx/vpx_ports/x86_abi_support.asm b/media/libvpx/vpx_ports/x86_abi_support.asm
index a872b28..95e2d7a 100644
--- a/media/libvpx/vpx_ports/x86_abi_support.asm
+++ b/media/libvpx/vpx_ports/x86_abi_support.asm
@@ -182,7 +182,11 @@
     %endmacro
   %endif
   %endif
-  %define HIDDEN_DATA(x) x
+  %ifidn SOLARIS,1
+    %define HIDDEN_DATA(x) x:data hidden
+  %else
+    %define HIDDEN_DATA(x) x
+  %endif
 %else
   %macro GET_GOT 1
   %endmacro
components/firefox/patches/firefox-23-ycbcr.patch
New file
@@ -0,0 +1,695 @@
diff --git a/gfx/ycbcr/Makefile.in b/gfx/ycbcr/Makefile.in
--- a/gfx/ycbcr/Makefile.in
+++ b/gfx/ycbcr/Makefile.in
@@ -93,7 +93,9 @@
 endif
 ifdef SOLARIS_SUNPRO_CXX
-yuv_convert_mmx.$(OBJ_SUFFIX): CXXFLAGS += -xarch=mmx -xO4
+yuv_convert_mmx.$(OBJ_SUFFIX): CXXFLAGS += -xarch=sse -xO4
 yuv_convert_sse2.$(OBJ_SUFFIX): CXXFLAGS += -xarch=sse2 -xO4
+yuv_row_posix.$(OBJ_SUFFIX): yuv_row_posix.il
+yuv_row_posix.$(OBJ_SUFFIX): OS_CXXFLAGS += -xarch=sse -xO4 $(srcdir)/yuv_row_posix.il
 endif
 endif
diff --git a/gfx/ycbcr/yuv_convert.cpp b/gfx/ycbcr/yuv_convert.cpp
index 0e9e329..ae724a0 100644
--- a/gfx/ycbcr/yuv_convert.cpp
+++ b/gfx/ycbcr/yuv_convert.cpp
@@ -120,9 +120,11 @@ NS_GFX_(void) ConvertYCbCrToRGB32(const uint8* y_buf,
     }
   }
+#ifdef ARCH_CPU_X86_FAMILY
   // MMX used for FastConvertYUVToRGB32Row requires emms instruction.
   if (has_sse)
     EMMS();
+#endif
 }
 // C version does 8 at a time to mimic MMX code
@@ -362,9 +364,12 @@ NS_GFX_(void) ScaleYCbCrToRGB32(const uint8* y_buf,
 #endif
     }
   }
+
+#ifdef ARCH_CPU_X86_FAMILY
   // MMX used for FastConvertYUVToRGB32Row and FilterRows requires emms.
   if (has_mmx)
     EMMS();
+#endif
 }
 }  // namespace gfx
diff --git a/gfx/ycbcr/yuv_row_posix.cpp b/gfx/ycbcr/yuv_row_posix.cpp
index b359db4..eed4c15 100644
--- a/gfx/ycbcr/yuv_row_posix.cpp
+++ b/gfx/ycbcr/yuv_row_posix.cpp
@@ -258,7 +258,7 @@ void LinearScaleYUVToRGB32Row(const uint8* y_buf,
 );
 }
-#elif defined(MOZILLA_MAY_SUPPORT_SSE) && defined(ARCH_CPU_X86_32) && !defined(__PIC__)
+#elif defined(MOZILLA_MAY_SUPPORT_SSE) && defined(ARCH_CPU_X86_32) && !defined(__PIC__) && !defined(__SUNPRO_CC)
 // PIC version is slower because less registers are available, so
 // non-PIC is used on platforms where it is possible.
@@ -564,7 +564,7 @@ void LinearScaleYUVToRGB32Row(const uint8* y_buf,
                              width, source_dx);
 }
-#elif defined(MOZILLA_MAY_SUPPORT_SSE) && defined(ARCH_CPU_X86_32) && defined(__PIC__)
+#elif defined(MOZILLA_MAY_SUPPORT_SSE) && defined(ARCH_CPU_X86_32) && defined(__PIC__) && !defined(__SUNPRO_CC)
 void PICConvertYUVToRGB32Row_SSE(const uint8* y_buf,
                                  const uint8* u_buf,
@@ -884,6 +884,128 @@ void LinearScaleYUVToRGB32Row(const uint8* y_buf,
   LinearScaleYUVToRGB32Row_C(y_buf, u_buf, v_buf, rgb_buf, width, source_dx);
 }
+
+#elif defined(MOZILLA_MAY_SUPPORT_SSE) && defined(ARCH_CPU_X86_32) && defined(__SUNPRO_CC)
+
+#if 0
+void FastConvertYUVToRGB32Row_IL(const uint8* y_buf,
+                                 const uint8* u_buf,
+                                 const uint8* v_buf,
+                                 uint8* rgb_buf,
+                                 int width);
+
+void FastConvertYUVToRGB32Row(const uint8* y_buf,
+                              const uint8* u_buf,
+                              const uint8* v_buf,
+                              uint8* rgb_buf,
+                              int width) {
+  if (mozilla::supports_sse()) {
+    FastConvertYUVToRGB32Row_IL(y_buf, u_buf, v_buf, rgb_buf, width);
+    return;
+  }
+
+  FastConvertYUVToRGB32Row_C(y_buf, u_buf, v_buf, rgb_buf, width, 1);
+}
+
+void ScaleYUVToRGB32Row_IL(const uint8* y_buf,
+                           const uint8* u_buf,
+                           const uint8* v_buf,
+                           uint8* rgb_buf,
+                           int width,
+                           int source_dx);
+
+void ScaleYUVToRGB32Row(const uint8* y_buf,
+                        const uint8* u_buf,
+                        const uint8* v_buf,
+                        uint8* rgb_buf,
+                        int width,
+                        int source_dx) {
+  if (mozilla::supports_sse()) {
+    ScaleYUVToRGB32Row_IL(y_buf, u_buf, v_buf, rgb_buf,
+                          width, source_dx);
+    return;
+  }
+
+  ScaleYUVToRGB32Row_C(y_buf, u_buf, v_buf, rgb_buf,
+                       width, source_dx);
+}
+
+void LinearScaleYUVToRGB32Row_IL(const uint8* y_buf,
+                                 const uint8* u_buf,
+                                 const uint8* v_buf,
+                                 uint8* rgb_buf,
+                                 int width,
+                                 int source_dx);
+
+void LinearScaleYUVToRGB32Row(const uint8* y_buf,
+                              const uint8* u_buf,
+                              const uint8* v_buf,
+                              uint8* rgb_buf,
+                              int width,
+                              int source_dx) {
+  if (mozilla::supports_sse()) {
+    LinearScaleYUVToRGB32Row_IL(y_buf, u_buf, v_buf, rgb_buf,
+                                width, source_dx);
+    return;
+  }
+
+  LinearScaleYUVToRGB32Row_C(y_buf, u_buf, v_buf, rgb_buf,
+                             width, source_dx);
+}
+#else
+void PICConvertYUVToRGB32Row(const uint8* y_buf,
+                             const uint8* u_buf,
+                             const uint8* v_buf,
+                             uint8* rgb_buf,
+                             int width,
+                             int16 *kCoefficientsRgbY);
+
+void FastConvertYUVToRGB32Row(const uint8* y_buf,
+                              const uint8* u_buf,
+                              const uint8* v_buf,
+                              uint8* rgb_buf,
+                              int width) {
+  PICConvertYUVToRGB32Row(y_buf, u_buf, v_buf, rgb_buf, width,
+                          &kCoefficientsRgbY[0][0]);
+}
+
+void PICScaleYUVToRGB32Row(const uint8* y_buf,
+                           const uint8* u_buf,
+                           const uint8* v_buf,
+                           uint8* rgb_buf,
+                           int width,
+                           int source_dx,
+                           int16 *kCoefficientsRgbY);
+
+void ScaleYUVToRGB32Row(const uint8* y_buf,
+                        const uint8* u_buf,
+                        const uint8* v_buf,
+                        uint8* rgb_buf,
+                        int width,
+                        int source_dx) {
+  PICScaleYUVToRGB32Row(y_buf, u_buf, v_buf, rgb_buf, width, source_dx,
+                        &kCoefficientsRgbY[0][0]);
+}
+
+void PICLinearScaleYUVToRGB32Row(const uint8* y_buf,
+                                 const uint8* u_buf,
+                                 const uint8* v_buf,
+                                 uint8* rgb_buf,
+                                 int width,
+                                 int source_dx,
+                                 int16 *kCoefficientsRgbY);
+
+void LinearScaleYUVToRGB32Row(const uint8* y_buf,
+                              const uint8* u_buf,
+                              const uint8* v_buf,
+                              uint8* rgb_buf,
+                              int width,
+                              int source_dx) {
+  PICLinearScaleYUVToRGB32Row(y_buf, u_buf, v_buf, rgb_buf, width, source_dx,
+                              &kCoefficientsRgbY[0][0]);
+}
+#endif
+
 #else
 void FastConvertYUVToRGB32Row(const uint8* y_buf,
                               const uint8* u_buf,
diff --git a/gfx/ycbcr/yuv_row_posix.il b/gfx/ycbcr/yuv_row_posix.il
new file mode 100644
index 0000000..faf6463
--- /dev/null
+++ b/gfx/ycbcr/yuv_row_posix.il
@@ -0,0 +1,480 @@
+/ void FastConvertYUVToRGB32Row_IL(const uint8* y_buf,
+/                                  const uint8* u_buf,
+/                                  const uint8* v_buf,
+/                                  uint8* rgb_buf,
+/                                  int width);
+    .inline FastConvertYUVToRGB32Row_IL, 20
+    pusha
+    mov    0x20(%esp),%edx
+    mov    0x24(%esp),%edi
+    mov    0x28(%esp),%esi
+    mov    0x2c(%esp),%ebp
+    mov    0x30(%esp),%ecx
+    jmp    1f
+
+0:
+    movzbl (%edi),%eax
+    add    $0x1,%edi
+    movzbl (%esi),%ebx
+    add    $0x1,%esi
+    movq   kCoefficientsRgbY+2048(,%eax,8),%mm0
+    movzbl (%edx),%eax
+    paddsw kCoefficientsRgbY+4096(,%ebx,8),%mm0
+    movzbl 0x1(%edx),%ebx
+    movq   kCoefficientsRgbY(,%eax,8),%mm1
+    add    $0x2,%edx
+    movq   kCoefficientsRgbY(,%ebx,8),%mm2
+    paddsw %mm0,%mm1
+    paddsw %mm0,%mm2
+    psraw  $0x6,%mm1
+    psraw  $0x6,%mm2
+    packuswb %mm2,%mm1
+    movntq %mm1,0x0(%ebp)
+    add    $0x8,%ebp
+1:
+    sub    $0x2,%ecx
+    jns    0b
+
+    and    $0x1,%ecx
+    je     2f
+
+    movzbl (%edi),%eax
+    movq   kCoefficientsRgbY+2048(,%eax,8),%mm0
+    movzbl (%esi),%eax
+    paddsw kCoefficientsRgbY+4096(,%eax,8),%mm0
+    movzbl (%edx),%eax
+    movq   kCoefficientsRgbY(,%eax,8),%mm1
+    paddsw %mm0,%mm1
+    psraw  $0x6,%mm1
+    packuswb %mm1,%mm1
+    movd   %mm1,0x0(%ebp)
+2:
+    popa
+    .end
+
+/ void ScaleYUVToRGB32Row_IL(const uint8* y_buf,
+/                            const uint8* u_buf,
+/                            const uint8* v_buf,
+/                            uint8* rgb_buf,
+/                            int width,
+/                            int source_dx);
+    .inline ScaleYUVToRGB32Row_IL, 24
+    pusha
+    mov    0x20(%esp),%edx
+    mov    0x24(%esp),%edi
+    mov    0x28(%esp),%esi
+    mov    0x2c(%esp),%ebp
+    mov    0x30(%esp),%ecx
+    xor    %ebx,%ebx
+    jmp    1f
+
+0:
+    mov    %ebx,%eax
+    sar    $0x11,%eax
+    movzbl (%edi,%eax,1),%eax
+    movq   kCoefficientsRgbY+2048(,%eax,8),%mm0
+    mov    %ebx,%eax
+    sar    $0x11,%eax
+    movzbl (%esi,%eax,1),%eax
+    paddsw kCoefficientsRgbY+4096(,%eax,8),%mm0
+    mov    %ebx,%eax
+    add    0x34(%esp),%ebx
+    sar    $0x10,%eax
+    movzbl (%edx,%eax,1),%eax
+    movq   kCoefficientsRgbY(,%eax,8),%mm1
+    mov    %ebx,%eax
+    add    0x34(%esp),%ebx
+    sar    $0x10,%eax
+    movzbl (%edx,%eax,1),%eax
+    movq   kCoefficientsRgbY(,%eax,8),%mm2
+    paddsw %mm0,%mm1
+    paddsw %mm0,%mm2
+    psraw  $0x6,%mm1
+    psraw  $0x6,%mm2
+    packuswb %mm2,%mm1
+    movntq %mm1,0x0(%ebp)
+    add    $0x8,%ebp
+1:
+    sub    $0x2,%ecx
+    jns    0b
+
+    and    $0x1,%ecx
+    je     2f
+
+    mov    %ebx,%eax
+    sar    $0x11,%eax
+    movzbl (%edi,%eax,1),%eax
+    movq   kCoefficientsRgbY+2048(,%eax,8),%mm0
+    mov    %ebx,%eax
+    sar    $0x11,%eax
+    movzbl (%esi,%eax,1),%eax
+    paddsw kCoefficientsRgbY+4096(,%eax,8),%mm0
+    mov    %ebx,%eax
+    sar    $0x10,%eax
+    movzbl (%edx,%eax,1),%eax
+    movq   kCoefficientsRgbY(,%eax,8),%mm1
+    paddsw %mm0,%mm1
+    psraw  $0x6,%mm1
+    packuswb %mm1,%mm1
+    movd   %mm1,0x0(%ebp)
+
+2:
+    popa
+    .end
+
+/ void LinearScaleYUVToRGB32Row_IL(const uint8* y_buf,
+/                                  const uint8* u_buf,
+/                                  const uint8* v_buf,
+/                                  uint8* rgb_buf,
+/                                  int width,
+/                                  int source_dx);
+    .inline LinearScaleYUVToRGB32Row_IL, 24
+    pusha
+    mov    0x20(%esp),%edx
+    mov    0x24(%esp),%edi
+    mov    0x2c(%esp),%ebp
+
+    / source_width = width * source_dx + ebx
+    mov    0x30(%esp), %ecx
+    imull  0x34(%esp), %ecx
+    mov    %ecx, 0x30(%esp)
+
+    mov    0x34(%esp), %ecx
+    xor    %ebx,%ebx
+       / x = 0
+    cmp    $0x20000,%ecx
+       / if source_dx >= 2.0
+    jl     1f
+    mov    $0x8000,%ebx
+       / x = 0.5 for 1/2 or less
+    jmp    1f
+
+0:
+    mov    %ebx,%eax
+    sar    $0x11,%eax
+
+    movzbl (%edi,%eax,1),%ecx
+    movzbl 1(%edi,%eax,1),%esi
+    mov    %ebx,%eax
+    andl   $0x1fffe, %eax
+    imul   %eax, %esi
+    xorl   $0x1fffe, %eax
+    imul   %eax, %ecx
+    addl   %esi, %ecx
+    shrl   $17, %ecx
+    movq   kCoefficientsRgbY+2048(,%ecx,8),%mm0
+
+    mov    0x28(%esp),%esi
+    mov    %ebx,%eax
+    sar    $0x11,%eax
+
+    movzbl (%esi,%eax,1),%ecx
+    movzbl 1(%esi,%eax,1),%esi
+    mov    %ebx,%eax
+    andl   $0x1fffe, %eax
+    imul   %eax, %esi
+    xorl   $0x1fffe, %eax
+    imul   %eax, %ecx
+    addl   %esi, %ecx
+    shrl   $17, %ecx
+    paddsw kCoefficientsRgbY+4096(,%ecx,8),%mm0
+
+    mov    %ebx,%eax
+    sar    $0x10,%eax
+    movzbl (%edx,%eax,1),%ecx
+    movzbl 1(%edx,%eax,1),%esi
+    mov    %ebx,%eax
+    add    0x34(%esp),%ebx
+    andl   $0xffff, %eax
+    imul   %eax, %esi
+    xorl   $0xffff, %eax
+    imul   %eax, %ecx
+    addl   %esi, %ecx
+    shrl   $16, %ecx
+    movq   kCoefficientsRgbY(,%ecx,8),%mm1
+
+    cmp    0x30(%esp), %ebx
+    jge    2f
+
+    mov    %ebx,%eax
+    sar    $0x10,%eax
+    movzbl (%edx,%eax,1),%ecx
+    movzbl 1(%edx,%eax,1),%esi
+    mov    %ebx,%eax
+    add    0x34(%esp),%ebx
+    andl   $0xffff, %eax
+    imul   %eax, %esi
+    xorl   $0xffff, %eax
+    imul   %eax, %ecx
+    addl   %esi, %ecx
+    shrl   $16, %ecx
+    movq   kCoefficientsRgbY(,%ecx,8),%mm2
+
+    paddsw %mm0,%mm1
+    paddsw %mm0,%mm2
+    psraw  $0x6,%mm1
+    psraw  $0x6,%mm2
+    packuswb %mm2,%mm1
+    movntq %mm1,0x0(%ebp)
+    add    $0x8,%ebp
+
+1:
+    cmp    0x30(%esp), %ebx
+    jl     0b
+    jmp    3f
+
+2:
+    paddsw %mm0, %mm1
+    psraw $6, %mm1
+    packuswb %mm1, %mm1
+    movd %mm1, (%ebp)
+
+3:
+    popa
+    .end
+
+/ void PICConvertYUVToRGB32Row(const uint8* y_buf,
+/                              const uint8* u_buf,
+/                              const uint8* v_buf,
+/                              uint8* rgb_buf,
+/                              int width,
+/                              int16 *kCoefficientsRgbY);
+
+    .inline PICConvertYUVToRGB32Row, 24
+    pusha
+    mov    0x20(%esp),%edx
+    mov    0x24(%esp),%edi
+    mov    0x28(%esp),%esi
+    mov    0x2c(%esp),%ebp
+    mov    0x34(%esp),%ecx
+
+    jmp    1f
+
+0:
+    movzbl (%edi),%eax
+    add    $0x1,%edi
+    movzbl (%esi),%ebx
+    add    $0x1,%esi
+    movq   2048(%ecx,%eax,8),%mm0
+    movzbl (%edx),%eax
+    paddsw 4096(%ecx,%ebx,8),%mm0
+    movzbl 0x1(%edx),%ebx
+    movq   0(%ecx,%eax,8),%mm1
+    add    $0x2,%edx
+    movq   0(%ecx,%ebx,8),%mm2
+    paddsw %mm0,%mm1
+    paddsw %mm0,%mm2
+    psraw  $0x6,%mm1
+    psraw  $0x6,%mm2
+    packuswb %mm2,%mm1
+    movntq %mm1,0x0(%ebp)
+    add    $0x8,%ebp
+1:
+    subl   $0x2,0x30(%esp)
+    jns    0b
+
+    andl   $0x1,0x30(%esp)
+    je     2f
+
+    movzbl (%edi),%eax
+    movq   2048(%ecx,%eax,8),%mm0
+    movzbl (%esi),%eax
+    paddsw 4096(%ecx,%eax,8),%mm0
+    movzbl (%edx),%eax
+    movq   0(%ecx,%eax,8),%mm1
+    paddsw %mm0,%mm1
+    psraw  $0x6,%mm1
+    packuswb %mm1,%mm1
+    movd   %mm1,0x0(%ebp)
+2:
+    popa
+    .end
+
+
+/ void PICScaleYUVToRGB32Row(const uint8* y_buf,
+/                            const uint8* u_buf,
+/                            const uint8* v_buf,
+/                            uint8* rgb_buf,
+/                            int width,
+/                            int source_dx,
+/                            int16 *kCoefficientsRgbY);
+
+    .inline PICScaleYUVToRGB32Row, 28
+    pusha
+    mov    0x20(%esp),%edx
+    mov    0x24(%esp),%edi
+    mov    0x28(%esp),%esi
+    mov    0x2c(%esp),%ebp
+    mov    0x38(%esp),%ecx
+    xor    %ebx,%ebx
+    jmp    1f
+
+0:
+    mov    %ebx,%eax
+    sar    $0x11,%eax
+    movzbl (%edi,%eax,1),%eax
+    movq   2048(%ecx,%eax,8),%mm0
+    mov    %ebx,%eax
+    sar    $0x11,%eax
+    movzbl (%esi,%eax,1),%eax
+    paddsw 4096(%ecx,%eax,8),%mm0
+    mov    %ebx,%eax
+    add    0x34(%esp),%ebx
+    sar    $0x10,%eax
+    movzbl (%edx,%eax,1),%eax
+    movq   0(%ecx,%eax,8),%mm1
+    mov    %ebx,%eax
+    add    0x34(%esp),%ebx
+    sar    $0x10,%eax
+    movzbl (%edx,%eax,1),%eax
+    movq   0(%ecx,%eax,8),%mm2
+    paddsw %mm0,%mm1
+    paddsw %mm0,%mm2
+    psraw  $0x6,%mm1
+    psraw  $0x6,%mm2
+    packuswb %mm2,%mm1
+    movntq %mm1,0x0(%ebp)
+    add    $0x8,%ebp
+1:
+    subl   $0x2,0x30(%esp)
+    jns    0b
+
+    andl   $0x1,0x30(%esp)
+    je     2f
+
+    mov    %ebx,%eax
+    sar    $0x11,%eax
+    movzbl (%edi,%eax,1),%eax
+    movq   2048(%ecx,%eax,8),%mm0
+    mov    %ebx,%eax
+    sar    $0x11,%eax
+    movzbl (%esi,%eax,1),%eax
+    paddsw 4096(%ecx,%eax,8),%mm0
+    mov    %ebx,%eax
+    sar    $0x10,%eax
+    movzbl (%edx,%eax,1),%eax
+    movq   0(%ecx,%eax,8),%mm1
+    paddsw %mm0,%mm1
+    psraw  $0x6,%mm1
+    packuswb %mm1,%mm1
+    movd   %mm1,0x0(%ebp)
+
+2:
+    popa
+    .end
+
+
+/ void PICLinearScaleYUVToRGB32Row(const uint8* y_buf,
+/                                  const uint8* u_buf,
+/                                  const uint8* v_buf,
+/                                  uint8* rgb_buf,
+/                                  int width,
+/                                  int source_dx,
+/                                  int16 *kCoefficientsRgbY);
+    .inline PICLinearScaleYUVToRGB32Row, 28
+    pusha
+    mov    0x20(%esp),%edx
+    mov    0x2c(%esp),%ebp
+    mov    0x30(%esp),%ecx
+    mov    0x38(%esp),%edi
+    xor    %ebx,%ebx
+
+    / source_width = width * source_dx + ebx
+    mov    0x30(%esp), %ecx
+    imull  0x34(%esp), %ecx
+    mov    %ecx, 0x30(%esp)
+
+    mov    0x34(%esp), %ecx
+    xor    %ebx,%ebx
+       / x = 0
+    cmp    $0x20000,%ecx
+       / if source_dx >= 2.0
+    jl     1f
+    mov    $0x8000,%ebx
+       / x = 0.5 for 1/2 or less
+    jmp    1f
+
+0:
+    mov    0x24(%esp),%esi
+    mov    %ebx,%eax
+    sar    $0x11,%eax
+
+    movzbl (%esi,%eax,1),%ecx
+    movzbl 1(%esi,%eax,1),%esi
+    mov    %ebx,%eax
+    andl   $0x1fffe, %eax
+    imul   %eax, %esi
+    xorl   $0x1fffe, %eax
+    imul   %eax, %ecx
+    addl   %esi, %ecx
+    shrl   $17, %ecx
+    movq   2048(%edi,%ecx,8),%mm0
+
+    mov    0x28(%esp),%esi
+    mov    %ebx,%eax
+    sar    $0x11,%eax
+
+    movzbl (%esi,%eax,1),%ecx
+    movzbl 1(%esi,%eax,1),%esi
+    mov    %ebx,%eax
+    andl   $0x1fffe, %eax
+    imul   %eax, %esi
+    xorl   $0x1fffe, %eax
+    imul   %eax, %ecx
+    addl   %esi, %ecx
+    shrl   $17, %ecx
+    paddsw 4096(%edi,%ecx,8),%mm0
+
+    mov    %ebx,%eax
+    sar    $0x10,%eax
+    movzbl (%edx,%eax,1),%ecx
+    movzbl 1(%edx,%eax,1),%esi
+    mov    %ebx,%eax
+    add    0x34(%esp),%ebx
+    andl   $0xffff, %eax
+    imul   %eax, %esi
+    xorl   $0xffff, %eax
+    imul   %eax, %ecx
+    addl   %esi, %ecx
+    shrl   $16, %ecx
+    movq   (%edi,%ecx,8),%mm1
+
+    cmp    0x30(%esp), %ebx
+    jge    2f
+
+    mov    %ebx,%eax
+    sar    $0x10,%eax
+    movzbl (%edx,%eax,1),%ecx
+    movzbl 1(%edx,%eax,1),%esi
+    mov    %ebx,%eax
+    add    0x34(%esp),%ebx
+    andl   $0xffff, %eax
+    imul   %eax, %esi
+    xorl   $0xffff, %eax
+    imul   %eax, %ecx
+    addl   %esi, %ecx
+    shrl   $16, %ecx
+    movq   (%edi,%ecx,8),%mm2
+
+    paddsw %mm0,%mm1
+    paddsw %mm0,%mm2
+    psraw  $0x6,%mm1
+    psraw  $0x6,%mm2
+    packuswb %mm2,%mm1
+    movntq %mm1,0x0(%ebp)
+    add    $0x8,%ebp
+
+1:
+    cmp    %ebx, 0x30(%esp)
+    jg     0b
+    jmp    3f
+
+2:
+    paddsw %mm0, %mm1
+    psraw $6, %mm1
+    packuswb %mm1, %mm1
+    movd %mm1, (%ebp)
+
+3:
+    popa
+    .end
diff --git a/gfx/ycbcr/yuv_row_table.cpp b/gfx/ycbcr/yuv_row_table.cpp
index ad71341..518e947 100644
--- a/gfx/ycbcr/yuv_row_table.cpp
+++ b/gfx/ycbcr/yuv_row_table.cpp
@@ -226,6 +226,10 @@ SIMD_ALIGNED(int16 kCoefficientsRgbY[256 * 3][4]) = {
   RGBV(0xFC), RGBV(0xFD), RGBV(0xFE), RGBV(0xFF),
 };
+#ifdef __SUNPRO_CC
+#pragma align 16 (kCoefficientsRgbY)
+#endif
+
 #undef RGBY
 #undef RGBU
 #undef RGBV
components/firefox/patches/firefox-24-stackwalk.patch
New file
@@ -0,0 +1,30 @@
diff -r 32c911bc2579 xpcom/base/nsStackWalk.cpp
--- a/xpcom/base/nsStackWalk.cpp    Thu Jul 12 15:09:18 2012 -0700
+++ b/xpcom/base/nsStackWalk.cpp    Fri Jul 13 12:48:06 2012 +0800
@@ -838,7 +838,7 @@
 #include <sys/regset.h>
 #include <sys/stack.h>
-static int    load_address ( void * pc, void * arg );
+static int    load_address ( void * pc, void * sp, void * arg );
 static struct bucket * newbucket ( void * pc );
 static struct frame * cs_getmyframeptr ( void );
 static void   cs_walk_stack ( void * (*read_func)(char * address),
@@ -911,7 +911,7 @@
 static int
-load_address(void * pc, void * arg )
+load_address(void * pc, void * sp, void * arg )
 {
     static struct bucket table[2048];
     static mutex_t lock;
@@ -932,7 +932,7 @@
     if (ptr->next) {
         mutex_unlock(&lock);
     } else {
-        (args->callback)(pc, args->closure);
+        (args->callback)(pc, NULL, args->closure);
         ptr->next = newbucket(pc);
         mutex_unlock(&lock);
components/firefox/patches/firefox-25-json-compile.patch
New file
@@ -0,0 +1,18 @@
--- a/js/src/jsonparser.h    2011-06-20 18:23:00.974613601 +0800
+++ b/js/src/jsonparser.h    2011-06-20 18:23:11.084373098 +0800
@@ -57,6 +57,7 @@
   public:
     enum ErrorHandling { RaiseError, NoError };
     enum ParsingMode { StrictJSON, LegacyJSON };
+    enum StringType { PropertyName, LiteralValue };
   private:
     /* Data members */
@@ -159,7 +160,6 @@
         return Number;
     }
-    enum StringType { PropertyName, LiteralValue };
     template<StringType ST> Token readString();
     Token readNumber();
components/firefox/patches/firefox-29-selectAddons-app-scope.patch
New file
@@ -0,0 +1,14 @@
--- a/toolkit/mozapps/extensions/content/selectAddons.xml
+++ b/toolkit/mozapps/extensions/content/selectAddons.xml
@@ -129,6 +129,11 @@
               else
                 this.setAttribute("source", this._strings.getString("source.profile"));
               break;
+            case AddonManager.SCOPE_APPLICATION:
+              // On Solaris, we bundle langpacks and Lightning in application scope.
+              this._keep.checked = !aAddon.userDisabled;
+              this.setAttribute("source", this._strings.getString("source.bundled"));
+              break;
             default:
               this._keep.checked = false;
               this.setAttribute("source", this._strings.getString("source.other"));
components/firefox/patches/firefox-30-gfxAlphaRecovery.patch
New file
@@ -0,0 +1,20 @@
diff --git a/gfx/thebes/gfxAlphaRecoverySSE2.cpp b/gfx/thebes/gfxAlphaRecoverySSE2.cpp
index 8fbe01e..a51e822 100644
--- a/gfx/thebes/gfxAlphaRecoverySSE2.cpp
+++ b/gfx/thebes/gfxAlphaRecoverySSE2.cpp
@@ -20,10 +20,12 @@
     { 0x0000ff00, 0x0000ff00, 0x0000ff00, 0x0000ff00 };
 static uint32_t alphaMaski[] __attribute__ ((aligned (16))) =
     { 0xff000000, 0xff000000, 0xff000000, 0xff000000 };
-#elif defined(__SUNPRO_CC) && (defined(__i386) || defined(__x86_64__))
+#elif defined(__SUNPRO_CC) && (defined(__i386) || defined(__x86_64))
 #pragma align 16 (greenMaski, alphaMaski)
-static uint32_t greenMaski[] = { 0x0000ff00, 0x0000ff00, 0x0000ff00, 0x0000ff00 };
-static uint32_t alphaMaski[] = { 0xff000000, 0xff000000, 0xff000000, 0xff000000 };
+static uint32_t greenMaski[] __attribute__ ((aligned (16))) =
+    { 0x0000ff00, 0x0000ff00, 0x0000ff00, 0x0000ff00 };
+static uint32_t alphaMaski[] __attribute__ ((aligned (16))) =
+    { 0xff000000, 0xff000000, 0xff000000, 0xff000000 };
 #endif
 bool
components/firefox/patches/firefox-31-async-channel-crash.patch
New file
@@ -0,0 +1,53 @@
diff --git a/ipc/glue/AsyncChannel.cpp b/ipc/glue/AsyncChannel.cpp
index b80263f..5fb3c22 100644
--- a/ipc/glue/AsyncChannel.cpp
+++ b/ipc/glue/AsyncChannel.cpp
@@ -470,7 +470,7 @@ AsyncChannel::OnDispatchMessage(const Message& msg)
     // it's OK to dispatch messages if the channel is closed/error'd,
     // since we don't have a reply to send back
-    (void)MaybeHandleError(mListener->OnMessageReceived(msg), "AsyncChannel");
+    (void)MaybeHandleError(mListener ? mListener->OnMessageReceived(msg) : MsgNotKnown, "AsyncChannel");
 }
 bool
@@ -524,7 +524,8 @@ AsyncChannel::NotifyChannelClosed()
     // OK, the IO thread just closed the channel normally.  Let the
     // listener know about it.
-    mListener->OnChannelClose();
+    if (mListener)
+      mListener->OnChannelClose();
     Clear();
 }
@@ -546,7 +547,8 @@ AsyncChannel::NotifyMaybeChannelError()
     // Oops, error!  Let the listener know about it.
     mChannelState = ChannelError;
-    mListener->OnChannelError();
+    if (mListener)
+      mListener->OnChannelError();
     Clear();
 }
@@ -610,7 +612,8 @@ AsyncChannel::MaybeHandleError(Result code, const char* channelName)
     PrintErrorMessage(mChild, channelName, errorMsg);
-    mListener->OnProcessingError(code);
+    if (mListener)
+      mListener->OnProcessingError(code);
     return false;
 }
@@ -642,7 +645,8 @@ AsyncChannel::ReportConnectionError(const char* channelName) const
     PrintErrorMessage(mChild, channelName, errorMsg);
-    mListener->OnProcessingError(MsgDropped);
+    if (mListener)
+      mListener->OnProcessingError(MsgDropped);
 }
 void
components/firefox/patches/firefox-34-js-numeric-limits.patch
New file
@@ -0,0 +1,22 @@
diff --git a/js/src/assembler/jit/ExecutableAllocator.h b/js/src/assembler/jit/ExecutableAllocator.h
--- a/js/src/assembler/jit/ExecutableAllocator.h
+++ b/js/src/assembler/jit/ExecutableAllocator.h
@@ -224,17 +224,17 @@ private:
     static size_t roundUpAllocationSize(size_t request, size_t granularity)
     {
         // Something included via windows.h defines a macro with this name,
         // which causes the function below to fail to compile.
         #ifdef _MSC_VER
         # undef max
         #endif
-        if ((std::numeric_limits<size_t>::max() - granularity) <= request)
+        if ((::std::numeric_limits<size_t>::max() - granularity) <= request)
             return OVERSIZE_ALLOCATION;
         // Round up to next page boundary
         size_t size = request + (granularity - 1);
         size = size & ~(granularity - 1);
         JS_ASSERT(size >= request);
         return size;
     }
components/firefox/patches/firefox-35-static-assert.patch
New file
@@ -0,0 +1,28 @@
diff -r f89feda9d997 nsprpub/pr/include/prtypes.h
--- a/nsprpub/pr/include/prtypes.h    Sun Aug 12 21:28:26 2012 +0300
+++ b/nsprpub/pr/include/prtypes.h    Mon Aug 13 17:19:59 2012 +0800
@@ -531,8 +531,24 @@
 ** The macro can be used only in places where an "extern" declaration is
 ** allowed.
 */
+#if defined(__SUNPRO_CC)
+     /*
+      * The Sun Studio C++ compiler is buggy when declaring, inside a function,
+      * another extern'd function with an array argument whose length contains a
+      * sizeof, triggering the error message "sizeof expression not accepted as
+      * size of array parameter".  This bug (6688515, not public yet) would hit
+      * defining moz_static_assert as a function, so we always define an extern
+      * array for Sun Studio.
+      *
+      * We include the line number in the symbol name in a best-effort attempt
+      * to avoid conflicts (see below).
+      */
+#define PR_STATIC_ASSERT(condition) \
+    extern char pr_static_assert[(condition) ? 1 : -1]
+#else
 #define PR_STATIC_ASSERT(condition) \
     extern void pr_static_assert(int arg[(condition) ? 1 : -1])
+#endif
 PR_END_EXTERN_C
components/firefox/patches/firefox-36-gtkembed.patch
New file
Diff too large
components/firefox/patches/firefox-37-sunaudio-buffer.patch
New file
@@ -0,0 +1,175 @@
diff --git a/media/libsydneyaudio/src/sydney_audio_sunaudio.c b/media/libsydneyaudio/src/sydney_audio_sunaudio.c
--- a/media/libsydneyaudio/src/sydney_audio_sunaudio.c
+++ b/media/libsydneyaudio/src/sydney_audio_sunaudio.c
@@ -122,31 +122,33 @@ struct sa_stream {
   unsigned int      rate;
   unsigned int      n_channels;
   unsigned int      bytes_per_ch;
   /* buffer list */
   sa_buf          * bl_head;
   sa_buf          * bl_tail;
   int               n_bufs;
+
+  size_t            buffer_size;
 };
 /* Use a default buffer size with enough room for one second of audio,
  * assuming stereo data at 44.1kHz with 32 bits per channel, and impose
  * a generous limit on the number of buffers.
  */
-#define BUF_SIZE    (2 * 44100 * 4)
+#define BUF_SIZE_MS 200
 #define BUF_LIMIT   5
 #if BUF_LIMIT < 2
 #error BUF_LIMIT must be at least 2!
 #endif
 static void *audio_callback(void *s);
-static sa_buf *new_buffer(void);
+static sa_buf *new_buffer(size_t bufsz);
 static int shutdown_device(sa_stream_t *s);
 /*
  * -----------------------------------------------------------------------------
  * Startup and shutdown functions
  * -----------------------------------------------------------------------------
  */
@@ -176,35 +178,45 @@ sa_stream_create_pcm(
   /*
    * Allocate the instance and required resources.
    */
   sa_stream_t *s;
   if ((s = malloc(sizeof(sa_stream_t))) == NULL) {
     return SA_ERROR_OOM;
   }
-  if ((s->bl_head = new_buffer()) == NULL) {
-    free(s);
-    return SA_ERROR_SYSTEM;
-  }
-  if (pthread_mutex_init(&s->mutex, NULL) != 0) {
-    free(s->bl_head);
-    free(s);
-    return SA_ERROR_SYSTEM;
-  }
   s->output_fd          = -1;
   s->playing            = false;
   s->bytes_played       = 0;
   s->rate               = rate;
   s->n_channels         = n_channels;
   s->bytes_per_ch       = 2;
+  s->buffer_size        = s->bytes_per_ch *
+                          ((rate * n_channels * BUF_SIZE_MS) / 1000);
+
+  /* round buffer_size up to ensure it's divisible by the number of bytes per frame. */
+  if (s->buffer_size % (s->bytes_per_ch * n_channels) != 0) {
+    s->buffer_size += (s->bytes_per_ch * n_channels) - (s->buffer_size % (s->bytes_per_ch * n_channels));
+  }
+
+  if ((s->bl_head = new_buffer(s->buffer_size)) == NULL) {
+    free(s);
+    return SA_ERROR_OOM;
+  }
+
   s->bl_tail            = s->bl_head;
   s->n_bufs             = 1;
+  if (pthread_mutex_init(&s->mutex, NULL) != 0) {
+    free(s->bl_head);
+    free(s);
+    return SA_ERROR_SYSTEM;
+  }
+
   *_s = s;
   return SA_SUCCESS;
 }
 int
 sa_stream_open(sa_stream_t *s) {
   if (s == NULL) {
     return SA_ERROR_NO_INIT;
@@ -388,17 +400,17 @@ sa_stream_write(sa_stream_t *s, const vo
        */
       if (nbytes > 0 && s->n_bufs == BUF_LIMIT) {
 #ifdef TIMING_TRACE
         printf("#");  /* too much audio data */
 #endif
         if (!s->playing) {
           /*
            * We haven't even started playing yet! That means the
-           * BUF_SIZE/BUF_LIMIT values are too low... Not much we can
+           * BUF_SIZE_MS/BUF_LIMIT values are too low... Not much we can
            * do here; spinning won't help because the audio callback
            * hasn't been enabled yet. Oh well, error time.
            */
           printf("Too much audio data received before audio device enabled!\n");
           result = SA_ERROR_SYSTEM;
           break;
         }
         while (s->n_bufs == BUF_LIMIT) {
@@ -407,17 +419,17 @@ sa_stream_write(sa_stream_t *s, const vo
           nanosleep(&ts, NULL);
           pthread_mutex_lock(&s->mutex);
         }
       }
       /*
        * Allocate a new tail buffer, and go 'round again to fill it up.
        */
-      if ((s->bl_tail->next = new_buffer()) == NULL) {
+      if ((s->bl_tail->next = new_buffer(s->buffer_size)) == NULL) {
         result = SA_ERROR_OOM;
         break;
       }
       s->n_bufs++;
       s->bl_tail = s->bl_tail->next;
     } /* if (nbytes <= avail), else */
@@ -497,17 +509,17 @@ sa_stream_get_write_size(sa_stream_t *s,
   pthread_mutex_lock(&s->mutex);
   /*
    * The sum of the free space in the tail buffer plus the size of any new
    * buffers represents the write space available before blocking.
    */
   unsigned int avail = s->bl_tail->size - s->bl_tail->end;
-  avail += (BUF_LIMIT - s->n_bufs) * BUF_SIZE;
+  avail += (BUF_LIMIT - s->n_bufs) * s->buffer_size;
   *size = avail;
   pthread_mutex_unlock(&s->mutex);
   return SA_SUCCESS;
 }
 /* ---------------------------------------------------------------------------
  * General query and support functions
@@ -580,20 +592,20 @@ sa_stream_resume(sa_stream_t *s) {
   pthread_mutex_lock(&s->mutex);
   int result = sa_stream_open(s);
   pthread_mutex_unlock(&s->mutex);
   return result;
 }
 static sa_buf *
-new_buffer(void) {
-  sa_buf  * b = malloc(sizeof(sa_buf) + BUF_SIZE);
+new_buffer(size_t bufsz) {
+  sa_buf  * b = malloc(sizeof(sa_buf) + bufsz);
   if (b != NULL) {
-    b->size  = BUF_SIZE;
+    b->size  = bufsz;
     b->start = 0;
     b->end   = 0;
     b->next  = NULL;
   }
   return b;
 }
 static int
components/firefox/patches/firefox-40-gthread-dlopen.patch
New file
@@ -0,0 +1,12 @@
diff --git a/xpcom/glue/standalone/nsGlueLinkingDlopen.cpp b/xpcom/glue/standalone/nsGlueLinkingDlopen.cpp
--- a/xpcom/glue/standalone/nsGlueLinkingDlopen.cpp
+++ b/xpcom/glue/standalone/nsGlueLinkingDlopen.cpp
@@ -258,6 +258,8 @@
         }
     }
+    static void* gthreadso = dlopen("libgthread-2.0.so.0", RTLD_GLOBAL | RTLD_LAZY);
+
     GetFrozenFunctionsFunc sym =
         (GetFrozenFunctionsFunc) dlsym(libHandle,
                                        LEADING_UNDERSCORE "NS_GetFrozenFunctions");
components/firefox/patches/firefox-41-xBGR-performance.patch
New file
@@ -0,0 +1,47 @@
diff --git a/gfx/cairo/cairo/src/cairo-xlib-surface.c b/gfx/cairo/cairo/src/cairo-xlib-surface.c
--- a/gfx/cairo/cairo/src/cairo-xlib-surface.c
+++ b/gfx/cairo/cairo/src/cairo-xlib-surface.c
@@ -2319,32 +2319,43 @@ _cairo_xlib_surface_upload(cairo_xlib_su
                const cairo_pattern_t *pattern,
                int src_x, int src_y,
                int dst_x, int dst_y,
                unsigned int width,
                unsigned int height,
                cairo_region_t *clip_region)
 {
     cairo_image_surface_t *image;
+    cairo_format_masks_t image_masks;
     cairo_rectangle_int_t extents;
     cairo_status_t status;
     int tx, ty;
     if (pattern->type != CAIRO_PATTERN_TYPE_SURFACE)
     return CAIRO_INT_STATUS_UNSUPPORTED;
     image = (cairo_image_surface_t *) ((cairo_surface_pattern_t *) pattern)->surface;
     if (image->base.type != CAIRO_SURFACE_TYPE_IMAGE)
     return CAIRO_INT_STATUS_UNSUPPORTED;
     if (! (op == CAIRO_OPERATOR_SOURCE ||
        (op == CAIRO_OPERATOR_OVER &&
         (image->base.content & CAIRO_CONTENT_ALPHA) == 0)))
     return CAIRO_INT_STATUS_UNSUPPORTED;
+    if (image->base.backend->type == CAIRO_SURFACE_TYPE_IMAGE) {
+    if (_pixman_format_to_masks (image->pixman_format, &image_masks)) {
+        if (! ((image_masks.alpha_mask == surface->a_mask || surface->a_mask == 0) &&
+           (image_masks.red_mask   == surface->r_mask || surface->r_mask == 0) &&
+           (image_masks.green_mask == surface->g_mask || surface->g_mask == 0) &&
+           (image_masks.blue_mask  == surface->b_mask || surface->b_mask == 0)))
+        return CAIRO_INT_STATUS_UNSUPPORTED;
+    }
+    }
+
     if (image->base.backend->type != CAIRO_SURFACE_TYPE_IMAGE) {
     if (image->base.backend->type == CAIRO_INTERNAL_SURFACE_TYPE_SNAPSHOT) {
         image = (cairo_image_surface_t *) ((cairo_surface_snapshot_t *) image)->target;
         extents.x = extents.y = 0;
         extents.width = image->width;
         extents.height = image->height;
     } else if (image->base.backend->type == CAIRO_SURFACE_TYPE_SUBSURFACE) {
         cairo_surface_subsurface_t *sub = (cairo_surface_subsurface_t *) image;
components/firefox/patches/firefox-43-donot-disable-locale-addon.patch
New file
@@ -0,0 +1,13 @@
diff --git a/browser/app/profile/firefox.js b/browser/app/profile/firefox.js
index 5ef66c9..7dcd0f5 100644
--- a/browser/app/profile/firefox.js
+++ b/browser/app/profile/firefox.js
@@ -61,7 +61,7 @@ pref("extensions.hotfix.certs.1.sha1Fingerprint", "F1:DB:F9:6A:7B:B8:04:FA:48:3C
 // Disable add-ons that are not installed by the user in all scopes by default.
 // See the SCOPE constants in AddonManager.jsm for values to use here.
-pref("extensions.autoDisableScopes", 15);
+pref("extensions.autoDisableScopes", 11);
 // Dictionary download preference
 pref("browser.dictionaries.download.url", "https://addons.mozilla.org/%LOCALE%/firefox/dictionaries/");
components/firefox/patches/firefox-51-graphite2.patch
New file
@@ -0,0 +1,718 @@
diff --git a/gfx/graphite2/include/graphite2/Font.h b/gfx/graphite2/include/graphite2/Font.h
--- a/gfx/graphite2/include/graphite2/Font.h
+++ b/gfx/graphite2/include/graphite2/Font.h
@@ -23,16 +23,19 @@
     of the Mozilla Public License (http://mozilla.org/MPL) or the GNU
     General Public License, as published by the Free Software Foundation,
     either version 2 of the License or (at your option) any later version.
 */
 #pragma once
 #include "graphite2/Types.h"
+#ifndef GRAPHITE2_FONTS_H
+#define GRAPHITE2_FONTS_H
+
 #define GR2_VERSION_MAJOR   1
 #define GR2_VERSION_MINOR   1
 #define GR2_VERSION_BUGFIX  3
 #ifdef __cplusplus
 extern "C"
 {
 #endif
@@ -262,8 +265,9 @@ GR2_API gr_feature_val* gr_featureval_cl
 /** Destroys a gr_feature_val **/
 GR2_API void gr_featureval_destroy(gr_feature_val *pfeatures);
 #ifdef __cplusplus
 }
 #endif
+#endif
diff --git a/gfx/graphite2/include/graphite2/Segment.h b/gfx/graphite2/include/graphite2/Segment.h
--- a/gfx/graphite2/include/graphite2/Segment.h
+++ b/gfx/graphite2/include/graphite2/Segment.h
@@ -21,19 +21,23 @@
     Alternatively, the contents of this file may be used under the terms
     of the Mozilla Public License (http://mozilla.org/MPL) or the GNU
     General Public License, as published by the Free Software Foundation,
     either version 2 of the License or (at your option) any later version.
 */
 #pragma once
+
 #include "graphite2/Types.h"
 #include "graphite2/Font.h"
+#ifndef GRAPHITE2_SEGMENT_H
+#define GRAPHITE2_SEGMENT_H
+
 #ifdef __cplusplus
 extern "C"
 {
 #endif
 enum gr_break_weight {
     gr_breakNone = 0,
     /* after break weights */
@@ -388,8 +392,10 @@ GR2_API int gr_slot_original(const gr_sl
   * Breaks the slot linked list at the given point in the linked list. It is up
   * to the application to keep track of the first slot on each line.
   */
 GR2_API void gr_slot_linebreak_before(gr_slot *p/*not NULL*/);
 #ifdef __cplusplus
 }
 #endif
+
+#endif
diff --git a/gfx/graphite2/include/graphite2/Types.h b/gfx/graphite2/include/graphite2/Types.h
--- a/gfx/graphite2/include/graphite2/Types.h
+++ b/gfx/graphite2/include/graphite2/Types.h
@@ -21,16 +21,19 @@
     Alternatively, the contents of this file may be used under the terms
     of the Mozilla Public License (http://mozilla.org/MPL) or the GNU
     General Public License, as published by the Free Software Foundation,
     either version 2 of the License or (at your option) any later version.
 */
 #pragma once
+#ifndef GRAPHITE2_TYPES_H
+#define GRAPHITE2_TYPES_H
+
 #include <stddef.h>
 typedef unsigned char   gr_uint8;
 typedef gr_uint8        gr_byte;
 typedef signed char     gr_int8;
 typedef unsigned short  gr_uint16;
 typedef short           gr_int16;
 typedef unsigned int    gr_uint32;
@@ -62,8 +65,10 @@ enum gr_encform {
   #if __GNUC__ >= 4
     #define GR2_API      __attribute__ ((visibility("default")))
     #define GR2_LOCAL       __attribute__ ((visibility("hidden")))
   #else
     #define GR2_API
     #define GR2_LOCAL
   #endif
 #endif
+
+#endif
diff --git a/gfx/graphite2/include/graphite2/XmlLog.h b/gfx/graphite2/include/graphite2/XmlLog.h
--- a/gfx/graphite2/include/graphite2/XmlLog.h
+++ b/gfx/graphite2/include/graphite2/XmlLog.h
@@ -20,16 +20,18 @@
     internet at http://www.fsf.org/licenses/lgpl.html.
     Alternatively, the contents of this file may be used under the terms
     of the Mozilla Public License (http://mozilla.org/MPL) or the GNU
     General Public License, as published by the Free Software Foundation,
     either version 2 of the License or (at your option) any later version.
 */
 #pragma once
+#ifndef GRAPHITE2_XMLLOG_H
+#define GRAPHITE2_XMLLOG_H
 #include <graphite2/Types.h>
 #include <stdio.h>
 typedef enum {
     GRLOG_NONE = 0x0,
     GRLOG_FACE = 0x01,
     GRLOG_SEGMENT = 0x02,
@@ -48,8 +50,10 @@ extern "C"
 #endif
 GR2_API bool graphite_start_logging(FILE * logFile, GrLogMask mask);        //may not do anthing if disabled in the implementation of the engine.
 GR2_API void graphite_stop_logging();
 #ifdef __cplusplus
 }
 #endif
+
+#endif
diff --git a/gfx/graphite2/src/Bidi.cpp b/gfx/graphite2/src/Bidi.cpp
--- a/gfx/graphite2/src/Bidi.cpp
+++ b/gfx/graphite2/src/Bidi.cpp
@@ -25,16 +25,19 @@ License, as published by the Free Softwa
 of the License or (at your option) any later version.
 */
 #include "inc/Main.h"
 #include "inc/Slot.h"
 #include "inc/Segment.h"
 using namespace graphite2;
+#undef ES
+#undef CS
+
 enum DirCode {  // Hungarian: dirc
         Unk        = -1,
         N          =  0,   // other neutrals (default) - ON
         L          =  1,   // left-to-right, strong - L
         R          =  2,   // right-to-left, strong - R
         AL         =  3,   // Arabic letter, right-to-left, strong, AR
         EN         =  4,   // European number, left-to-right, weak - EN
         ES         =  5,   // European separator, left-to-right, weak - ES
diff --git a/gfx/graphite2/src/Pass.cpp b/gfx/graphite2/src/Pass.cpp
--- a/gfx/graphite2/src/Pass.cpp
+++ b/gfx/graphite2/src/Pass.cpp
@@ -58,17 +58,17 @@ Pass::~Pass()
     free(m_startStates);
     free(m_sTable);
     free(m_states);
     free(m_ruleMap);
     delete [] m_rules;
 }
-bool Pass::readPass(const byte * const pass_start, size_t pass_length, size_t subtable_base, const Face & face)
+bool Pass::readPass(const byte * pass_start, size_t pass_length, size_t subtable_base, const Face & face)
 {
     const byte *                p = pass_start,
                * const pass_end   = p + pass_length;
     size_t numRanges;
     if (pass_length < 40) return false;
     // Read in basic values
     m_immutable = be::read<byte>(p) & 0x1U;
diff --git a/gfx/graphite2/src/inc/CharInfo.h b/gfx/graphite2/src/inc/CharInfo.h
--- a/gfx/graphite2/src/inc/CharInfo.h
+++ b/gfx/graphite2/src/inc/CharInfo.h
@@ -20,16 +20,19 @@
     internet at http://www.fsf.org/licenses/lgpl.html.
 Alternatively, the contents of this file may be used under the terms of the
 Mozilla Public License (http://mozilla.org/MPL) or the GNU General Public
 License, as published by the Free Software Foundation, either version 2
 of the License or (at your option) any later version.
 */
 #pragma once
+#ifndef GRAPHITE2_SRC_CHARINFO_H
+#define GRAPHITE2_SRC_CHARINFO_H
+
 #include "inc/Main.h"
 namespace graphite2 {
 class CharInfo
 {
@@ -60,8 +63,10 @@ private:
     int8 m_break;    // breakweight coming from lb table
     uint8 m_flags;  // 0,1 segment split.
 };
 } // namespace graphite2
 struct gr_char_info : public graphite2::CharInfo {};
+#endif
+
diff --git a/gfx/graphite2/src/inc/Code.h b/gfx/graphite2/src/inc/Code.h
--- a/gfx/graphite2/src/inc/Code.h
+++ b/gfx/graphite2/src/inc/Code.h
@@ -25,16 +25,18 @@ License, as published by the Free Softwa
 of the License or (at your option) any later version.
 */
 // This class represents loaded graphite stack machine code.  It performs
 // basic sanity checks, on the incoming code to prevent more obvious problems
 // from crashing graphite.
 // Author: Tim Eves
 #pragma once
+#ifndef GRAPHITE2_SRC_CODE_H
+#define GRAPHITE2_SRC_CODE_H
 #include <cassert>
 #include <graphite2/Types.h>
 #include "inc/Main.h"
 #include "inc/Machine.h"
 namespace graphite2 {
@@ -166,8 +168,10 @@ inline bool Machine::Code::deletes() con
 inline size_t Machine::Code::maxRef() const throw()
 {
     return _max_ref;
 }
 } // namespace vm
 } // namespace graphite2
+
+#endif
diff --git a/gfx/graphite2/src/inc/Face.h b/gfx/graphite2/src/inc/Face.h
--- a/gfx/graphite2/src/inc/Face.h
+++ b/gfx/graphite2/src/inc/Face.h
@@ -20,16 +20,18 @@
     internet at http://www.fsf.org/licenses/lgpl.html.
 Alternatively, the contents of this file may be used under the terms of the
 Mozilla Public License (http://mozilla.org/MPL) or the GNU General Public
 License, as published by the Free Software Foundation, either version 2
 of the License or (at your option) any later version.
 */
 #pragma once
+#ifndef GRAPHITE2_SRC_FACE_H
+#define GRAPHITE2_SRC_FACE_H
 #include "inc/Main.h"
 #include "inc/GlyphFace.h"
 #include "inc/Silf.h"
 #include "inc/TtfUtil.h"
 #include "inc/Main.h"
 #include "graphite2/Font.h"
 #include "inc/FeatureMap.h"
@@ -169,8 +171,10 @@ private:
 private:        //defensive on m_pGlyphFaceCache, m_pFileFace and m_silfs
     Face(const Face&);
     Face& operator=(const Face&);
 };
 } // namespace graphite2
 struct gr_face : public graphite2::Face {};
+
+#endif
diff --git a/gfx/graphite2/src/inc/FeatureMap.h b/gfx/graphite2/src/inc/FeatureMap.h
--- a/gfx/graphite2/src/inc/FeatureMap.h
+++ b/gfx/graphite2/src/inc/FeatureMap.h
@@ -20,16 +20,19 @@
     internet at http://www.fsf.org/licenses/lgpl.html.
 Alternatively, the contents of this file may be used under the terms of the
 Mozilla Public License (http://mozilla.org/MPL) or the GNU General Public
 License, as published by the Free Software Foundation, either version 2
 of the License or (at your option) any later version.
 */
 #pragma once
+#ifndef GRAPHITE2_SRC_FEATUREMAP_H
+#define GRAPHITE2_SRC_FEATUREMAP_H
+
 // #include <cstring>
 // #include "graphite2/Types.h"
 #include "graphite2/Font.h"
 #include "inc/Main.h"
 #include "inc/FeatureVal.h"
 namespace graphite2 {
@@ -195,8 +198,10 @@ friend class Face;
 private:        //defensive on m_langFeats
     SillMap(const SillMap&);
     SillMap& operator=(const SillMap&);
 };
 } // namespace graphite2
 struct gr_feature_ref : public graphite2::FeatureRef {};
+
+#endif
diff --git a/gfx/graphite2/src/inc/FeatureVal.h b/gfx/graphite2/src/inc/FeatureVal.h
--- a/gfx/graphite2/src/inc/FeatureVal.h
+++ b/gfx/graphite2/src/inc/FeatureVal.h
@@ -20,16 +20,19 @@
     internet at http://www.fsf.org/licenses/lgpl.html.
 Alternatively, the contents of this file may be used under the terms of the
 Mozilla Public License (http://mozilla.org/MPL) or the GNU General Public
 License, as published by the Free Software Foundation, either version 2
 of the License or (at your option) any later version.
 */
 #pragma once
+#ifndef GRAPHITE2_SRC_FEATUREVAL_H
+#define GRAPHITE2_SRC_FEATUREVAL_H
+
 #include <cstring>
 #include <cassert>
 #include "inc/Main.h"
 #include "inc/List.h"
 namespace graphite2 {
 class FeatureRef;
@@ -68,8 +71,10 @@ private:
 };
 typedef FeatureVal Features;
 } // namespace graphite2
 struct gr_feature_val : public graphite2::FeatureVal {};
+
+#endif
diff --git a/gfx/graphite2/src/inc/Font.h b/gfx/graphite2/src/inc/Font.h
--- a/gfx/graphite2/src/inc/Font.h
+++ b/gfx/graphite2/src/inc/Font.h
@@ -20,16 +20,19 @@
     internet at http://www.fsf.org/licenses/lgpl.html.
 Alternatively, the contents of this file may be used under the terms of the
 Mozilla Public License (http://mozilla.org/MPL) or the GNU General Public
 License, as published by the Free Software Foundation, either version 2
 of the License or (at your option) any later version.
 */
 #pragma once
+#ifndef GRAPHITE2_SRC_FONT_H
+#define GRAPHITE2_SRC_FONT_H
+
 #include <cassert>
 #include "graphite2/Font.h"
 #include "inc/Main.h"
 #include "inc/Face.h"
 namespace graphite2 {
 #define INVALID_ADVANCE -1e38f        // can't be a static const because non-integral
@@ -86,8 +89,10 @@ private:
 private:
     const void* m_appFontHandle/*non-NULL*/;
     gr_advance_fn m_advance;
 };
 } // namespace graphite2
 struct gr_font : public graphite2::Font {};
+
+#endif
diff --git a/gfx/graphite2/src/inc/GlyphFace.h b/gfx/graphite2/src/inc/GlyphFace.h
--- a/gfx/graphite2/src/inc/GlyphFace.h
+++ b/gfx/graphite2/src/inc/GlyphFace.h
@@ -20,16 +20,18 @@
     internet at http://www.fsf.org/licenses/lgpl.html.
 Alternatively, the contents of this file may be used under the terms of the
 Mozilla Public License (http://mozilla.org/MPL) or the GNU General Public
 License, as published by the Free Software Foundation, either version 2
 of the License or (at your option) any later version.
 */
 #pragma once
+#ifndef GRAPHITE2_SRC_GLYPHFACE_H
+#define GRAPHITE2_SRC_GLYPHFACE_H
 #include "inc/Main.h"
 #include "inc/Position.h"
 #include "inc/Sparse.h"
 namespace graphite2 {
 enum metrics {
@@ -81,8 +83,10 @@ private:
 inline GlyphFace::~GlyphFace() throw() {
 }
 inline const Position & GlyphFace::theAdvance() const {
     return m_advance;
 }
 } // namespace graphite2
+
+#endif
diff --git a/gfx/graphite2/src/inc/GlyphFaceCache.h b/gfx/graphite2/src/inc/GlyphFaceCache.h
--- a/gfx/graphite2/src/inc/GlyphFaceCache.h
+++ b/gfx/graphite2/src/inc/GlyphFaceCache.h
@@ -20,16 +20,18 @@
     internet at http://www.fsf.org/licenses/lgpl.html.
 Alternatively, the contents of this file may be used under the terms of the
 Mozilla Public License (http://mozilla.org/MPL) or the GNU General Public
 License, as published by the Free Software Foundation, either version 2
 of the License or (at your option) any later version.
 */
 #pragma once
+#ifndef GRAPHITE2_SRC_GLYPHFACECACHE_H
+#define GRAPHITE2_SRC_GLYPHFACECACHE_H
 #include "inc/GlyphFace.h"
 #include "graphite2/Font.h"
 namespace graphite2 {
 class Segment;
 class Face;
@@ -96,8 +98,10 @@ private:
     GlyphFace **glyphPtrDirect(unsigned short glyphid) const { return (GlyphFace **)((const char*)(this)+sizeof(GlyphFaceCache)+sizeof(GlyphFace*)*glyphid);}
 private:      //defensive
     GlyphFaceCache(const GlyphFaceCache&);
     GlyphFaceCache& operator=(const GlyphFaceCache&);
 };
 } // namespace graphite2
+
+#endif
diff --git a/gfx/graphite2/src/inc/List.h b/gfx/graphite2/src/inc/List.h
--- a/gfx/graphite2/src/inc/List.h
+++ b/gfx/graphite2/src/inc/List.h
@@ -22,16 +22,18 @@
 Alternatively, the contents of this file may be used under the terms of the
 Mozilla Public License (http://mozilla.org/MPL) or the GNU General Public
 License, as published by the Free Software Foundation, either version 2
 of the License or (at your option) any later version.
 */
 // designed to have a limited subset of the std::vector api
 #pragma once
+#ifndef GRAPHITE2_SRC_LIST_H
+#define GRAPHITE2_SRC_LIST_H
 #include <cassert>
 #include <cstring>
 #include <cstdlib>
 #include <new>
 namespace graphite2 {
@@ -147,8 +149,10 @@ typename Vector<T>::iterator Vector<T>::
     for (iterator e = first; e != last; ++e) e->~T();
     const size_t sz = distance(first, last);
     if (m_last != last) memmove(first, last, distance(last,end())*sizeof(T));
     m_last -= sz;
     return first;
 }
 } // namespace graphite2
+
+#endif
diff --git a/gfx/graphite2/src/inc/Machine.h b/gfx/graphite2/src/inc/Machine.h
--- a/gfx/graphite2/src/inc/Machine.h
+++ b/gfx/graphite2/src/inc/Machine.h
@@ -30,16 +30,19 @@ of the License or (at your option) any l
 // Build one of direct_machine.cpp or call_machine.cpp to implement this
 // interface.
 #pragma once
 #include <cstring>
 #include <graphite2/Types.h>
 #include "inc/Main.h"
+#ifndef GRAPHITE2_SRC_MACHINE_H
+#define GRAPHITE2_SRC_MACHINE_H
+
 #if defined(__GNUC__)
 #if defined(__clang__)
 #define     HOT
 #if defined(__x86_64)
 #define     REGPARM(n)      __attribute__((regparm(n)))
 #else
 #define     REGPARM(n)
 #endif
@@ -188,10 +191,10 @@ inline void Machine::check_final_stack(c
     if      (sp <  base)    _status = stack_underflow;       // This should be impossible now.
     else if (sp >= limit)   _status = stack_overflow;        // So should this.
     else if (sp != base)    _status = stack_not_empty;
 }
 } // namespace vm
 } // namespace graphite2
+#endif
-
diff --git a/gfx/graphite2/src/inc/Main.h b/gfx/graphite2/src/inc/Main.h
--- a/gfx/graphite2/src/inc/Main.h
+++ b/gfx/graphite2/src/inc/Main.h
@@ -24,16 +24,19 @@ Mozilla Public License (http://mozilla.o
 License, as published by the Free Software Foundation, either version 2
 of the License or (at your option) any later version.
 */
 #pragma once
 #include <cstdlib>
 #include "graphite2/Types.h"
+#ifndef GRAPHITE2_SRC_MAIN_H
+#define GRAPHITE2_SRC_MAIN_H
+
 #ifdef GRAPHITE2_CUSTOM_HEADER
 #include GRAPHITE2_CUSTOM_HEADER
 #endif
 namespace graphite2 {
 typedef gr_uint8        uint8;
 typedef gr_uint8        byte;
@@ -68,8 +71,10 @@ template <typename T> T * grzeroalloc(si
     void operator delete[] (void * p)throw() { free(p); } \
     void operator delete[] (void *, void *) throw() {}
 #ifdef __GNUC__
 #define GR_MAYBE_UNUSED __attribute__((unused))
 #else
 #define GR_MAYBE_UNUSED
 #endif
+
+#endif
diff --git a/gfx/graphite2/src/inc/Pass.h b/gfx/graphite2/src/inc/Pass.h
--- a/gfx/graphite2/src/inc/Pass.h
+++ b/gfx/graphite2/src/inc/Pass.h
@@ -20,16 +20,18 @@
     internet at http://www.fsf.org/licenses/lgpl.html.
 Alternatively, the contents of this file may be used under the terms of the
 Mozilla Public License (http://mozilla.org/MPL) or the GNU General Public
 License, as published by the Free Software Foundation, either version 2
 of the License or (at your option) any later version.
 */
 #pragma once
+#ifndef GRAPHITE2_SRC_PASS_H
+#define GRAPHITE2_SRC_PASS_H
 #include <cstdlib>
 #include "inc/Code.h"
 namespace graphite2 {
 class Segment;
 class Face;
@@ -89,8 +91,10 @@ private:
     vm::Machine::Code m_cPConstraint;
 private:        //defensive
     Pass(const Pass&);
     Pass& operator=(const Pass&);
 };
 } // namespace graphite2
+
+#endif
diff --git a/gfx/graphite2/src/inc/Segment.h b/gfx/graphite2/src/inc/Segment.h
--- a/gfx/graphite2/src/inc/Segment.h
+++ b/gfx/graphite2/src/inc/Segment.h
@@ -20,16 +20,18 @@
     internet at http://www.fsf.org/licenses/lgpl.html.
 Alternatively, the contents of this file may be used under the terms of the
 Mozilla Public License (http://mozilla.org/MPL) or the GNU General Public
 License, as published by the Free Software Foundation, either version 2
 of the License or (at your option) any later version.
 */
 #pragma once
+#ifndef GRAPHITE2_SRC_SEGMENT_H
+#define GRAPHITE2_SRC_SEGMENT_H
 #include "inc/Main.h"
 #include <cassert>
 #include "inc/Slot.h"
 #include "inc/CharInfo.h"
 #include "inc/FeatureVal.h"
@@ -176,8 +178,10 @@ uint16 Segment::getGlyphMetric(Slot *iSl
     else
         return m_face->getGlyphMetric(iSlot->gid(), metric);
 }
 } // namespace graphite2
 struct gr_segment : public graphite2::Segment {};
+#endif
+
diff --git a/gfx/graphite2/src/inc/Silf.h b/gfx/graphite2/src/inc/Silf.h
--- a/gfx/graphite2/src/inc/Silf.h
+++ b/gfx/graphite2/src/inc/Silf.h
@@ -20,16 +20,18 @@
     internet at http://www.fsf.org/licenses/lgpl.html.
 Alternatively, the contents of this file may be used under the terms of the
 Mozilla Public License (http://mozilla.org/MPL) or the GNU General Public
 License, as published by the Free Software Foundation, either version 2
 of the License or (at your option) any later version.
 */
 #pragma once
+#ifndef GRAPHITE2_SRC_SILF_H
+#define GRAPHITE2_SRC_SILF_H
 #include "inc/Main.h"
 #include "inc/Pass.h"
 namespace graphite2 {
 class Face;
@@ -106,8 +108,10 @@ private:
     void releaseBuffers() throw();
     Silf(const Silf&);
     Silf& operator=(const Silf&);
 };
 } // namespace graphite2
+
+#endif
diff --git a/gfx/graphite2/src/inc/Slot.h b/gfx/graphite2/src/inc/Slot.h
--- a/gfx/graphite2/src/inc/Slot.h
+++ b/gfx/graphite2/src/inc/Slot.h
@@ -20,16 +20,18 @@
     internet at http://www.fsf.org/licenses/lgpl.html.
 Alternatively, the contents of this file may be used under the terms of the
 Mozilla Public License (http://mozilla.org/MPL) or the GNU General Public
 License, as published by the Free Software Foundation, either version 2
 of the License or (at your option) any later version.
 */
 #pragma once
+#ifndef GRAPHITE2_SRC_SLOT_H
+#define GRAPHITE2_SRC_SLOT_H
 #include "graphite2/Types.h"
 #include "graphite2/Segment.h"
 #include "inc/Main.h"
 #include "inc/Font.h"
@@ -138,8 +140,10 @@ private:
     friend class SegCacheEntry;
     friend class Segment;
 };
 } // namespace graphite2
 struct gr_slot : public graphite2::Slot {};
+
+#endif
diff --git a/gfx/graphite2/src/inc/TtfUtil.h b/gfx/graphite2/src/inc/TtfUtil.h
--- a/gfx/graphite2/src/inc/TtfUtil.h
+++ b/gfx/graphite2/src/inc/TtfUtil.h
@@ -20,16 +20,18 @@
     internet at http://www.fsf.org/licenses/lgpl.html.
 Alternatively, the contents of this file may be used under the terms of the
 Mozilla Public License (http://mozilla.org/MPL) or the GNU General Public
 License, as published by the Free Software Foundation, either version 2
 of the License or (at your option) any later version.
 */
 #pragma once
+#ifndef GRAPHITE2_SRC_TTFUTIL_H
+#define GRAPHITE2_SRC_TTFUTIL_H
 /*--------------------------------------------------------------------*//*:Ignore this sentence.
 File: TtfUtil.h
 Responsibility: Alan Ward
 Last reviewed: Not yet.
 Description:
     Utility class for handling TrueType font files.
@@ -200,8 +202,10 @@ public:
     // utitily method used by high-level GlyfPoints
     bool SimplifyFlags(char * prgbFlags, int cnPoints);
     bool CalcAbsolutePoints(int * prgnX, int * prgnY, int cnPoints);
 #endif
 } // end of namespace TtfUtil
 } // end of namespace graphite2
+
+#endif
components/firefox/patches/firefox-63-asyncchannel-std-queue.patch
New file
@@ -0,0 +1,20 @@
--- mozilla-esr17/ipc/glue/AsyncChannel.cpp.~2~    2013-12-20 11:47:01.970986984 +0400
+++ mozilla-esr17/ipc/glue/AsyncChannel.cpp    2013-12-20 13:25:17.409935508 +0400
@@ -688,7 +688,7 @@
         mExistingListener = mTransport->set_listener(this);
 #ifdef DEBUG
         if (mExistingListener) {
-            queue<Message> pending;
+            std::queue<Message> pending;
             mExistingListener->GetQueuedMessages(pending);
             MOZ_ASSERT(pending.empty());
         }
@@ -705,7 +705,7 @@
 {
     AssertIOThread();
-    queue<Message> pending;
+    std::queue<Message> pending;
     {
         MonitorAutoLock lock(*mChan->mMonitor);
components/firefox/patches/firefox-76-libxul-link-error.patch
New file
@@ -0,0 +1,11 @@
--- mozilla-esr17/toolkit/library/Makefile.in.~1~    2013-12-21 02:32:15.373074676 +0400
+++ mozilla-esr17/toolkit/library/Makefile.in    2013-12-21 02:33:55.715822750 +0400
@@ -451,7 +451,7 @@
 endif
 endif
-EXTRA_DSO_LDOPTS += $(LIBS_DIR) $(EXTRA_DSO_LIBS)
+EXTRA_DSO_LDOPTS += $(LIBS_DIR) $(EXTRA_DSO_LIBS) $(MKSHLIB_FORCE_ALL) ../../mfbt/libmfbt.a $(MKSHLIB_UNFORCE_ALL)
 DEFINES += -DIMPL_XREAPI
components/firefox/patches/firefox-94-ogg-webm-no-hidden.patch
New file
@@ -0,0 +1,20 @@
--- mozilla-esr10/content/media/ogg/Makefile.in.~1~    2013-12-17 18:24:47.083655596 +0400
+++ mozilla-esr10/content/media/ogg/Makefile.in    2013-12-17 18:25:18.787483891 +0400
@@ -44,6 +44,7 @@
 MODULE        = content
 LIBRARY_NAME    = gkconogg_s
 LIBXUL_LIBRARY     = 1
+VISIBILITY_FLAGS =
 EXPORTS        += \
--- mozilla-esr10/content/media/webm/Makefile.in.~1~    2013-12-17 18:23:32.693516182 +0400
+++ mozilla-esr10/content/media/webm/Makefile.in    2013-12-17 18:24:15.248491871 +0400
@@ -44,6 +44,7 @@
 MODULE        = content
 LIBRARY_NAME    = gkconwebm_s
 LIBXUL_LIBRARY     = 1
+VISIBILITY_FLAGS =
 EXPORTS        += \
components/firefox/patches/firefox-95-paths.patch
New file
@@ -0,0 +1,16 @@
--- mozilla-esr17/config/baseconfig.mk.~1~    2013-12-20 11:28:03.578555942 +0400
+++ mozilla-esr17/config/baseconfig.mk    2013-12-20 11:29:19.877224961 +0400
@@ -1,9 +1,9 @@
 INCLUDED_AUTOCONF_MK = 1
-includedir := $(includedir)/$(MOZ_APP_NAME)-$(MOZ_APP_VERSION)
-idldir = $(datadir)/idl/$(MOZ_APP_NAME)-$(MOZ_APP_VERSION)
-installdir = $(libdir)/$(MOZ_APP_NAME)-$(MOZ_APP_VERSION)
-sdkdir = $(libdir)/$(MOZ_APP_NAME)-devel-$(MOZ_APP_VERSION)
+includedir := $(includedir)/${MOZILLA_PKG_NAME}
+idldir = $(datadir)/idl/${MOZILLA_PKG_NAME}
+installdir = $(libdir)/${MOZILLA_PKG_NAME}
+sdkdir = $(libdir)/${MOZILLA_PKG_NAME}
 DIST = $(DEPTH)/dist
 # We do magic with OBJ_SUFFIX in config.mk, the following ensures we don't
components/firefox/patches/firefox-96-remove-sections.patch
New file
@@ -0,0 +1,22 @@
--- mozilla-esr17/configure.~1~    2013-12-20 11:30:32.498201900 +0400
+++ mozilla-esr17/configure    2013-12-20 11:31:26.610672775 +0400
@@ -9455,8 +9455,8 @@
 fi
 if test "$GNU_CC"; then
-    CFLAGS="$CFLAGS -ffunction-sections -fdata-sections"
-    CXXFLAGS="$CXXFLAGS -ffunction-sections -fdata-sections -fno-exceptions"
+    CFLAGS="$CFLAGS"
+    CXXFLAGS="$CXXFLAGS -fno-exceptions"
 fi
@@ -9484,7 +9484,7 @@
               'int main() {return foo() - bar();}' > conftest.${ac_ext}
         # If the linker supports ICF, foo and bar symbols will have
         # the same address
-        if { ac_try='${CC-cc} -o conftest${ac_exeext} $LDFLAGS -Wl,--icf=safe -ffunction-sections conftest.${ac_ext} $LIBS 1>&2'; { (eval echo configure:9488: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } &&
+        if { ac_try='${CC-cc} -o conftest${ac_exeext} $LDFLAGS -Wl,--icf=safe  conftest.${ac_ext} $LIBS 1>&2'; { (eval echo configure:9488: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } &&
            test -s conftest${ac_exeext} &&
            objdump -t conftest${ac_exeext} | awk '{a[$6] = $1} END {if (a["foo"] && (a["foo"] != a["bar"])) { exit 1 }}'; then
             LD_SUPPORTS_ICF=yes
components/firefox/patches/firefox-99-mozalloc-abort.patch
New file
@@ -0,0 +1,14 @@
--- mozilla-esr17/memory/mozalloc/mozalloc_abort.cpp.~1~    2013-05-09 22:12:41.000000000 +0400
+++ mozilla-esr17/memory/mozalloc/mozalloc_abort.cpp    2013-12-20 11:38:40.227970248 +0400
@@ -27,7 +27,11 @@
 // Define abort() here, so that it is used instead of the system abort(). This
 // lets us control the behavior when aborting, in order to get better results
 // on *NIX platforms. See mozalloc_abort for details.
+#if defined(SOLARIS)
+void std::abort(void)
+#else
 void abort(void)
+#endif
 {
     mozalloc_abort("Redirecting call to abort() to mozalloc_abort\n");
 }
components/firefox/patches/patch-branding.patch
New file
@@ -0,0 +1,11 @@
--- mozilla-esr17/browser/branding/official/pref/firefox-branding.js.~1~    2013-12-20 11:41:33.871499664 +0400
+++ mozilla-esr17/browser/branding/official/pref/firefox-branding.js    2013-12-20 11:42:04.666610205 +0400
@@ -3,7 +3,7 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 pref("startup.homepage_override_url","");
-pref("startup.homepage_welcome_url","http://www.mozilla.com/%LOCALE%/%APP%/%VERSION%/firstrun/");
+pref("startup.homepage_welcome_url","file:///usr/share/doc/openindiana-welcome/html/index.html");
 // Interval: Time between checks for a new version (in seconds)
 pref("app.update.interval", 43200); // 12 hours
 // The time interval between the downloading of mar file chunks in the
components/firefox/patches/patch-browser_installer_package-manifest.in.patch
New file
@@ -0,0 +1,15 @@
--- mozilla-esr17/browser/installer/package-manifest.in.~1~    2013-12-21 10:42:25.195508344 +0400
+++ mozilla-esr17/browser/installer/package-manifest.in    2013-12-21 10:42:49.805468402 +0400
@@ -640,10 +640,12 @@
 ; for Solaris SPARC
 #ifdef SOLARIS
+#ifdef SPARC
 bin/libfreebl_32fpu_3.so
 bin/libfreebl_32int_3.so
 bin/libfreebl_32int64_3.so
 #endif
+#endif
 ; [Updater]
 ;
components/firefox/patches/patch-gfx_ycrbcr_chromium_types.h.patch
New file
@@ -0,0 +1,14 @@
--- mozilla-esr17/gfx/ycbcr/chromium_types.h.orig    2013-12-20 14:37:08.616209273 +0400
+++ mozilla-esr17/gfx/ycbcr/chromium_types.h    2013-12-20 14:38:03.802718142 +0400
@@ -8,9 +8,11 @@
 #include "prtypes.h"
 #include "mozilla/StandardInteger.h"
+#ifndef PROTYPES_H
 typedef uint8_t uint8;
 typedef int8_t int8;
 typedef int16_t int16;
+#endif
 // From Chromium build_config.h:
 // Processor architecture detection.  For more info on what's defined, see:
components/firefox/patches/patch-jsmath_cpp.patch
New file
@@ -0,0 +1,11 @@
--- mozilla-esr17/js/src/jsmath.cpp.~1~    2013-12-20 12:19:54.981244100 +0400
+++ mozilla-esr17/js/src/jsmath.cpp    2013-12-20 12:20:40.309497692 +0400
@@ -194,7 +194,7 @@
     }
 #endif
-#if defined(SOLARIS) && defined(__GNUC__)
+#if defined(Solaris_doesnt_know_about_MOZ_DOUBLE_IS_NEGZERO)
     if (x == 0) {
         if (MOZ_DOUBLE_IS_NEGZERO(y))
             return js_copysign(M_PI, x);
components/firefox/patches/patch-nss_lib_ckfw_builtins_manifest.mn.patch
New file
@@ -0,0 +1,11 @@
--- mozilla-esr17/security/nss/lib/ckfw/builtins/manifest.mn    2013-12-09 12:02:47.828269480 +0400
+++ mozilla-esr17/security/nss/lib/ckfw/builtins/manifest.mn    2013-12-09 12:02:58.173502917 +0400
@@ -6,7 +6,7 @@
 CORE_DEPTH = ../../..
 MODULE = nss
-MAPFILE = $(OBJDIR)/nssckbi.def
+MAPFILE_SOURCE = $(OBJDIR)/nssckbi.def
 EXPORTS =        \
     nssckbi.h    \
components/firefox/patches/patch-nss_lib_freebl_manifest.mn.patch
New file
@@ -0,0 +1,11 @@
--- mozilla-esr17/security/nss/lib/freebl/manifest.mn    2013-12-08 16:10:50.457966510 +0400
+++ mozilla-esr17/security/nss/lib/freebl/manifest.mn    2013-12-08 16:11:06.463920949 +0400
@@ -36,7 +36,7 @@
   LIBRARY_VERSION := _$(LIBRARY_VERSION)
 endif
-MAPFILE = $(OBJDIR)/$(LIBRARY_NAME).def
+MAPFILE_SOURCE = $(OBJDIR)/$(LIBRARY_NAME).def
 SOFTOKEN_LIBRARY_VERSION = 3
components/firefox/patches/patch-nss_lib_nss_manifest.mn.patch
New file
@@ -0,0 +1,11 @@
--- mozilla-esr17/security/nss/lib/nss/manifest.mn    2013-12-09 10:38:00.859109354 +0400
+++ mozilla-esr17/security/nss/lib/nss/manifest.mn    2013-12-09 10:38:14.498503435 +0400
@@ -20,7 +20,7 @@
     utilwrap.c \
     $(NULL)
-MAPFILE = $(OBJDIR)/nss.def
+MAPFILE_SOURCE = $(OBJDIR)/nss.def
 LIBRARY_NAME = nss
 LIBRARY_VERSION = 3
components/firefox/patches/patch-nss_lib_nss_ssl_manifest.mn.patch
New file
@@ -0,0 +1,11 @@
--- mozilla-esr17/security/nss/lib/ssl/manifest.mn    2013-12-09 11:12:51.253419179 +0400
+++ mozilla-esr17/security/nss/lib/ssl/manifest.mn    2013-12-09 11:13:06.552321826 +0400
@@ -15,7 +15,7 @@
     $(NULL)
 MODULE = nss
-MAPFILE = $(OBJDIR)/ssl.def
+MAPFILE_SOURCE = $(OBJDIR)/ssl.def
 CSRCS = \
     derive.c \
components/firefox/patches/patch-nss_lib_smime_manifest.mn.patch
New file
@@ -0,0 +1,11 @@
--- mozilla-esr17/security/nss/lib/smime/manifest.mn    2013-12-09 11:36:37.032122861 +0400
+++ mozilla-esr17/security/nss/lib/smime/manifest.mn    2013-12-09 11:36:49.890431741 +0400
@@ -17,7 +17,7 @@
     $(NULL)
 MODULE = nss
-MAPFILE = $(OBJDIR)/smime.def
+MAPFILE_SOURCE = $(OBJDIR)/smime.def
 CSRCS = \
     cmsarray.c \
components/firefox/patches/patch-nss_lib_softoken_legacydb_manifest.mn.patch
New file
@@ -0,0 +1,11 @@
--- mozilla-esr17/security/nss/lib/softoken/legacydb/manifest.mn    2013-12-09 09:34:51.029064561 +0400
+++ mozilla-esr17/security/nss/lib/softoken/legacydb/manifest.mn    2013-12-09 09:35:06.618597493 +0400
@@ -10,7 +10,7 @@
 LIBRARY_NAME = nssdbm
 LIBRARY_VERSION = 3
-MAPFILE = $(OBJDIR)/nssdbm.def
+MAPFILE_SOURCE = $(OBJDIR)/nssdbm.def
 DEFINES += -DSHLIB_SUFFIX=\"$(DLL_SUFFIX)\" -DSHLIB_PREFIX=\"$(DLL_PREFIX)\"
components/firefox/patches/patch-nss_lib_softoken_manifest.mn.patch
New file
@@ -0,0 +1,11 @@
--- mozilla-esr17/security/nss/lib/softoken/manifest.mn    2013-12-08 18:32:45.201684187 +0400
+++ mozilla-esr17/security/nss/lib/softoken/manifest.mn    2013-12-08 18:32:58.542403987 +0400
@@ -9,7 +9,7 @@
 LIBRARY_NAME = softokn
 LIBRARY_VERSION = 3
-MAPFILE = $(OBJDIR)/softokn.def
+MAPFILE_SOURCE = $(OBJDIR)/softokn.def
 DEFINES += -DSHLIB_SUFFIX=\"$(DLL_SUFFIX)\" -DSHLIB_PREFIX=\"$(DLL_PREFIX)\" -DSOFTOKEN_LIB_NAME=\"$(notdir $(SHARED_LIBRARY))\" -DSHLIB_VERSION=\"$(LIBRARY_VERSION)\"
components/firefox/patches/patch-nss_lib_util_manifest.mn.patch
New file
@@ -0,0 +1,11 @@
--- mozilla-esr17/security/nss/lib/util/manifest.mn    2013-12-08 16:08:48.148254151 +0400
+++ mozilla-esr17/security/nss/lib/util/manifest.mn    2013-12-08 16:06:35.311395301 +0400
@@ -77,7 +77,7 @@
 MODULE = nss
 # don't duplicate module name in REQUIRES
-MAPFILE = $(OBJDIR)/nssutil.def
+MAPFILE_SOURCE = $(OBJDIR)/nssutil.def
 LIBRARY_NAME = nssutil
 LIBRARY_VERSION = 3
components/firefox/patches/patch-rename-log2.patch
New file
@@ -0,0 +1,91 @@
__log2 name conflicts with function in libm,
and so incorrect function is used.
--- mozilla-esr17/dbm/include/hash.h.~1~    2014-01-08 13:57:04.786935370 +0400
+++ mozilla-esr17/dbm/include/hash.h    2014-01-08 13:57:47.761094206 +0400
@@ -184,7 +184,7 @@
 #define    OADDR_OF(S,O)    ((uint32)((uint32)(S) << SPLITSHIFT) + (O))
 #define BUCKET_TO_PAGE(B) \
-    (B) + hashp->HDRPAGES + ((B) ? hashp->SPARES[__log2((uint32)((B)+1))-1] : 0)
+    (B) + hashp->HDRPAGES + ((B) ? hashp->SPARES[__nss_log2((uint32)((B)+1))-1] : 0)
 #define OADDR_TO_PAGE(B)     \
     BUCKET_TO_PAGE ( (1 << SPLITNUM((B))) -1 ) + OPAGENUM((B));
@@ -320,7 +320,7 @@
 BUFHEAD * __add_ovflpage(HTAB *hashp, BUFHEAD *bufp);
 int __big_insert(HTAB *hashp, BUFHEAD *bufp, const DBT *key, const DBT *val);
 int __expand_table(HTAB *hashp);
-uint32 __log2(uint32 num);
+uint32 __nss_log2(uint32 num);
 void __reclaim_buf(HTAB *hashp, BUFHEAD *bp);
 int __get_page(HTAB *hashp, char * p, uint32 bucket, int is_bucket, int is_disk, int is_bitmap);
 int __put_page(HTAB *hashp, char *p, uint32 bucket, int is_bucket, int is_bitmap);
--- mozilla-esr17/dbm/include/extern.h.~1~    2014-01-08 13:58:28.606082545 +0400
+++ mozilla-esr17/dbm/include/extern.h    2014-01-08 13:58:55.929964800 +0400
@@ -50,7 +50,7 @@
 BUFHEAD    *__get_buf (HTAB *, uint32, BUFHEAD *, int);
 int     __get_page (HTAB *, char *, uint32, int, int, int);
 int     __ibitmap (HTAB *, int, int, int);
-uint32     __log2 (uint32);
+uint32     __nss_log2 (uint32);
 int     __put_page (HTAB *, char *, uint32, int, int);
 void     __reclaim_buf (HTAB *, BUFHEAD *);
 int     __split_page (HTAB *, uint32, uint32);
--- mozilla-esr17/dbm/src/h_log2.c.~1~    2014-01-08 13:59:33.187926843 +0400
+++ mozilla-esr17/dbm/src/h_log2.c    2014-01-08 14:00:05.657990538 +0400
@@ -42,7 +42,7 @@
 #endif
 #include "mcom_db.h"
-uint32 __log2(uint32 num)
+uint32 __nss_log2(uint32 num)
 {
     register uint32 i, limit;
--- mozilla-esr17/dbm/src/hash.c.~1~    2014-01-08 14:01:00.646942634 +0400
+++ mozilla-esr17/dbm/src/hash.c    2014-01-08 14:01:16.017066043 +0400
@@ -352,13 +352,13 @@
         if (hashp->BSIZE > MAX_BSIZE)
             hashp->BSIZE = MAX_BSIZE;
 #endif
-        hashp->BSHIFT = __log2((uint32)hashp->BSIZE);
+        hashp->BSHIFT = __nss_log2((uint32)hashp->BSIZE);
     }
     if (info) {
         if (info->bsize) {
             /* Round pagesize up to power of 2 */
-            hashp->BSHIFT = __log2(info->bsize);
+            hashp->BSHIFT = __nss_log2(info->bsize);
             hashp->BSIZE = 1 << hashp->BSHIFT;
             if (hashp->BSIZE > MAX_BSIZE) {
                 errno = EINVAL;
@@ -405,7 +405,7 @@
      */
     nelem = (nelem - 1) / hashp->FFACTOR + 1;
-    l2 = __log2((uint32)PR_MAX(nelem, 2));
+    l2 = __nss_log2((uint32)PR_MAX(nelem, 2));
     nbuckets = 1 << l2;
     hashp->SPARES[l2] = l2 + 1;
@@ -423,7 +423,7 @@
         hashp->BSHIFT) + 1;
     nsegs = (nbuckets - 1) / hashp->SGSIZE + 1;
-    nsegs = 1 << __log2((uint32)nsegs);
+    nsegs = 1 << __nss_log2((uint32)nsegs);
     if (nsegs > hashp->DSIZE)
         hashp->DSIZE = nsegs;
@@ -1033,7 +1033,7 @@
      * * increases), we need to copy the current contents of the spare
      * split bucket to the next bucket.
      */
-    spare_ndx = __log2((uint32)(hashp->MAX_BUCKET + 1));
+    spare_ndx = __nss_log2((uint32)(hashp->MAX_BUCKET + 1));
     if (spare_ndx > hashp->OVFL_POINT) {
         hashp->SPARES[spare_ndx] = hashp->SPARES[hashp->OVFL_POINT];
         hashp->OVFL_POINT = spare_ndx;