From 50ba783d626f105f24a2f2b81f96bf766209b376 Mon Sep 17 00:00:00 2001 From: Remi Collet Date: Thu, 22 Dec 2011 16:25:40 +0100 Subject: clean layout --- Makefile | 4 + crashreporter-remove-static.patch | 11 + mozilla-193-pkgconfig.patch | 53 ++ mozilla-682832-proxy.patch | 358 ++++++++++++ mozilla-696393.patch | 133 +++++ mozilla-build.patch | 23 + mozilla-libjpeg-turbo.patch | 34 ++ wmclass.patch | 29 + xulrunner-2.0-NetworkManager09.patch | 51 ++ xulrunner-2.0-chromium-types.patch | 33 ++ xulrunner-2.0-network-link-service.patch | 274 +++++++++ xulrunner-8.0-fix-maemo-checks-in-npapi.patch | 21 + xulrunner-9.0-secondary-ipc.patch | 60 ++ xulrunner-mozconfig | 49 ++ xulrunner-mozconfig-debuginfo | 5 + xulrunner-redhat-default-prefs.js | 6 + xulrunner-version.patch | 13 + xulrunner.sh.in | 69 +++ xulrunner.spec | 801 ++++++++++++++++++++++++++ 19 files changed, 2027 insertions(+) create mode 100644 Makefile create mode 100644 crashreporter-remove-static.patch create mode 100644 mozilla-193-pkgconfig.patch create mode 100644 mozilla-682832-proxy.patch create mode 100644 mozilla-696393.patch create mode 100644 mozilla-build.patch create mode 100644 mozilla-libjpeg-turbo.patch create mode 100644 wmclass.patch create mode 100644 xulrunner-2.0-NetworkManager09.patch create mode 100644 xulrunner-2.0-chromium-types.patch create mode 100644 xulrunner-2.0-network-link-service.patch create mode 100644 xulrunner-8.0-fix-maemo-checks-in-npapi.patch create mode 100644 xulrunner-9.0-secondary-ipc.patch create mode 100644 xulrunner-mozconfig create mode 100644 xulrunner-mozconfig-debuginfo create mode 100644 xulrunner-redhat-default-prefs.js create mode 100644 xulrunner-version.patch create mode 100644 xulrunner.sh.in create mode 100644 xulrunner.spec 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 + #include +@@ -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 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 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 mGConf; ++ nsCOMPtr 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 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 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 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 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 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(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(__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(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(that); ++ vtable_func method = vtable[methodIndex]; + PRUint64 overflow = invoke_count_words (paramCount, params); ++ PRUint64 *stack_space = reinterpret_cast(__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(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 +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 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 mSocketTransportService; + nsCOMPtr mDNSService; + nsCOMPtr mProxyService; + nsCOMPtr mNetworkLinkService; ++ PRPackedBool mNetworkLinkServiceInitialized; + + // Cached protocol handlers + nsWeakPtr mWeakHandler[NS_N(gScheme)]; + + // cached categories + nsCategoryCache mChannelEventSinks; + nsCategoryCache 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( + 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 { + }; + #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 { 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 - 9.0-1 +- update to 9.0, sync with rawhide + +* Tue Dec 20 2011 Jan Horak - 9.0-2 +- Update to 9.0 + +* Fri Dec 9 2011 Martin Stransky 9.0-1.beta5 +- Updated to 9.0 Beta 5 + +* Wed Dec 7 2011 Jan Horak - 8.0-5 +- Gnome 3 proxy settings are now honoured (mozbz#682832) + +* Tue Dec 6 2011 Tom Callaway 8.0-4 +- fix bug in npapi.h causing compile failures + +* Fri Nov 25 2011 Martin Stransky 8.0-3 +- s390 build fixes + +* Sat Nov 12 2011 Remi Collet - 8.0-1 +- update to 8.0, sync with rawhide + +* Mon Nov 7 2011 Martin Stransky 8.0-1 +- Updated to 8.0 + +* Tue Oct 18 2011 Ville Skyttä - 7.0.1-5 +- Avoid %%post/un shell invocations + and dependencies (rhbz#736830). + +* Tue Oct 18 2011 Martin Stransky 7.0.1-4 +- Updated cairo dependency (rhbz#742853) + +* Wed Oct 12 2011 Georgi Georgiev - 7.0.1-1 +- Make it work on RHEL + +* Tue Oct 11 2011 Dan Horák 7.0.1-3 +- fix build on secondary arches + +* Fri Sep 30 2011 Remi Collet - 7.0.1-1 +- update to 7.0.1 + +* Tue Sep 27 2011 Remi Collet - 7.0-1 +- update to 7.0 + +* Tue Sep 06 2011 Remi Collet - 6.0.2-1 +- update to 6.0.2 + +* Thu Sep 01 2011 Remi Collet - 6.0.1-1 +- update to 6.0.1 + +* Wed Aug 17 2011 Remi Collet - 6.0-1 +- sync with rawhide, update to 6.0 + +* Tue Aug 16 2011 Martin Stransky 6.0-2 +- Updated gtkmozembed patch + +* Tue Aug 16 2011 Martin Stransky 6.0-1 +- 6.0 + +* Tue Aug 02 2011 Remi Collet - 6.0-0.1.beta4 +- update to 6.0 beta4 + +* Sun Jul 24 2011 Remi Collet - 6.0-0.1.beta3.build2 +- update to 6.0 beta3 build2 candidate + +* Sat Jul 16 2011 Remi Collet - 5.0.1-1 +- Update to 5.0.1 + +* Thu Jun 30 2011 Martin Stransky 5.0-5 +- Fixed build on powerpc(64) + +* Tue Jun 28 2011 Dan Horák - 5.0-4 +- fix build on secondary arches with IPC enabled + +* Fri Jun 24 2011 Remi Collet - 5.0-1 +- sync with f15/rawhide +- update to 5.0 finale + +* Tue Jun 24 2011 Martin Stransky 5.0-3 +- libCurl build fix + +* Wed Jun 22 2011 Martin Stransky 5.0-2 +- Reverted mozbz#648156 - Remove gtkmozembed + +* Tue Jun 21 2011 Martin Stransky 5.0-1 +- 5.0 + +* Thu Jun 16 2011 Remi Collet - 5.0-0.6.build1 +- Update to 5.0 build 1 candidate + +* Wed Jun 15 2011 Remi Collet - 5.0-0.4.beta7.build1 +- Update to 5.0 Beta 7 build 1 candidate + +* Tue Jun 14 2011 Remi Collet - 5.0-0.2.beta6.build1 +- Update to 5.0 Beta 6 build 1 candidate + +* Sun Jun 12 2011 Remi Collet - 5.0-0.1.b5.build1 +- use patch from spot +- Update to 5.0b5 build1 + +* Wed Jun 1 2011 Tom Callaway - 5.0-0.1.b3 +- firefox5, xulrunner5 + +* Wed Jun 1 2011 Remi Collet - 5.0-0.1.b3.build1 +- xulrunner5 + +* Sun Apr 17 2011 Remi Collet - 2.0.1-0.1.build1 +- Update to 2.0.1 build1 candidate + +* Sun Apr 10 2011 Christopher Aillon - 2.0-3 +- Fix offline status issue on version upgrades +- Fix a hang with 20+ extensions + +* Mon Apr 4 2011 Christopher Aillon - 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 - 2.0-1 +- 2.0 + +* Tue Mar 22 2011 Remi Collet - 2.0-1 +- Update to 2.0 + +* Sat Mar 19 2011 Remi Collet - 2.0-0.26.rc2 +- Update to 2.0 RC2 + +* Fri Mar 18 2011 Christopher Aillon - 2.0-0.28 +- Update to 2.0 RC2 + +* Thu Mar 17 2011 Jan Horak - 2.0-0.27 +- Disabled gnomevfs +- Enabled gio +- Build with system libvpx + +* Thu Mar 10 2011 Remi Collet - 2.0-0.25.rc1 +- Update to 2.0 RC1 + +* Wed Mar 9 2011 Christopher Aillon - 2.0-0.26 +- Update to 2.0 RC 1 + +* Sat Mar 05 2011 Remi Collet - 2.0-0.24.rc1.build1 +- Update to 2.0 RC1 build1 candidate + +* Mon Feb 28 2011 Remi Collet - 2.0-0.23.beta12 +- sync with rawhide +- update to 2.0 Beta12 + +* Sun Feb 27 2011 Christopher Aillon - 2.0-0.25 +- Make Firefox's User-Agent string match upstream's + +* Sat Feb 26 2011 Christopher Aillon - 2.0-0.24 +- Switch to using the omni chrome file format + +* Fri Feb 25 2011 Christopher Aillon - 2.0-0.23 +- Update to 2.0 Beta 12 + +* Wed Feb 23 2011 Remi Collet - 2.0-0.22.beta12.build1 +- sync with rawhide +- update to 2.0 Beta12 build1 candidate + +* Sun Feb 13 2011 Dennis Gilmore 2.0-0.22 +- disable nanojit on sparc64 its not supported and doesnt get automatically switched off + +* Thu Feb 10 2011 Christopher Aillon - 2.0-0.21 +- Also provide arch-agnostic versions of gecko virtual provides + +* Thu Feb 10 2011 Christopher Aillon - 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 - 2.0-0.21.beta11 +- Update to 2.0 Beta 11 + +* Tue Feb 8 2011 Christopher Aillon - 2.0-0.19 +- Update to 2.0 Beta 11 + +* Fri Feb 04 2011 Remi Collet - 2.0-0.20.beta11.build3 +- 2.0b11 build3 candidate (using firefox sources) + +* Thu Feb 03 2011 Remi Collet - 2.0-0.19.beta11.build2 +- 2.0b11 build2 candidate (using firefox sources) + +* Tue Feb 01 2011 Remi Collet - 2.0-0.18.beta10 +- rename to xulrunner2 +- merge most changes from spot +- backport to remi repo + +* Wed Jan 26 2011 Christopher Aillon - 2.0-0.18 +- Fix issue with popup windows showing in the wrong place + +* Tue Jan 25 2011 Christopher Aillon - 2.0-0.17 +- Update to 2.0 Beta 10 + +* Fri Jan 21 2011 Dan Horák - 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 2.0-0.15.b9 +- Update to 2.0 Beta 9 + +* Thu Jan 11 2011 Tom Callaway 2.0-0.14.b8 +- enable system sqlite (see https://fedorahosted.org/fpc/ticket/34) + +* Thu Dec 23 2010 Martin Stransky 2.0-0.13.b8 +- reverted fix for rhbz#658471 + +* Wed Dec 22 2010 Dan Horák - 2.0-0.11.b8 +- updated the 64bit-big-endian patch + +* Tue Dec 21 2010 Martin Stransky 2.0-0.11.b8 +- enable url-classifier and jar format for chrome files + +* Tue Dec 21 2010 Martin Stransky 2.0-0.10.b8 +- Update to 2.0b8 + +* Mon Dec 20 2010 Martin Stransky 2.0-0.9.b8 +- removed unused library path (rhbz#658471) + +* Fri Dec 17 2010 Dan Horák - 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 - 2.0-0.7.b7 +- Enable mozilla crash reporter + +* Thu Nov 11 2010 Dan Horák - 2.0-0.6.b7 +- The s390 patch is not needed anymore + +* Thu Nov 11 2010 Jan Horak - 2.0-0.5.b7 +- Update to 2.0b7 + +* Thu Nov 4 2010 Christopher Aillon 2.0-0.4.b6 +- Ensure that WM_CLASS matches the desktop file + +* Wed Nov 3 2010 Martin Stransky 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 2.0-0.1.b6 +- Update to 2.0b6 + + -- cgit