Bug 676387

Summary: Missing include in nss-softokn-freebl-devel subpackage of nss-softokn
Product: Red Hat Enterprise Linux 6 Reporter: Elio Maldonado Batiz <emaldona>
Component: nss-softoknAssignee: Elio Maldonado Batiz <emaldona>
Status: CLOSED ERRATA QA Contact: Aleš Mareček <amarecek>
Severity: medium Docs Contact:
Priority: medium    
Version: 6.1CC: amarecek, emaldona, kengert, rrelyea, stefanb
Target Milestone: rc   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: nss-3.12.9-3.el6, nss-softokn-3.12.9-2.el6 Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: 675196 Environment:
Last Closed: 2011-05-19 14:03:54 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On: 675196    
Bug Blocks:    
Attachments:
Description Flags
add missing header to the proper places the spec file
rrelyea: review+
V2: blapit.h is now in the nss-softokn-freebl-devel file list.
none
V3 - proposed changes revised (change logs not included) rrelyea: review+

Description Elio Maldonado Batiz 2011-02-09 17:19:26 UTC
+++ This bug was initially created as a clone of Bug #675196 +++

Description of problem:

The package nss-util-devel is missing at least one include file:

/usr/include/nss3/seccomon.h:51:21: fatal error: prtypes.h: No such file or directory

Version-Release number of selected component (if applicable):

#rpm -q --whatprovides /usr/include/nss3/seccomon.h 
nss-util-devel-3.12.9-1.fc14.x86_64

--- Additional comment from emaldona on 2011-02-04 11:51:19 EST ---

prtypes.h is part is provided by nspr-devel
# rpm -ql nspr-devel | grep prtypes.h
/usr/include/nspr4/prtypes.h

which is required by nss-util-devel
#rpm -q --whatrequires nspr-devel
xulrunner-devel-1.9.2.13-5.fc14.x86_64
nss-util-devel-3.12.9-1.fc14.x86_64
nss-softokn-devel-3.12.9-1.fc14.x86_64
nss-devel-3.12.9-1.fc14.x86_64

--- Additional comment from stefanb.com on 2011-02-04 11:59:15 EST ---

Let me be more specific:

In file included from /usr/include/nss3/blapit.h:46:0,
                 from /usr/include/nss3/blapi.h:45,
                 from test.c:52:
/usr/include/nss3/seccomon.h:51:21: fatal error: prtypes.h: No such file or directory

seccommon.h shows this here:

[...]
#ifndef _SECCOMMON_H_
#define _SECCOMMON_H_

#include "utilrename.h"
#include "prtypes.h"

[...]

I believe it expects prtypes.h to be found in nss3, no?

--- Additional comment from emaldona on 2011-02-04 12:24:14 EST ---

No, it actually expects the file to be found in nspr4, as in
/usr/include/nspr4/prtypes.h

--- Additional comment from stefanb.com on 2011-02-04 12:28:52 EST ---

In a next step I added -I/usr/include/nspr4 to gcc for inclusion of the needed path leads to:

/usr/include/nss3/blapi.h:47:21: fatal error: alghmac.h: No such file or directory

I cannot 'find | grep alghmac' in /usr/include...

Once the #include of this file is commented, I can compile. It would be great if the development packages could be fixed.

--- Additional comment from emaldona on 2011-02-04 13:00:07 EST ---

/usr/include/nss3/blapi.h is a private header of the freebl library in nss-soften-devel and nss-util and its nss-util-devel do not depend on anything in the rest of nss or nss-softokn. They are the lower level common utilities required both nss and nss-softoken. nss depends on nss-softokn and nss-util
The freebl headers are as a rule private to the crypto module, with very few limited exceptional cases.

--- Additional comment from stefanb.com on 2011-02-04 13:19:05 EST ---

Assuming I wanted to link against -lfreebl and use the function RNG_RNGInit(). Where am I going to get its prototype from other than including nss3/blapi.h ?

--- Additional comment from emaldona on 2011-02-04 13:40:16 EST ---

nss-softoken-freebl-devel (subpackage of nss-softokn) provides you that header. 
#rpm -ql nss-softokn-freebl-devel
/usr/include/nss3/blapi.h
/usr/lib64/libfreebl.a

--- Additional comment from stefanb.com on 2011-02-04 13:52:03 EST ---

I know that. See above in comment 4 the error that I am getting when including blapi.h. alghmac.h is missing.

--- Additional comment from emaldona on 2011-02-04 14:19:07 EST ---

I see alghmac.h listed as one of freebl's private exports in mozilla/security/nss/lib/freebl/maninifest.mn
...
PRIVATE_EXPORTS = \
	alghmac.h \
