Non-working NSPR and NSS packages. See the README file for details.
authorRichard W.M. Jones <rjones@redhat.com>
Thu, 13 Nov 2008 10:57:24 +0000 (10:57 +0000)
committerRichard W.M. Jones <rjones@redhat.com>
Thu, 13 Nov 2008 10:57:24 +0000 (10:57 +0000)
18 files changed:
nspr/README [new file with mode: 0644]
nspr/mingw32-nspr.spec
nspr/nspr-config-pc.patch [new file with mode: 0644]
nspr/nspr-config-vars.in [new file with mode: 0644]
nspr/nspr.pc.in [new file with mode: 0644]
nss/README [new file with mode: 0644]
nss/blank-cert8.db [new file with mode: 0644]
nss/blank-key3.db [new file with mode: 0644]
nss/blank-secmod.db [new file with mode: 0644]
nss/mingw32-nss.spec [new file with mode: 0644]
nss/nss-config.in [new file with mode: 0644]
nss/nss-enable-pem.patch [new file with mode: 0644]
nss/nss-no-rpath.patch [new file with mode: 0644]
nss/nss-nolocalsql.patch [new file with mode: 0644]
nss/nss-pem-bug429175.patch [new file with mode: 0644]
nss/nss-prelink.conf [new file with mode: 0644]
nss/nss.pc.in [new file with mode: 0644]
show-build-order.pl

diff --git a/nspr/README b/nspr/README
new file mode 100644 (file)
index 0000000..1bf6eac
--- /dev/null
@@ -0,0 +1,7 @@
+This builds fine with 'rpmbuild' but not with 'mock'.  I spent
+about a day looking at it to find out why, but the reason still
+escapes me.
+
+So for now there is no nspr or NSS (which depends on this).
+
+- RWMJ 2008-11-13
index 128461e..8ff9771 100644 (file)
@@ -6,7 +6,7 @@
 
 Name:           mingw32-nspr
 Version:        4.7.2
-Release:        1%{?dist}
+Release:        2%{?dist}
 Summary:        MinGW Windows port of the Netscape Portable Runtime (NSPR)
 
 License:        MPLv1.1 or GPLv2+ or LGPLv2+
@@ -17,11 +17,12 @@ BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
 
 BuildArch:      noarch
 
-#Source1:        nspr.pc.in
-#Source2:        nspr-config-vars.in
+Source1:        nspr.pc.in
+Source2:        nspr-config-vars.in
 
-#Patch1:         nspr-config-pc.patch
+Patch1:         nspr-config-pc.patch
 
+# MinGW-specific build patch.
 Patch1000:      mingw32-nspr-4.7.2-build.patch
 
 BuildRequires:  mingw32-filesystem >= 33
@@ -39,6 +40,12 @@ memory management (malloc and free) and shared library linking.
 %prep
 %setup -q -n nspr-%{version}
 
+cp ./mozilla/nsprpub/config/nspr-config.in \
+   ./mozilla/nsprpub/config/nspr-config-pc.in
+%patch1 -p0
+
+cp %{SOURCE2} ./mozilla/nsprpub/config/
+
 pushd mozilla/nsprpub
 %patch1000 -p0
 popd
@@ -52,28 +59,20 @@ pushd mozilla/nsprpub
   --prefix=%{_mingw32_prefix} \
   --libdir=%{_mingw32_libdir} \
   --includedir=%{_mingw32_includedir}/nspr4 \
-  --enable-optimize="$RPM_OPT_FLAGS" \
+  --enable-optimize="%{_mingw32_cflags}" \
   --disable-debug \
   --enable-win32-target=WINNT \
   --enable-64bit=no
 
-# Something in the configure script is added -m64 option,
-# so remove it.
-# Also remove stack-protector checks.
-pushd config
-mv autoconf.mk autoconf.mk.orig
-sed -e 's/-m64//' -e 's/-fstack-protector//' \
-  < autoconf.mk.orig > autoconf.mk
-popd
-
 # NSPR comes with its own "special" install program called nsinstall.
 # This must be built as a native program.
 make -C config CC=gcc CFLAGS="-DXP_UNIX=1"
 
 # Now build the rest using the "special" nsinstall.
 make \
-  NSINSTALL=`pwd`/config/nsinstall \
+  NSINSTALL=$(pwd)/config/nsinstall \
   RANLIB=i686-pc-mingw32-ranlib \
