Add missing files
authorWolfgang Rosenauer <wr@rosenauer.org>
Sat, 28 Nov 2009 22:14:37 +0100
changeset 1 045edd78eceb
parent 0 ad87c5e85a41
child 2 d3d892e2f7a3
Add missing files
firefox-browser-css.patch
firefox-credits.patch
firefox-libxul-sdk.patch
firefox-linkorder.patch
firefox-no-gnomevfs.patch
mozilla-pkgconfig.patch
mozilla-prefer_plugin_pref.patch
mozilla-shared-nss-db.patch
mozilla-startup-notification.patch
status
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/firefox-browser-css.patch	Sat Nov 28 22:14:37 2009 +0100
@@ -0,0 +1,144 @@
+diff --git a/browser/base/content/browser.css b/browser/base/content/browser.css
+--- a/browser/base/content/browser.css
++++ b/browser/base/content/browser.css
+@@ -4,16 +4,21 @@
+ searchbar {
+   -moz-binding: url("chrome://browser/content/search/search.xml#searchbar");
+ }
+ 
+ tabbrowser {
+   -moz-binding: url("chrome://browser/content/tabbrowser.xml#tabbrowser");
+ }
+ 
++    /* Remove focus lines from tabs */
++    .tabbrowser-tab > .tab-text {
++        border: 1px dotted transparent !important;
++    }
++
+ toolbar[printpreview="true"] {
+   -moz-binding: url("chrome://global/content/printPreviewBindings.xml#printpreviewtoolbar");
+ }
+ 
+ toolbarpaletteitem[place="palette"] > toolbaritem > hbox[type="places"] {
+   display: none;
+ }
+ 
+@@ -25,31 +30,69 @@ toolbarpaletteitem[place="palette"] > to
+ #browser-bottombox[lwthemefooter="true"] {
+   background-repeat: no-repeat;
+   background-position: bottom left;
+ }
+ 
+ /* ::::: location bar ::::: */
+ #urlbar {
+   -moz-binding: url(chrome://browser/content/urlbarBindings.xml#urlbar);
++  -moz-appearance: textfield !important;
+ }
+ 
++  #urlbar .autocomplete-textbox-container {
++      background-color: -moz-Field !important;
++      -moz-appearance: none !important;
++  }
++
++  #urlbar > .autocomplete-history-dropmarker {
++      -moz-appearance: toolbarbutton-dropdown !important;
++      margin: 0px 3px 0px 5px !important;
++  }
++
+ #wrapper-urlbar-container > #urlbar-container > #urlbar {
+   -moz-user-input: disabled;
+   cursor: -moz-grab;
+ }
+ 
+ #PopupAutoComplete {
+   -moz-binding: url("chrome://browser/content/urlbarBindings.xml#browser-autocomplete-result-popup");
+ }
+ 
+ #PopupAutoCompleteRichResult {
+   -moz-binding: url("chrome://browser/content/urlbarBindings.xml#urlbar-rich-result-popup");
+ }
+ 
++  #PopupAutoCompleteRichResult .autocomplete-richlistitem
++  {
++      background: -moz-Field !important;
++  }
++
++  #PopupAutoCompleteRichResult .autocomplete-richlistitem[selected="true"]
++  {
++      background: Highlight !important;
++  }
++
++  #PopupAutoCompleteRichResult .autocomplete-richlistitem[selected="true"],
++  #PopupAutoCompleteRichResult .autocomplete-richlistitem[selected="true"] *
++  {
++      color: HighlightText !important;
++  }
++      
++  .ac-title
++    {
++        color: -moz-Fieldtext !important;
++    }
++
++    #PopupAutoComplete .autocomplete-treebody {
++        background-color: -moz-Field !important;
++        color: -moz-Fieldtext !important;
++    }
++
++
+ #urlbar-throbber:not([busy="true"]),
+ #urlbar-throbber[busy="true"] + #page-proxy-favicon {
+   display: none;
+ }
+ 
+ #feed-button > .button-box > .box-inherit > .button-text,
+ #feed-button > .button-box > .button-menu-dropmarker {
+   display: none;
+@@ -69,16 +112,30 @@ toolbarpaletteitem[place="palette"] > to
+   max-width: 22em;
+   min-width: 1px;
+ }
+ 
+ #wrapper-search-container > #search-container > #searchbar > .searchbar-textbox > .autocomplete-textbox-container > .textbox-input-box > html|*.textbox-input {
+   visibility: hidden;
+ }
+ 
++/* Identity/Bookmark pop-up improvements */
++
++    #identity-popup-container {
++        -moz-appearance: dialog !important;
++    }
++
++    #editBookmarkPanel {
++        -moz-appearance: dialog !important;
++    }
++
++    #editBMPanel_foldersExpander, #editBMPanel_tagsSelectorExpander {
++        -moz-appearance: menulist-button !important;
++    }
++
+ /* ::::: Unified Back-/Forward Button ::::: */
+ #back-button > .toolbarbutton-menu-dropmarker,
+ #forward-button > .toolbarbutton-menu-dropmarker,
+ #back-forward-dropmarker > .toolbarbutton-icon,
+ #back-forward-dropmarker > .toolbarbutton-text {
+   display: none;
+ }
+ .unified-nav-current {
+@@ -191,8 +248,17 @@ window[chromehidden~="toolbar"] toolbar:
+ #allTabs-tab-close-button {
+   -moz-binding: url("chrome://global/content/bindings/toolbarbutton.xml#toolbarbutton-image");
+   margin: 0;
+ }
+ 
+ #allTabs-container {
+   display: block;
+ }
++
++/* Support for Fission add-on */
++
++#urlbar[fission="fusion"] > #statusbar-icon > .progress-bar {
++    background-color: Highlight !important;
++    -moz-appearance: progresschunk !important;
++    opacity: 0.4 !important;
++    margin: 1px !important;
++}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/firefox-credits.patch	Sat Nov 28 22:14:37 2009 +0100
@@ -0,0 +1,23 @@
+diff --git a/browser/base/content/credits.xhtml b/browser/base/content/credits.xhtml
+--- a/browser/base/content/credits.xhtml
++++ b/browser/base/content/credits.xhtml
+@@ -579,16 +579,19 @@
+             <li>Satoko Takita Yamaguchi (Chibi)</li>
+             <li>Christine Yen</li>
+             <li>Kohei Yoshino</li>
+             <li>Shigeru Yoshitake</li>
+             <li>Boris Zbarsky</li>
+             <li>Marco Zehe</li>
+             <li>Matthew Zeier</li>
+           </ul>
++	  
++          <h3>openSUSE RPM packaging</h3>
++	  <ul><li>Wolfgang Rosenauer</li></ul>
+ 
+           <div dir="&locale.dir;">
+             &credit.translation;
+           </div>
+         </div>
+ 
+         <!-- organizational supporters -->
+         <div class="creditsGroup">
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/firefox-libxul-sdk.patch	Sat Nov 28 22:14:37 2009 +0100
@@ -0,0 +1,16 @@
+diff --git a/browser/locales/Makefile.in b/browser/locales/Makefile.in
+--- a/browser/locales/Makefile.in
++++ b/browser/locales/Makefile.in
+@@ -192,9 +192,11 @@ endif
+ 
+ libs-%:
+ 	$(NSINSTALL) -D $(DIST)/install
++ifndef LIBXUL_SDK
+ 	@$(MAKE) -C ../../toolkit/locales libs-$* BOTH_MANIFESTS=1
++	@$(MAKE) -C ../../extensions/spellcheck/locales AB_CD=$* XPI_NAME=locale-$* BOTH_MANIFESTS=1
++endif
+ 	@$(MAKE) -C ../../extensions/reporter/locales libs AB_CD=$* XPI_NAME=locale-$* BOTH_MANIFESTS=1
+-	@$(MAKE) -C ../../extensions/spellcheck/locales AB_CD=$* XPI_NAME=locale-$* BOTH_MANIFESTS=1
+ 	@$(MAKE) libs AB_CD=$* XPI_NAME=locale-$* PREF_DIR=defaults/pref BOTH_MANIFESTS=1
+ 	@$(MAKE) -C $(DEPTH)/$(MOZ_BRANDING_DIRECTORY)/locales AB_CD=$* XPI_NAME=locale-$* BOTH_MANIFESTS=1
+ 	@$(MAKE) tests AB_CD=$*
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/firefox-linkorder.patch	Sat Nov 28 22:14:37 2009 +0100
@@ -0,0 +1,31 @@
+From: Wolfgang Rosenauer
+Subject: Build fails with --as-needed
+References:
+
+
+diff --git a/browser/components/build/Makefile.in b/browser/components/build/Makefile.in
+--- a/browser/components/build/Makefile.in
++++ b/browser/components/build/Makefile.in
+@@ -78,19 +78,21 @@ LOCAL_INCLUDES += -I$(srcdir)/../migrati
+ SHARED_LIBRARY_LIBS += ../migration/src/$(LIB_PREFIX)migration_s.$(LIB_SUFFIX)
+ EXTRA_DSO_LDOPTS += $(LIBXUL_DIST)/lib/$(LIB_PREFIX)mozreg_s.$(LIB_SUFFIX)
+ endif
+ 
+ # This has to come after the above chunk, because mozreg_s has dependencies on
+ # stuff in MOZ_COMPONENT_LIBS.
+ EXTRA_DSO_LDOPTS += \
+ 	$(LIBXUL_DIST)/lib/$(LIB_PREFIX)xpcomglue_s.$(LIB_SUFFIX) \
+-	$(MOZ_COMPONENT_LIBS) \
+ 	$(NULL)
+ 
++# if built with --as-needed the NSPR libs need to be linked after mozreg_s
++EXTRA_DSO_LDOPTS += $(MOZ_COMPONENT_LIBS)
++
+ # Mac: Need to link with CoreFoundation for Mac Migrators (PList reading code)
+ # GTK2: Need to link with glib for GNOME shell service
+ ifneq (,$(filter mac cocoa gtk2,$(MOZ_WIDGET_TOOLKIT)))
+ EXTRA_DSO_LDOPTS += \
+   $(TK_LIBS) \
+   $(NULL)
+ endif
+ 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/firefox-no-gnomevfs.patch	Sat Nov 28 22:14:37 2009 +0100
@@ -0,0 +1,17 @@
+diff --git a/configure.in b/configure.in
+--- a/configure.in
++++ b/configure.in
+@@ -5744,6 +5744,13 @@ if test -z "$MOZ_ENABLE_GNOMEVFS" && tes
+     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|gnomevfs||'`
+ fi
+ 
++if test ! -z "$LIBXUL_SDK_DIR" && test `echo "$MOZ_EXTENSIONS" | grep -c gnomevfs` -ne 0; then
++    if test -n "$MOZ_X11"; then
++        AC_MSG_WARN([nkgnomevfs is already part of xulrunner. Removing gnomevfs from MOZ_EXTENSIONS.])
++    fi
++    MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|gnomevfs||'`
++fi
++
+ if test -z "$MOZ_JSDEBUGGER" && test `echo "$MOZ_EXTENSIONS" | grep -c venkman` -ne 0; then
+     AC_MSG_WARN([Cannot build venkman without JavaScript debug library. Removing venkman from MOZ_EXTENSIONS.])
+     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|venkman||'`
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mozilla-pkgconfig.patch	Sat Nov 28 22:14:37 2009 +0100
@@ -0,0 +1,99 @@
+diff --git a/xulrunner/installer/Makefile.in b/xulrunner/installer/Makefile.in
+--- a/xulrunner/installer/Makefile.in
++++ b/xulrunner/installer/Makefile.in
+@@ -62,16 +62,19 @@ PKG_DMG_SOURCE = $(STAGEPATH)xulrunner-p
+ endif
+ 
+ include $(topsrcdir)/config/rules.mk
+ 
+ INSTALL_SDK = 1
+ 
+ include $(topsrcdir)/toolkit/mozapps/installer/packager.mk
+ 
++# the apilibdir always ends with 1.9 as every patch update will provide a link
++apilibdir = $(dir $(installdir))xulrunner-1.9.2
++
+ $(MOZILLA_VERSION).system.conf: $(topsrcdir)/config/milestone.txt Makefile
+ 	printf "[%s]\nGRE_PATH=%s\nxulrunner=true\nabi=%s" \
+ 	  $(MOZILLA_VERSION) $(installdir) $(TARGET_XPCOM_ABI)> $@
+ 
+ ifndef SKIP_GRE_REGISTRATION
+ # to register xulrunner per-user, override this with $HOME/.gre.d
+ regdir = /etc/gre.d
+ 
+@@ -116,16 +119,17 @@ endif
+ 
+ %.pc: $(srcdir)/%.pc.in $(GLOBAL_DEPS)
+ 	cat $< | sed \
+ 	-e "s|%ojidef%|$(OJIDEF)|" \
+ 	-e "s|%prefix%|$(prefix)|" \
+ 	-e "s|%includedir%|$(includedir)|" \
+ 	-e "s|%idldir%|$(idldir)|" \
+ 	-e "s|%sdkdir%|$(sdkdir)|" \
++	-e "s|%libdir%|$(apilibdir)|" \
+ 	-e "s|%MOZ_APP_NAME%|$(MOZ_APP_NAME)|" \
+ 	-e "s|%MOZILLA_VERSION%|$(MOZ_APP_VERSION)|" \
+ 	-e "s|%WCHAR_CFLAGS%|$(WCHAR_CFLAGS)|" \
+ 	-e "s|%FULL_NSPR_LIBS%|$(FULL_NSPR_LIBS)|" \
+ 	-e "s|%FULL_NSPR_CFLAGS%|$(FULL_NSPR_CFLAGS)|" \
+ 	-e "s|%NSPR_NAME%|$(NSPR_NAME)|" \
+ 	-e "s|%NSPR_VERSION%|$(NSPR_VERSION)|" > $@
+ 	chmod 644 $@
+diff --git a/xulrunner/installer/libxul-embedding.pc.in b/xulrunner/installer/libxul-embedding.pc.in
+--- a/xulrunner/installer/libxul-embedding.pc.in
++++ b/xulrunner/installer/libxul-embedding.pc.in
+@@ -1,10 +1,11 @@
+ prefix=%prefix%
+ sdkdir=%sdkdir%
+ includedir=%includedir%
+ idldir=%idldir%
+ 
+ Name: libxul-embedding
+ Description: Static library for version-independent embedding of the Mozilla runtime
+ Version: %MOZILLA_VERSION%
+-Libs: -L${sdkdir}/lib -lxpcomglue
++Requires: %NSPR_NAME% >= %NSPR_VERSION%
++Libs: -L${sdkdir}/sdk/lib -lxpcomglue
+ Cflags: -DXPCOM_GLUE -I${includedir} %WCHAR_CFLAGS%
+diff --git a/xulrunner/installer/mozilla-gtkmozembed-embedding.pc.in b/xulrunner/installer/mozilla-gtkmozembed-embedding.pc.in
+--- a/xulrunner/installer/mozilla-gtkmozembed-embedding.pc.in
++++ b/xulrunner/installer/mozilla-gtkmozembed-embedding.pc.in
+@@ -1,8 +1,9 @@
+ prefix=%prefix%
+ sdkdir=%sdkdir%
++libdir=%libdir%
+ includedir=%includedir%
+ 
+ Name: mozilla-gtkembedmoz
+ Description: Static version-independent Mozilla Embedding Widget for Gtk+
+ Version: %MOZILLA_VERSION%
+ Requires: libxul-embedding = %MOZILLA_VERSION%
+diff --git a/xulrunner/installer/mozilla-gtkmozembed.pc.in b/xulrunner/installer/mozilla-gtkmozembed.pc.in
+--- a/xulrunner/installer/mozilla-gtkmozembed.pc.in
++++ b/xulrunner/installer/mozilla-gtkmozembed.pc.in
+@@ -1,8 +1,9 @@
+ prefix=%prefix%
+ sdkdir=%sdkdir%
++libdir=%libdir%
+ includedir=%includedir%
+ 
+ Name: mozilla-gtkembedmoz
+ Description: Mozilla Embedding Widget for Gtk+
+ Version: %MOZILLA_VERSION%
+ Requires: libxul = %MOZILLA_VERSION%
+diff --git a/xulrunner/installer/mozilla-js.pc.in b/xulrunner/installer/mozilla-js.pc.in
+--- a/xulrunner/installer/mozilla-js.pc.in
++++ b/xulrunner/installer/mozilla-js.pc.in
+@@ -1,10 +1,11 @@
+ prefix=%prefix%
+ sdkdir=%sdkdir%
++libdir=%libdir%
+ includedir=%includedir%
+ 
+ Name: JavaScript
+ Description: The Mozilla JavaScript Library
+ Version: %MOZILLA_VERSION%
+ Requires: %NSPR_NAME% >= %NSPR_VERSION%
+-Libs: -L${sdkdir}/lib -lmozjs
++Libs: -Wl,-rpath,${libdir} -L${sdkdir}/lib -lmozjs
+ Cflags: -I${includedir} -DXP_UNIX -DJS_THREADSAFE
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mozilla-prefer_plugin_pref.patch	Sat Nov 28 22:14:37 2009 +0100
@@ -0,0 +1,46 @@
+diff --git a/modules/plugin/base/src/nsPluginHost.cpp b/modules/plugin/base/src/nsPluginHost.cpp
+--- a/modules/plugin/base/src/nsPluginHost.cpp
++++ b/modules/plugin/base/src/nsPluginHost.cpp
+@@ -3929,8 +3929,41 @@ nsPluginHost::FindPluginForType(const ch
+   // if we have a mimetype passed in, search the mPlugins
+   // linked list for a match
+   if (nsnull != aMimeType) {
++    nsresult res;
++    nsCOMPtr<nsIPrefBranch> prefB (do_QueryInterface(mPrefService));
++
++    char *preferredPluginPath = NULL;
++    nsCAutoString mimetypePrefString ("modules.plugins.mimetype.");
++    mimetypePrefString.Append(aMimeType);
++    const char *mimetypePrefChar = mimetypePrefString.get();
++    res = prefB->GetCharPref(mimetypePrefChar, &preferredPluginPath);
++
++    if(!NS_SUCCEEDED(res)) preferredPluginPath = NULL;
++
+     plugins = mPlugins;
+-
++    if(preferredPluginPath) {
++      while (nsnull != plugins) {
++        if (0 == PL_strcasecmp(plugins->mFileName.get(), preferredPluginPath) ||
++            0 == PL_strcasecmp(plugins->mFullPath.get(), preferredPluginPath)) {
++          return plugins;
++        }
++        plugins = plugins->mNext;
++      }
++
++      // now lets search for substrings
++      plugins=mPlugins;
++      while (nsnull != plugins) {
++        if (nsnull != PL_strstr(plugins->mFileName.get(), preferredPluginPath) ||
++            nsnull != PL_strstr(plugins->mFullPath.get(), preferredPluginPath)) {
++          return plugins;
++        }
++        plugins = plugins->mNext;
++      }
++    }
++
++    // if there is no pref for this mime-type, or if the plugin named in pref
++    // isn't found, we pick the first that matches for this mime-type
++    plugins = mPlugins;
+     while (nsnull != plugins) {
+       variants = plugins->mVariants;
+       for (cnt = 0; cnt < variants; cnt++) {
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mozilla-shared-nss-db.patch	Sat Nov 28 22:14:37 2009 +0100
@@ -0,0 +1,172 @@
+From: Hans Petter Jansson <hpj@copyleft.no>
+      Wolfgang Rosenauer <wr@rosenauer.org>
+Subject: use libnsssharedhelper if available at compile time
+         (can be disabled by exporting MOZ_XRE_NO_NSSHELPER=1)
+References:
+
+diff --git a/config/autoconf.mk.in b/config/autoconf.mk.in
+--- a/config/autoconf.mk.in
++++ b/config/autoconf.mk.in
+@@ -548,16 +548,20 @@ MOZ_ENABLE_LIBNOTIFY	= @MOZ_ENABLE_LIBNO
+ 
+ GLIB_CFLAGS	= @GLIB_CFLAGS@
+ GLIB_LIBS	= @GLIB_LIBS@
+ GLIB_GMODULE_LIBS	= @GLIB_GMODULE_LIBS@
+ LIBIDL_CFLAGS = @LIBIDL_CFLAGS@
+ LIBIDL_LIBS = @LIBIDL_LIBS@
+ STATIC_LIBIDL = @STATIC_LIBIDL@
+ 
++MOZ_ENABLE_NSSHELPER = @MOZ_ENABLE_NSSHELPER@
++NSSHELPER_CFLAGS = @NSSHELPER_CFLAGS@
++NSSHELPER_LIBS = @NSSHELPER_LIBS@
++
+ MOZ_NATIVE_MAKEDEPEND	= @SYSTEM_MAKEDEPEND@
+ 
+ MOZ_AUTO_DEPS	= @MOZ_AUTO_DEPS@
+ COMPILER_DEPEND = @COMPILER_DEPEND@
+ MDDEPDIR        := @MDDEPDIR@
+ 
+ MOZ_DEMANGLE_SYMBOLS = @MOZ_DEMANGLE_SYMBOLS@
+ 
+diff --git a/configure.in b/configure.in
+--- a/configure.in
++++ b/configure.in
+@@ -7756,16 +7756,31 @@ AC_SUBST(MOZ_CAIRO_LIBS)
+ 
+ dnl qcms
+ dnl ========================================================
+ 
+ QCMS_LIBS='$(DEPTH)/gfx/qcms/$(LIB_PREFIX)mozqcms.$(LIB_SUFFIX)'
+ AC_SUBST(QCMS_LIBS)
+ 
+ dnl ========================================================
++dnl Check for nss-shared-helper
++dnl ========================================================
++
++  PKG_CHECK_MODULES(NSSHELPER, nss-shared-helper, 
++   [MOZ_ENABLE_NSSHELPER=1],
++   [MOZ_ENABLE_NSSHELPER=])
++
++if test "$MOZ_ENABLE_NSSHELPER"; then
++  AC_DEFINE(MOZ_ENABLE_NSSHELPER)
++fi
++AC_SUBST(MOZ_ENABLE_NSSHELPER)
++AC_SUBST(NSSHELPER_CFLAGS)
++AC_SUBST(NSSHELPER_LIBS)
++
++dnl ========================================================
+ dnl disable xul
+ dnl ========================================================
+ MOZ_ARG_DISABLE_BOOL(xul,
+ [  --disable-xul           Disable XUL],
+     MOZ_XUL= )
+ if test "$MOZ_XUL"; then
+   AC_DEFINE(MOZ_XUL)
+ else
+diff --git a/security/manager/ssl/src/Makefile.in b/security/manager/ssl/src/Makefile.in
+--- a/security/manager/ssl/src/Makefile.in
++++ b/security/manager/ssl/src/Makefile.in
+@@ -133,19 +133,20 @@ REQUIRES	= nspr \
+ 		  $(NULL)
+ 
+ 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)
++LOCAL_INCLUDES += $(NSS_CFLAGS) $(NSSHELPER_CFLAGS)
+ 
+ EXTRA_DSO_LDOPTS += \
+ 		$(MOZ_UNICHARUTIL_LIBS) \
+ 		$(MOZ_COMPONENT_LIBS) \
+ 		$(MOZ_JS_LIBS) \
++		$(NSSHELPER_LIBS) \
+ 		$(NSS_LIBS) \
+ 		$(NULL)
+ 
+ include $(topsrcdir)/config/rules.mk
+ 
+diff --git a/security/manager/ssl/src/nsNSSComponent.cpp b/security/manager/ssl/src/nsNSSComponent.cpp
+--- a/security/manager/ssl/src/nsNSSComponent.cpp
++++ b/security/manager/ssl/src/nsNSSComponent.cpp
+@@ -39,16 +39,23 @@
+  * use your version of this file under the terms of the MPL, indicate your
+  * decision by deleting the provisions above and replace them with the notice
+  * and other provisions required by the GPL or the LGPL. If you do not delete
+  * the provisions above, a recipient may use your version of this file under
+  * the terms of any one of the MPL, the GPL or the LGPL.
+  *
+  * ***** END LICENSE BLOCK ***** */
+ 
++#ifdef MOZ_ENABLE_NSSHELPER
++#pragma GCC visibility push(default)
++#include <nss-shared-helper.h>
++#pragma GCC visibility pop
++#include "prenv.h"
++#endif
++
+ #include "nsNSSComponent.h"
+ #include "nsNSSCallbacks.h"
+ #include "nsNSSIOLayer.h"
+ #include "nsSSLThread.h"
+ #include "nsCertVerificationThread.h"
+ 
+ #include "nsNetUtil.h"
+ #include "nsAppDirectoryServiceDefs.h"
+@@ -1600,17 +1607,31 @@ nsNSSComponent::InitializeNSS(PRBool sho
+     // The call to ConfigureInternalPKCS11Token needs to be done before NSS is initialized, 
+     // but affects only static data.
+     // If we could assume i18n will not change between profiles, one call per application
+     // run were sufficient. As I can't predict what happens in the future, let's repeat
+     // this call for every re-init of NSS.
+ 
+     ConfigureInternalPKCS11Token();
+ 
+-    SECStatus init_rv = ::NSS_InitReadWrite(profileStr.get());
++    SECStatus init_rv = SECFailure;
++#ifdef MOZ_ENABLE_NSSHELPER
++    if (PR_GetEnv("MOZ_XRE_NO_NSSHELPER")) {
++      init_rv = ::NSS_InitReadWrite(profileStr.get());
++    } else {
++      init_rv = ::nsshelp_open_db ("mozilla-xul", profileStr.get(), 0);
++
++      if (init_rv != SECSuccess) {
++        PR_LOG(gPIPNSSLog, PR_LOG_DEBUG, ("can not init NSS using nsshelp_open_db in %s\n", profileStr.get()));
++        init_rv = ::NSS_InitReadWrite(profileStr.get());
++      }
++    }
++#else
++    init_rv = ::NSS_InitReadWrite(profileStr.get());
++#endif
+ 
+     if (init_rv != SECSuccess) {
+       PR_LOG(gPIPNSSLog, PR_LOG_DEBUG, ("can not init NSS r/w in %s\n", profileStr.get()));
+ 
+       if (supress_warning_preference) {
+         which_nss_problem = problem_none;
+       }
+       else {
+diff --git a/toolkit/library/Makefile.in b/toolkit/library/Makefile.in
+--- a/toolkit/library/Makefile.in
++++ b/toolkit/library/Makefile.in
+@@ -189,17 +189,17 @@ else
+ EXTRA_DSO_LDOPTS += \
+ 	$(MOZ_COMPONENT_LIBS) \
+ 	$(MOZ_JS_LIBS) \
+ 	$(NULL)
+ endif
+ 
+ DEFINES += -DIMPL_XREAPI
+ 
+-EXTRA_DSO_LDOPTS += $(NSPR_LIBS)
++EXTRA_DSO_LDOPTS += $(NSPR_LIBS) $(NSSHELPER_LIBS)
+ 
+ ifeq ($(MOZ_WIDGET_TOOLKIT),cocoa)
+ CXXFLAGS	+= $(TK_CFLAGS)
+ EXTRA_DSO_LDOPTS += \
+ 	-framework SystemConfiguration \
+ 	-framework QuickTime \
+ 	-framework IOKit \
+ 	-lcrypto \
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mozilla-startup-notification.patch	Sat Nov 28 22:14:37 2009 +0100
@@ -0,0 +1,51 @@
+diff --git a/toolkit/xre/nsAppRunner.cpp b/toolkit/xre/nsAppRunner.cpp
+--- a/toolkit/xre/nsAppRunner.cpp
++++ b/toolkit/xre/nsAppRunner.cpp
+@@ -3342,23 +3342,16 @@ XRE_main(int argc, char* argv[], const n
+         }
+         dirProvider.DoStartup();
+ 
+         PRBool shuttingDown = PR_FALSE;
+         appStartup->GetShuttingDown(&shuttingDown);
+ 
+         nsCOMPtr<nsICommandLineRunner> cmdLine;
+ 
+-#if defined(HAVE_DESKTOP_STARTUP_ID) && defined(MOZ_WIDGET_GTK2)
+-        nsRefPtr<nsGTKToolkit> toolkit = GetGTKToolkit();
+-        if (toolkit && !desktopStartupID.IsEmpty()) {
+-          toolkit->SetDesktopStartupID(desktopStartupID);
+-        }
+-#endif
+-
+         nsCOMPtr<nsIFile> workingDir;
+         rv = NS_GetSpecialDirectory(NS_OS_CURRENT_WORKING_DIR, getter_AddRefs(workingDir));
+         NS_ENSURE_SUCCESS(rv, 1);
+ 
+         if (!shuttingDown) {
+           cmdLine = do_CreateInstance("@mozilla.org/toolkit/command-line;1");
+           NS_ENSURE_TRUE(cmdLine, 1);
+ 
+@@ -3376,16 +3369,23 @@ XRE_main(int argc, char* argv[], const n
+ 
+           NS_TIMELINE_ENTER("appStartup->CreateHiddenWindow");
+           rv = appStartup->CreateHiddenWindow();
+           NS_TIMELINE_LEAVE("appStartup->CreateHiddenWindow");
+           NS_ENSURE_SUCCESS(rv, 1);
+ 
+           MOZ_SPLASHSCREEN_UPDATE(50);
+ 
++#if defined(HAVE_DESKTOP_STARTUP_ID) && defined(MOZ_WIDGET_GTK2)
++          nsRefPtr<nsGTKToolkit> toolkit = GetGTKToolkit();
++          if (toolkit && !desktopStartupID.IsEmpty()) {
++            toolkit->SetDesktopStartupID(desktopStartupID);
++          }
++#endif
++
+           // Extension Compatibility Checking and Startup
+           if (gAppData->flags & NS_XRE_ENABLE_EXTENSION_MANAGER) {
+             nsCOMPtr<nsIExtensionManager> em(do_GetService("@mozilla.org/extensions/manager;1"));
+             NS_ENSURE_TRUE(em, 1);
+ 
+             if (upgraded) {
+               rv = em->CheckForMismatches(&needsRestart);
+               if (NS_FAILED(rv)) {