...
It does show up in mozilla/dist/nss/private. 
It does not appear listed in the nss-softokn.spec (or nss.spec) so it doesn't copied to /usr/include/nss3 along with other private headers. This may be fixable. 

Could you do me a favor? Manually copy alghmac.h into /usr/include/nss3 and try to compile your project. Before I add it to the list let me see what else it pulls in. I would hate to trigger a chain reaction of headers being brought in.

--- Additional comment from emaldona on 2011-02-04 16:10:05 EST ---

alghmac.h doesn't include anything else and that's promising
Let me know if these scratch builds of nss-softokn and nss
http://koji.fedoraproject.org/koji/taskinfo?taskID=2762816
http://koji.fedoraproject.org/koji/taskinfo?taskID=2762830
work for you.

--- Additional comment from stefanb.com on 2011-02-04 16:38:01 EST ---

Installing

nss-softokn-freebl-3.12.9-2.fc14.x86_64.rpm
nss-softokn-freebl-devel-3.12.9-2.fc14.x86_64.rpm

from these builds did the trick for me.

--- Additional comment from updates on 2011-02-04 17:28:53 EST ---

nss-softokn-3.12.9-2.fc14 has been submitted as an update for Fedora 14.
https://admin.fedoraproject.org/updates/nss-softokn-3.12.9-2.fc14

--- Additional comment from stefanb.com on 2011-02-04 19:09:03 EST ---

Unless done anyway, please submit

nss-softokn-freebl-3.12.9-2.fc14.x86_64.rpm
nss-softokn-freebl-devel-3.12.9-2.fc14.x86_64.rpm

rather than (only)

nss-softokn-3.12.9-2.fc14 

as an update.

--- Additional comment from emaldona on 2011-02-04 19:22:21 EST ---

nss-softokn-freebl and nss-softokn-freebl-devel can't be submitted by themselves. They are mere sub-packages of the nss-softokn package so it's the latter that gets submitted.

--- Additional comment from updates on 2011-02-05 17:21:40 EST ---

nss-softokn-3.12.9-2.fc14 has been pushed to the Fedora 14 testing repository.  If problems still persist, please make note of it in this bug report.
 If you want to test the update, you can install it with 
 su -c 'yum --enablerepo=updates-testing update nss-softokn'.  You can provide feedback for this update here: https://admin.fedoraproject.org/updates/nss-softokn-3.12.9-2.fc14

--- Additional comment from updates on 2011-02-06 15:20:33 EST ---

nss-softokn-3.12.9-2.fc14 has been pushed to the Fedora 14 stable repository.  If problems still persist, please make note of it in this bug report.

Comment 1 Elio Maldonado Batiz 2011-02-09 17:23:19 UTC
This doesn't not involve any code changes, it's is strictly a packaging bug. It's solved by adding the needed header to the list of files to include in the spec file.

Comment 3 Elio Maldonado Batiz 2011-02-09 17:38:36 UTC
Created attachment 477871 [details]
add missing header to the proper places the spec file

Comment 4 Elio Maldonado Batiz 2011-02-11 17:36:32 UTC
stefanb suggested adding to nss-softoken-devel a dependency on nss-softokn-devel
I think it would be something like
Requires:         nss-softokn-devel%{?_isa} = %{version}-%{release}
or maybe
BuildRequires:    nss-softokn-devel%{?_isa} = %{version}-%{release}

Comment 5 Bob Relyea 2011-02-11 18:10:07 UTC
I think you mean : stefanb suggested adding to nss-softokn-freebl-devel a dependency on nss-softokn-devel.

I think that is incorrect, unless we mistakenly have headers in softokn that are included by freebl. The real dependency is the other way around (nss-softokn and nss-sofokn-devel depend on nss-softokn-freebl and nss-softokn-freebl-devel respectively).

bob

Comment 6 Bob Relyea 2011-02-11 18:17:05 UTC
Comment on attachment 477871 [details]
add missing header to the proper places the spec file

r+

Comment 7 Stefan Berger 2011-02-11 18:36:03 UTC
What you say in 5 what stefanb means is correct. Let me show:

#> rpm -q --whatprovides /usr/include/nss3/blapi.h
nss-softokn-freebl-devel-3.12.9-2.fc14.x86_64

In blapi.h the following is found


[...]
#ifndef _BLAPI_H_
#define _BLAPI_H_

#include "blapit.h"
#include "hasht.h"
#include "alghmac.h"
[...]


Let me check what provides blapit.h ...

->  rpm -q --whatprovides /usr/include/nss3/blapit.h
nss-softokn-devel-3.12.9-2.fc14.x86_64