+  RC=i686-pc-mingw32-windres \
   %{?_smp_mflags}
 
 popd
@@ -92,6 +91,25 @@ install dist/bin/*.dll $RPM_BUILD_ROOT%{_mingw32_bindir}
 install dist/lib/*.dll.a $RPM_BUILD_ROOT%{_mingw32_libdir}
 cp -r dist/include/nspr $RPM_BUILD_ROOT%{_mingw32_includedir}/
 
+# Write an nspr pkgconfig file.
+
+NSPR_LIBS=`./config/nspr-config --libs`
+NSPR_CFLAGS=`./config/nspr-config --cflags`
+NSPR_VERSION=`./config/nspr-config --version`
+%{__mkdir_p} $RPM_BUILD_ROOT/%{_mingw32_libdir}/pkgconfig
+
+cat ./config/nspr-config-vars > \
+                     $RPM_BUILD_ROOT/%{_mingw32_libdir}/pkgconfig/nspr.pc
+
+cat %{SOURCE1} | sed -e "s,%%libdir%%,%{_mingw32_libdir},g" \
+                     -e "s,%%prefix%%,%{_mingw32_prefix},g" \
+                     -e "s,%%exec_prefix%%,%{_mingw32_prefix},g" \
+                     -e "s,%%includedir%%,%{_mingw32_includedir}/nspr4,g" \
+                     -e "s,%%NSPR_VERSION%%,$NSPR_VERSION,g" \
+                     -e "s,%%FULL_NSPR_LIBS%%,$NSPR_LIBS,g" \
+                     -e "s,%%FULL_NSPR_CFLAGS%%,$NSPR_CFLAGS,g" >> \
+                     $RPM_BUILD_ROOT/%{_mingw32_libdir}/pkgconfig/nspr.pc
+
 popd
 
 
@@ -106,9 +124,10 @@ rm -rf $RPM_BUILD_ROOT
 %{_mingw32_bindir}/libplds4.dll
 %{_mingw32_libdir}/libnspr4.dll.a
 %{_mingw32_libdir}/libplc4.dll.a
+%{_mingw32_libdir}/pkgconfig/nspr.pc
 %{_mingw32_includedir}/nspr
 
 
 %changelog
-* Mon Nov 10 2008 Richard W.M. Jones <rjones@redhat.com> - 4.7.2-1
+* Mon Nov 10 2008 Richard W.M. Jones <rjones@redhat.com> - 4.7.2-2
 - Initial RPM release.
diff --git a/nspr/nspr-config-pc.patch b/nspr/nspr-config-pc.patch
new file mode 100644 (file)
index 0000000..cf31395
--- /dev/null
@@ -0,0 +1,48 @@
+--- mozilla/nsprpub/config/nspr-config-pc.in.x123      2005-05-11 02:53:41.000000000 +0200
++++ mozilla/nsprpub/config/nspr-config-pc.in   2006-05-24 20:52:12.000000000 +0200
+@@ -98,7 +98,7 @@
+     includedir=@includedir@
+ fi
+ if test -z "$libdir"; then
+-    libdir=@libdir@
++    libdir=`pkg-config --variable=libdir nspr`
+ fi
+ if test "$echo_prefix" = "yes"; then
+@@ -132,12 +132,12 @@
+       if test -n "$lib_nspr"; then
+       libdirs="$libdirs -lnspr${major_version}"
+       fi
+-      os_ldflags="@LDFLAGS@"
++      os_ldflags=`pkg-config --variable=ldflags nspr`
+       for i in $os_ldflags ; do
+       if echo $i | grep \^-L >/dev/null; then
+         libdirs="$libdirs $i"
+         fi
+       done
+-      echo $libdirs @OS_LIBS@
++      echo $libdirs `pkg-config --variable=os_libs nspr`
+ fi      
+--- mozilla/nsprpub/configure.in.x123  2006-05-24 20:52:12.000000000 +0200
++++ mozilla/nsprpub/configure.in       2006-05-24 20:53:53.000000000 +0200
+@@ -2667,6 +2667,8 @@
+ config/nsprincl.mk
+ config/nsprincl.sh
+ config/nspr-config
++config/nspr-config-pc
++config/nspr-config-vars
+ lib/Makefile 
+ lib/ds/Makefile 
+ lib/libc/Makefile 
+--- mozilla/nsprpub/configure.x123     2006-05-24 20:52:12.000000000 +0200
++++ mozilla/nsprpub/configure  2006-05-24 20:54:05.000000000 +0200
+@@ -5899,6 +5899,8 @@
+ config/nsprincl.mk
+ config/nsprincl.sh
+ config/nspr-config
++config/nspr-config-pc
++config/nspr-config-vars
+ lib/Makefile 
+ lib/ds/Makefile 
+ lib/libc/Makefile 
diff --git a/nspr/nspr-config-vars.in b/nspr/nspr-config-vars.in
new file mode 100644 (file)
index 0000000..ebf0aa4
--- /dev/null
@@ -0,0 +1,2 @@
+ldflags=@LDFLAGS@
+os_libs=@OS_LIBS@
diff --git a/nspr/nspr.pc.in b/nspr/nspr.pc.in
new file mode 100644 (file)
index 0000000..1d8f4a0
--- /dev/null
@@ -0,0 +1,10 @@
+prefix=%prefix%
+exec_prefix=%exec_prefix%
+libdir=%libdir%
+includedir=%includedir%
+
+Name: NSPR
+Description: The Netscape Portable Runtime
+Version: %NSPR_VERSION%
+Libs: %FULL_NSPR_LIBS%
+Cflags: %FULL_NSPR_CFLAGS%
diff --git a/nss/README b/nss/README
new file mode 100644 (file)
index 0000000..2dafa17
--- /dev/null
@@ -0,0 +1 @@
+See nspr/README.
diff --git a/nss/blank-cert8.db b/nss/blank-cert8.db
new file mode 100644 (file)
index 0000000..ac40a33
Binary files /dev/null and b/nss/blank-cert8.db differ
diff --git a/nss/blank-key3.db b/nss/blank-key3.db
new file mode 100644 (file)
index 0000000..31e3975
Binary files /dev/null and b/nss/blank-key3.db differ
diff --git a/nss/blank-secmod.db b/nss/blank-secmod.db
new file mode 100644 (file)
index 0000000..9a02807
Binary files /dev/null and b/nss/blank-secmod.db differ
diff --git a/nss/mingw32-nss.spec b/nss/mingw32-nss.spec
new file mode 100644 (file)
index 0000000..3c2c14c
--- /dev/null
@@ -0,0 +1,252 @@
+%define __strip %{_mingw32_strip}
+%define __objdump %{_mingw32_objdump}
+%define _use_internal_dependency_generator 0
+%define __find_requires %{_mingw32_findrequires}
+%define __find_provides %{_mingw32_findprovides}
+
+Name:           mingw32-nss
+Version:        3.12.2.0
+Release:        1%{?dist}
+Summary:        MinGW Windows port of NSS (Network Security Services)
+
+License:        MPLv1.1 or GPLv2+ or LGPLv2+
+Group:          Development/Libraries
+BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
+BuildArch:      noarch
+
+URL:            http://www.mozilla.org/projects/security/pki/nss/
+
+# Extracted from the Fedora native package.  There is no upstream
+# location for the tarballs.
+Source0:        nss-%{version}-stripped.tar.bz2
+Source1:        nss.pc.in
+Source2:        nss-config.in
+Source3:        blank-cert8.db
+Source4:        blank-key3.db
+Source5:        blank-secmod.db
+Source8:        nss-prelink.conf
+Source12:       nss-pem-20080124.tar.bz2
+
+BuildRequires:  mingw32-filesystem >= 33
+BuildRequires:  mingw32-gcc
+BuildRequires:  mingw32-binutils
+BuildRequires:  mingw32-sqlite
+BuildRequires:  mingw32-zlib
+BuildRequires:  pkgconfig
+BuildRequires:  perl
+
+
+%description
+Network Security Services (NSS) is a set of libraries designed to
+support cross-platform development of security-enabled client and
+server applications. Applications built with NSS can support SSL v2
+and v3, TLS, PKCS #5, PKCS #7, PKCS #11, PKCS #12, S/MIME, X.509
+v3 certificates, and other security standards.
+
+
+%prep
+%setup -q -n nss-%{version}
+%setup -q -T -D -n nss-%{version} -a 12
+
+%patch1 -p0
+%patch2 -p0
+%patch5 -p0 -b .429175
+%patch6 -p0 -b .libpem
+
+
+%build
+# Enable compiler optimizations and disable debugging code
+BUILD_OPT=1
+export BUILD_OPT
+
+# Generate symbolic info for debuggers
+XCFLAGS=$RPM_OPT_FLAGS
+export XCFLAGS
+
+export NSPR_INCLUDE_DIR=%{_mingw32_includedir}/nspr
+export NSPR_LIB_DIR=%{_mingw32_libdir}
+
+PKG_CONFIG_ALLOW_SYSTEM_LIBS=1
+PKG_CONFIG_ALLOW_SYSTEM_CFLAGS=1
+
+export PKG_CONFIG_ALLOW_SYSTEM_LIBS
+export PKG_CONFIG_ALLOW_SYSTEM_CFLAGS
+
+NSPR_INCLUDE_DIR=`/usr/bin/pkg-config --cflags-only-I nspr | sed 's/-I//'`
+NSPR_LIB_DIR=`/usr/bin/pkg-config --libs-only-L nspr | sed 's/-L//'`
+
+export NSPR_INCLUDE_DIR
+export NSPR_LIB_DIR
+
+%ifarch x86_64 ppc64 ia64 s390x sparc64
+USE_64=1
+export USE_64
+%endif
+
+# NSS_ENABLE_ECC=1
+# export NSS_ENABLE_ECC
+
+%{__make} -C ./mozilla/security/coreconf
+%{__make} -C ./mozilla/security/dbm
+%{__make} -C ./mozilla/security/nss
+
+# Set up our package file
+%{__mkdir_p} $RPM_BUILD_ROOT/%{_libdir}/pkgconfig
+%{__cat} %{SOURCE1} | sed -e "s,%%libdir%%,%{_libdir},g" \
+                          -e "s,%%prefix%%,%{_prefix},g" \
+                          -e "s,%%exec_prefix%%,%{_prefix},g" \
+                          -e "s,%%includedir%%,%{_includedir}/nss3,g" \
+                          -e "s,%%NSPR_VERSION%%,%{nspr_version},g" \
+                          -e "s,%%NSS_VERSION%%,%{version},g" > \
+                          $RPM_BUILD_ROOT/%{_libdir}/pkgconfig/nss.pc
+NSS_VMAJOR=`cat mozilla/security/nss/lib/nss/nss.h | grep "#define.*NSS_VMAJOR" 
+| awk '{print $3}'`
+NSS_VMINOR=`cat mozilla/security/nss/lib/nss/nss.h | grep "#define.*NSS_VMINOR" 
+| awk '{print $3}'`
+NSS_VPATCH=`cat mozilla/security/nss/lib/nss/nss.h | grep "#define.*NSS_VPATCH" 
+| awk '{print $3}'`
+
+export NSS_VMAJOR 
+export NSS_VMINOR 
+export NSS_VPATCH
+
+%{__mkdir_p} $RPM_BUILD_ROOT/%{_bindir}
+%{__cat} %{SOURCE2} | sed -e "s,@libdir@,%{_libdir},g" \
+                          -e "s,@prefix@,%{_prefix},g" \
+                          -e "s,@exec_prefix@,%{_prefix},g" \
+                          -e "s,@includedir@,%{_includedir}/nss3,g" \
+                          -e "s,@MOD_MAJOR_VERSION@,$NSS_VMAJOR,g" \
+                          -e "s,@MOD_MINOR_VERSION@,$NSS_VMINOR,g" \
+                          -e "s,@MOD_PATCH_VERSION@,$NSS_VPATCH,g" \
+                          > $RPM_BUILD_ROOT/%{_bindir}/nss-config
+
+chmod 755 $RPM_BUILD_ROOT/%{_bindir}/nss-config
+# enable the following line to force a test failure
+# find ./mozilla -name \*.chk | xargs rm -f
+
+# Run test suite.
+# In order to support multiple concurrent executions of the test suite
+# (caused by concurrent RPM builds) on a single host,
+# we'll use a random port. Also, we want to clean up any stuck
+# selfserv processes. If process name "selfserv" is used everywhere,
+# we can't simply do a "killall selfserv", because it could disturb
+# concurrent builds. Therefore we'll do a search and replace and use
+# a different process name.
+# Using xargs doesn't mix well with spaces in filenames, in order to
+# avoid weird quoting we'll require that no spaces are being used.
+
+SPACEISBAD=`find ./mozilla/security/nss/tests | grep -c ' '` ||:
+if [ SPACEISBAD -ne 0 ]; then
+  echo "error: filenames containing space are not supported (xargs)"
+  exit 1
+fi
+MYRAND=`perl -e 'print 9000 + int rand 1000'`; echo $MYRAND ||:
+RANDSERV=selfserv_${MYRAND}; echo $RANDSERV ||:
+DISTBINDIR=`ls -d ./mozilla/dist/*.OBJ/bin`; echo $DISTBINDIR ||:
+pushd `pwd`
+cd $DISTBINDIR
+ln -s selfserv $RANDSERV
+popd
+# man perlrun, man perlrequick
+# replace word-occurrences of selfserv with selfserv_$MYRAND
+find ./mozilla/security/nss/tests -type f |\
+  grep -v "\.db$" |grep -v "\.crl$" | grep -v "\.crt$" |\
+  grep -vw CVS  |xargs grep -lw selfserv |\
+  xargs -l perl -pi -e "s/\bselfserv\b/$RANDSERV/g" ||:
+
+killall $RANDSERV || :
+
+rm -rf ./mozilla/tests_results
+cd ./mozilla/security/nss/tests/
+# all.sh is the test suite script
+HOST=localhost DOMSUF=localdomain PORT=$MYRAND ./all.sh
+cd ../../../../
+
+killall $RANDSERV || :
+
+TEST_FAILURES=`grep -c FAILED ./mozilla/tests_results/security/localhost.1/outpu
+t.log` || :
+if [ $TEST_FAILURES -ne 0 ]; then
+  echo "error: test suite returned failure(s)"
+  exit 1
+fi
+echo "test suite completed"
+
+
+%install
+rm -rf $RPM_BUILD_ROOT
+
+# There is no make install target so we'll do it ourselves.
+
+%{__mkdir_p} $RPM_BUILD_ROOT/%{_includedir}/nss3
+%{__mkdir_p} $RPM_BUILD_ROOT/%{_bindir}
+%{__mkdir_p} $RPM_BUILD_ROOT/%{_lib}
+%{__mkdir_p} $RPM_BUILD_ROOT/%{unsupported_tools_directory}
+
+# Copy the binary libraries we want
+for file in libsoftokn3.so libfreebl3.so libnss3.so libnssutil3.so \
+            libssl3.so libsmime3.so libnssckbi.so libnsspem.so libnssdbm3.so
+do
+  %{__install} -m 755 mozilla/dist/*.OBJ/lib/$file $RPM_BUILD_ROOT/%{_lib}
+  ln -sf ../../%{_lib}/$file $RPM_BUILD_ROOT/%{_libdir}/$file
+done
+
+# These ghost files will be generated in the post step
+# Make sure chk files can be found in both places
+for file in libsoftokn3.chk libfreebl3.chk
+do
+  touch $RPM_BUILD_ROOT/%{_lib}/$file
+  ln -s ../../%{_lib}/$file $RPM_BUILD_ROOT/%{_libdir}/$file
+done
+
+# Install the empty NSS db files
+%{__mkdir_p} $RPM_BUILD_ROOT/%{_sysconfdir}/pki/nssdb
+%{__install} -m 644 %{SOURCE3} $RPM_BUILD_ROOT/%{_sysconfdir}/pki/nssdb/cert8.db
+%{__install} -m 644 %{SOURCE4} $RPM_BUILD_ROOT/%{_sysconfdir}/pki/nssdb/key3.db
+%{__install} -m 644 %{SOURCE5} $RPM_BUILD_ROOT/%{_sysconfdir}/pki/nssdb/secmod.d
+b
+%{__mkdir_p} $RPM_BUILD_ROOT/%{_sysconfdir}/prelink.conf.d
+%{__install} -m 644 %{SOURCE8} $RPM_BUILD_ROOT/%{_sysconfdir}/prelink.conf.d/nss
+-prelink.conf
+
+# Copy the development libraries we want
+for file in libcrmf.a libnssb.a libnssckfw.a
+do
+  %{__install} -m 644 mozilla/dist/*.OBJ/lib/$file $RPM_BUILD_ROOT/%{_libdir}
+done
+
+# Copy the binaries we want
+for file in certutil cmsutil crlutil modutil pk12util signtool signver ssltap
+do
+  %{__install} -m 755 mozilla/dist/*.OBJ/bin/$file $RPM_BUILD_ROOT/%{_bindir}
+done
+
+# Copy the binaries we ship as unsupported
+for file in atob btoa derdump ocspclnt pp selfserv shlibsign strsclnt symkeyutil
+ tstclnt vfyserv vfychain
+do
+  %{__install} -m 755 mozilla/dist/*.OBJ/bin/$file $RPM_BUILD_ROOT/%{unsupported
+_tools_directory}
+done
+
+# Copy the include files we want
+for file in mozilla/dist/public/nss/*.h
+do
+  %{__install} -m 644 $file $RPM_BUILD_ROOT/%{_includedir}/nss3
+done
+
+
+%clean
+rm -rf $RPM_BUILD_ROOT
+
+
+%files
+%defattr(-,root,root)
+%{_mingw32_bindir}/foo.dll
+%{_mingw32_libdir}/foo.dll.a
+# etc.
+
+
+%changelog
+* Wed Sep 24 2008 Your Name <you@example.com> - 1.2.3-1
+- Initial RPM release.
diff --git a/nss/nss-config.in b/nss/nss-config.in
new file mode 100644 (file)
index 0000000..f8f893e
--- /dev/null
@@ -0,0 +1,145 @@
+#!/bin/sh
+
+prefix=@prefix@
+
+major_version=@MOD_MAJOR_VERSION@
+minor_version=@MOD_MINOR_VERSION@
+patch_version=@MOD_PATCH_VERSION@
+
+usage()
+{
+       cat <<EOF
+Usage: nss-config [OPTIONS] [LIBRARIES]
+Options:
+       [--prefix[=DIR]]
+       [--exec-prefix[=DIR]]
+       [--includedir[=DIR]]
+       [--libdir[=DIR]]
+       [--version]
+       [--libs]
+       [--cflags]
+Dynamic Libraries:
+       nss
+       nssutil
+       ssl
+       smime
+EOF
+       exit $1
+}
+
+if test $# -eq 0; then
+       usage 1 1>&2
+fi
+
+lib_ssl=yes
+lib_smime=yes
+lib_nss=yes
+lib_nssutil=yes
+
+while test $# -gt 0; do
+  case "$1" in
+  -*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
+  *) optarg= ;;
+  esac
+
+  case $1 in
+    --prefix=*)
+      prefix=$optarg
+      ;;
+    --prefix)
+      echo_prefix=yes
+      ;;
+    --exec-prefix=*)
+      exec_prefix=$optarg
+      ;;
+    --exec-prefix)
+      echo_exec_prefix=yes
+      ;;
+    --includedir=*)
+      includedir=$optarg
+      ;;
+    --includedir)
+      echo_includedir=yes
+      ;;
+    --libdir=*)
+      libdir=$optarg
+      ;;
+    --libdir)
+      echo_libdir=yes
+      ;;
+    --version)
+      echo ${major_version}.${minor_version}.${patch_version}
+      ;;
+    --cflags)
+      echo_cflags=yes
+      ;;
+    --libs)
+      echo_libs=yes
+      ;;
+    ssl)
+      lib_ssl=yes
+      ;;
+    smime)
+      lib_smime=yes
+      ;;
+    nss)
+      lib_nss=yes
+      ;;
+    nssutil)
+      lib_nssutil=yes
+      ;;
+    *)
+      usage 1 1>&2
+      ;;
+  esac
+  shift
+done
+
+# Set variables that may be dependent upon other variables
+if test -z "$exec_prefix"; then
+    exec_prefix=`pkg-config --variable=exec_prefix nss`
+fi
+if test -z "$includedir"; then
+    includedir=`pkg-config --variable=includedir nss`
+fi
+if test -z "$libdir"; then
+    libdir=`pkg-config --variable=libdir nss`
+fi
+
+if test "$echo_prefix" = "yes"; then
+    echo $prefix
+fi
+
+if test "$echo_exec_prefix" = "yes"; then
+    echo $exec_prefix
+fi
+
+if test "$echo_includedir" = "yes"; then
+    echo $includedir
+fi
+
+if test "$echo_libdir" = "yes"; then
+    echo $libdir
+fi
+
+if test "$echo_cflags" = "yes"; then
+    echo -I$includedir
+fi
+
+if test "$echo_libs" = "yes"; then
+      libdirs="-Wl,-rpath-link,$libdir -L$libdir"
+      if test -n "$lib_ssl"; then
+       libdirs="$libdirs -lssl${major_version}"
+      fi
+      if test -n "$lib_smime"; then
+       libdirs="$libdirs -lsmime${major_version}"
+      fi
+      if test -n "$lib_nss"; then
+       libdirs="$libdirs -lnss${major_version}"
+      fi
+      if test -n "$lib_nssutil"; then
+       libdirs="$libdirs -lnssutil${major_version}"
+      fi
+      echo $libdirs
+fi      
+
diff --git a/nss/nss-enable-pem.patch b/nss/nss-enable-pem.patch
new file mode 100644 (file)
index 0000000..665a148
--- /dev/null
@@ -0,0 +1,12 @@
+diff -up ./mozilla/security/nss/lib/ckfw/manifest.mn.prepem ./mozilla/security/nss/lib/ckfw/manifest.mn
+--- ./mozilla/security/nss/lib/ckfw/manifest.mn.prepem 2008-08-05 16:34:23.000000000 -0700
++++ ./mozilla/security/nss/lib/ckfw/manifest.mn        2008-08-05 16:34:30.000000000 -0700
+@@ -38,7 +38,7 @@ MANIFEST_CVS_ID = "@(#) $RCSfile: manife
+ CORE_DEPTH = ../../..
+-DIRS = builtins 
++DIRS = builtins pem
+ PRIVATE_EXPORTS = \
+       ck.h              \
diff --git a/nss/nss-no-rpath.patch b/nss/nss-no-rpath.patch
new file mode 100644 (file)
index 0000000..35ea573
--- /dev/null
@@ -0,0 +1,14 @@
+--- ./mozilla/security/nss/cmd/platlibs.mk.withrpath   2007-02-19 07:17:06.000000000 +0100
++++ ./mozilla/security/nss/cmd/platlibs.mk     2007-02-19 07:18:07.000000000 +0100
+@@ -52,9 +52,9 @@
+ ifeq ($(OS_ARCH), Linux)
+ ifeq ($(USE_64), 1)
+-EXTRA_SHARED_LIBS += -Wl,-rpath,'$$ORIGIN/../lib64:$$ORIGIN/../lib'
++#EXTRA_SHARED_LIBS += -Wl,-rpath,'$$ORIGIN/../lib64:$$ORIGIN/../lib'
+ else
+-EXTRA_SHARED_LIBS += -Wl,-rpath,'$$ORIGIN/../lib'
++#EXTRA_SHARED_LIBS += -Wl,-rpath,'$$ORIGIN/../lib'
+ endif
+ endif
diff --git a/nss/nss-nolocalsql.patch b/nss/nss-nolocalsql.patch
new file mode 100644 (file)
index 0000000..b72cc66
--- /dev/null
@@ -0,0 +1,53 @@
+diff -up mozilla/security/nss/lib/Makefile.nolocalsql mozilla/security/nss/lib/Makefile
+--- mozilla/security/nss/lib/Makefile.nolocalsql       2007-11-06 15:12:37.000000000 +0100
++++ mozilla/security/nss/lib/Makefile  2007-11-06 15:13:35.000000000 +0100
+@@ -62,11 +62,11 @@ ifeq ($(OS_TARGET), WINCE)
+ DIRS := $(filter-out fortcrypt,$(DIRS))
+ endif
+-ifndef MOZILLA_CLIENT
+-ifndef NSS_USE_SYSTEM_SQLITE
+-DIRS := sqlite $(DIRS)
+-endif
+-endif
++#ifndef MOZILLA_CLIENT
++#ifndef NSS_USE_SYSTEM_SQLITE
++#DIRS := sqlite $(DIRS)
++#endif
++#endif
+ #######################################################################
+ # (5) Execute "global" rules. (OPTIONAL)                              #
+diff -up mozilla/security/nss/lib/softoken/legacydb/manifest.mn.nolocalsql mozilla/security/nss/lib/softoken/legacydb/manifest.mn
+--- mozilla/security/nss/lib/softoken/legacydb/manifest.mn.nolocalsql  2007-11-06 15:10:59.000000000 +0100
++++ mozilla/security/nss/lib/softoken/legacydb/manifest.mn     2007-11-06 15:11:07.000000000 +0100
+@@ -46,9 +46,9 @@ MAPFILE = $(OBJDIR)/nssdbm.def
+ DEFINES += -DSHLIB_SUFFIX=\"$(DLL_SUFFIX)\" -DSHLIB_PREFIX=\"$(DLL_PREFIX)\" -DSOFTOKEN_LIB_NAME=\"$(notdir $(SHARED_LIBRARY))\"
+-ifdef MOZILLA_CLIENT
+-INCLUDES += -I$(DIST)/include/sqlite3
+-endif
++#ifdef MOZILLA_CLIENT
++#INCLUDES += -I$(DIST)/include/sqlite3
++#endif
+ CSRCS = \
+       dbmshim.c \
+diff -up mozilla/security/nss/lib/softoken/manifest.mn.nolocalsql mozilla/security/nss/lib/softoken/manifest.mn
+--- mozilla/security/nss/lib/softoken/manifest.mn.nolocalsql   2007-11-06 15:08:14.000000000 +0100
++++ mozilla/security/nss/lib/softoken/manifest.mn      2007-11-06 15:10:21.000000000 +0100
+@@ -47,9 +47,9 @@ MAPFILE = $(OBJDIR)/softokn.def
+ DEFINES += -DSHLIB_SUFFIX=\"$(DLL_SUFFIX)\" -DSHLIB_PREFIX=\"$(DLL_PREFIX)\" -DSOFTOKEN_LIB_NAME=\"$(notdir $(SHARED_LIBRARY))\" -DSHLIB_VERSION=\"$(LIBRARY_VERSION)\"
+-ifdef MOZILLA_CLIENT
+-INCLUDES += -I$(DIST)/include/sqlite3
+-endif
++#ifdef MOZILLA_CLIENT
++#INCLUDES += -I$(DIST)/include/sqlite3
++#endif
+ EXPORTS = \
+       pkcs11.h \
+diff -up mozilla/security/nss/lib/softoken/config.mk.nolocalsql mozilla/security/nss/lib/softoken/config.mk
diff --git a/nss/nss-pem-bug429175.patch b/nss/nss-pem-bug429175.patch
new file mode 100644 (file)
index 0000000..6732c04
--- /dev/null
@@ -0,0 +1,12 @@
+diff -u --recursive mozilla.orig/security/nss/lib/ckfw/pem/pobject.c mozilla/security/nss/lib/ckfw/pem/pobject.c
+--- mozilla.orig/security/nss/lib/ckfw/pem/pobject.c    2007-09-06 16:46:30.000000000 -0400
++++ mozilla/security/nss/lib/ckfw/pem/pobject.c 2008-08-13 21:08:43.000000000 -0400
+@@ -160,7 +160,7 @@
+     (void *) &ck_false, (PRUint32) sizeof(CK_BBOOL)
+ };
+ static const NSSItem pem_x509Item = {
+-    (void *) &ckc_x509, (PRUint32) sizeof(CKC_X_509)
++    (void *) &ckc_x509, (PRUint32) sizeof(CK_ULONG)
+ };
+ static const NSSItem pem_rsaItem = {
+     (void *) &ckk_rsa, (PRUint32) sizeof(CK_KEY_TYPE)
diff --git a/nss/nss-prelink.conf b/nss/nss-prelink.conf
new file mode 100644 (file)
index 0000000..bcfef1f
--- /dev/null
@@ -0,0 +1,2 @@
+-b /lib{,64}/libfreebl3.so
+-b /lib{,64}/libsoftokn3.so
diff --git a/nss/nss.pc.in b/nss/nss.pc.in
new file mode 100644 (file)
index 0000000..d47b9e1
--- /dev/null
@@ -0,0 +1,11 @@
+prefix=%prefix%
+exec_prefix=%exec_prefix%
+libdir=%libdir%
+includedir=%includedir%
+
+Name: NSS
+Description: Network Security Services
+Version: %NSS_VERSION%
+Requires: nspr >= %NSPR_VERSION%
+Libs: -lssl3 -lsmime3 -lnss3 -lnssutil3
+Cflags: -I${includedir}
index 06aff29..2db8d00 100755 (executable)
@@ -62,6 +62,8 @@ sub main {
     delete $br{"mingw32-ocaml"};
     delete $br{"mingw32-curl"};
     delete $br{"mingw32-pidgin"};
+    delete $br{"mingw32-nspr"};
+    delete $br{"mingw32-nss"};
 
     # There is a dependency loop (gcc -> runtime/w32api -> gcc)
     # which has to be manually resolved below.  Break that loop.