[PATCH v2] When using the Mozilla NSS library for cryptography, include the NSPR header files

Guido Trentalancia guido@trentalancia.net
Tue May 31 17:51:00 GMT 2016


Hello Adhemerval.

I'll try to get back on the problem that you mention...

On Tue, 31/05/2016 at 11.39 -0300, Adhemerval Zanella wrote:
> 
> On 31/05/2016 09:35, Guido Trentalancia wrote:
> > When configuring and building GNU libc using the Mozilla NSS
> > library
> > for cryptography (--enable-nss-crypt option), also include the
> > NSPR header files along with the Mozilla NSS library header files.
> > 
> > Signed-off-by: Guido Trentalancia <guido@trentalancia.net>
> 
> This patch is missing a proper ChangeLog [1]
> 
> [1] https://sourceware.org/glibc/wiki/Contribution%20checklist#Proper
> ly_Formatted_GNU_ChangeLog
> 
> > ---
> >  configure      |    6 +++++-
> >  configure.ac   |    6 +++++-
> >  crypt/Makefile |    6 +++---
> >  3 files changed, 13 insertions(+), 5 deletions(-)
> > 
> > --- glibc-31052016-0900GMT/configure	2016-05-30
> > 13:25:35.299696688 +0200
> > +++ glibc-configure-nss-crypt-include-nspr-headers/configure	
> > 2016-05-31 13:57:28.117571376 +0200
> > @@ -3501,8 +3501,12 @@ if test x$nss_crypt = xyes; then
> >    if test $? -ne 0; then
> >      as_fn_error $? "cannot find include directory with nss-config" 
> > "$LINENO" 5
> >    fi
> > +  nspr_includes=-I$(nspr-config --includedir 2>/dev/null)
> > +  if test $? -ne 0; then
> > +    as_fn_error $? "cannot find include directory with nspr-
> > config" "$LINENO" 5
> > +  fi
> >    old_CFLAGS="$CFLAGS"
> > -  CFLAGS="$CFLAGS $nss_includes"
> > +  CFLAGS="$CFLAGS $nss_includes $nspr_includes"
> 
> I tried to build it on Ubuntu 16.04 and even with the patch configure
> failed
> due it could not find libfreebl3.so.  On this distro this is
> installed on
> /usr/lib/x86_64-linux-gnu/nss/ and I am not familiar with this
> project to say
> if this is the default folder, if it is something recently changed or
> if it a
> distro-based modification.  

I suspect it is a distro-based modification.

FHS specifies different directories, please see:

http://refspecs.linuxfoundation.org/FHS_3.0/fhs/ch03s09.html
http://refspecs.linuxfoundation.org/FHS_3.0/fhs/ch03s10.html

Try adding "/usr/lib/x86_64-linux-gnu/nss/" to LDFLAGS and passing such
variable to configure, for example as follows (please adapt it to your
needs):

LDFLAGS="-L/usr/lib/x86_64-linux-gnu/nss" configure --enable-nss-crypt
--whatever-other-options-you-might-need

Best regards,

Guido Trentalancia

> Either way I think to fully re-enable the NSS
> configure option we need to take care of it.
> 
> >  
> >  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
> >  /* end confdefs.h.  */
> > --- glibc-31052016-0900GMT/configure.ac	2016-05-30
> > 13:25:35.299696688 +0200
> > +++ glibc-configure-nss-crypt-include-nspr-headers/configure.ac	
> > 2016-05-31 13:58:03.962731844 +0200
> > @@ -311,8 +311,12 @@ if test x$nss_crypt = xyes; then
> >    if test $? -ne 0; then
> >      AC_MSG_ERROR([cannot find include directory with nss-config])
> >    fi
> > +  nspr_includes=-I$(nspr-config --includedir 2>/dev/null)
> > +  if test $? -ne 0; then
> > +    AC_MSG_ERROR([cannot find include directory with nspr-config])
> > +  fi
> >    old_CFLAGS="$CFLAGS"
> > -  CFLAGS="$CFLAGS $nss_includes"
> > +  CFLAGS="$CFLAGS $nss_includes $nspr_includes"
> >    AC_COMPILE_IFELSE([AC_LANG_PROGRAM([typedef int PRBool;
> >  #include <hasht.h>
> >  #include <nsslowhash.h>
> > --- glibc-31052016-0900GMT/crypt/Makefile	2016-05-30
> > 13:25:35.306696710 +0200
> > +++ glibc-configure-nss-crypt-include-nspr-headers/crypt/Makefile	
> > 2016-05-31 14:28:38.995883272 +0200
> > @@ -37,9 +37,9 @@ routines += $(libcrypt-routines)
> >  endif
> >  
> >  ifeq ($(nss-crypt),yes)
> > -CPPFLAGS-sha256-crypt.c = -DUSE_NSS -I$(shell nss-config --
> > includedir)
> > -CPPFLAGS-sha512-crypt.c = -DUSE_NSS -I$(shell nss-config --
> > includedir)
> > -CPPFLAGS-md5-crypt.c = -DUSE_NSS -I$(shell nss-config --
> > includedir)
> > +CPPFLAGS-sha256-crypt.c = -DUSE_NSS -I$(shell nss-config --
> > includedir) -I$(shell nspr-config --includedir)
> > +CPPFLAGS-sha512-crypt.c = -DUSE_NSS -I$(shell nss-config --
> > includedir) -I$(shell nspr-config --includedir)
> > +CPPFLAGS-md5-crypt.c = -DUSE_NSS -I$(shell nss-config --
> > includedir) -I$(shell nspr-config --includedir)
> >  LDLIBS-crypt.so = -lfreebl3
> >  else
> >  libcrypt-routines += md5 sha256 sha512
> > 
> 



More information about the Libc-alpha mailing list