This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: [PATCH v2] When using the Mozilla NSS library for cryptography, include the NSPR header files
- From: Adhemerval Zanella <adhemerval dot zanella at linaro dot org>
- To: Guido Trentalancia <guido at trentalancia dot net>, libc-alpha at sourceware dot org
- Date: Tue, 31 May 2016 15:50:14 -0300
- Subject: Re: [PATCH v2] When using the Mozilla NSS library for cryptography, include the NSPR header files
- Authentication-results: sourceware.org; auth=none
- References: <1464696577 dot 24965 dot 16 dot camel at trentalancia dot net> <1464698125 dot 24965 dot 18 dot camel at trentalancia dot net> <574DA219 dot 9010703 at linaro dot org> <1464715691 dot 2379 dot 38 dot camel at trentalancia dot net>
On 31/05/2016 14:28, Guido Trentalancia wrote:
> 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
It is indeed an ubuntu/debian modification (patch 85_security_load.patch
from libnss3 package) and I think it mainly due ubuntu/debian does not
build glibc with NSS flag.
>
> 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
>>>
>>
>