From a28727575e4b66f4b6c27d35434c0585b6ca0e45 Mon Sep 17 00:00:00 2001 From: Remi Collet Date: Sat, 12 Nov 2011 16:40:54 +0100 Subject: Thunderbird 8.0 --- mozilla-670719.patch | 53 ++++++ thunderbird-redhat-default-prefs.js | 1 + thunderbird.spec | 62 ++++--- xulrunner-2.0-NetworkManager09.patch | 51 ++++++ xulrunner-2.0-network-link-service.patch | 274 +++++++++++++++++++++++++++++++ xulrunner-install.patch | 12 ++ 6 files changed, 430 insertions(+), 23 deletions(-) create mode 100644 mozilla-670719.patch create mode 100644 xulrunner-2.0-NetworkManager09.patch create mode 100644 xulrunner-2.0-network-link-service.patch create mode 100644 xulrunner-install.patch diff --git a/mozilla-670719.patch b/mozilla-670719.patch new file mode 100644 index 0000000..afae907 --- /dev/null +++ b/mozilla-670719.patch @@ -0,0 +1,53 @@ +# HG changeset patch +# User Mike Hommey +# Date 1313846520 -7200 +# Node ID fdc3b63938f5a76d99c1e2bb12fd448465debc94 +# Parent 07a5a618ebe3f67b23100ceb1b51e92bb79be0cd +Bug 670719 - Only add -DENABLE_JIT=1 to CXXFLAGS if any of trace/method/yarr jit is enabled. + +diff --git a/js/src/Makefile.in b/js/src/Makefile.in +--- a/js/src/Makefile.in ++++ b/js/src/Makefile.in +@@ -433,16 +433,19 @@ CPPSRCS += \ + YarrPattern.cpp \ + YarrSyntaxChecker.cpp \ + $(NULL) + else + + ############################################### + # BEGIN include sources for the Nitro assembler + # ++ ++ENABLE_YARR_JIT = 1 ++ + VPATH += $(srcdir)/assembler \ + $(srcdir)/assembler/wtf \ + $(srcdir)/assembler/jit \ + $(srcdir)/assembler/assembler \ + $(srcdir)/methodjit \ + $(srcdir)/yarr \ + $(NONE) + +@@ -1070,17 +1073,21 @@ endif + + ############################################### + # BEGIN kludges for the Nitro assembler + # + + # Needed to "configure" it correctly. Unfortunately these + # flags wind up being applied to all code in js/src, not just + # the code in js/src/assembler. +-CXXFLAGS += -DUSE_SYSTEM_MALLOC=1 -DENABLE_ASSEMBLER=1 -DENABLE_JIT=1 ++CXXFLAGS += -DUSE_SYSTEM_MALLOC=1 -DENABLE_ASSEMBLER=1 ++ ++ifneq (,$(ENABLE_YARR_JIT)$(ENABLE_TRACEJIT)$(ENABLE_METHODJIT)) ++CXXFLAGS += -DENABLE_JIT=1 ++endif + + INCLUDES += -I$(srcdir)/assembler -I$(srcdir)/yarr + + ifdef ENABLE_METHODJIT + # Build a standalone test program that exercises the assembler + # sources a bit. + TESTMAIN_OBJS = \ + Assertions.$(OBJ_SUFFIX) \ diff --git a/thunderbird-redhat-default-prefs.js b/thunderbird-redhat-default-prefs.js index eeb5c98..f159dcf 100644 --- a/thunderbird-redhat-default-prefs.js +++ b/thunderbird-redhat-default-prefs.js @@ -7,6 +7,7 @@ pref("general.useragent.vendorSub", "THUNDERBIRD_RPM_VR"); pref("intl.locale.matchOS", true); pref("mail.shell.checkDefaultClient", false); pref("toolkit.networkmanager.disable", false); +pref("offline.autoDetect", true); # Disable global indexing by default pref("mailnews.database.global.indexer.enabled", false); diff --git a/thunderbird.spec b/thunderbird.spec index 762ff25..7ea68e1 100644 --- a/thunderbird.spec +++ b/thunderbird.spec @@ -23,7 +23,7 @@ Summary: Mozilla Thunderbird mail/newsgroup client Name: thunderbird -Version: 7.0.1 +Version: 8.0 Release: 1%{?dist} URL: http://www.mozilla.org/projects/thunderbird/ License: MPLv1.1 or GPLv2+ or LGPLv2+ @@ -35,7 +35,7 @@ Group: Applications/Internet %endif Source0: %{tarball} %if %{build_langpacks} -Source1: thunderbird-langpacks-%{version}-20111001.tar.bz2 +Source1: thunderbird-langpacks-%{version}-20111112.tar.bz2 %endif Source10: thunderbird-mozconfig @@ -50,6 +50,12 @@ Source100: find-external-requires Patch0: thunderbird-install-dir.patch Patch7: crashreporter-remove-static.patch Patch8: xulrunner-6.0-secondary-ipc.patch +Patch9: mozilla-670719.patch +Patch10: xulrunner-2.0-network-link-service.patch +Patch11: xulrunner-2.0-NetworkManager09.patch + +# Build patches +Patch100: xulrunner-install.patch %if %{official_branding} # Required by Mozilla Corporation @@ -98,9 +104,6 @@ BuildRequires: yasm BuildRequires: mesa-libGL-devel BuildRequires: GConf2-devel BuildRequires: lcms-devel >= %{lcms_version} -%ifarch %{ix86} x86_64 -BuildRequires: wireless-tools-devel -%endif Requires: mozilla-filesystem %if 0%{?fedora} >= 14 @@ -156,6 +159,10 @@ cd %{tarballdir} cd mozilla %patch7 -p2 -b .static %patch8 -p2 -b .secondary-ipc +%patch9 -p1 -b .moz670719 +%patch10 -p1 -b .link-service +%patch11 -p1 -b .NetworkManager09 +%patch100 -p2 -b .install cd .. %if %{official_branding} @@ -178,17 +185,14 @@ cat %{SOURCE10} \ %endif %if 0%{?fedora} < 15 && 0%{?rhel} <= 6 | grep -v enable-system-cairo \ -%endif -%ifarch %{ix86} x86_64 - | grep -v disable-necko-wifi \ %endif | tee .mozconfig cat <= 15 -ac_add_options --enable-system-sqlite +#ac_add_options --enable-system-sqlite %endif %if 0%{?fedora} < 14 && 0%{?rhel} <= 6 ac_add_options --disable-libjpeg-turbo @@ -222,16 +226,17 @@ export CXXFLAGS=$MOZ_OPT_FLAGS export PREFIX='%{_prefix}' export LIBDIR='%{_libdir}' -%define moz_make_flags -j1 -%ifarch ppc ppc64 s390 s390x -%define moz_make_flags -j1 -%else -%define moz_make_flags %{?_smp_mflags} +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}" -export MAKE="gmake %{moz_make_flags}" -make -f client.mk build +make -f client.mk build STRIP="/bin/true" MOZ_MAKE_FLAGS="$MOZ_SMP_FLAGS" # create debuginfo for crash-stats.mozilla.com %if %{enable_mozilla_crashreporter} @@ -340,8 +345,8 @@ rm -rf $RPM_BUILD_ROOT%{mozappdir}/*.chk #=============================================================================== %pre -echo -e "\nWARNING : This %{name} RPM is not an official Fedora build and it" -echo -e "overrides the official one. Don't file bugs on Fedora Project." +echo -e "\nWARNING : This %{name} RPM is not an official Fedora/Redhat build and it" +echo -e "overrides the official one. Don't file bugs on Fedora Project nor Redhat." echo -e "Use dedicated forums http://forums.famillecollet.com/\n" %if %{?fedora}%{!?fedora:99} <= 13 @@ -400,7 +405,6 @@ fi %{mozappdir}/thunderbird-bin %{mozappdir}/thunderbird %{mozappdir}/*.so -%{mozappdir}/README.txt %{mozappdir}/platform.ini %{mozappdir}/application.ini %{mozappdir}/blocklist.xml @@ -411,6 +415,7 @@ fi %{_datadir}/icons/hicolor/256x256/apps/thunderbird.png %{_datadir}/icons/hicolor/32x32/apps/thunderbird.png %{_datadir}/icons/hicolor/48x48/apps/thunderbird.png +%{mozappdir}/hyphenation %if %{enable_mozilla_crashreporter} %{mozappdir}/crashreporter %{mozappdir}/crashreporter.ini @@ -420,11 +425,22 @@ fi %exclude %{_includedir}/%{name}-%{version} %exclude %{_libdir}/%{name}-devel-%{version} %{mozappdir}/chrome.manifest -%{mozappdir}/hyphenation #=============================================================================== %changelog +* Sat Nov 12 2011 Remi Collet 8.0-1 +- Thunderbird 8.0, sync with rawhide + +* Tue Nov 8 2011 Jan Horak - 8.0-1 +- Update to 8.0 + +* Tue Oct 18 2011 Martin Stransky - 7.0.1-3 +- Added NM patches (mozbz#627672, mozbz#639959) + +* Wed Oct 12 2011 Dan HorĂ¡k - 7.0.1-2 +- fix build on secondary arches (copied from xulrunner) + * Wed Oct 12 2011 Georgi Georgiev - 7.0.1-1 - Make it work on RHEL 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-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-install.patch b/xulrunner-install.patch new file mode 100644 index 0000000..c1393ef --- /dev/null +++ b/xulrunner-install.patch @@ -0,0 +1,12 @@ +diff -up comm-release/mozilla/toolkit/mozapps/installer/packager.mk.install comm-release/mozilla/toolkit/mozapps/installer/packager.mk +--- comm-release/mozilla/toolkit/mozapps/installer/packager.mk.install 2011-11-05 10:21:10.000000000 +0100 ++++ comm-release/mozilla/toolkit/mozapps/installer/packager.mk 2011-11-08 18:48:08.674042803 +0100 +@@ -401,7 +401,7 @@ PRECOMPILE_GRE=$$PWD + endif + + GENERATE_CACHE = \ +- $(_ABS_RUN_TEST_PROGRAM) $(LIBXUL_DIST)/bin/xpcshell$(BIN_SUFFIX) -g "$(PRECOMPILE_GRE)" -a "$$PWD" -f $(MOZILLA_DIR)/toolkit/mozapps/installer/precompile_cache.js -e "populate_startupcache('$(PRECOMPILE_DIR)', 'omni.jar', 'startupCache.zip');" && \ ++ $(_ABS_RUN_TEST_PROGRAM) $(LIBXUL_DIST)/bin/xpcshell$(BIN_SUFFIX) -g "$(PRECOMPILE_GRE)" -a "$$PWD" -f $(call core_abspath,$(MOZILLA_DIR)/toolkit/mozapps/installer/precompile_cache.js) -e "populate_startupcache('$(PRECOMPILE_DIR)', 'omni.jar', 'startupCache.zip');" && \ + rm -rf jsloader && \ + $(UNZIP) startupCache.zip && \ + rm startupCache.zip && \ -- cgit