summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRemi Collet <fedora@famillecollet.com>2011-12-22 16:25:40 +0100
committerRemi Collet <fedora@famillecollet.com>2011-12-22 16:25:40 +0100
commit50ba783d626f105f24a2f2b81f96bf766209b376 (patch)
tree73c42bf76d7f6a0797af67a8216c8e6f64db199e
clean layout
-rw-r--r--Makefile4
-rw-r--r--crashreporter-remove-static.patch11
-rw-r--r--mozilla-193-pkgconfig.patch53
-rw-r--r--mozilla-682832-proxy.patch358
-rw-r--r--mozilla-696393.patch133
-rw-r--r--mozilla-build.patch23
-rw-r--r--mozilla-libjpeg-turbo.patch34
-rw-r--r--wmclass.patch29
-rw-r--r--xulrunner-2.0-NetworkManager09.patch51
-rw-r--r--xulrunner-2.0-chromium-types.patch33
-rw-r--r--xulrunner-2.0-network-link-service.patch274
-rw-r--r--xulrunner-8.0-fix-maemo-checks-in-npapi.patch21
-rw-r--r--xulrunner-9.0-secondary-ipc.patch60
-rw-r--r--xulrunner-mozconfig49
-rw-r--r--xulrunner-mozconfig-debuginfo5
-rw-r--r--xulrunner-redhat-default-prefs.js6
-rw-r--r--xulrunner-version.patch13
-rw-r--r--xulrunner.sh.in69
-rw-r--r--xulrunner.spec801
19 files changed, 2027 insertions, 0 deletions
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..1e65467
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,4 @@
+SRCDIR := $(shell pwd)
+NAME := $(shell basename $(SRCDIR))
+include ../common/Makefile
+
diff --git a/crashreporter-remove-static.patch b/crashreporter-remove-static.patch
new file mode 100644
index 0000000..b94d165
--- /dev/null
+++ b/crashreporter-remove-static.patch
@@ -0,0 +1,11 @@
+diff -up comm-1.9.2/mozilla/toolkit/crashreporter/google-breakpad/src/tools/linux/dump_syms/Makefile.in.static comm-1.9.2/mozilla/toolkit/crashreporter/google-breakpad/src/tools/linux/dump_syms/Makefile.in
+--- mozilla/toolkit/crashreporter/google-breakpad/src/tools/linux/dump_syms/Makefile.in.static 2010-06-23 19:47:11.000000000 +0200
++++ mozilla/toolkit/crashreporter/google-breakpad/src/tools/linux/dump_syms/Makefile.in 2010-07-12 15:51:41.000000000 +0200
+@@ -64,6 +64,6 @@ FORCE_USE_PIC = 1
+
+ #XXX: bug 554854 causes us to be unable to run binaries on the build slaves
+ # due to them having an older libstdc++
+-HOST_LDFLAGS += -static
++#HOST_LDFLAGS += -static
+
+ include $(topsrcdir)/config/rules.mk
diff --git a/mozilla-193-pkgconfig.patch b/mozilla-193-pkgconfig.patch
new file mode 100644
index 0000000..a867f22
--- /dev/null
+++ b/mozilla-193-pkgconfig.patch
@@ -0,0 +1,53 @@
+diff -up xulrunner-1.9.3.0/mozilla-central/config/autoconf.mk.in.pk xulrunner-1.9.3.0/mozilla-central/config/autoconf.mk.in
+--- xulrunner-1.9.3.0/mozilla-central/config/autoconf.mk.in.pk 2010-08-06 03:09:27.000000000 +0200
++++ xulrunner-1.9.3.0/mozilla-central/config/autoconf.mk.in 2010-08-16 11:07:52.000000000 +0200
+@@ -58,14 +58,14 @@ MOZ_PKG_SPECIAL = @MOZ_PKG_SPECIAL@
+ prefix = @prefix@
+ exec_prefix = @exec_prefix@
+ bindir = @bindir@
+-includedir = @includedir@/$(MOZ_APP_NAME)-$(MOZ_APP_VERSION)
++includedir = @includedir@/$(MOZ_APP_NAME)-sdk-$(MOZ_APP_VERSION)
+ libdir = @libdir@
+ datadir = @datadir@
+ mandir = @mandir@
+-idldir = $(datadir)/idl/$(MOZ_APP_NAME)-$(MOZ_APP_VERSION)
++idldir = $(datadir)/idl/$(MOZ_APP_NAME)-sdk-$(MOZ_APP_VERSION)
+
+ installdir = $(libdir)/$(MOZ_APP_NAME)-$(MOZ_APP_VERSION)
+-sdkdir = $(libdir)/$(MOZ_APP_NAME)-devel-$(MOZ_APP_VERSION)
++sdkdir = $(libdir)/$(MOZ_APP_NAME)-sdk-$(MOZ_APP_VERSION)
+
+ DIST = $(DEPTH)/dist
+ LIBXUL_SDK = @LIBXUL_SDK@
+diff -up xulrunner-1.9.3.0/mozilla-central/xulrunner/installer/libxul-embedding.pc.in.pk xulrunner-1.9.3.0/mozilla-central/xulrunner/installer/libxul-embedding.pc.in
+--- xulrunner-1.9.3.0/mozilla-central/xulrunner/installer/libxul-embedding.pc.in.pk 2010-08-06 03:09:24.000000000 +0200
++++ xulrunner-1.9.3.0/mozilla-central/xulrunner/installer/libxul-embedding.pc.in 2010-08-16 11:12:32.000000000 +0200
+@@ -6,5 +6,6 @@ idldir=%idldir%
+ Name: libxul-embedding
+ Description: Static library for version-independent embedding of the Mozilla runtime
+ Version: %MOZILLA_VERSION%
++Requires: %NSPR_NAME% >= %NSPR_VERSION%
+ Libs: -L${sdkdir}/lib -lxpcomglue -ldl
+ Cflags: -DXPCOM_GLUE -I${includedir} %WCHAR_CFLAGS%
+diff -up xulrunner-1.9.3.0/mozilla-central/xulrunner/installer/libxul.pc.in.pk xulrunner-1.9.3.0/mozilla-central/xulrunner/installer/libxul.pc.in
+--- xulrunner-1.9.3.0/mozilla-central/xulrunner/installer/libxul.pc.in.pk 2010-08-06 03:09:24.000000000 +0200
++++ xulrunner-1.9.3.0/mozilla-central/xulrunner/installer/libxul.pc.in 2010-08-16 11:07:52.000000000 +0200
+@@ -2,6 +2,7 @@ prefix=%prefix%
+ sdkdir=%sdkdir%
+ includedir=%includedir%
+ idldir=%idldir%
++libdir=%libdir%
+
+ Name: libxul
+ Description: The Mozilla Runtime and Embedding Engine
+diff -up xulrunner-1.9.3.0/mozilla-central/xulrunner/installer/Makefile.in.pk xulrunner-1.9.3.0/mozilla-central/xulrunner/installer/Makefile.in
+--- xulrunner-1.9.3.0/mozilla-central/xulrunner/installer/Makefile.in.pk 2010-08-16 11:07:52.000000000 +0200
++++ xulrunner-1.9.3.0/mozilla-central/xulrunner/installer/Makefile.in 2010-08-16 11:07:52.000000000 +0200
+@@ -116,6 +116,7 @@ endif
+ -e "s|%includedir%|$(includedir)|" \
+ -e "s|%idldir%|$(idldir)|" \
+ -e "s|%sdkdir%|$(sdkdir)|" \
++ -e "s|%libdir%|$(installdir)|" \
+ -e "s|%MOZ_APP_NAME%|$(MOZ_APP_NAME)|" \
+ -e "s|%MOZILLA_VERSION%|$(MOZ_APP_VERSION)|" \
+ -e "s|%WCHAR_CFLAGS%|$(WCHAR_CFLAGS)|" \
diff --git a/mozilla-682832-proxy.patch b/mozilla-682832-proxy.patch
new file mode 100644
index 0000000..076b2a6
--- /dev/null
+++ b/mozilla-682832-proxy.patch
@@ -0,0 +1,358 @@
+diff -up mozilla-release/toolkit/system/gnome/nsGSettingsService.cpp.682832 mozilla-release/toolkit/system/gnome/nsGSettingsService.cpp
+--- mozilla-release/toolkit/system/gnome/nsGSettingsService.cpp.682832 2011-11-04 22:34:19.000000000 +0100
++++ mozilla-release/toolkit/system/gnome/nsGSettingsService.cpp 2011-12-07 11:36:29.302312405 +0100
+@@ -42,6 +42,8 @@
+ #include "nsMemory.h"
+ #include "prlink.h"
+ #include "nsComponentManagerUtils.h"
++#include "nsIMutableArray.h"
++#include "nsISupportsPrimitives.h"
+
+ #include <glib.h>
+ #include <glib-object.h>
+@@ -56,6 +58,7 @@ typedef struct _GVariant GVariant;
+ # define G_VARIANT_TYPE_STRING ((const GVariantType *) "s")
+ # define G_VARIANT_TYPE_OBJECT_PATH ((const GVariantType *) "o")
+ # define G_VARIANT_TYPE_SIGNATURE ((const GVariantType *) "g")
++# define G_VARIANT_TYPE_STRING_ARRAY ((const GVariantType *) "as")
+ #endif
+
+ #define GSETTINGS_FUNCTIONS \
+@@ -68,6 +71,7 @@ typedef struct _GVariant GVariant;
+ FUNC(g_variant_get_int32, gint32, (GVariant* variant)) \
+ FUNC(g_variant_get_boolean, gboolean, (GVariant* variant)) \
+ FUNC(g_variant_get_string, const char *, (GVariant* value, gsize* length)) \
++ FUNC(g_variant_get_strv, const char **, (GVariant* value, gsize* length)) \
+ FUNC(g_variant_is_of_type, gboolean, (GVariant* value, const GVariantType* type)) \
+ FUNC(g_variant_new_int32, GVariant *, (gint32 value)) \
+ FUNC(g_variant_new_boolean, GVariant *, (gboolean value)) \
+@@ -91,6 +95,7 @@ GSETTINGS_FUNCTIONS
+ #define g_variant_get_int32 _g_variant_get_int32
+ #define g_variant_get_boolean _g_variant_get_boolean
+ #define g_variant_get_string _g_variant_get_string
++#define g_variant_get_strv _g_variant_get_strv
+ #define g_variant_is_of_type _g_variant_is_of_type
+ #define g_variant_new_int32 _g_variant_new_int32
+ #define g_variant_new_boolean _g_variant_new_boolean
+@@ -263,6 +268,49 @@ nsGSettingsCollection::GetInt(const nsAC
+ return NS_OK;
+ }
+
++NS_IMETHODIMP
++nsGSettingsCollection::GetStringList(const nsACString& aKey, nsIArray** aResult)
++{
++ if (!KeyExists(aKey))
++ return NS_ERROR_INVALID_ARG;
++
++ nsCOMPtr<nsIMutableArray> items(do_CreateInstance(NS_ARRAY_CONTRACTID));
++ if (!items) {
++ return NS_ERROR_OUT_OF_MEMORY;
++ }
++
++ GVariant *value = g_settings_get_value(mSettings,
++ PromiseFlatCString(aKey).get());
++
++ if (!g_variant_is_of_type(value, G_VARIANT_TYPE_STRING_ARRAY)) {
++ g_variant_unref(value);
++ return NS_ERROR_FAILURE;
++ }
++
++ const gchar ** gs_strings = g_variant_get_strv(value, NULL);
++ if (!gs_strings) {
++ // empty array
++ NS_ADDREF(*aResult = items);
++ g_variant_unref(value);
++ return NS_OK;
++ }
++
++ const gchar** p_gs_strings = gs_strings;
++ while (*p_gs_strings != NULL)
++ {
++ nsCOMPtr<nsISupportsCString> obj(do_CreateInstance(NS_SUPPORTS_CSTRING_CONTRACTID));
++ if (obj) {
++ obj->SetData(nsDependentCString(*p_gs_strings));
++ items->AppendElement(obj, false);
++ }
++ p_gs_strings++;
++ }
++ g_free(gs_strings);
++ NS_ADDREF(*aResult = items);
++ g_variant_unref(value);
++ return NS_OK;
++}
++
+ nsresult
+ nsGSettingsService::Init()
+ {
+diff -up mozilla-release/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp.682832 mozilla-release/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp
+--- mozilla-release/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp.682832 2011-11-04 22:34:19.000000000 +0100
++++ mozilla-release/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp 2011-12-07 11:40:48.432502399 +0100
+@@ -49,6 +49,7 @@
+ #include "nsPrintfCString.h"
+ #include "nsNetUtil.h"
+ #include "nsISupportsPrimitives.h"
++#include "nsIGSettingsService.h"
+
+ class nsUnixSystemProxySettings : public nsISystemProxySettings {
+ public:
+@@ -62,9 +63,12 @@ private:
+ ~nsUnixSystemProxySettings() {}
+
+ nsCOMPtr<nsIGConfService> mGConf;
++ nsCOMPtr<nsIGSettingsService> mGSettings;
+ PRBool IsProxyMode(const char* aMode);
+ nsresult SetProxyResultFromGConf(const char* aKeyBase, const char* aType, nsACString& aResult);
+ nsresult GetProxyFromGConf(const nsACString& aScheme, const nsACString& aHost, PRInt32 aPort, nsACString& aResult);
++ nsresult GetProxyFromGSettings(const nsACString& aScheme, const nsACString& aHost, PRInt32 aPort, nsACString& aResult);
++ nsresult SetProxyResultFromGSettings(const char* aKeyBase, const char* aType, nsACString& aResult);
+ };
+
+ NS_IMPL_ISUPPORTS1(nsUnixSystemProxySettings, nsISystemProxySettings)
+@@ -73,6 +77,7 @@ nsresult
+ nsUnixSystemProxySettings::Init()
+ {
+ mGConf = do_GetService(NS_GCONFSERVICE_CONTRACTID);
++ mGSettings = do_GetService(NS_GSETTINGSSERVICE_CONTRACTID);
+ return NS_OK;
+ }
+
+@@ -87,14 +92,30 @@ nsUnixSystemProxySettings::IsProxyMode(c
+ nsresult
+ nsUnixSystemProxySettings::GetPACURI(nsACString& aResult)
+ {
+- if (!mGConf || !IsProxyMode("auto")) {
+- // Return an empty string in this case
+- aResult.Truncate();
+- return NS_OK;
++ if (mGSettings) {
++ nsCOMPtr<nsIGSettingsCollection> proxy_settings;
++ mGSettings->GetCollectionForSchema(NS_LITERAL_CSTRING("org.gnome.system.proxy"),
++ getter_AddRefs(proxy_settings));
++ if (proxy_settings) {
++ nsCString proxyMode;
++ // Check if mode is auto
++ nsresult rv = proxy_settings->GetString(NS_LITERAL_CSTRING("mode"), proxyMode);
++ if (rv == NS_OK && proxyMode.Equals("auto")) {
++ return proxy_settings->GetString(NS_LITERAL_CSTRING("autoconfig-url"), aResult);
++ }
++ /* The org.gnome.system.proxy schema has been found, but auto mode is not set.
++ * Don't try the GConf and return empty string. */
++ aResult.Truncate();
++ return NS_OK;
++ }
+ }
+-
+- return mGConf->GetString(NS_LITERAL_CSTRING("/system/proxy/autoconfig_url"),
+- aResult);
++ if (mGConf && IsProxyMode("auto")) {
++ return mGConf->GetString(NS_LITERAL_CSTRING("/system/proxy/autoconfig_url"),
++ aResult);
++ }
++ // Return an empty string when auto mode is not set.
++ aResult.Truncate();
++ return NS_OK;
+ }
+
+ static PRBool
+@@ -231,7 +252,38 @@ nsUnixSystemProxySettings::SetProxyResul
+ PRInt32 port;
+ rv = mGConf->GetInt(portKey, &port);
+ NS_ENSURE_SUCCESS(rv, rv);
++
++ /* When port is 0, proxy is not considered as enabled even if host is set. */
++ if (port == 0)
++ return NS_ERROR_FAILURE;
++
++ SetProxyResult(aType, host, port, aResult);
++ return NS_OK;
++}
++
++nsresult
++nsUnixSystemProxySettings::SetProxyResultFromGSettings(const char* aKeyBase, const char* aType,
++ nsACString& aResult)
++{
++ nsCOMPtr<nsIGSettingsCollection> proxy_settings;
++ nsresult rv = mGSettings->GetCollectionForSchema(nsDependentCString(aKeyBase),
++ getter_AddRefs(proxy_settings));
++ NS_ENSURE_SUCCESS(rv, rv);
++
++ nsCAutoString host;
++ rv = proxy_settings->GetString(NS_LITERAL_CSTRING("host"), host);
++ NS_ENSURE_SUCCESS(rv, rv);
++ if (host.IsEmpty())
++ return NS_ERROR_FAILURE;
++
++ PRInt32 port;
++ rv = proxy_settings->GetInt(NS_LITERAL_CSTRING("port"), &port);
++ NS_ENSURE_SUCCESS(rv, rv);
+
++ /* When port is 0, proxy is not considered as enabled even if host is set. */
++ if (port == 0)
++ return NS_ERROR_FAILURE;
++
+ SetProxyResult(aType, host, port, aResult);
+ return NS_OK;
+ }
+@@ -271,17 +323,17 @@ static PRBool ConvertToIPV6Addr(const ns
+ PRIPv6Addr* aAddr)
+ {
+ PRNetAddr addr;
++ // try to convert hostname to IP
+ if (PR_StringToNetAddr(PromiseFlatCString(aName).get(), &addr) != PR_SUCCESS)
+ return PR_FALSE;
+
+- PRIPv6Addr ipv6;
+ // convert parsed address to IPv6
+ if (addr.raw.family == PR_AF_INET) {
+ // convert to IPv4-mapped address
+- PR_ConvertIPv4AddrToIPv6(addr.inet.ip, &ipv6);
++ PR_ConvertIPv4AddrToIPv6(addr.inet.ip, aAddr);
+ } else if (addr.raw.family == PR_AF_INET6) {
+ // copy the address
+- memcpy(&ipv6, &addr.ipv6.ip, sizeof(PRIPv6Addr));
++ memcpy(aAddr, &addr.ipv6.ip, sizeof(PRIPv6Addr));
+ } else {
+ return PR_FALSE;
+ }
+@@ -289,8 +341,8 @@ static PRBool ConvertToIPV6Addr(const ns
+ return PR_TRUE;
+ }
+
+-static PRBool GConfIgnoreHost(const nsACString& aIgnore,
+- const nsACString& aHost)
++static bool HostIgnoredByProxy(const nsACString& aIgnore,
++ const nsACString& aHost)
+ {
+ if (aIgnore.Equals(aHost, nsCaseInsensitiveCStringComparator()))
+ return PR_TRUE;
+@@ -321,8 +373,9 @@ static PRBool GConfIgnoreHost(const nsAC
+ slash = end;
+ }
+
++ nsDependentCSubstring ignoreStripped(start, slash);
+ PRIPv6Addr ignoreAddr, hostAddr;
+- if (!ConvertToIPV6Addr(aIgnore, &ignoreAddr) ||
++ if (!ConvertToIPV6Addr(ignoreStripped, &ignoreAddr) ||
+ !ConvertToIPV6Addr(aHost, &hostAddr))
+ return PR_FALSE;
+
+@@ -355,7 +408,7 @@ nsUnixSystemProxySettings::GetProxyFromG
+ if (str) {
+ nsAutoString s;
+ if (NS_SUCCEEDED(str->GetData(s)) && !s.IsEmpty()) {
+- if (GConfIgnoreHost(NS_ConvertUTF16toUTF8(s), aHost)) {
++ if (HostIgnoredByProxy(NS_ConvertUTF16toUTF8(s), aHost)) {
+ aResult.AppendLiteral("DIRECT");
+ return NS_OK;
+ }
+@@ -392,6 +445,71 @@ nsUnixSystemProxySettings::GetProxyFromG
+ }
+
+ nsresult
++nsUnixSystemProxySettings::GetProxyFromGSettings(const nsACString& aScheme,
++ const nsACString& aHost,
++ PRInt32 aPort,
++ nsACString& aResult)
++{
++ nsCOMPtr<nsIGSettingsCollection> proxy_settings;
++ nsresult rv;
++
++ rv = mGSettings->GetCollectionForSchema(NS_LITERAL_CSTRING("org.gnome.system.proxy"),
++ getter_AddRefs(proxy_settings));
++ NS_ENSURE_SUCCESS(rv, rv);
++
++ nsCString proxyMode;
++ rv = proxy_settings->GetString(NS_LITERAL_CSTRING("mode"), proxyMode);
++ NS_ENSURE_SUCCESS(rv, rv);
++
++ if (!proxyMode.Equals("manual")) {
++ aResult.AppendLiteral("DIRECT");
++ return NS_OK;
++ }
++
++ nsCOMPtr<nsIArray> ignoreList;
++ if (NS_SUCCEEDED(proxy_settings->GetStringList(NS_LITERAL_CSTRING("ignore-hosts"),
++ getter_AddRefs(ignoreList))) && ignoreList) {
++ PRUint32 len = 0;
++ ignoreList->GetLength(&len);
++ for (PRUint32 i = 0; i < len; ++i) {
++ nsCOMPtr<nsISupportsCString> str = do_QueryElementAt(ignoreList, i);
++ if (str) {
++ nsCString s;
++ if (NS_SUCCEEDED(str->GetData(s)) && !s.IsEmpty()) {
++ if (HostIgnoredByProxy(s, aHost)) {
++ aResult.AppendLiteral("DIRECT");
++ return NS_OK;
++ }
++ }
++ }
++ }
++ }
++
++ if (aScheme.LowerCaseEqualsLiteral("http")) {
++ rv = SetProxyResultFromGSettings("org.gnome.system.proxy.http", "PROXY", aResult);
++ } else if (aScheme.LowerCaseEqualsLiteral("https")) {
++ rv = SetProxyResultFromGSettings("org.gnome.system.proxy.https", "PROXY", aResult);
++ /* Try to use HTTP proxy when HTTPS proxy is not explicitly defined */
++ if (rv != NS_OK)
++ rv = SetProxyResultFromGSettings("org.gnome.system.proxy.http", "PROXY", aResult);
++ } else if (aScheme.LowerCaseEqualsLiteral("ftp")) {
++ rv = SetProxyResultFromGSettings("org.gnome.system.proxy.ftp", "PROXY", aResult);
++ } else {
++ rv = NS_ERROR_FAILURE;
++ }
++ if (rv != NS_OK) {
++ /* If proxy for scheme is not specified, use SOCKS proxy for all schemes */
++ rv = SetProxyResultFromGSettings("org.gnome.system.proxy.socks", "SOCKS", aResult);
++ }
++
++ if (NS_FAILED(rv)) {
++ aResult.AppendLiteral("DIRECT");
++ }
++
++ return NS_OK;
++}
++
++nsresult
+ nsUnixSystemProxySettings::GetProxyForURI(nsIURI* aURI, nsACString& aResult)
+ {
+ nsCAutoString scheme;
+@@ -406,10 +524,15 @@ nsUnixSystemProxySettings::GetProxyForUR
+ rv = aURI->GetPort(&port);
+ NS_ENSURE_SUCCESS(rv, rv);
+
+- if (!mGConf)
+- return GetProxyFromEnvironment(scheme, host, port, aResult);
++ if (mGSettings) {
++ rv = GetProxyFromGSettings(scheme, host, port, aResult);
++ if (rv == NS_OK)
++ return rv;
++ }
++ if (mGConf)
++ return GetProxyFromGConf(scheme, host, port, aResult);
+
+- return GetProxyFromGConf(scheme, host, port, aResult);
++ return GetProxyFromEnvironment(scheme, host, port, aResult);
+ }
+
+ #define NS_UNIXSYSTEMPROXYSERVICE_CID /* 0fa3158c-d5a7-43de-9181-a285e74cf1d4 */\
+diff -up mozilla-release/xpcom/system/nsIGSettingsService.idl.682832 mozilla-release/xpcom/system/nsIGSettingsService.idl
+--- mozilla-release/xpcom/system/nsIGSettingsService.idl.682832 2011-11-04 22:34:23.000000000 +0100
++++ mozilla-release/xpcom/system/nsIGSettingsService.idl 2011-12-07 11:32:37.976256951 +0100
+@@ -39,7 +39,7 @@
+ #include "nsISupports.idl"
+ #include "nsIArray.idl"
+
+-[scriptable, uuid(09637d3c-3c07-40b4-aff9-1d2a0f046f3c)]
++[scriptable, uuid(16d5b0ed-e756-4f1b-a8ce-9132e869acd8)]
+ interface nsIGSettingsCollection : nsISupports
+ {
+ void setString(in AUTF8String key, in AUTF8String value);
+@@ -48,6 +48,7 @@ interface nsIGSettingsCollection : nsISu
+ AUTF8String getString(in AUTF8String key);
+ boolean getBoolean(in AUTF8String key);
+ long getInt(in AUTF8String key);
++ nsIArray getStringList(in AUTF8String key);
+ };
+
+ [scriptable, uuid(849c088b-57d1-4f24-b7b2-3dc4acb04c0a)]
diff --git a/mozilla-696393.patch b/mozilla-696393.patch
new file mode 100644
index 0000000..8859d97
--- /dev/null
+++ b/mozilla-696393.patch
@@ -0,0 +1,133 @@
+diff -up xulrunner-9.0/mozilla-beta/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_linux_s390.cpp.696393 xulrunner-9.0/mozilla-beta/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_linux_s390.cpp
+--- xulrunner-9.0/mozilla-beta/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_linux_s390.cpp.696393 2011-12-07 07:28:08.000000000 +0100
++++ xulrunner-9.0/mozilla-beta/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_linux_s390.cpp 2011-12-09 15:06:10.584998410 +0100
+@@ -200,52 +200,21 @@ invoke_copy_to_stack(PRUint32 paramCount
+ }
+ }
+
++typedef nsresult (*vtable_func)(nsISupports *, PRUint32, PRUint32, PRUint32, PRUint32, double, double);
++
+ EXPORT_XPCOM_API(nsresult)
+ NS_InvokeByIndex(nsISupports* that, PRUint32 methodIndex,
+ PRUint32 paramCount, nsXPTCVariant* params)
+ {
+- PRUint32 *vtable = *(PRUint32 **)that;
+- PRUint32 method = vtable[methodIndex];
++ vtable_func *vtable = *reinterpret_cast<vtable_func **>(that);
++ vtable_func method = vtable[methodIndex];
+ PRUint32 overflow = invoke_count_words (paramCount, params);
+- PRUint32 result;
+-
+- __asm__ __volatile__
+- (
+- "lr 7,15\n\t"
+- "ahi 7,-32\n\t"
+-
+- "lr 3,%3\n\t"
+- "sll 3,2\n\t"
+- "lcr 3,3\n\t"
+- "l 2,0(15)\n\t"
+- "la 15,0(3,7)\n\t"
+- "st 2,0(15)\n\t"
++ PRUint32 *stack_space = reinterpret_cast<PRUint32 *>(__builtin_alloca((overflow + 8 /* 4 32-bits gpr + 2 64-bits fpr */) * 4));
+
+- "lr 2,%1\n\t"
+- "lr 3,%2\n\t"
+- "la 4,96(15)\n\t"
+- "lr 5,%3\n\t"
+- "basr 14,%4\n\t"
++ invoke_copy_to_stack(paramCount, params, stack_space, overflow);
+
+- "lr 2,%5\n\t"
+- "ld 0,112(7)\n\t"
+- "ld 2,120(7)\n\t"
+- "lm 3,6,96(7)\n\t"
+- "basr 14,%6\n\t"
++ PRUint32 *d_gpr = stack_space + overflow;
++ double *d_fpr = reinterpret_cast<double *>(d_gpr + 4);
+
+- "la 15,32(7)\n\t"
+-
+- "lr %0,2\n\t"
+- : "=r" (result)
+- : "r" (paramCount),
+- "r" (params),
+- "r" (overflow),
+- "a" (invoke_copy_to_stack),
+- "a" (that),
+- "a" (method)
+- : "2", "3", "4", "5", "6", "7", "14", "cc", "memory", "%f0", "%f2"
+- );
+-
+- return result;
++ return method(that, d_gpr[0], d_gpr[1], d_gpr[2], d_gpr[3], d_fpr[0], d_fpr[1]);
+ }
+-
+diff -up xulrunner-9.0/mozilla-beta/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_linux_s390x.cpp.696393 xulrunner-9.0/mozilla-beta/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_linux_s390x.cpp
+--- xulrunner-9.0/mozilla-beta/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_linux_s390x.cpp.696393 2011-12-07 07:28:08.000000000 +0100
++++ xulrunner-9.0/mozilla-beta/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_linux_s390x.cpp 2011-12-09 15:07:07.609097348 +0100
+@@ -194,55 +194,22 @@ invoke_copy_to_stack(PRUint32 paramCount
+ }
+ }
+
++typedef nsresult (*vtable_func)(nsISupports *, PRUint64, PRUint64, PRUint64, PRUint64, double, double, double, double);
++
+ EXPORT_XPCOM_API(nsresult)
+ NS_InvokeByIndex(nsISupports* that, PRUint32 methodIndex,
+ PRUint32 paramCount, nsXPTCVariant* params)
+ {
+- PRUint64 *vtable = *(PRUint64 **)that;
+- PRUint64 method = vtable[methodIndex];
++ vtable_func *vtable = *reinterpret_cast<vtable_func **>(that);
++ vtable_func method = vtable[methodIndex];
+ PRUint64 overflow = invoke_count_words (paramCount, params);
++ PRUint64 *stack_space = reinterpret_cast<PRUint64 *>(__builtin_alloca((overflow + 8 /* 4 64-bits gpr + 4 64-bits fpr */) * 8));
+ PRUint64 result;
+
+- __asm__ __volatile__
+- (
+- "lgr 7,15\n\t"
+- "aghi 7,-64\n\t"
+-
+- "lgr 3,%3\n\t"
+- "sllg 3,3,3\n\t"
+- "lcgr 3,3\n\t"
+- "lg 2,0(15)\n\t"
+- "la 15,0(3,7)\n\t"
+- "stg 2,0(15)\n\t"
+-
+- "lgr 2,%1\n\t"
+- "lgr 3,%2\n\t"
+- "la 4,160(15)\n\t"
+- "lgr 5,%3\n\t"
+- "basr 14,%4\n\t"
++ invoke_copy_to_stack(paramCount, params, stack_space, overflow);
+
+- "lgr 2,%5\n\t"
+- "ld 0,192(7)\n\t"
+- "ld 2,200(7)\n\t"
+- "ld 4,208(7)\n\t"
+- "ld 6,216(7)\n\t"
+- "lmg 3,6,160(7)\n\t"
+- "basr 14,%6\n\t"
++ PRUint64 *d_gpr = stack_space + overflow;
++ double *d_fpr = reinterpret_cast<double *>(d_gpr + 4);
+
+- "la 15,64(7)\n\t"
+-
+- "lgr %0,2\n\t"
+- : "=r" (result)
+- : "r" ((PRUint64)paramCount),
+- "r" (params),
+- "r" (overflow),
+- "a" (invoke_copy_to_stack),
+- "a" (that),
+- "a" (method)
+- : "2", "3", "4", "5", "6", "7", "14", "cc", "memory",
+- "%f0", "%f1", "%f2", "%f3", "%f4", "%f5", "%f6", "%f7"
+- );
+-
+- return result;
++ return method(that, d_gpr[0], d_gpr[1], d_gpr[2], d_gpr[3], d_fpr[0], d_fpr[1], d_fpr[2], d_fpr[3]);
+ }
+-
diff --git a/mozilla-build.patch b/mozilla-build.patch
new file mode 100644
index 0000000..065ca9f
--- /dev/null
+++ b/mozilla-build.patch
@@ -0,0 +1,23 @@
+diff -up xulrunner-1.9.3.0/mozilla-central/security/manager/Makefile.in.build xulrunner-1.9.3.0/mozilla-central/security/manager/Makefile.in
+--- xulrunner-1.9.3.0/mozilla-central/security/manager/Makefile.in.build 2010-08-06 03:09:27.000000000 +0200
++++ xulrunner-1.9.3.0/mozilla-central/security/manager/Makefile.in 2010-08-16 10:49:10.000000000 +0200
+@@ -181,7 +181,6 @@ DEFAULT_GMAKE_FLAGS += NSPR_INCLUDE_DIR=
+ DEFAULT_GMAKE_FLAGS += NSPR_LIB_DIR=$(NSPR_LIB_DIR)
+ DEFAULT_GMAKE_FLAGS += MOZILLA_CLIENT=1
+ DEFAULT_GMAKE_FLAGS += NO_MDUPDATE=1
+-DEFAULT_GMAKE_FLAGS += NSS_ENABLE_ECC=1
+ DEFAULT_GMAKE_FLAGS += NSINSTALL="$(NSINSTALL)"
+ ifndef MOZ_NATIVE_SQLITE
+ DEFAULT_GMAKE_FLAGS += SQLITE_LIB_NAME=mozsqlite3
+diff -up xulrunner-1.9.3.0/mozilla-central/security/manager/ssl/src/Makefile.in.build xulrunner-1.9.3.0/mozilla-central/security/manager/ssl/src/Makefile.in
+--- xulrunner-1.9.3.0/mozilla-central/security/manager/ssl/src/Makefile.in.build 2010-08-06 03:09:17.000000000 +0200
++++ xulrunner-1.9.3.0/mozilla-central/security/manager/ssl/src/Makefile.in 2010-08-16 10:46:22.000000000 +0200
+@@ -113,8 +113,6 @@ CSRCS += md4.c
+
+ EXTRA_DEPS = $(NSS_DEP_LIBS)
+
+-DEFINES += -DNSS_ENABLE_ECC
+-
+ # Use local includes because they are inserted before INCLUDES
+ # so that Mozilla's nss.h is used, not glibc's
+ LOCAL_INCLUDES += $(NSS_CFLAGS)
diff --git a/mozilla-libjpeg-turbo.patch b/mozilla-libjpeg-turbo.patch
new file mode 100644
index 0000000..54be1a1
--- /dev/null
+++ b/mozilla-libjpeg-turbo.patch
@@ -0,0 +1,34 @@
+diff -up xulrunner-2.0/mozilla-central/modules/libpr0n/decoders/nsJPEGDecoder.cpp.jpeg-turbo xulrunner-2.0/mozilla-central/modules/libpr0n/decoders/nsJPEGDecoder.cpp
+--- xulrunner-2.0/mozilla-central/modules/libpr0n/decoders/nsJPEGDecoder.cpp.jpeg-turbo 2010-11-04 21:06:43.000000000 +0100
++++ xulrunner-2.0/mozilla-central/modules/libpr0n/decoders/nsJPEGDecoder.cpp 2010-11-12 12:39:08.047171412 +0100
+@@ -411,14 +411,6 @@ nsJPEGDecoder::WriteInternal(const char
+ return; /* I/O suspension */
+ }
+
+- /* Force to use our YCbCr to Packed RGB converter when possible */
+- if (!mTransform && (mCMSMode != eCMSMode_All) &&
+- mInfo.jpeg_color_space == JCS_YCbCr && mInfo.out_color_space == JCS_RGB) {
+- /* Special case for the most common case: transform from YCbCr direct into packed ARGB */
+- mInfo.out_color_components = 4; /* Packed ARGB pixels are always 4 bytes...*/
+- mInfo.cconvert->color_convert = ycc_rgb_convert_argb;
+- }
+-
+ /* If this is a progressive JPEG ... */
+ mState = mInfo.buffered_image ? JPEG_DECOMPRESS_PROGRESSIVE : JPEG_DECOMPRESS_SEQUENTIAL;
+ }
+@@ -563,15 +555,6 @@ nsJPEGDecoder::OutputScanlines(PRBool* s
+ PRUint32 *imageRow = ((PRUint32*)mImageData) +
+ (mInfo.output_scanline * mInfo.output_width);
+
+- if (mInfo.cconvert->color_convert == ycc_rgb_convert_argb) {
+- /* Special case: scanline will be directly converted into packed ARGB */
+- if (jpeg_read_scanlines(&mInfo, (JSAMPARRAY)&imageRow, 1) != 1) {
+- *suspend = PR_TRUE; /* suspend */
+- break;
+- }
+- continue; /* all done for this row! */
+- }
+-
+ JSAMPROW sampleRow = (JSAMPROW)imageRow;
+ if (mInfo.output_components == 3) {
+ /* Put the pixels at end of row to enable in-place expansion */
diff --git a/wmclass.patch b/wmclass.patch
new file mode 100644
index 0000000..5fe76ac
--- /dev/null
+++ b/wmclass.patch
@@ -0,0 +1,29 @@
+#
+# Online Desktop expects WMCLASS to match the .desktop file
+# Since renaming the .desktop file is bad, work around this here
+#
+
+diff -up ./widget/src/gtk2/nsWindow.cpp.wmclass ./widget/src/gtk2/nsWindow.cpp
+--- ./widget/src/gtk2/nsWindow.cpp.wmclass 2010-10-25 11:33:21.649433261 -0700
++++ ./widget/src/gtk2/nsWindow.cpp 2010-10-25 11:36:19.864431870 -0700
+@@ -3738,6 +3738,10 @@ nsWindow::Create(nsIWidget *aPare
+ GetBrandName(brandName);
+ NS_ConvertUTF16toUTF8 cBrand(brandName);
+
++ if (brandName.EqualsLiteral("Minefield")) {
++ cBrand.Assign("Firefox");
++ }
++
+ if (mWindowType == eWindowType_dialog) {
+ mShell = gtk_window_new(GTK_WINDOW_TOPLEVEL);
+ SetDefaultIcon();
+@@ -4109,6 +4113,9 @@ nsWindow::SetWindowClass(const nsAString
+ #ifdef MOZ_X11
+ nsXPIDLString brandName;
+ GetBrandName(brandName);
++ if (brandName.EqualsLiteral("Minefield")) {
++ brandName.AssignLiteral("Firefox");
++ }
+
+ XClassHint *class_hint = XAllocClassHint();
+ if (!class_hint)
diff --git a/xulrunner-2.0-NetworkManager09.patch b/xulrunner-2.0-NetworkManager09.patch
new file mode 100644
index 0000000..317a1b4
--- /dev/null
+++ b/xulrunner-2.0-NetworkManager09.patch
@@ -0,0 +1,51 @@
+https://bugzilla.mozilla.org/show_bug.cgi?id=639959
+
+--- source/toolkit/system/dbus/nsNetworkManagerListener.cpp.foo 2011-03-08 14:26:28.167074923 -0600
++++ source/toolkit/system/dbus/nsNetworkManagerListener.cpp 2011-03-08 14:30:54.260748294 -0600
+@@ -51,15 +51,13 @@
+ #define NM_DBUS_SERVICE "org.freedesktop.NetworkManager"
+ #define NM_DBUS_PATH "/org/freedesktop/NetworkManager"
+ #define NM_DBUS_INTERFACE "org.freedesktop.NetworkManager"
+-#define NM_DBUS_SIGNAL_STATE_CHANGE "StateChange"
+-typedef enum NMState
+-{
+- NM_STATE_UNKNOWN = 0,
+- NM_STATE_ASLEEP,
+- NM_STATE_CONNECTING,
+- NM_STATE_CONNECTED,
+- NM_STATE_DISCONNECTED
+-} NMState;
++#define NM_DBUS_SIGNAL_STATE_CHANGE "StateChange" /* Deprecated in 0.7.x */
++#define NM_DBUS_SIGNAL_STATE_CHANGED "StateChanged"
++
++#define NM_STATE_CONNECTED_OLD 3
++#define NM_STATE_CONNECTED_LOCAL 50
++#define NM_STATE_CONNECTED_SITE 60
++#define NM_STATE_CONNECTED_GLOBAL 70
+
+ nsNetworkManagerListener::nsNetworkManagerListener() :
+ mLinkUp(PR_TRUE), mNetworkManagerActive(PR_FALSE),
+@@ -174,7 +172,9 @@
+ PRBool
+ nsNetworkManagerListener::HandleMessage(DBusMessage* message) {
+ if (dbus_message_is_signal(message, NM_DBUS_INTERFACE,
+- NM_DBUS_SIGNAL_STATE_CHANGE)) {
++ NM_DBUS_SIGNAL_STATE_CHANGE) ||
++ dbus_message_is_signal(message, NM_DBUS_INTERFACE,
++ NM_DBUS_SIGNAL_STATE_CHANGED)) {
+ UpdateNetworkStatus(message);
+ return PR_TRUE;
+ }
+@@ -191,7 +191,10 @@
+ mNetworkManagerActive = PR_TRUE;
+
+ PRBool wasUp = mLinkUp;
+- mLinkUp = result == NM_STATE_CONNECTED;
++ mLinkUp = (result == NM_STATE_CONNECTED_OLD) ||
++ (result == NM_STATE_CONNECTED_LOCAL) ||
++ (result == NM_STATE_CONNECTED_SITE) ||
++ (result == NM_STATE_CONNECTED_GLOBAL);
+ if (wasUp == mLinkUp)
+ return;
+
+
diff --git a/xulrunner-2.0-chromium-types.patch b/xulrunner-2.0-chromium-types.patch
new file mode 100644
index 0000000..dfc82cc
--- /dev/null
+++ b/xulrunner-2.0-chromium-types.patch
@@ -0,0 +1,33 @@
+Bug 627669 - add support for s390(x) and ppc(64)
+
+diff -up mozilla-release/gfx/ycbcr/chromium_types.h.chromium-types mozilla-release/gfx/ycbcr/chromium_types.h
+--- mozilla-release/gfx/ycbcr/chromium_types.h.chromium-types 2011-06-15 23:57:26.000000000 +0200
++++ mozilla-release/gfx/ycbcr/chromium_types.h 2011-06-30 10:04:25.105032221 +0200
+@@ -61,7 +61,11 @@ typedef PRInt16 int16;
+ #define ARCH_CPU_ARM_FAMILY 1
+ #define ARCH_CPU_ARMEL 1
+ #define ARCH_CPU_32_BITS 1
+-#elif defined(__ppc__) || defined(__powerpc) || defined(__PPC__)
++#elif defined(__ppc64__) || defined(__powerpc64__)
++#define ARCH_CPU_PPC_FAMILY 1
++#define ARCH_CPU_PPC 1
++#define ARCH_CPU_64_BITS 1
++#elif defined(__ppc__) || defined(__powerpc__) || defined(__PPC__)
+ #define ARCH_CPU_PPC_FAMILY 1
+ #define ARCH_CPU_PPC 1
+ #define ARCH_CPU_32_BITS 1
+@@ -73,6 +77,14 @@ typedef PRInt16 int16;
+ #define ARCH_CPU_SPARC_FAMILY 1
+ #define ARCH_CPU_SPARC 1
+ #define ARCH_CPU_64_BITS 1
++#elif defined(__s390x__)
++#define ARCH_CPU_S390_FAMILY 1
++#define ARCH_CPU_S390 1
++#define ARCH_CPU_64_BITS 1
++#elif defined(__s390__)
++#define ARCH_CPU_S390_FAMILY 1
++#define ARCH_CPU_S390 1
++#define ARCH_CPU_32_BITS 1
+ #else
+ #warning Please add support for your architecture in chromium_types.h
+ #endif
diff --git a/xulrunner-2.0-network-link-service.patch b/xulrunner-2.0-network-link-service.patch
new file mode 100644
index 0000000..b3243a9
--- /dev/null
+++ b/xulrunner-2.0-network-link-service.patch
@@ -0,0 +1,274 @@
+# HG changeset patch
+# Parent 31879b88cc82c1f44e6a6c25a05aa2c70af22d7e
+# User Martin Stransky <stransky@redhat.com>
+Bug 627672 - XPCOM component (libdbusservice.so) is not registered although it should be; r=cbiesinger
+
+
+
+diff --git a/netwerk/base/src/nsIOService.cpp b/netwerk/base/src/nsIOService.cpp
+--- a/netwerk/base/src/nsIOService.cpp
++++ b/netwerk/base/src/nsIOService.cpp
+@@ -160,31 +160,33 @@ PRInt16 gBadPortList[] = {
+ 2049, // nfs
+ 4045, // lockd
+ 6000, // x11
+ 0, // This MUST be zero so that we can populating the array
+ };
+
+ static const char kProfileChangeNetTeardownTopic[] = "profile-change-net-teardown";
+ static const char kProfileChangeNetRestoreTopic[] = "profile-change-net-restore";
++static const char kStartupTopic[] = "profile-after-change";
+
+ // Necko buffer cache
+ nsIMemory* nsIOService::gBufferCache = nsnull;
+ PRUint32 nsIOService::gDefaultSegmentSize = 4096;
+ PRUint32 nsIOService::gDefaultSegmentCount = 24;
+
+ ////////////////////////////////////////////////////////////////////////////////
+
+ nsIOService::nsIOService()
+ : mOffline(PR_TRUE)
+ , mOfflineForProfileChange(PR_FALSE)
+ , mManageOfflineStatus(PR_TRUE)
+ , mSettingOffline(PR_FALSE)
+ , mSetOfflineValue(PR_FALSE)
+ , mShutdown(PR_FALSE)
++ , mNetworkLinkServiceInitialized(PR_FALSE)
+ , mChannelEventSinks(NS_CHANNEL_EVENT_SINK_CATEGORY)
+ , mContentSniffers(NS_CONTENT_SNIFFER_CATEGORY)
+ , mAutoDialEnabled(PR_FALSE)
+ {
+ }
+
+ nsresult
+ nsIOService::Init()
+@@ -230,16 +232,17 @@ nsIOService::Init()
+ }
+
+ // Register for profile change notifications
+ nsCOMPtr<nsIObserverService> observerService =
+ mozilla::services::GetObserverService();
+ if (observerService) {
+ observerService->AddObserver(this, kProfileChangeNetTeardownTopic, PR_TRUE);
+ observerService->AddObserver(this, kProfileChangeNetRestoreTopic, PR_TRUE);
++ observerService->AddObserver(this, kStartupTopic, PR_TRUE);
+ observerService->AddObserver(this, NS_XPCOM_SHUTDOWN_OBSERVER_ID, PR_TRUE);
+ observerService->AddObserver(this, NS_NETWORK_LINK_TOPIC, PR_TRUE);
+ }
+ else
+ NS_WARNING("failed to get observer service");
+
+ NS_TIME_FUNCTION_MARK("Registered observers");
+
+@@ -258,29 +261,19 @@ nsIOService::Init()
+ NS_WARN_IF_FALSE(NS_SUCCEEDED(rv), "Was unable to allocate. No gBufferCache.");
+ CallQueryInterface(recyclingAllocator, &gBufferCache);
+ }
+
+ NS_TIME_FUNCTION_MARK("Set up the recycling allocator");
+
+ gIOService = this;
+
+- // go into managed mode if we can, and chrome process
+- if (XRE_GetProcessType() == GeckoProcessType_Default)
+- mNetworkLinkService = do_GetService(NS_NETWORK_LINK_SERVICE_CONTRACTID);
+-
+- if (!mNetworkLinkService)
+- // We can't really determine if the machine has a usable network connection,
+- // so let's cross our fingers!
+- mManageOfflineStatus = PR_FALSE;
+-
+- if (mManageOfflineStatus)
+- TrackNetworkLinkStatusForOffline();
+- else
+- SetOffline(PR_FALSE);
++ // We can't really determine if the machine has a usable network connection,
++ // (mNetworkLinkService will be initialized later) so let's cross our fingers!
++ SetOffline(PR_FALSE);
+
+ NS_TIME_FUNCTION_MARK("Set up network link service");
+
+ return NS_OK;
+ }
+
+
+ nsIOService::~nsIOService()
+@@ -306,16 +299,57 @@ nsIOService::InitializeSocketTransportSe
+ rv = mSocketTransportService->Init();
+ NS_ASSERTION(NS_SUCCEEDED(rv), "socket transport service init failed");
+ mSocketTransportService->SetAutodialEnabled(mAutoDialEnabled);
+ }
+
+ return rv;
+ }
+
++nsresult
++nsIOService::InitializeNetworkLinkService()
++{
++ NS_TIME_FUNCTION;
++
++ nsresult rv = NS_OK;
++
++ if (mNetworkLinkServiceInitialized)
++ return rv;
++
++#if defined(MOZ_PLATFORM_MAEMO)
++ // libdbusservice fails to initialize on Maemo platform, see Bug 627672
++ mNetworkLinkService = NULL;
++#else
++ // go into managed mode if we can, and chrome process
++ if (XRE_GetProcessType() == GeckoProcessType_Default)
++ {
++ mNetworkLinkService = do_GetService(NS_NETWORK_LINK_SERVICE_CONTRACTID, &rv);
++ if (NS_FAILED(rv)) {
++ NS_WARNING("failed to get network link service");
++ return rv;
++ }
++ }
++#endif
++
++ mNetworkLinkServiceInitialized = PR_TRUE;
++
++ if (!mNetworkLinkService) {
++ // We can't really determine if the machine has a usable network connection,
++ // so let's cross our fingers!
++ mManageOfflineStatus = PR_FALSE;
++ }
++
++ if (mManageOfflineStatus)
++ TrackNetworkLinkStatusForOffline();
++ else
++ SetOffline(PR_FALSE);
++
++ return rv;
++}
++
+ nsIOService*
+ nsIOService::GetInstance() {
+ if (!gIOService) {
+ gIOService = new nsIOService();
+ if (!gIOService)
+ return nsnull;
+ NS_ADDREF(gIOService);
+
+@@ -689,16 +723,19 @@ nsIOService::NewChannel(const nsACString
+ if (NS_FAILED(rv)) return rv;
+
+ return NewChannelFromURI(uri, result);
+ }
+
+ PRBool
+ nsIOService::IsLinkUp()
+ {
++ NS_ASSERTION(mNetworkLinkServiceInitialized,
++ "network link service should be initialized");
++
+ if (!mNetworkLinkService) {
+ // We cannot decide, assume the link is up
+ return PR_TRUE;
+ }
+
+ PRBool isLinkUp;
+ nsresult rv;
+ rv = mNetworkLinkService->GetIsLinkUp(&isLinkUp);
+@@ -968,16 +1005,20 @@ nsIOService::Observe(nsISupports *subjec
+ if (mOfflineForProfileChange) {
+ mOfflineForProfileChange = PR_FALSE;
+ if (!mManageOfflineStatus ||
+ NS_FAILED(TrackNetworkLinkStatusForOffline())) {
+ SetOffline(PR_FALSE);
+ }
+ }
+ }
++ else if (!strcmp(topic, kStartupTopic)) {
++ // Lazy initialization of network link service (see bug 620472)
++ InitializeNetworkLinkService();
++ }
+ else if (!strcmp(topic, NS_XPCOM_SHUTDOWN_OBSERVER_ID)) {
+ // Remember we passed XPCOM shutdown notification to prevent any
+ // changes of the offline status from now. We must not allow going
+ // online after this point.
+ mShutdown = PR_TRUE;
+
+ SetOffline(PR_TRUE);
+
+@@ -1085,32 +1126,40 @@ nsIOService::NewSimpleNestedURI(nsIURI*
+ NS_IF_ADDREF(*aResult = new nsSimpleNestedURI(safeURI));
+ return *aResult ? NS_OK : NS_ERROR_OUT_OF_MEMORY;
+ }
+
+ NS_IMETHODIMP
+ nsIOService::SetManageOfflineStatus(PRBool aManage) {
+ PRBool wasManaged = mManageOfflineStatus;
+ mManageOfflineStatus = aManage;
++
++ if (!mNetworkLinkServiceInitialized) {
++ InitializeNetworkLinkService();
++ }
++
+ if (mManageOfflineStatus && !wasManaged)
+ return TrackNetworkLinkStatusForOffline();
+ return NS_OK;
+ }
+
+ NS_IMETHODIMP
+ nsIOService::GetManageOfflineStatus(PRBool* aManage) {
+ *aManage = mManageOfflineStatus;
+ return NS_OK;
+ }
+
+ nsresult
+ nsIOService::TrackNetworkLinkStatusForOffline()
+ {
+ NS_ASSERTION(mManageOfflineStatus,
+ "Don't call this unless we're managing the offline status");
++ NS_ASSERTION(mNetworkLinkServiceInitialized,
++ "network link service should be set up");
++
+ if (!mNetworkLinkService)
+ return NS_ERROR_FAILURE;
+
+ if (mShutdown)
+ return NS_ERROR_NOT_AVAILABLE;
+
+ // check to make sure this won't collide with Autodial
+ if (mSocketTransportService) {
+diff --git a/netwerk/base/src/nsIOService.h b/netwerk/base/src/nsIOService.h
+--- a/netwerk/base/src/nsIOService.h
++++ b/netwerk/base/src/nsIOService.h
+@@ -129,16 +129,17 @@ private:
+ nsIProtocolHandler* hdlr);
+
+ // Prefs wrangling
+ NS_HIDDEN_(void) PrefsChanged(nsIPrefBranch *prefs, const char *pref = nsnull);
+ NS_HIDDEN_(void) GetPrefBranch(nsIPrefBranch2 **);
+ NS_HIDDEN_(void) ParsePortList(nsIPrefBranch *prefBranch, const char *pref, PRBool remove);
+
+ nsresult InitializeSocketTransportService();
++ nsresult InitializeNetworkLinkService();
+
+ private:
+ PRPackedBool mOffline;
+ PRPackedBool mOfflineForProfileChange;
+ PRPackedBool mManageOfflineStatus;
+
+ // Used to handle SetOffline() reentrancy. See the comment in
+ // SetOffline() for more details.
+@@ -146,16 +147,17 @@ private:
+ PRPackedBool mSetOfflineValue;
+
+ PRPackedBool mShutdown;
+
+ nsCOMPtr<nsPISocketTransportService> mSocketTransportService;
+ nsCOMPtr<nsPIDNSService> mDNSService;
+ nsCOMPtr<nsIProtocolProxyService2> mProxyService;
+ nsCOMPtr<nsINetworkLinkService> mNetworkLinkService;
++ PRPackedBool mNetworkLinkServiceInitialized;
+
+ // Cached protocol handlers
+ nsWeakPtr mWeakHandler[NS_N(gScheme)];
+
+ // cached categories
+ nsCategoryCache<nsIChannelEventSink> mChannelEventSinks;
+ nsCategoryCache<nsIContentSniffer> mContentSniffers;
+
diff --git a/xulrunner-8.0-fix-maemo-checks-in-npapi.patch b/xulrunner-8.0-fix-maemo-checks-in-npapi.patch
new file mode 100644
index 0000000..99c9b7f
--- /dev/null
+++ b/xulrunner-8.0-fix-maemo-checks-in-npapi.patch
@@ -0,0 +1,21 @@
+diff -up mozilla-release/dom/plugins/base/npapi.h.BAD mozilla-release/dom/plugins/base/npapi.h
+--- mozilla-release/dom/plugins/base/npapi.h.BAD 2011-12-06 13:31:16.364405916 -0500
++++ mozilla-release/dom/plugins/base/npapi.h 2011-12-06 13:31:47.131109006 -0500
+@@ -379,7 +379,7 @@ typedef enum {
+ , NPPVpluginCoreAnimationLayer = 1003
+ #endif
+
+-#if (MOZ_PLATFORM_MAEMO == 5) || (MOZ_PLATFORM_MAEMO == 6)
++#if defined(MOZ_PLATFORM_MAEMO) && ((MOZ_PLATFORM_MAEMO == 5) || (MOZ_PLATFORM_MAEMO == 6))
+ , NPPVpluginWindowlessLocalBool = 2002
+ #endif
+ } NPPVariable;
+@@ -432,7 +432,7 @@ typedef enum {
+ , NPNVsupportsCompositingCoreAnimationPluginsBool = 74656 /* TRUE if the browser supports
+ CA model compositing */
+ #endif
+-#if (MOZ_PLATFORM_MAEMO == 5) || (MOZ_PLATFORM_MAEMO == 6)
++#if defined(MOZ_PLATFORM_MAEMO) && ((MOZ_PLATFORM_MAEMO == 5) || (MOZ_PLATFORM_MAEMO == 6))
+ , NPNVSupportsWindowlessLocal = 2002
+ #endif
+ } NPNVariable;
diff --git a/xulrunner-9.0-secondary-ipc.patch b/xulrunner-9.0-secondary-ipc.patch
new file mode 100644
index 0000000..40ecfd5
--- /dev/null
+++ b/xulrunner-9.0-secondary-ipc.patch
@@ -0,0 +1,60 @@
+diff -up xulrunner-9.0/mozilla-beta/ipc/chromium/src/base/data_pack.cc.secondary-ipc xulrunner-9.0/mozilla-beta/ipc/chromium/src/base/data_pack.cc
+--- xulrunner-9.0/mozilla-beta/ipc/chromium/src/base/data_pack.cc.secondary-ipc 2011-12-07 07:27:43.000000000 +0100
++++ xulrunner-9.0/mozilla-beta/ipc/chromium/src/base/data_pack.cc 2011-12-09 14:35:50.397220865 +0100
+@@ -91,14 +91,7 @@ bool DataPack::Load(const FilePath& path
+ bool DataPack::Get(uint32_t resource_id, StringPiece* data) {
+ // It won't be hard to make this endian-agnostic, but it's not worth
+ // bothering to do right now.
+-#if defined(__BYTE_ORDER)
+- // Linux check
+- COMPILE_ASSERT(__BYTE_ORDER == __LITTLE_ENDIAN,
+- datapack_assumes_little_endian);
+-#elif defined(__BIG_ENDIAN__)
+- // Mac check
+- #error DataPack assumes little endian
+-#endif
++#warning DoTheRightThingMakingThisEndianAgnostic!
+
+ DataPackEntry* target = reinterpret_cast<DataPackEntry*>(
+ bsearch(&resource_id, mmap_->data() + kHeaderLength, resource_count_,
+diff -up xulrunner-9.0/mozilla-beta/ipc/chromium/src/build/build_config.h.secondary-ipc xulrunner-9.0/mozilla-beta/ipc/chromium/src/build/build_config.h
+--- xulrunner-9.0/mozilla-beta/ipc/chromium/src/build/build_config.h.secondary-ipc 2011-12-07 07:27:43.000000000 +0100
++++ xulrunner-9.0/mozilla-beta/ipc/chromium/src/build/build_config.h 2011-12-09 14:39:44.922231601 +0100
+@@ -59,11 +59,23 @@
+ #define ARCH_CPU_ARMEL 1
+ #define ARCH_CPU_32_BITS 1
+ #define WCHAR_T_IS_UNSIGNED 1
++#elif defined(__powerpc64__)
++#define ARCH_CPU_PPC64 1
++#define ARCH_CPU_64_BITS 1
+ #elif defined(__ppc__) || defined(__powerpc__)
+ #define ARCH_CPU_PPC 1
+ #define ARCH_CPU_32_BITS 1
+-#elif defined(__sparc64__)
++#elif defined(__s390x__)
++#define ARCH_CPU_S390X 1
++#define ARCH_CPU_64_BITS 1
++#elif defined(__s390__)
++#define ARCH_CPU_S390 1
++#define ARCH_CPU_32_BITS 1
++#elif defined(__sparc__) && !defined(__arch64)
+ #define ARCH_CPU_SPARC 1
++#define ARCH_CPU_32_BITS 1
++#elif defined(__sparc__) && defined(__arch64)
++#define ARCH_CPU_SPARC64 1
+ #define ARCH_CPU_64_BITS 1
+ #else
+ #error Please add support for your architecture in build/build_config.h
+diff -up xulrunner-9.0/mozilla-beta/ipc/chromium/src/chrome/common/ipc_message_utils.h.secondary-ipc xulrunner-9.0/mozilla-beta/ipc/chromium/src/chrome/common/ipc_message_utils.h
+--- xulrunner-9.0/mozilla-beta/ipc/chromium/src/chrome/common/ipc_message_utils.h.secondary-ipc 2011-12-07 07:27:43.000000000 +0100
++++ xulrunner-9.0/mozilla-beta/ipc/chromium/src/chrome/common/ipc_message_utils.h 2011-12-09 14:40:59.602679278 +0100
+@@ -195,7 +195,8 @@ struct ParamTraits<unsigned long long> {
+ };
+ #endif
+
+-#if !(defined(OS_MACOSX) || defined(OS_OPENBSD) || defined(OS_WIN) || (defined(OS_LINUX) && defined(ARCH_CPU_64_BITS)))
++// Although s390 is a 32-bit system it defines size_t as unsigned long
++#if !(defined(OS_MACOSX) || defined(OS_OPENBSD) || defined(OS_WIN) || (defined(OS_LINUX) && (defined(ARCH_CPU_64_BITS) || defined(ARCH_CPU_S390))))
+ // There size_t is a synonym for |unsigned long| ...
+ template <>
+ struct ParamTraits<size_t> {
diff --git a/xulrunner-mozconfig b/xulrunner-mozconfig
new file mode 100644
index 0000000..9391b82
--- /dev/null
+++ b/xulrunner-mozconfig
@@ -0,0 +1,49 @@
+. $topsrcdir/xulrunner/config/mozconfig
+# --with-system-png is disabled because Mozilla requires APNG support in libpng
+#ac_add_options --with-system-png
+
+ac_add_options --prefix="$PREFIX"
+ac_add_options --libdir="$LIBDIR"
+ac_add_options --with-system-nspr
+ac_add_options --with-system-nss
+ac_add_options --with-system-jpeg
+ac_add_options --with-system-zlib
+ac_add_options --with-system-bz2
+ac_add_options --with-system-libvpx
+ac_add_options --enable-system-hunspell
+ac_add_options --enable-system-sqlite
+ac_add_options --enable-system-cairo
+ac_add_options --with-pthreads
+ac_add_options --disable-strip
+ac_add_options --disable-tests
+ac_add_options --disable-mochitest
+ac_add_options --disable-installer
+ac_add_options --disable-debug
+ac_add_options --enable-optimize
+ac_add_options --enable-xinerama
+ac_add_options --enable-default-toolkit=cairo-gtk2
+ac_add_options --enable-pango
+ac_add_options --enable-svg
+ac_add_options --enable-canvas
+ac_add_options --disable-javaxpcom
+ac_add_options --disable-crashreporter
+ac_add_options --enable-safe-browsing
+ac_add_options --enable-extensions=default
+ac_add_options --enable-libnotify
+ac_add_options --disable-necko-wifi
+ac_add_options --enable-startup-notification
+ac_add_options --disable-cpp-exceptions
+ac_add_options --enable-shared-js
+ac_add_options --enable-url-classifier
+ac_add_options --enable-gio
+ac_add_options --disable-gnomevfs
+ac_add_options --disable-updater
+ac_add_options --enable-chrome-format=omni
+
+export BUILD_OFFICIAL=1
+export MOZILLA_OFFICIAL=1
+export MOZ_UA_BUILDID=20100101
+
+mk_add_options BUILD_OFFICIAL=1
+mk_add_options MOZILLA_OFFICIAL=1
+mk_add_options MOZ_OBJDIR=@TOPSRCDIR@
diff --git a/xulrunner-mozconfig-debuginfo b/xulrunner-mozconfig-debuginfo
new file mode 100644
index 0000000..4dd2427
--- /dev/null
+++ b/xulrunner-mozconfig-debuginfo
@@ -0,0 +1,5 @@
+# For mozilla's debuginfo:
+export CFLAGS="$CFLAGS -gdwarf-2"
+export CXXFLAGS="$CXXFLAGS -gdwarf-2"
+export MOZ_DEBUG_SYMBOLS=1
+ac_add_options --enable-crashreporter
diff --git a/xulrunner-redhat-default-prefs.js b/xulrunner-redhat-default-prefs.js
new file mode 100644
index 0000000..7177d9b
--- /dev/null
+++ b/xulrunner-redhat-default-prefs.js
@@ -0,0 +1,6 @@
+pref("app.update.enabled", false);
+pref("app.update.autoInstallEnabled", false);
+pref("general.smoothScroll", true);
+pref("intl.locale.matchOS", true);
+pref("network.manage-offline-status", true);
+pref("toolkit.storage.synchronous", 0);
diff --git a/xulrunner-version.patch b/xulrunner-version.patch
new file mode 100644
index 0000000..d08bde9
--- /dev/null
+++ b/xulrunner-version.patch
@@ -0,0 +1,13 @@
+diff -up mozilla/toolkit/mozapps/update/src/updater/module.ver mozilla/toolkit/mozapps/update/src/updater/module
+diff -up mozilla/xulrunner/installer/Makefile.in.ver mozilla/xulrunner/installer/Makefile.in
+--- mozilla/xulrunner/installer/Makefile.in.ver 2007-12-14 09:51:34.000000000 +0100
++++ mozilla/xulrunner/installer/Makefile.in 2007-12-14 09:52:03.000000000 +0100
+@@ -44,6 +44,8 @@ VPATH = @srcdir@
+
+ include $(DEPTH)/config/autoconf.mk
+
++MOZ_APP_VERSION="__RPM_VERSION_INTERNAL__"
++
+ NO_PKG_FILES = \
+ xulrunner-config \
+ regchrome* \
diff --git a/xulrunner.sh.in b/xulrunner.sh.in
new file mode 100644
index 0000000..8f76b27
--- /dev/null
+++ b/xulrunner.sh.in
@@ -0,0 +1,69 @@
+#!/bin/sh
+#
+# The contents of this file are subject to the Netscape Public
+# License Version 1.1 (the "License"); you may not use this file
+# except in compliance with the License. You may obtain a copy of
+# the License at http://www.mozilla.org/NPL/
+#
+# Software distributed under the License is distributed on an "AS
+# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+# implied. See the License for the specific language governing
+# rights and limitations under the License.
+#
+# The Original Code is mozilla.org code.
+#
+# The Initial Developer of the Original Code is Netscape
+# Communications Corporation. Portions created by Netscape are
+# Copyright (C) 1998 Netscape Communications Corporation. All
+# Rights Reserved.
+#
+# Contributor(s):
+#
+
+##
+## Usage:
+##
+## $ xulrunner
+##
+## This script is meant to run a xulrunner program from the xulrunner
+## rpm installation.
+##
+
+cmdname=`basename $0`
+
+##
+## Variables
+##
+XUL_ARCH=$(uname -m)
+case $XUL_ARCH in
+ x86_64 | ia64 | s390 )
+ XUL_LIB_DIR="/usr/lib64"
+ SECONDARY_LIB_DIR="/usr/lib"
+ ;;
+ * )
+ XUL_LIB_DIR="/usr/lib"
+ SECONDARY_LIB_DIR="/usr/lib64"
+ ;;
+esac
+
+if [ ! -x $XUL_LIB_DIR/xulrunner-XULRUNNER_VERSION/xulrunner ]; then
+ if [ ! -x $SECONDARY_LIB_DIR/xulrunner-XULRUNNER_VERSION/xulrunner ]; then
+ echo "Error: $XUL_LIB_DIR/xulrunner-XULRUNNER_VERSION/xulrunner not found"
+ if [ -d $SECONDARY_LIB_DIR ]; then
+ echo " $SECONDARY_LIB_DIR/xulrunner-XULRUNNER_VERSION/xulrunner not found"
+ fi
+ exit 1
+ fi
+ XUL_LIB_DIR="$SECONDARY_LIB_DIR"
+fi
+XUL_DIST_BIN="$XUL_LIB_DIR/xulrunner-XULRUNNER_VERSION"
+XUL_PROGRAM="$XUL_DIST_BIN/xulrunner"
+
+##
+## Enable WebGL
+##
+MOZ_GLX_IGNORE_BLACKLIST=1
+export MOZ_GLX_IGNORE_BLACKLIST
+
+
+exec $XUL_PROGRAM "$@"
diff --git a/xulrunner.spec b/xulrunner.spec
new file mode 100644
index 0000000..5dacab3
--- /dev/null
+++ b/xulrunner.spec
@@ -0,0 +1,801 @@
+%global shortname xulrunner
+
+### TODO use system nss when 3.13.1 pushed to stable (f >= 15)
+
+# Minimal required versions
+%global nspr_version 4.8.8
+%global nss_version 3.13.1
+%global cairo_version 1.10.2
+%global freetype_version 2.1.9
+%global sqlite_version 3.7.7.1
+%global libnotify_version 0.7.0
+%global lcms_version 1.18
+
+# gecko_dir_ver should be set to the version in our directory names
+# alpha_version should be set to the alpha number if using an alpha, 0 otherwise
+# beta_version should be set to the beta number if using a beta, 0 otherwise
+# rc_version should be set to the RC number if using an RC, 0 otherwise
+%global gecko_dir_ver 9
+%global alpha_version 0
+%global beta_version 0
+%global rc_version 0
+
+%global mozappdir %{_libdir}/%{shortname}-%{gecko_dir_ver}
+
+# crash reporter work only on x86/x86_64
+#%ifarch %{ix86} x86_64
+#%global enable_mozilla_crashreporter 1
+#%else
+%global enable_mozilla_crashreporter 0
+#%endif
+
+# The actual sqlite version (see #480989):
+%global sqlite_build_version %(pkg-config --silence-errors --modversion sqlite3 2>/dev/null || echo 65536)
+
+%global tarballdir mozilla-release
+%if %{alpha_version} > 0
+%global pre_version a%{alpha_version}
+%global pre_name alpha%{alpha_version}
+%global tarballdir mozilla-beta
+%endif
+%if %{beta_version} > 0
+%global pre_version b%{beta_version}
+%global pre_name beta%{beta_version}
+%global tarballdir mozilla-beta
+%endif
+%if %{rc_version} > 0
+%global pre_version rc%{rc_version}
+%global pre_name rc%{rc_version}
+%global tarballdir mozilla-release
+%endif
+%if %{defined pre_version}
+%global gecko_verrel %{expand:%%{version}}-%{pre_name}
+%global pre_tag .%{pre_version}
+%else
+%global gecko_verrel %{expand:%%{version}}
+%endif
+
+Summary: XUL Runtime for Gecko Applications
+Name: %{shortname}%{gecko_dir_ver}
+Version: 9.0
+Release: 1%{?dist}
+URL: http://developer.mozilla.org/En/XULRunner
+License: MPLv1.1 or GPLv2+ or LGPLv2+
+Group: Applications/Internet
+# You can get sources at ftp://ftp.mozilla.org/pub/firefox/releases/%{version}%{?pretag}/source
+#Source0: %{shortname}-%{version}%{?pretag}.source.tar.bz2
+Source0: firefox-%{version}%{?pre_version}.source.tar.bz2
+Source10: %{shortname}-mozconfig
+Source11: %{shortname}-mozconfig-debuginfo
+Source12: %{shortname}-redhat-default-prefs.js
+Source21: %{shortname}.sh.in
+
+# build patches
+Patch0: xulrunner-version.patch
+Patch1: mozilla-build.patch
+Patch14: xulrunner-2.0-chromium-types.patch
+Patch18: xulrunner-9.0-secondary-ipc.patch
+
+# Fedora specific patches
+Patch20: mozilla-193-pkgconfig.patch
+Patch21: mozilla-libjpeg-turbo.patch
+Patch23: wmclass.patch
+Patch24: crashreporter-remove-static.patch
+
+# Upstream patches
+Patch34: xulrunner-2.0-network-link-service.patch
+Patch35: xulrunner-2.0-NetworkManager09.patch
+Patch38: mozilla-696393.patch
+# https://bugzilla.mozilla.org/show_bug.cgi?id=707993
+Patch39: xulrunner-8.0-fix-maemo-checks-in-npapi.patch
+Patch40: mozilla-682832-proxy.patch
+
+# ---------------------------------------------------
+
+BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)
+%if 0%{?fedora} >= 14
+BuildRequires: nspr-devel >= %{nspr_version}
+%endif
+%if 0%{?fedora} >= 17
+BuildRequires: nss-devel >= %{nss_version}
+%endif
+%if 0%{?fedora} >= 15
+BuildRequires: cairo-devel >= %{cairo_version}
+%endif
+BuildRequires: libpng-devel
+BuildRequires: libjpeg-devel
+BuildRequires: zip
+BuildRequires: bzip2-devel
+BuildRequires: zlib-devel
+BuildRequires: libIDL-devel
+BuildRequires: gtk2-devel
+BuildRequires: krb5-devel
+BuildRequires: pango-devel
+BuildRequires: freetype-devel >= %{freetype_version}
+BuildRequires: libXt-devel
+BuildRequires: libXrender-devel
+BuildRequires: hunspell-devel
+%if 0%{?fedora} >= 16
+BuildRequires: sqlite-devel >= %{sqlite_version}
+%endif
+BuildRequires: startup-notification-devel
+BuildRequires: alsa-lib-devel
+BuildRequires: libnotify-devel
+BuildRequires: mesa-libGL-devel
+BuildRequires: lcms-devel >= %{lcms_version}
+BuildRequires: yasm
+BuildRequires: curl-devel
+%ifarch %{ix86} x86_64
+BuildRequires: wireless-tools-devel
+%endif
+%if 0%{?fedora} >= 13
+BuildRequires: libvpx-devel
+%endif
+
+Requires: mozilla-filesystem
+%if 0%{?fedora} >= 14
+Requires: nspr >= %{nspr_version}
+%endif
+%if 0%{?fedora} >= 17
+Requires: nss >= %{nss_version}
+%endif
+%if 0%{?fedora} >= 16
+Requires: sqlite >= %{sqlite_build_version}
+%endif
+Provides: gecko-libs = %{gecko_verrel}
+Provides: gecko-libs%{?_isa} = %{gecko_verrel}
+Obsoletes: xulrunner2
+Obsoletes: xulrunner5
+Obsoletes: xulrunner6
+Obsoletes: xulrunner7
+Obsoletes: xulrunner8
+
+
+%description
+XULRunner is a Mozilla runtime package that can be used to bootstrap XUL+XPCOM
+applications that are as rich as Firefox and Thunderbird. It provides mechanisms
+for installing, upgrading, and uninstalling these applications. XULRunner also
+provides libxul, a solution which allows the embedding of Mozilla technologies
+in other projects and products.
+
+%package devel
+Summary: Development files for Gecko
+Group: Development/Libraries
+Obsoletes: mozilla-devel < 1.9
+Obsoletes: firefox-devel < 2.1
+Obsoletes: xulrunner-devel-unstable
+Provides: gecko-devel = %{gecko_verrel}
+Provides: gecko-devel%{?_isa} = %{gecko_verrel}
+Provides: gecko-devel-unstable = %{gecko_verrel}
+Provides: gecko-devel-unstable%{?_isa} = %{gecko_verrel}
+
+Requires: %{name}%{?_isa} = %{version}-%{release}
+%if 0%{?fedora} >= 14
+Requires: nspr-devel >= %{nspr_version}
+%endif
+%if 0%{?fedora} >= 17
+Requires: nss-devel >= %{nss_version}
+%endif
+%if 0%{?fedora} >= 15
+# Library requirements (cairo-tee >= 1.10)
+Requires: cairo-devel >= %{cairo_version}
+%endif
+Requires: libjpeg-devel
+Requires: zip
+Requires: bzip2-devel
+Requires: zlib-devel
+Requires: libIDL-devel
+Requires: gtk2-devel
+Requires: krb5-devel
+Requires: pango-devel
+Requires: freetype-devel >= %{freetype_version}
+Requires: libXt-devel
+Requires: libXrender-devel
+Requires: hunspell-devel
+Requires: sqlite-devel
+Requires: startup-notification-devel
+Requires: alsa-lib-devel
+Requires: libnotify-devel
+Requires: mesa-libGL-devel
+Requires: lcms-devel
+Requires: yasm
+%ifarch %{ix86} x86_64
+Requires: wireless-tools-devel
+%endif
+Obsoletes: xulrunner2-devel
+Obsoletes: xulrunner5-devel
+Obsoletes: xulrunner6-devel
+Obsoletes: xulrunner7-devel
+Obsoletes: xulrunner8-devel
+
+%description devel
+This package contains the libraries amd header files that are needed
+for writing XUL+XPCOM applications with Mozilla XULRunner and Gecko.
+
+%if %{enable_mozilla_crashreporter}
+%global moz_debug_prefix %{_prefix}/lib/debug
+%global moz_debug_dir %{moz_debug_prefix}%{mozappdir}
+%global uname_m %(uname -m)
+%global symbols_file_name %{shortname}-%{version}.en-US.%{_os}-%{uname_m}.crashreporter-symbols.zip
+%global symbols_file_path %{moz_debug_dir}/%{symbols_file_name}
+%global _find_debuginfo_opts -p %{symbols_file_path} -o debugcrashreporter.list
+%global crashreporter_pkg_name mozilla-crashreporter-%{name}-debuginfo
+%package -n %{crashreporter_pkg_name}
+Summary: Debugging symbols used by Mozilla's crash reporter servers
+Group: Development/Debug
+%description -n %{crashreporter_pkg_name}
+This package provides debug information for XULRunner, for use by
+Mozilla's crash reporter servers. If you are trying to locally
+debug %{name}, you want to install %{name}-debuginfo instead.
+%files -n %{crashreporter_pkg_name} -f debugcrashreporter.list
+%defattr(-,root,root)
+%endif
+
+
+#---------------------------------------------------------------------
+
+%prep
+echo TARGET = %{name}-%{version}-%{release}%{?dist} GECKO = %{gecko_verrel}
+%setup -q -c
+cd %{tarballdir}
+
+sed -e 's/__RPM_VERSION_INTERNAL__/%{gecko_dir_ver}/' %{P:%%PATCH0} \
+ > version.patch
+%{__patch} -p1 -b --suffix .version --fuzz=0 < version.patch
+
+%patch1 -p2 -b .build
+%patch14 -p1 -b .chromium-types
+%patch18 -p2 -b .secondary-ipc
+
+%patch20 -p2 -b .pk
+%if 0%{?fedora} >= 14
+%patch21 -p2 -b .jpeg-turbo
+%endif
+%patch23 -p1 -b .wmclass
+%patch24 -p1 -b .static
+
+%patch34 -p1 -b .network-link-service
+%patch35 -p1 -b .NetworkManager09
+%patch38 -p2 -b .696393
+%patch39 -p1 -b .707993
+%if 0%{?fedora} >= 14
+%patch40 -p1 -b .682832
+%endif
+
+%{__rm} -f .mozconfig
+%{__cat} %{SOURCE10} \
+%if 0%{?fedora} < 16 && 0%{?rhel} <= 6
+ | grep -v enable-system-sqlite \
+%endif
+%if 0%{?fedora} < 14 && 0%{?rhel} <= 6
+ | grep -v with-system-nspr \
+%endif
+%if 0%{?fedora} < 17 && 0%{?rhel} <= 6
+ | grep -v with-system-nss \
+%endif
+%if 0%{?fedora} < 15 && 0%{?rhel} <= 6
+ | grep -v enable-system-cairo \
+%endif
+%ifarch %{ix86} x86_64
+ | grep -v disable-necko-wifi \
+%endif
+%if 0%{?fedora} < 13 && 0%{?rhel} <= 6
+ | grep -v with-system-libvpx \
+%endif
+ | tee .mozconfig
+
+%if %{enable_mozilla_crashreporter}
+%{__cat} %{SOURCE11} >> .mozconfig
+%endif
+
+echo "ac_add_options --enable-system-lcms" >> .mozconfig
+
+# s390(x) fails to start with jemalloc enabled
+%ifarch s390 s390x
+echo "ac_add_options --disable-jemalloc" >> .mozconfig
+%endif
+
+%ifnarch %{ix86} x86_64
+echo "ac_add_options --disable-methodjit" >> .mozconfig
+echo "ac_add_options --disable-monoic" >> .mozconfig
+echo "ac_add_options --disable-polyic" >> .mozconfig
+echo "ac_add_options --disable-tracejit" >> .mozconfig
+%endif
+
+#---------------------------------------------------------------------
+
+%build
+%if 0%{?fedora} >= 15
+# Do not proceed with build if the sqlite require would be broken:
+# make sure the minimum requirement is non-empty, ...
+sqlite_version=$(expr "%{sqlite_version}" : '\([0-9]*\.\)[0-9]*\.') || exit 1
+# ... and that major number of the computed build-time version matches:
+case "%{sqlite_build_version}" in
+ "$sqlite_version"*) ;;
+ *) exit 1 ;;
+esac
+%endif
+
+cd %{tarballdir}
+
+# -fpermissive is needed to build with gcc 4.6+ which has become stricter
+#
+# Mozilla builds with -Wall with exception of a few warnings which show up
+# everywhere in the code; so, don't override that.
+#
+# Disable C++ exceptions since Mozilla code is not exception-safe
+#
+MOZ_OPT_FLAGS=$(echo "$RPM_OPT_FLAGS -fpermissive" | \
+ %{__sed} -e 's/-Wall//' -e 's/-fexceptions/-fno-exceptions/g')
+export CFLAGS=$MOZ_OPT_FLAGS
+export CXXFLAGS=$MOZ_OPT_FLAGS
+
+export PREFIX='%{_prefix}'
+export LIBDIR='%{_libdir}'
+
+MOZ_SMP_FLAGS=-j1
+# On x86 architectures, Mozilla can build up to 4 jobs at once in parallel,
+# however builds tend to fail on other arches when building in parallel.
+%ifarch %{ix86} x86_64
+[ -z "$RPM_BUILD_NCPUS" ] && \
+ RPM_BUILD_NCPUS="`/usr/bin/getconf _NPROCESSORS_ONLN`"
+[ "$RPM_BUILD_NCPUS" -ge 2 ] && MOZ_SMP_FLAGS=-j2
+[ "$RPM_BUILD_NCPUS" -ge 4 ] && MOZ_SMP_FLAGS=-j4
+%endif
+
+export LDFLAGS="-Wl,-rpath,%{mozappdir}"
+make -f client.mk build STRIP="/bin/true" MOZ_MAKE_FLAGS="$MOZ_SMP_FLAGS" MOZ_SERVICES_SYNC="1"
+
+# create debuginfo for crash-stats.mozilla.com
+%if %{enable_mozilla_crashreporter}
+#cd %{moz_objdir}
+make buildsymbols
+%endif
+
+#---------------------------------------------------------------------
+
+%install
+cd %{tarballdir}
+%{__rm} -rf $RPM_BUILD_ROOT
+
+INTERNAL_APP_SDK_NAME=%{shortname}-sdk-%{gecko_dir_ver}
+MOZ_APP_SDK_DIR=%{_libdir}/${INTERNAL_APP_SDK_NAME}
+
+# set up our prefs before install, so it gets pulled in to omni.jar
+%{__cp} -p %{SOURCE12} dist/bin/defaults/pref/all-redhat.js
+
+DESTDIR=$RPM_BUILD_ROOT make install
+
+%{__mkdir_p} $RPM_BUILD_ROOT/%{mozappdir} \
+ $RPM_BUILD_ROOT%{_datadir}/idl/${INTERNAL_APP_SDK_NAME} \
+ $RPM_BUILD_ROOT%{_includedir}/${INTERNAL_APP_SDK_NAME}
+%{__mkdir_p} $RPM_BUILD_ROOT{%{_libdir},%{_bindir},%{_datadir}/applications}
+
+# Start script install
+%{__rm} -rf $RPM_BUILD_ROOT%{_bindir}/%{shortname}
+%{__cat} %{SOURCE21} | %{__sed} -e 's,XULRUNNER_VERSION,%{gecko_dir_ver},g' > \
+ $RPM_BUILD_ROOT%{_bindir}/%{name}
+%{__chmod} 755 $RPM_BUILD_ROOT%{_bindir}/%{name}
+
+%{__rm} -f $RPM_BUILD_ROOT%{mozappdir}/%{shortname}-config
+
+# Prepare our devel package
+%{__mkdir_p} $RPM_BUILD_ROOT/%{_includedir}/${INTERNAL_APP_SDK_NAME}
+%{__mkdir_p} $RPM_BUILD_ROOT/%{_datadir}/idl/${INTERNAL_APP_SDK_NAME}
+%{__mkdir_p} $RPM_BUILD_ROOT/%{_libdir}/pkgconfig
+
+%{__cp} -rL dist/include/* \
+ $RPM_BUILD_ROOT/%{_includedir}/${INTERNAL_APP_SDK_NAME}
+
+# Copy pc files (for compatibility with 1.9.1)
+%{__cp} $RPM_BUILD_ROOT/%{_libdir}/pkgconfig/libxul.pc \
+ $RPM_BUILD_ROOT/%{_libdir}/pkgconfig/libxul-unstable.pc
+%{__cp} $RPM_BUILD_ROOT/%{_libdir}/pkgconfig/libxul-embedding.pc \
+ $RPM_BUILD_ROOT/%{_libdir}/pkgconfig/libxul-embedding-unstable.pc
+
+# Fix multilib devel conflicts...
+function install_file() {
+genheader=$*
+mv ${genheader}.h ${genheader}%{__isa_bits}.h
+cat > ${genheader}.h << EOF
+/* This file exists to fix multilib conflicts */
+#if defined(__x86_64__) || defined(__ia64__) || defined(__s390x__) || defined(__powerpc64__) || (defined(__sparc__) && defined(__arch64__))
+#include "${genheader}64.h"
+#else
+#include "${genheader}32.h"
+#endif
+EOF
+}
+
+pushd $RPM_BUILD_ROOT/%{_includedir}/${INTERNAL_APP_SDK_NAME}
+install_file "mozilla-config"
+install_file "jsautocfg"
+install_file "js-config"
+popd
+
+%{__install} -p -c -m 755 dist/bin/xpcshell \
+ $RPM_BUILD_ROOT/%{mozappdir}
+
+%if 0%{?fedora} < 14 && 0%{?rhel} <= 6
+%{__install} -D -p -m 755 \
+ dist/sdk/bin/nspr-config \
+ $RPM_BUILD_ROOT${MOZ_APP_SDK_DIR}/sdk/bin/nspr-config
+%endif
+
+%{__rm} -rf $RPM_BUILD_ROOT/%{_includedir}/%{shortname}-%{gecko_dir_ver}
+%{__rm} -rf $RPM_BUILD_ROOT/%{_datadir}/idl/%{shortname}-%{gecko_dir_ver}
+
+%{__rm} -rf $RPM_BUILD_ROOT${MOZ_APP_SDK_DIR}/include
+ln -s %{_includedir}/${INTERNAL_APP_SDK_NAME} \
+ $RPM_BUILD_ROOT${MOZ_APP_SDK_DIR}/include
+
+%{__rm} -rf $RPM_BUILD_ROOT${MOZ_APP_SDK_DIR}/idl
+ln -s %{_datadir}/idl/${INTERNAL_APP_SDK_NAME} \
+ $RPM_BUILD_ROOT${MOZ_APP_SDK_DIR}/idl
+
+%{__rm} -rf $RPM_BUILD_ROOT${MOZ_APP_SDK_DIR}/sdk/include
+ln -s %{_includedir}/${INTERNAL_APP_SDK_NAME} \
+ $RPM_BUILD_ROOT${MOZ_APP_SDK_DIR}/sdk/include
+
+%{__rm} -rf $RPM_BUILD_ROOT${MOZ_APP_SDK_DIR}/sdk/idl
+ln -s %{_datadir}/idl/${INTERNAL_APP_SDK_NAME} \
+ $RPM_BUILD_ROOT${MOZ_APP_SDK_DIR}/sdk/idl
+
+find $RPM_BUILD_ROOT/%{_includedir} -type f -name "*.h" | xargs chmod 644
+find $RPM_BUILD_ROOT/%{_datadir}/idl -type f -name "*.idl" | xargs chmod 644
+
+%{__rm} -rf $RPM_BUILD_ROOT${MOZ_APP_SDK_DIR}/sdk/lib/*.so
+pushd $RPM_BUILD_ROOT%{mozappdir}
+for i in *.so; do
+ ln -s %{mozappdir}/$i $RPM_BUILD_ROOT${MOZ_APP_SDK_DIR}/sdk/lib/$i
+done
+popd
+
+# Library path
+LD_SO_CONF_D=%{_sysconfdir}/ld.so.conf.d
+LD_CONF_FILE=xulrunner-%{__isa_bits}.conf
+
+%if %{name} == %{shortname}
+%{__mkdir_p} ${RPM_BUILD_ROOT}${LD_SO_CONF_D}
+%{__cat} > ${RPM_BUILD_ROOT}${LD_SO_CONF_D}/${LD_CONF_FILE} << EOF
+%{mozappdir}
+EOF
+%endif
+
+# Copy over the LICENSE
+%{__install} -p -c -m 644 LICENSE $RPM_BUILD_ROOT%{mozappdir}
+
+# Use the system hunspell dictionaries
+%{__rm} -rf ${RPM_BUILD_ROOT}%{mozappdir}/dictionaries
+ln -s %{_datadir}/myspell ${RPM_BUILD_ROOT}%{mozappdir}/dictionaries
+
+# ghost files
+%{__mkdir_p} $RPM_BUILD_ROOT%{mozappdir}/components
+touch $RPM_BUILD_ROOT%{mozappdir}/components/compreg.dat
+touch $RPM_BUILD_ROOT%{mozappdir}/components/xpti.dat
+
+# Add debuginfo for crash-stats.mozilla.com
+%if %{enable_mozilla_crashreporter}
+%{__mkdir_p} $RPM_BUILD_ROOT/%{moz_debug_dir}
+%{__cp} dist/%{symbols_file_name} $RPM_BUILD_ROOT/%{moz_debug_dir}
+%endif
+
+# Remi : this appears on Fedora <= 13
+%{__rm} -f $RPM_BUILD_ROOT/%{mozappdir}/*.chk
+
+
+#---------------------------------------------------------------------
+
+%clean
+%{__rm} -rf $RPM_BUILD_ROOT
+
+#---------------------------------------------------------------------
+
+%post -p /sbin/ldconfig
+
+%postun -p /sbin/ldconfig
+
+%if %{name} == %{shortname}
+%preun
+# is it a final removal?
+if [ $1 -eq 0 ]; then
+ %{__rm} -rf %{mozappdir}/components
+fi
+%endif
+
+%files
+%defattr(-,root,root,-)
+%{_bindir}/%{name}
+%dir %{mozappdir}
+%doc %attr(644, root, root) %{mozappdir}/LICENSE
+%doc %attr(644, root, root) %{mozappdir}/README.txt
+%{mozappdir}/chrome
+%{mozappdir}/chrome.manifest
+%{mozappdir}/dictionaries
+%dir %{mozappdir}/components
+%ghost %{mozappdir}/components/compreg.dat
+%ghost %{mozappdir}/components/xpti.dat
+%{mozappdir}/components/*.so
+%{mozappdir}/components/*.manifest
+%{mozappdir}/omni.jar
+%{mozappdir}/plugins
+%{mozappdir}/*.so
+%{mozappdir}/mozilla-xremote-client
+%{mozappdir}/run-mozilla.sh
+%{mozappdir}/xulrunner
+%{mozappdir}/xulrunner-bin
+%{mozappdir}/xulrunner-stub
+%{mozappdir}/platform.ini
+%{mozappdir}/dependentlibs.list
+%if %{name} == %{shortname}
+%{_sysconfdir}/ld.so.conf.d/xulrunner*.conf
+%endif
+%{mozappdir}/plugin-container
+%{mozappdir}/hyphenation
+
+%if %{enable_mozilla_crashreporter}
+%{mozappdir}/crashreporter
+%{mozappdir}/crashreporter.ini
+%{mozappdir}/Throbber-small.gif
+%endif
+
+%files devel
+%defattr(-,root,root,-)
+%{_datadir}/idl/%{shortname}*%{gecko_dir_ver}
+%{_includedir}/%{shortname}*%{gecko_dir_ver}
+%{_libdir}/%{shortname}-sdk-*/
+%{_libdir}/pkgconfig/*.pc
+%{mozappdir}/xpcshell
+
+#---------------------------------------------------------------------
+
+%changelog
+* Tue Dec 20 2011 Remi Collet <RPMS@FamilleCollet.com> - 9.0-1
+- update to 9.0, sync with rawhide
+
+* Tue Dec 20 2011 Jan Horak <jhorak@redhat.com> - 9.0-2
+- Update to 9.0
+
+* Fri Dec 9 2011 Martin Stransky <stransky@redhat.com> 9.0-1.beta5
+- Updated to 9.0 Beta 5
+
+* Wed Dec 7 2011 Jan Horak <jhorak@redhat.com> - 8.0-5
+- Gnome 3 proxy settings are now honoured (mozbz#682832)
+
+* Tue Dec 6 2011 Tom Callaway <spot@fedoraproject.org> 8.0-4
+- fix bug in npapi.h causing compile failures
+
+* Fri Nov 25 2011 Martin Stransky <stransky@redhat.com> 8.0-3
+- s390 build fixes
+
+* Sat Nov 12 2011 Remi Collet <RPMS@FamilleCollet.com> - 8.0-1
+- update to 8.0, sync with rawhide
+
+* Mon Nov 7 2011 Martin Stransky <stransky@redhat.com> 8.0-1
+- Updated to 8.0
+
+* Tue Oct 18 2011 Ville Skyttä <ville.skytta@iki.fi> - 7.0.1-5
+- Avoid %%post/un shell invocations
+ and dependencies (rhbz#736830).
+
+* Tue Oct 18 2011 Martin Stransky <stransky@redhat.com> 7.0.1-4
+- Updated cairo dependency (rhbz#742853)
+
+* Wed Oct 12 2011 Georgi Georgiev <chutzimir@gmail.com> - 7.0.1-1
+- Make it work on RHEL
+
+* Tue Oct 11 2011 Dan Horák <dan[at]danny.cz> 7.0.1-3
+- fix build on secondary arches
+
+* Fri Sep 30 2011 Remi Collet <RPMS@FamilleCollet.com> - 7.0.1-1
+- update to 7.0.1
+
+* Tue Sep 27 2011 Remi Collet <RPMS@FamilleCollet.com> - 7.0-1
+- update to 7.0
+
+* Tue Sep 06 2011 Remi Collet <RPMS@FamilleCollet.com> - 6.0.2-1
+- update to 6.0.2
+
+* Thu Sep 01 2011 Remi Collet <RPMS@FamilleCollet.com> - 6.0.1-1
+- update to 6.0.1
+
+* Wed Aug 17 2011 Remi Collet <RPMS@FamilleCollet.com> - 6.0-1
+- sync with rawhide, update to 6.0
+
+* Tue Aug 16 2011 Martin Stransky <stransky@redhat.com> 6.0-2
+- Updated gtkmozembed patch
+
+* Tue Aug 16 2011 Martin Stransky <stransky@redhat.com> 6.0-1
+- 6.0
+
+* Tue Aug 02 2011 Remi Collet <RPMS@FamilleCollet.com> - 6.0-0.1.beta4
+- update to 6.0 beta4
+
+* Sun Jul 24 2011 Remi Collet <RPMS@FamilleCollet.com> - 6.0-0.1.beta3.build2
+- update to 6.0 beta3 build2 candidate
+
+* Sat Jul 16 2011 Remi Collet <RPMS@FamilleCollet.com> - 5.0.1-1
+- Update to 5.0.1
+
+* Thu Jun 30 2011 Martin Stransky <stransky@redhat.com> 5.0-5
+- Fixed build on powerpc(64)
+
+* Tue Jun 28 2011 Dan Horák <dan[at]danny.cz> - 5.0-4
+- fix build on secondary arches with IPC enabled
+
+* Fri Jun 24 2011 Remi Collet <RPMS@FamilleCollet.com> - 5.0-1
+- sync with f15/rawhide
+- update to 5.0 finale
+
+* Tue Jun 24 2011 Martin Stransky <stransky@redhat.com> 5.0-3
+- libCurl build fix
+
+* Wed Jun 22 2011 Martin Stransky <stransky@redhat.com> 5.0-2
+- Reverted mozbz#648156 - Remove gtkmozembed
+
+* Tue Jun 21 2011 Martin Stransky <stransky@redhat.com> 5.0-1
+- 5.0
+
+* Thu Jun 16 2011 Remi Collet <RPMS@FamilleCollet.com> - 5.0-0.6.build1
+- Update to 5.0 build 1 candidate
+
+* Wed Jun 15 2011 Remi Collet <RPMS@FamilleCollet.com> - 5.0-0.4.beta7.build1
+- Update to 5.0 Beta 7 build 1 candidate
+
+* Tue Jun 14 2011 Remi Collet <RPMS@FamilleCollet.com> - 5.0-0.2.beta6.build1
+- Update to 5.0 Beta 6 build 1 candidate
+
+* Sun Jun 12 2011 Remi Collet <RPMS@FamilleCollet.com> - 5.0-0.1.b5.build1
+- use patch from spot
+- Update to 5.0b5 build1
+
+* Wed Jun 1 2011 Tom Callaway <spot@fedoraproject.org> - 5.0-0.1.b3
+- firefox5, xulrunner5
+
+* Wed Jun 1 2011 Remi Collet <RPMS@FamilleCollet.com> - 5.0-0.1.b3.build1
+- xulrunner5
+
+* Sun Apr 17 2011 Remi Collet <RPMS@FamilleCollet.com> - 2.0.1-0.1.build1
+- Update to 2.0.1 build1 candidate
+
+* Sun Apr 10 2011 Christopher Aillon <caillon@redhat.com> - 2.0-3
+- Fix offline status issue on version upgrades
+- Fix a hang with 20+ extensions
+
+* Mon Apr 4 2011 Christopher Aillon <caillon@redhat.com> - 2.0-2
+- Fix SIGABRT in X_CloseDevice: XI_BadDevice
+- Updates for NetworkManager 0.9
+- Updates for GNOME 3
+
+* Tue Mar 22 2011 Christopher Aillon <caillon@redhat.com> - 2.0-1
+- 2.0
+
+* Tue Mar 22 2011 Remi Collet <RPMS@FamilleCollet.com> - 2.0-1
+- Update to 2.0
+
+* Sat Mar 19 2011 Remi Collet <RPMS@FamilleCollet.com> - 2.0-0.26.rc2
+- Update to 2.0 RC2
+
+* Fri Mar 18 2011 Christopher Aillon <caillon@redhat.com> - 2.0-0.28
+- Update to 2.0 RC2
+
+* Thu Mar 17 2011 Jan Horak <jhorak@redhat.com> - 2.0-0.27
+- Disabled gnomevfs
+- Enabled gio
+- Build with system libvpx
+
+* Thu Mar 10 2011 Remi Collet <RPMS@FamilleCollet.com> - 2.0-0.25.rc1
+- Update to 2.0 RC1
+
+* Wed Mar 9 2011 Christopher Aillon <caillon@redhat.com> - 2.0-0.26
+- Update to 2.0 RC 1
+
+* Sat Mar 05 2011 Remi Collet <RPMS@FamilleCollet.com> - 2.0-0.24.rc1.build1
+- Update to 2.0 RC1 build1 candidate
+
+* Mon Feb 28 2011 Remi Collet <RPMS@FamilleCollet.com> - 2.0-0.23.beta12
+- sync with rawhide
+- update to 2.0 Beta12
+
+* Sun Feb 27 2011 Christopher Aillon <caillon@redhat.com> - 2.0-0.25
+- Make Firefox's User-Agent string match upstream's
+
+* Sat Feb 26 2011 Christopher Aillon <caillon@redhat.com> - 2.0-0.24
+- Switch to using the omni chrome file format
+
+* Fri Feb 25 2011 Christopher Aillon <caillon@redhat.com> - 2.0-0.23
+- Update to 2.0 Beta 12
+
+* Wed Feb 23 2011 Remi Collet <RPMS@FamilleCollet.com> - 2.0-0.22.beta12.build1
+- sync with rawhide
+- update to 2.0 Beta12 build1 candidate
+
+* Sun Feb 13 2011 Dennis Gilmore <dennis@ausil.us> 2.0-0.22
+- disable nanojit on sparc64 its not supported and doesnt get automatically switched off
+
+* Thu Feb 10 2011 Christopher Aillon <caillon@redhat.com> - 2.0-0.21
+- Also provide arch-agnostic versions of gecko virtual provides
+
+* Thu Feb 10 2011 Christopher Aillon <caillon@redhat.com> - 2.0-0.20
+- Introduce better versioning for our gecko virtual provides
+- Now, the gecko-libs and gecko-devel virtual provides will be pinned
+ to an individual Gecko release, so packages can do things like
+ Requires: gecko-libs = 2.0-beta11
+ BuildRequires: gecko-libs = 2.0-beta11
+- Final releases will be pinned to e.g. 2.0-1 regardless of %%{release}
+- Also, make sure those virtual provides are arch-specific
+
+* Wed Feb 09 2011 Remi Collet <RPMS@FamilleCollet.com> - 2.0-0.21.beta11
+- Update to 2.0 Beta 11
+
+* Tue Feb 8 2011 Christopher Aillon <caillon@redhat.com> - 2.0-0.19
+- Update to 2.0 Beta 11
+
+* Fri Feb 04 2011 Remi Collet <RPMS@FamilleCollet.com> - 2.0-0.20.beta11.build3
+- 2.0b11 build3 candidate (using firefox sources)
+
+* Thu Feb 03 2011 Remi Collet <RPMS@FamilleCollet.com> - 2.0-0.19.beta11.build2
+- 2.0b11 build2 candidate (using firefox sources)
+
+* Tue Feb 01 2011 Remi Collet <RPMS@FamilleCollet.com> - 2.0-0.18.beta10
+- rename to xulrunner2
+- merge most changes from spot
+- backport to remi repo
+
+* Wed Jan 26 2011 Christopher Aillon <caillon@redhat.com> - 2.0-0.18
+- Fix issue with popup windows showing in the wrong place
+
+* Tue Jan 25 2011 Christopher Aillon <caillon@redhat.com> - 2.0-0.17
+- Update to 2.0 Beta 10
+
+* Fri Jan 21 2011 Dan Horák <dan[at]danny.cz> - 2.0-0.16.b9
+- updated the 64bit-big-endian patch (bmo#627664)
+- added fix for build with --disable-methodjit (bmo#623277)
+
+* Fri Jan 14 2011 Christopher Aillon <caillon@redhat.com> 2.0-0.15.b9
+- Update to 2.0 Beta 9
+
+* Thu Jan 11 2011 Tom Callaway <spot@fedoraproject.org> 2.0-0.14.b8
+- enable system sqlite (see https://fedorahosted.org/fpc/ticket/34)
+
+* Thu Dec 23 2010 Martin Stransky <stransky@redhat.com> 2.0-0.13.b8
+- reverted fix for rhbz#658471
+
+* Wed Dec 22 2010 Dan Horák <dan[at]danny.cz> - 2.0-0.11.b8
+- updated the 64bit-big-endian patch
+
+* Tue Dec 21 2010 Martin Stransky <stransky@redhat.com> 2.0-0.11.b8
+- enable url-classifier and jar format for chrome files
+
+* Tue Dec 21 2010 Martin Stransky <stransky@redhat.com> 2.0-0.10.b8
+- Update to 2.0b8
+
+* Mon Dec 20 2010 Martin Stransky <stransky@redhat.com> 2.0-0.9.b8
+- removed unused library path (rhbz#658471)
+
+* Fri Dec 17 2010 Dan Horák <dan[at]danny.cz> - 2.0-0.8.b7
+- disable the crash reporter on non-x86 arches
+- add sparc64 as 64-bit arch
+
+* Tue Dec 14 2010 Jan Horak <jhorak@redhat.com> - 2.0-0.7.b7
+- Enable mozilla crash reporter
+
+* Thu Nov 11 2010 Dan Horák <dan[at]danny.cz> - 2.0-0.6.b7
+- The s390 patch is not needed anymore
+
+* Thu Nov 11 2010 Jan Horak <jhorak@redhat.com> - 2.0-0.5.b7
+- Update to 2.0b7
+
+* Thu Nov 4 2010 Christopher Aillon <caillon@redhat.com> 2.0-0.4.b6
+- Ensure that WM_CLASS matches the desktop file
+
+* Wed Nov 3 2010 Martin Stransky <stransky@redhat.com> 2.0-0.3.b6
+- Libnotify rebuild (rhbz#649071)
+
+* Wed Sep 29 2010 jkeating - 2.0-0.2b6
+- Rebuilt for gcc bug 634757
+
+* Tue Sep 21 2010 Martin Stransky <stransky@redhat.com> 2.0-0.1.b6
+- Update to 2.0b6
+
+