MozillaThunderbird/mozilla-shared-nss-db.patch

308 lines
9.9 KiB
Diff

? .mozconfig.mk
? .mozconfig.out
Index: configure
===================================================================
RCS file: /cvsroot/mozilla/configure,v
retrieving revision 1.1492.2.130
diff -u -p -6 -r1.1492.2.130 configure
--- configure 19 Oct 2008 16:21:23 -0000 1.1492.2.130
+++ configure 21 Nov 2008 09:52:32 -0000
@@ -19337,12 +19337,115 @@ echo "configure:19307: checking CAIRO_LI
fi
+
+
+ succeeded=no
+
+ if test -z "$PKG_CONFIG"; then
+ # Extract the first word of "pkg-config", so it can be a program name with args.
+set dummy pkg-config; ac_word=$2
+echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+echo "configure:19352: checking for $ac_word" >&5
+if eval "test \"`echo '$''{'ac_cv_path_PKG_CONFIG'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ case "$PKG_CONFIG" in
+ /*)
+ ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path.
+ ;;
+ ?:/*)
+ ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a dos path.
+ ;;
+ *)
+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
+ ac_dummy="$PATH"
+ for ac_dir in $ac_dummy; do
+ test -z "$ac_dir" && ac_dir=.
+ if test -f $ac_dir/$ac_word; then
+ ac_cv_path_PKG_CONFIG="$ac_dir/$ac_word"
+ break
+ fi
+ done
+ IFS="$ac_save_ifs"
+ test -z "$ac_cv_path_PKG_CONFIG" && ac_cv_path_PKG_CONFIG="no"
+ ;;
+esac
+fi
+PKG_CONFIG="$ac_cv_path_PKG_CONFIG"
+if test -n "$PKG_CONFIG"; then
+ echo "$ac_t""$PKG_CONFIG" 1>&6
+else
+ echo "$ac_t""no" 1>&6
+fi
+
+ fi
+
+ if test "$PKG_CONFIG" = "no" ; then
+ echo "*** The pkg-config script could not be found. Make sure it is"
+ echo "*** in your path, or set the PKG_CONFIG environment variable"
+ echo "*** to the full path to pkg-config."
+ echo "*** Or see http://www.freedesktop.org/software/pkgconfig to get pkg-config."
+ else
+ PKG_CONFIG_MIN_VERSION=0.9.0
+ if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then
+ echo $ac_n "checking for nss-shared-helper""... $ac_c" 1>&6
+echo "configure:19396: checking for nss-shared-helper" >&5
+
+ if $PKG_CONFIG --exists "nss-shared-helper" ; then
+ echo "$ac_t""yes" 1>&6
+ succeeded=yes
+
+ echo $ac_n "checking NSSHELPER_CFLAGS""... $ac_c" 1>&6
+echo "configure:19403: checking NSSHELPER_CFLAGS" >&5
+ NSSHELPER_CFLAGS=`$PKG_CONFIG --cflags "nss-shared-helper"`
+ echo "$ac_t""$NSSHELPER_CFLAGS" 1>&6
+
+ echo $ac_n "checking NSSHELPER_LIBS""... $ac_c" 1>&6
+echo "configure:19408: checking NSSHELPER_LIBS" >&5
+ ## don't use --libs since that can do evil things like add
+ ## -Wl,--export-dynamic
+ NSSHELPER_LIBS="`$PKG_CONFIG --libs-only-L \"nss-shared-helper\"` `$PKG_CONFIG --libs-only-l \"nss-shared-helper\"`"
+ echo "$ac_t""$NSSHELPER_LIBS" 1>&6
+ else
+ NSSHELPER_CFLAGS=""
+ NSSHELPER_LIBS=""
+ ## If we have a custom action on failure, don't print errors, but
+ ## do set a variable so people can do so.
+ NSSHELPER_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "nss-shared-helper"`
+
+ fi
+
+
+
+ else
+ echo "*** Your version of pkg-config is too old. You need version $PKG_CONFIG_MIN_VERSION or newer."
+ echo "*** See http://www.freedesktop.org/software/pkgconfig"
+ fi
+ fi
+
+ if test $succeeded = yes; then
+ MOZ_ENABLE_NSSHELPER=1
+ else
+ MOZ_ENABLE_NSSHELPER=
+ fi
+
+
+if test "$MOZ_ENABLE_NSSHELPER"; then
+ cat >> confdefs.h <<\EOF
+#define MOZ_ENABLE_NSSHELPER 1
+EOF
+
+fi
+
+
+
+
# Check whether --enable-xul or --disable-xul was given.
if test "${enable_xul+set}" = set; then
enableval="$enable_xul"
if test "$enableval" = "no"; then
MOZ_XUL=
elif test "$enableval" = "yes"; then
@@ -20583,12 +20686,15 @@ s%@ATSUI_FONT_FEATURE@%$ATSUI_FONT_FEATU
s%@PNG_FUNCTIONS_FEATURE@%$PNG_FUNCTIONS_FEATURE%g
s%@CAIRO_CFLAGS@%$CAIRO_CFLAGS%g
s%@CAIRO_LIBS@%$CAIRO_LIBS%g
s%@MOZ_TREE_CAIRO@%$MOZ_TREE_CAIRO%g
s%@MOZ_CAIRO_CFLAGS@%$MOZ_CAIRO_CFLAGS%g
s%@MOZ_CAIRO_LIBS@%$MOZ_CAIRO_LIBS%g
+s%@NSSHELPER_CFLAGS@%$NSSHELPER_CFLAGS%g
+s%@NSSHELPER_LIBS@%$NSSHELPER_LIBS%g
+s%@MOZ_ENABLE_NSSHELPER@%$MOZ_ENABLE_NSSHELPER%g
s%@MOZ_XUL@%$MOZ_XUL%g
s%@MOZ_PYTHON@%$MOZ_PYTHON%g
s%@MOZ_PYTHON_PREFIX@%$MOZ_PYTHON_PREFIX%g
s%@MOZ_PYTHON_INCLUDES@%$MOZ_PYTHON_INCLUDES%g
s%@MOZ_PYTHON_LIBS@%$MOZ_PYTHON_LIBS%g
s%@MOZ_PYTHON_VER@%$MOZ_PYTHON_VER%g
Index: configure.in
===================================================================
RCS file: /cvsroot/mozilla/configure.in,v
retrieving revision 1.1503.2.112
diff -u -p -6 -r1.1503.2.112 configure.in
--- configure.in 19 Oct 2008 16:14:06 -0000 1.1503.2.112
+++ configure.in 21 Nov 2008 09:52:34 -0000
@@ -6808,12 +6808,27 @@ fi
AC_SUBST(MOZ_TREE_CAIRO)
AC_SUBST(MOZ_CAIRO_CFLAGS)
AC_SUBST(MOZ_CAIRO_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
Index: config/autoconf.mk.in
===================================================================
RCS file: /cvsroot/mozilla/config/autoconf.mk.in,v
retrieving revision 3.363.2.20
diff -u -p -6 -r3.363.2.20 autoconf.mk.in
--- config/autoconf.mk.in 14 Sep 2006 18:07:03 -0000 3.363.2.20
+++ config/autoconf.mk.in 21 Nov 2008 09:52:35 -0000
@@ -492,12 +492,16 @@ 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@
# Used for LD_LIBRARY_PATH
LIBS_PATH = @LIBS_PATH@
MOZ_AUTO_DEPS = @MOZ_AUTO_DEPS@
Index: mail/app/Makefile.in
===================================================================
RCS file: /cvsroot/mozilla/mail/app/Makefile.in,v
retrieving revision 1.46.2.10
diff -u -p -6 -r1.46.2.10 Makefile.in
--- mail/app/Makefile.in 22 Oct 2008 21:04:53 -0000 1.46.2.10
+++ mail/app/Makefile.in 21 Nov 2008 09:52:45 -0000
@@ -100,12 +100,16 @@ endif
endif
ifdef MOZ_JPROF
LIBS += -ljprof
endif
+ifdef MOZ_ENABLE_NSSHELPER
+LIBS += $(NSSHELPER_LIBS)
+endif
+
ifndef MOZ_WINCONSOLE
ifdef MOZ_DEBUG
MOZ_WINCONSOLE = 1
else
MOZ_WINCONSOLE = 0
endif
Index: security/manager/ssl/src/Makefile.in
===================================================================
RCS file: /cvsroot/mozilla/security/manager/ssl/src/Makefile.in,v
retrieving revision 1.67.2.5
diff -u -p -6 -r1.67.2.5 Makefile.in
--- security/manager/ssl/src/Makefile.in 4 Jun 2008 20:42:03 -0000 1.67.2.5
+++ security/manager/ssl/src/Makefile.in 21 Nov 2008 09:52:50 -0000
@@ -128,17 +128,18 @@ REQUIRES = nspr \
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
Index: security/manager/ssl/src/nsNSSComponent.cpp
===================================================================
RCS file: /cvsroot/mozilla/security/manager/ssl/src/nsNSSComponent.cpp,v
retrieving revision 1.126.2.9
diff -u -p -6 -r1.126.2.9 nsNSSComponent.cpp
--- security/manager/ssl/src/nsNSSComponent.cpp 30 Jun 2008 22:54:11 -0000 1.126.2.9
+++ security/manager/ssl/src/nsNSSComponent.cpp 21 Nov 2008 09:52:51 -0000
@@ -41,12 +41,19 @@
* 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 "nsNSSEvent.h"
@@ -1422,13 +1429,27 @@ nsNSSComponent::InitializeNSS(PRBool sho
// 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_TB_NO_NSSHELPER")) {
+ init_rv = ::NSS_InitReadWrite(profileStr.get());
+ } else {
+ init_rv = ::nsshelp_open_db("thunderbird", 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;