I conclude freebl-devel has a dependency on nss-softokn-devel, yet I can do:


root@d941e-5 patches]# yum remove nss-softokn-devel
Loaded plugins: fastestmirror, presto, refresh-packagekit
Setting up Remove Process
Resolving Dependencies
--> Running transaction check
---> Package nss-softokn-devel.x86_64 0:3.12.9-2.fc14 set to be erased
--> Finished Dependency Resolution

Dependencies Resolved

====================================================================================================
 Package                      Arch              Version                   Repository           Size
====================================================================================================
Removing:
 nss-softokn-devel            x86_64            3.12.9-2.fc14             @updates             52 k

Transaction Summary
====================================================================================================
Remove        1 Package(s)

Installed size: 52 k


I would expect nss-softokn-devel also to uninstall nss-softokn-freebl-devel.

Comment 8 Bob Relyea 2011-02-11 18:49:03 UTC
> ->  rpm -q --whatprovides /usr/include/nss3/blapit.h
> nss-softokn-devel-3.12.9-2.fc14.x86_64

Sigh, that should have been in nss-softokn-freebl-devel, not nss-softoken-devel


bob

Comment 9 Elio Maldonado Batiz 2011-02-11 22:58:36 UTC
Created attachment 478325 [details]
V2: blapit.h is now in the nss-softokn-freebl-devel file list.

Comment 10 Elio Maldonado Batiz 2011-02-11 23:16:22 UTC
Caveat: By making nss-softokn-freebl-devel the owner of blaphit.h, could we be introducing an implied dependency of nss-softokn-devel on nss-softokn-freebl? I find such a dependency undesirable since when it was a goal not do so and keep nss-softokn-freebl-devel a strictly optional. 

I'll test this in fedora first. Stefan, you are welcome to join me. I'll point you to a fedora scratch build.

Comment 11 Elio Maldonado Batiz 2011-02-15 18:41:10 UTC
Created attachment 478944 [details]
V3 -  proposed changes revised (change logs not included)

Expanded freel-devel description, added another requires, and concatenated associated patch for nss spec to take due nss-pkcs11-devel's dependency as Bob pointed out.

Comment 12 Elio Maldonado Batiz 2011-02-15 18:47:09 UTC
Comment on attachment 478944 [details]
V3 -  proposed changes revised (change logs not included)

Expanded description for freebl-devel, added a requires, and concatenated nss spec change to account for pkcs11-devel dependency as Bob pointed out.

Comment 13 Elio Maldonado Batiz 2011-02-15 18:55:43 UTC
Comment on attachment 478944 [details]
V3 -  proposed changes revised (change logs not included)

Combined hanges for nss-softokn and nss spec files. Exanded freebl-devel description, added devel dependency on freebl-devel due to blapit.h's "adoption" by freebl-devel, and added needed pkcs11-devel requires as Bob has pointed out.

Comment 14 Bob Relyea 2011-02-17 00:32:21 UTC
Comment on attachment 478944 [details]
V3 -  proposed changes revised (change logs not included)

r+ thanks for sussing this out.

Comment 15 Elio Maldonado Batiz 2011-02-17 04:59:47 UTC
Correction: in nss.spec for %package pkcs11-devel, the line
Requires: nss-softokn-pkcs11-devel = %{version}-%{release}
should have been
Requires: nss-softokn-freel-devel = %{version}-%{release}
as this one now provides the blapit.h header that nss-pks11-devel needs.

Comment 16 Elio Maldonado Batiz 2011-02-17 05:01:19 UTC
Bad fingers: s/freel/freebl/

Comment 17 Elio Maldonado Batiz 2011-02-17 17:08:02 UTC
Comment on attachment 478944 [details]
V3 -  proposed changes revised (change logs not included)

Since nss and nss-softokn keep their own versions, the requires for pk11-devel must be
>+Requires:         nss-softokn-freebl-devel = %{nss_softokn_version}

Comment 20 Stefan Berger 2011-04-14 18:07:09 UTC
I am using nss-config --cflags now to determine the additional cflags necessary for freebl includes (/usr/include/nss3). The nss-config tool comes with nss-devel. The issue is that the dependencies don't reach that far that when I require nss-softokn-freebl-devel that automatically nss-devel becomes a dependency.

Comment 21 errata-xmlrpc 2011-05-19 14:03:54 UTC
An advisory has been issued which should help the problem
described in this bug report. This report is therefore being
closed with a resolution of ERRATA. For more information
on therefore solution and/or where to find the updated files,
please follow the link below. You may reopen this bug report
if the solution does not work for you.

http://rhn.redhat.com/errata/RHBA-2011-0692.html