This service will be undergoing maintenance at 00:00 UTC, 2016-08-01. It is expected to last about 1 hours

Bug 736717

Summary: Review Request: lcmaps - Grid (X.509) and VOMS credentials to local account mapping
Product: [Fedora] Fedora Reporter: Dennis van Dok <dennisvd>
Component: Package ReviewAssignee: Orion Poplawski <orion>
Status: CLOSED ERRATA QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: medium Docs Contact:
Priority: unspecified    
Version: rawhideCC: i, mindruv, msalle, notting, orion, steve.traylen
Target Milestone: ---Flags: orion: fedora‑review+
petersen: fedora‑cvs+
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: lcmaps-1.6.1-6.fc19 Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2013-11-23 22:52:57 EST Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:

Description Dennis van Dok 2011-09-08 09:51:05 EDT
Spec URL: http://software.nikhef.nl/dist/redhat/el5/mwsec/SPECS/lcmaps.spec
SRPM URL: http://software.nikhef.nl/dist/redhat/el5/mwsec/SRPMS/lcmaps-1.4.31-4.src.rpm

Description: The Local Centre MAPping Service (LCMAPS) is a security middleware
component that processes the users Grid credentials (typically X.509 proxy certificates and VOMS attributes) and maps the user to a local account based on the site local policy.

It is a highly configurable pluggable interface, and many plugins are available to tailor almost every need. Since this is middleware, it does not interact with the user directly. It offers interfaces for client applications and for plug-ins.

This is my first package, and I am looking for a sponsor. lcmaps does not stand on its own, and several plugin packages will follow this one, as well as a package to provide the authorization interface with the Globus Toolkit. These packages are already packaged and carried by projects such as EMI (http://www.eu-emi.eu/) and IGE (http://www.ige-project.eu/), but the long-term goal is integration with the main distributions.
Comment 1 Al Reay 2011-09-12 18:52:14 EDT
Hi Dennis,
I'm not authorized to sponsor you but I'll happily help review your SRPM.

* rpmlint on your .spec file reports:
lcmaps.spec:241: W: macro-in-%changelog %post

maybe change that comment to read "-added ldconfig to 'postun' section

* The spec file you've linked is different to that included in the SRPM. In the linked spec file you've got a 'release' variable that is based off the current date (with resolution down to the minute). This means that you get a differently versioned package basically everytime you rebuild it. I'm pretty sure this is not going to be acceptable to the Fedora packagers. I think that packages are routinely rebuilt (for different architectures, releases etc) and that this will just cause a constant stream of updates to be applied to clients using the software even when no changes have occurred.

Apologies if I've misunderstood something here.
Comment 2 Dennis van Dok 2011-09-13 08:25:22 EDT
Hi Al,

thanks for your comment. You are right about the differences in the SRPM and the spec file, this was unintended. The release tag was a leftover from an experiment. I've fixed both issues.

New SRPM: http://software.nikhef.nl/dist/redhat/el5/mwsec/SRPMS/lcmaps-1.4.31-5.el5.src.rpm

New SPEC: http://software.nikhef.nl/dist/redhat/el5/mwsec/SPECS/lcmaps.spec

Thanks,

Dennis
Comment 3 Dennis van Dok 2011-09-14 05:31:47 EDT
For the purpose of sponsoring, here's a link to a review I've done: https://bugzilla.redhat.com/show_bug.cgi?id=697326#c5
Comment 4 Steve Traylen 2011-10-25 16:28:05 EDT
rpmlint lcmaps.spec is clean
$ rpmlint ./lcmaps-1.4.31-5.fc15.src.rpm 
lcmaps.src: W: strange-permission lcmaps.spec 0600L

Please change the permissions on the input files to the .src.rpm

$ rpmlint./noarch/lcmaps-basic-interface-1.4.31-5.fc15.noarch.rpm \
        ./noarch/lcmaps-globus-interface-1.4.31-5.fc15.noarch.rpm \ 
         ./noarch/lcmaps-openssl-interface-1.4.31-5.fc15.noarch.rpm \
         ./x86_64/lcmaps-1.4.31-5.fc15.x86_64.rpm \
         ./x86_64/lcmaps-debuginfo-1.4.31-5.fc15.x86_64.rpm \
         ./x86_64/lcmaps-devel-1.4.31-5.fc15.x86_64.rpm \

Full in to these types:

(1)
lcmaps.x86_64: W: shared-lib-calls-exit /usr/lib64/liblcmaps.so.0.0.0 exit@GLIBC_2.2.5

Is this something you can look at, it's genrally considered bad practise,
at least submit a bug upstream.

(2)
lcmaps.x86_64: W: devel-file-in-non-devel-package /usr/lib64/liblcmaps_return_poolindex.so

So you mention these in the .spec file that they are dlopened. It
it only your application that opens them? Can they be moved out
of lib to say copy httpd's /usr/lib64/httpd/modules style, e.g
/usr/lib64/lcmaps/modules, this is a suggestion rather than a requirement.

(3)
lcmaps-basic-interface.noarch: W: devel-file-in-non-devel-package /usr/include/lcmaps/lcmaps_basic.h

This is quite odd, why are these not just in the devel package? especially
given that you just require it anyway.



[yes] specfiles match: lcmaps.spec.
[yes] source files match upstream:
$ md5sum ../SOURCES/lcmaps-1.4.31.tar.gz lcmaps-1.4.31.tar.gz 
ab2dcdb2679c8b8e1c7ae6570fbc3bc5  ../SOURCES/lcmaps-1.4.31.tar.gz
ab2dcdb2679c8b8e1c7ae6570fbc3bc5  lcmaps-1.4.31.tar.gz

[yes] package meets naming and versioning guidelines.
[no] spec is properly named, cleanly written, and uses macros consistently.
You use both lcmaps and %{name} quite a bit through the package. I would
drop one of them. Proberly name since it seems unlikely that this will
be useful for anything else.
[yes] dist tag is present.
[yes] build root is correct.
[?] license field matches the actual license, ASL2.0 all the code 
is headed well. However the LICENSE file is not the ASL2.0 I am familiar
with. Do you believe with this file this still complies to the ASL2.0, what
is this text.
[? but probably] license is open source-compatible.
[yes] license text included in package.
[no] latest version is being packaged.
1.4.34 appears to be available.
[yes] BuildRequires are proper.
Builds okay in mock
[yes] compiler flags are appropriate.
[yes] %clean is present.   (But not needed anymore)
[yes] package builds in mock. tested F15.
[not-checked-yet] package installs properly.
[no] rpmlint is silent.
See comments above.
[not-checked-yet] final provides and requires are sane
Waiting on more comments about the '-interface' packages.
I don't understand the 'interface' packages.
[none] %check is present and all tests pass:
[yes] owns the directories it creates. 
[yes] doesn't own any directories it shouldn't.
[yes] no duplicates in %files.
[yes] file permissions are appropriate.
[yes] scriptlets match those on ScriptletSnippets page.
[yes] documentation is small, so no -docs subpackage is necessary.
[yes] %docs are not necessary for the proper functioning of the package.
[?] pkgconfig files. You have requires pkgconfig, this is only needed
    on RHEL5.
[yes] no libtool .la droppings.
[none] desktop files valid and installed properly.

So the main questions are , what are those 'interface' packages, can't
these just all go in devel?

The odd LICENSE file which is not ASL2.0.

Steve.
Comment 5 Dennis van Dok 2011-10-25 17:58:41 EDT
Hi Steve,

thanks for your thorough reporting. I will give some short and direct answers now, but some things need more looking into and discussion with the developers.

a) the spec file permission; don't know how it happened but will look into it.
b) I'll look into the use of %{name} in the spec file.

1) the call to exit we got for free from flex, in case the parser bails out over some weird error condition. We will fix this if we haven't already.

2+3) I will clarify in the spec file what the rationale is behind having a 'interface' package rather than a 'devel' package. The gist of it is that a developer of a client program would not need to link his work with lcmaps.so, because that is delayed until run-time. Only the header files are needed. The header files are split up because some depend on openssl, and some on globus, but we don't want to force a developer to install the globus dependencies if he doesn't really need them. 

At run-time, liblcmaps.so is required for dlopen, so this shouldn't be in the devel package. This leaves the devel package to be virtually empty.

Technically the interface packages could be renamed devel packages, but the current user base knows and uses the interface packages already.

The licence file seems to be a leftover from the previous funding projects, I will have to discuss whether we can simply replace it with the normal ASL2.0 text.

I will get back soon, and update the package.
Comment 6 Dennis van Dok 2012-06-21 08:38:55 EDT
The lcmaps package has been extensively updated upstream; once more I would like to request for a review for inclusion in Fedora.

The spec file is
http://software.nikhef.nl/dist/redhat/el5/mwsec/SPECS/lcmaps.spec

The SRPM is
http://software.nikhef.nl/dist/redhat/el5/mwsec/SRPMS/lcmaps-1.5.5-1.el5.src.rpm

I've done a self-review and there still are some known issues:

- rpmlint gives many warnings about the interface packages, because they aren't recognised as devel packages. There are several features that set the interface packages apart from -devel packages:

   + there are interface packages for each interface of LCMAPS
   + they are architecture independent
   + they do not depend on the base package
   + they do not even depend on a particular version of the base package

- The documentation is somewhat outdated.

If these issues are real blockers for adoption, let me know. Otherwise I would really appreciate it if someone would take a look.

PS a functional test of the software isn't exactly trivial. It is a core component of a security framework, and without clients and plug-ins it doesn't do a whole lot. But I can't get any of the other stuff in without first having lcmaps in place.
Comment 7 Jason Tibbitts 2013-05-08 19:04:00 EDT
I am triaging old review tickets.  I apologize that it has been so long since 
anyone looked at this ticket, but there are more packages submitted now than
the pool of reviewers can handle, and some tickets fall through the cracks.

In order to keep the queue manageable, we need to occasionally find tickets 
which are not reviewable so as to not waste what reviewer time is available.  
Accordingly, I'm pinging this ticket and setting NEEDINFO.  If you are still 
interested in having your package reviewed, please do the following:

* Make sure your package still reflects the current status of its upstream.

* Check that your package still builds on current Fedora releases.

* Audit your package versus the current status of the packaging guidelines, 
  current rpmlint and current fedora-review tools.

And, finally, reply, making sure that the NEEDINFO flag gets cleared so that
this ticket reappears in the review queue.  I can't promise a review if you 
reply, but by closing out the stale tickets we can devote extra attention to 
the ones which aren't stale.
Comment 8 Veaceslav Mindru 2013-07-29 11:40:43 EDT
>The spec file is http://software.nikhef.nl/dist/redhat/el5/mwsec/SPECS/lcmaps.spec
>The SRPM is http://software.nikhef.nl/dist/redhat/el5/mwsec/SRPMS/lcmaps-1.5.5-1.el5.src.rpm

Are you still interested to package this ?  If yes you will have to adjust the SPEC file. stuff like buildroot are deprecated after EPEL5. Please let me know if you are interested and we can try to get some attention to review this.  


VM
Comment 9 Dennis van Dok 2013-07-30 09:50:45 EDT
(In reply to Veaceslav Mindru from comment #8)

> Are you still interested to package this ?  If yes you will have to adjust
> the SPEC file. stuff like buildroot are deprecated after EPEL5. Please let
> me know if you are interested and we can try to get some attention to review
> this.

Yes, I am still interested. Note that this is just the first package and it's accompanied by a couple of plug-in packages.

What exactly is wrong with buildroot? According to https://fedoraproject.org/wiki/Packaging:Guidelines#BuildRoot_tag this is still required for EPEL5 and I'd like this to go to EPEL5 if possible.

Thanks,

dennis
Comment 10 Veaceslav Mindru 2013-07-30 10:09:48 EDT
Hello Dennis ,


Probably i  was mistaken by  

Version: 	rawhide
Hardware: 	All Linux 

and i took it as targeted for EPEL6 last Released Fedora. 


In case you want to go only with EPEL5 than this is fine , if you want to go with EPEL6 than you will have to rewrite and as far as i understand they will go separate it. If i am not mistaken EPEL5 ended on Fedora 12 or 13. 

Let's wait until someone else will review it and advice how to proceed. 


VM
Comment 11 Michael Schwendt 2013-07-30 15:36:42 EDT
It's okay if packagers target everything from EPEL5 up to Rawhide and keep old stuff such as the BuildRoot definition.

It's also okay if they use conditionals,

  https://fedoraproject.org/wiki/Packaging:DistTag#Conditionals

however that isn't highly recommended for various reasons. The spec file can become much more readible, if it doesn't contain many conditional sections. And conditional sections often get out-of-date, because you would update/upgrade Fedora more often than EPEL, and then you would need to test everything for all conditional target dists, too. And, of course, the spec files for different dist releases are stored in separate git branches.

[...]

In the Fedora Package Review queue, all tickets are set to "Version: Rawhide", regardless of whether they will be published for older Fedora branches and EPEL after approval. If a new package is made only for EPEL (I could imagine that), the submitter should be explicit about that. It could be that a reviewer will ask why the package would not be published for a Fedora dist.
Comment 12 Christopher Meng 2013-08-05 03:29:49 EDT
I strongly recommend you should first care about rawhide, then care about EPEL.

And I don't support targeting EL5, but all these are up to you, I can't force you doing anything.

Hope you can find a sponsor quickly.

Best Regards.
Comment 13 Dennis van Dok 2013-08-05 04:43:43 EDT
(In reply to Christopher Meng from comment #12)
> I strongly recommend you should first care about rawhide, then care about
> EPEL.

I never suggested anything to the contrary.

> And I don't support targeting EL5, but all these are up to you, I can't
> force you doing anything.

I'm afraid I don't follow.

> Hope you can find a sponsor quickly.

Thanks.
Comment 14 Michael Schwendt 2013-08-16 15:31:43 EDT
Some suggestions:

* Run "fedora-review -b 736717". It will evaluate the "Spec URL:" and "SRPM URL:" lines in the bugzilla comments, download the files, do test-builds with Mock, and perform a couple of checks on the package. Examine the generated report, fix errors, try to complete missing tests with the help of https://fedoraproject.org/wiki/Packaging:ReviewGuidelines

* Run rpmlint (or rpmlint -i for more helpful output) on the src.rpm and all
built rpms. Feel free to ignore obvious false positives in the report, but fix
anything else. Preferably add a comment here about whether/when you think what
rpmlint reports is correct or incorrect.

* For test-builds, you can submit a scratch-build in the Fedora build system (koji).
Comment 16 Dennis van Dok 2013-08-21 10:22:30 EDT
New Spec URL: http://ndpfsvn.nikhef.nl/ro/mwsec/packaging/fedora/tags/lcmaps/1.6.1/lcmaps.spec
New SRPM URL: http://software.nikhef.nl/dist/mwsec/rpm/f19/SRPMS/lcmaps-1.6.1-1.fc19.src

(This ought to fix the spec url for fedora-review)
Comment 17 Orion Poplawski 2013-10-20 12:15:34 EDT
I'll take this.

General:

- I think http://wiki.nikhef.nl/grid/LCMAPS might be a better URL for this package.
- I don't like the -interface naming convention for packages that contain -devel files (headers).  Use -devel instead.
- If the .so files are going to be dlopen()ed instead of linked to, they should go into %{_libdir}/%{name} and not be in the general linker path.  Then you can drop ldconfig as well.
- If your are going to have sonames for your dlopen()ed libraries, I would argue that you should be dlopen()ing the sonames directly and not the .so files.
- Drop %defattr(), not even needed in EL5
- Please address the various unused-direct-shlib-dependency rpmlint warnings.

Package Review
==============

Legend:
[x] = Pass, [!] = Fail, [-] = Not applicable, [?] = Not evaluated
[ ] = Manual review needed


Issues:
=======
- Development (unversioned) .so files in -devel subpackage, if present.
  Note: Unversioned so-files directly in %_libdir.
  See: http://fedoraproject.org/wiki/Packaging/Guidelines#DevelPackages
- Header files in -devel subpackage, if present.
  Note: lcmaps-globus-interface :
  /usr/include/lcmaps/_lcmaps_return_poolindex.h lcmaps-globus-interface :
  /usr/include/lcmaps/lcmaps.h lcmaps-globus-interface :
  /usr/include/lcmaps/lcmaps_globus.h lcmaps-globus-interface :
  /usr/include/lcmaps/lcmaps_return_poolindex.h lcmaps-openssl-interface :
  /usr/include/lcmaps/lcmaps_openssl.h lcmaps-basic-interface :
  /usr/include/lcmaps/_lcmaps.h lcmaps-basic-interface :
  /usr/include/lcmaps/_lcmaps_gss_assist_gridmap.h lcmaps-basic-interface :
  /usr/include/lcmaps/_lcmaps_return_account_from_pem.h lcmaps-basic-interface
  : /usr/include/lcmaps/_lcmaps_verify_account_from_pem.h lcmaps-basic-
  interface : /usr/include/lcmaps/lcmaps_account.h lcmaps-basic-interface :
  /usr/include/lcmaps/lcmaps_arguments.h lcmaps-basic-interface :
  /usr/include/lcmaps/lcmaps_basic.h lcmaps-basic-interface :
  /usr/include/lcmaps/lcmaps_cred_data.h lcmaps-basic-interface :
  /usr/include/lcmaps/lcmaps_db_read.h lcmaps-basic-interface :
  /usr/include/lcmaps/lcmaps_defines.h lcmaps-basic-interface :
  /usr/include/lcmaps/lcmaps_gss_assist_gridmap.h lcmaps-basic-interface :
  /usr/include/lcmaps/lcmaps_if.h lcmaps-basic-interface :
  /usr/include/lcmaps/lcmaps_log.h lcmaps-basic-interface :
  /usr/include/lcmaps/lcmaps_modules.h lcmaps-basic-interface :
  /usr/include/lcmaps/lcmaps_return_account_from_pem.h lcmaps-basic-interface
  : /usr/include/lcmaps/lcmaps_return_poolindex_without_gsi.h lcmaps-basic-
  interface : /usr/include/lcmaps/lcmaps_types.h lcmaps-basic-interface :
  /usr/include/lcmaps/lcmaps_utils.h lcmaps-basic-interface :
  /usr/include/lcmaps/lcmaps_verify_account_from_pem.h lcmaps-basic-interface
  : /usr/include/lcmaps/lcmaps_version.h lcmaps-basic-interface :
  /usr/include/lcmaps/lcmaps_vo_data.h
  See: http://fedoraproject.org/wiki/Packaging/Guidelines#DevelPackages


===== MUST items =====

C/C++:
[x]: Package does not contain kernel modules.
[x]: Package contains no static executables.
[x]: ldconfig called in %post and %postun if required.
[x]: Package does not contain any libtool archives (.la)
[x]: Rpath absent or only used for internal libs.

Generic:
[x]: Package successfully compiles and builds into binary rpms on at least one
     supported primary architecture.
     Note: Using prebuilt packages
[x]: Package is licensed with an open-source compatible license and meets
     other legal requirements as defined in the legal section of Packaging
     Guidelines.
[x]: License field in the package spec file matches the actual license.
     Note: Checking patched sources after %prep for licenses. Licenses found:
     "Apache (v2.0)", "GPL (v2 or later)", "Unknown or generated". 5 files
     have unknown license. Detailed output of licensecheck in
     /export/home/orion/redhat/lcmaps-1.6.1/review-lcmaps/licensecheck.txt
[x]: License file installed when any subpackage combination is installed.
[x]: Package must own all directories that it creates.
     Note: Directories without known owners: /usr/include/lcmaps
[x]: %build honors applicable compiler flags or justifies otherwise.
[x]: All build dependencies are listed in BuildRequires, except for any that
     are listed in the exceptions section of Packaging Guidelines.
     Note: Using prebuilt rpms.
[x]: Package contains no bundled libraries without FPC exception.
[x]: Changelog in prescribed format.
[x]: Sources contain only permissible code or content.
[!]: Each %files section contains %defattr if rpm < 4.4
     Note: %defattr present but not needed
[-]: Package contains desktop file if it is a GUI application.
[!]: Development files must be in a -devel package
[x]: Package uses nothing in %doc for runtime.
[x]: Package consistently uses macros (instead of hard-coded directory names).
[x]: Package is named according to the Package Naming Guidelines.
[x]: Package does not generate any conflict.
[x]: Package obeys FHS, except libexecdir and /usr/target.
[-]: If the package is a rename of another package, proper Obsoletes and
     Provides are present.
[x]: Requires correct, justified where necessary.
[x]: Spec file is legible and written in American English.
[-]: Package contains systemd file(s) if in need.
[x]: Useful -debuginfo package or justification otherwise.
[x]: Package is not known to require an ExcludeArch tag.
[-]: Large documentation must go in a -doc subpackage. Large could be size
     (~1MB) or number of files.
     Note: Documentation size is 143360 bytes in 19 files.
[x]: Package complies to the Packaging Guidelines
[x]: Package installs properly.
[x]: Rpmlint is run on all rpms the build produces.
     Note: There are rpmlint messages (see attachment).
[x]: If (and only if) the source package includes the text of the license(s)
     in its own file, then that file, containing the text of the license(s)
     for the package is included in %doc.
[x]: Package requires other packages for directories it uses.
[x]: Package does not own files or directories owned by other packages.
[x]: Package uses either %{buildroot} or $RPM_BUILD_ROOT
[x]: Package does not run rm -rf %{buildroot} (or $RPM_BUILD_ROOT) at the
     beginning of %install.
[x]: Macros in Summary, %description expandable at SRPM build time.
[x]: Package does not contain duplicates in %files.
[x]: Permissions on files are set properly.
[x]: Package use %makeinstall only when make install' ' DESTDIR=... doesn't
     work.
[x]: Package is named using only allowed ASCII characters.
[x]: Package do not use a name that already exist
[x]: Package is not relocatable.
[x]: Sources used to build the package match the upstream source, as provided
     in the spec URL.
[x]: Spec file name must match the spec package %{name}, in the format
     %{name}.spec.
[x]: File names are valid UTF-8.
[x]: Packages must not store files under /srv, /opt or /usr/local

===== SHOULD items =====

Generic:
[x]: Reviewer should test that the package builds in mock.
[x]: EPEL5 requires explicit %clean with rm -rf %{buildroot} (or
     $RPM_BUILD_ROOT)
[-]: If the source package does not include license text(s) as a separate file
     from upstream, the packager SHOULD query upstream to include it.
[x]: Final provides and requires are sane (see attachments).
[x]: Fully versioned dependency in subpackages if applicable.
     Note: No Requires: %{name}%{?_isa} = %{version}-%{release} in lcmaps-
     without-gsi , lcmaps-globus-interface , lcmaps-openssl-interface ,
     lcmaps-basic-interface , lcmaps-devel , lcmaps-without-gsi-devel
[ ]: Package functions as described.
[x]: Latest version is packaged.
[x]: Package does not include license text files separate from upstream.
[x]: The placement of pkgconfig(.pc) files are correct.
     Note: lcmaps-globus-interface : /usr/share/pkgconfig/lcmaps-globus-
     interface.pc lcmaps-globus-interface : /usr/share/pkgconfig/lcmaps-
     interface.pc lcmaps-openssl-interface : /usr/share/pkgconfig/lcmaps-
     openssl-interface.pc lcmaps-basic-interface : /usr/share/pkgconfig
     /lcmaps-basic-interface.pc
[x]: Scriptlets must be sane, if used.
[x]: Description and summary sections in the package spec file contains
     translations for supported Non-English languages, if available.
[x]: Package should compile and build into binary rpms on all supported
     architectures.
[-]: %check is present and all tests pass.
[x]: Packages should try to preserve timestamps of original installed files.
[x]: Packager, Vendor, PreReq, Copyright tags should not be in spec file
[x]: Sources can be downloaded from URI in Source: tag
[x]: Dist tag is present (not strictly required in GL).
[x]: No file requires outside of /etc, /bin, /sbin, /usr/bin, /usr/sbin.
[x]: Uses parallel make %{?_smp_mflags} macro.
[x]: SourceX tarball generation or download is documented.
[x]: SourceX is a working URL.
[x]: Spec use %global instead of %define unless justified.

===== EXTRA items =====

Generic:
[x]: Rpmlint is run on all installed packages.
     Note: There are rpmlint messages (see attachment).
[x]: Large data in /usr/share should live in a noarch subpackage if package is
     arched.
[x]: Spec file according to URL is the same as in SRPM.


Rpmlint
-------
Checking: lcmaps-1.6.1-1.fc21.x86_64.rpm
          lcmaps-without-gsi-1.6.1-1.fc21.x86_64.rpm
          lcmaps-globus-interface-1.6.1-1.fc21.noarch.rpm
          lcmaps-openssl-interface-1.6.1-1.fc21.noarch.rpm
          lcmaps-basic-interface-1.6.1-1.fc21.noarch.rpm
          lcmaps-devel-1.6.1-1.fc21.x86_64.rpm
          lcmaps-without-gsi-devel-1.6.1-1.fc21.x86_64.rpm
          lcmaps-1.6.1-1.fc21.src.rpm
lcmaps.x86_64: W: spelling-error %description -l en_US middleware -> middle ware, middle-ware, middleweight
lcmaps.x86_64: W: spelling-error %description -l en_US pluggable -> plug gable, plug-gable, plugged
lcmaps.x86_64: W: devel-file-in-non-devel-package /usr/lib64/liblcmaps_return_poolindex.so
lcmaps.x86_64: W: devel-file-in-non-devel-package /usr/lib64/liblcmaps_gss_assist_gridmap.so
lcmaps.x86_64: W: devel-file-in-non-devel-package /usr/lib64/liblcmaps_verify_account_from_pem.so
lcmaps.x86_64: W: devel-file-in-non-devel-package /usr/lib64/liblcmaps.so
lcmaps.x86_64: W: devel-file-in-non-devel-package /usr/lib64/liblcmaps_return_account_from_pem.so
lcmaps-without-gsi.x86_64: W: spelling-error %description -l en_US middleware -> middle ware, middle-ware, middleweight
lcmaps-without-gsi.x86_64: W: spelling-error %description -l en_US pluggable -> plug gable, plug-gable, plugged
lcmaps-without-gsi.x86_64: W: devel-file-in-non-devel-package /usr/lib64/liblcmaps_return_poolindex_without_gsi.so
lcmaps-without-gsi.x86_64: W: devel-file-in-non-devel-package /usr/lib64/liblcmaps_without_gsi.so
lcmaps-without-gsi.x86_64: W: devel-file-in-non-devel-package /usr/lib64/liblcmaps_gss_assist_gridmap_without_gsi.so
lcmaps-globus-interface.noarch: E: devel-dependency globus-gssapi-gsi-devel
lcmaps-globus-interface.noarch: W: spelling-error %description -l en_US middleware -> middle ware, middle-ware, middleweight
lcmaps-globus-interface.noarch: W: no-documentation
lcmaps-globus-interface.noarch: W: devel-file-in-non-devel-package /usr/include/lcmaps/lcmaps_return_poolindex.h
lcmaps-globus-interface.noarch: W: devel-file-in-non-devel-package /usr/include/lcmaps/lcmaps.h
lcmaps-globus-interface.noarch: W: devel-file-in-non-devel-package /usr/include/lcmaps/lcmaps_globus.h
lcmaps-globus-interface.noarch: W: devel-file-in-non-devel-package /usr/share/pkgconfig/lcmaps-interface.pc
lcmaps-globus-interface.noarch: W: devel-file-in-non-devel-package /usr/include/lcmaps/_lcmaps_return_poolindex.h
lcmaps-globus-interface.noarch: W: devel-file-in-non-devel-package /usr/share/pkgconfig/lcmaps-globus-interface.pc
lcmaps-openssl-interface.noarch: E: devel-dependency openssl-devel
lcmaps-openssl-interface.noarch: W: spelling-error %description -l en_US middleware -> middle ware, middle-ware, middleweight
lcmaps-openssl-interface.noarch: W: no-documentation
lcmaps-openssl-interface.noarch: W: devel-file-in-non-devel-package /usr/include/lcmaps/lcmaps_openssl.h
lcmaps-openssl-interface.noarch: W: devel-file-in-non-devel-package /usr/share/pkgconfig/lcmaps-openssl-interface.pc
lcmaps-basic-interface.noarch: W: spelling-error %description -l en_US middleware -> middle ware, middle-ware, middleweight
lcmaps-basic-interface.noarch: W: devel-file-in-non-devel-package /usr/include/lcmaps/lcmaps_basic.h
lcmaps-basic-interface.noarch: W: devel-file-in-non-devel-package /usr/include/lcmaps/lcmaps_utils.h
lcmaps-basic-interface.noarch: W: devel-file-in-non-devel-package /usr/share/pkgconfig/lcmaps-basic-interface.pc
lcmaps-basic-interface.noarch: W: devel-file-in-non-devel-package /usr/include/lcmaps/lcmaps_version.h
lcmaps-basic-interface.noarch: W: devel-file-in-non-devel-package /usr/include/lcmaps/_lcmaps_verify_account_from_pem.h
lcmaps-basic-interface.noarch: W: devel-file-in-non-devel-package /usr/include/lcmaps/lcmaps_return_poolindex_without_gsi.h
lcmaps-basic-interface.noarch: W: devel-file-in-non-devel-package /usr/include/lcmaps/_lcmaps_return_account_from_pem.h
lcmaps-basic-interface.noarch: W: devel-file-in-non-devel-package /usr/include/lcmaps/lcmaps_gss_assist_gridmap.h
lcmaps-basic-interface.noarch: W: devel-file-in-non-devel-package /usr/include/lcmaps/lcmaps_account.h
lcmaps-basic-interface.noarch: W: devel-file-in-non-devel-package /usr/include/lcmaps/lcmaps_defines.h
lcmaps-basic-interface.noarch: W: devel-file-in-non-devel-package /usr/include/lcmaps/_lcmaps_gss_assist_gridmap.h
lcmaps-basic-interface.noarch: W: devel-file-in-non-devel-package /usr/include/lcmaps/lcmaps_cred_data.h
lcmaps-basic-interface.noarch: W: devel-file-in-non-devel-package /usr/include/lcmaps/lcmaps_db_read.h
lcmaps-basic-interface.noarch: W: devel-file-in-non-devel-package /usr/include/lcmaps/lcmaps_if.h
lcmaps-basic-interface.noarch: W: devel-file-in-non-devel-package /usr/include/lcmaps/lcmaps_modules.h
lcmaps-basic-interface.noarch: W: devel-file-in-non-devel-package /usr/include/lcmaps/lcmaps_log.h
lcmaps-basic-interface.noarch: W: devel-file-in-non-devel-package /usr/include/lcmaps/lcmaps_vo_data.h
lcmaps-basic-interface.noarch: W: devel-file-in-non-devel-package /usr/include/lcmaps/lcmaps_return_account_from_pem.h
lcmaps-basic-interface.noarch: W: devel-file-in-non-devel-package /usr/include/lcmaps/lcmaps_arguments.h
lcmaps-basic-interface.noarch: W: devel-file-in-non-devel-package /usr/include/lcmaps/lcmaps_verify_account_from_pem.h
lcmaps-basic-interface.noarch: W: devel-file-in-non-devel-package /usr/include/lcmaps/_lcmaps.h
lcmaps-basic-interface.noarch: W: devel-file-in-non-devel-package /usr/include/lcmaps/lcmaps_types.h
lcmaps-devel.x86_64: W: spelling-error %description -l en_US middleware -> middle ware, middle-ware, middleweight
lcmaps-devel.x86_64: W: spelling-error %description -l en_US pluggable -> plug gable, plug-gable, plugged
lcmaps-devel.x86_64: W: no-documentation
lcmaps-without-gsi-devel.x86_64: W: spelling-error %description -l en_US middleware -> middle ware, middle-ware, middleweight
lcmaps-without-gsi-devel.x86_64: W: spelling-error %description -l en_US pluggable -> plug gable, plug-gable, plugged
lcmaps-without-gsi-devel.x86_64: W: no-documentation
lcmaps.src: W: spelling-error %description -l en_US middleware -> middle ware, middle-ware, middleweight
lcmaps.src: W: spelling-error %description -l en_US pluggable -> plug gable, plug-gable, plugged
8 packages and 0 specfiles checked; 2 errors, 55 warnings.




Rpmlint (installed packages)
----------------------------
rface lcmaps-without-gsi lcmaps-without-gsi-devel lcmaps lcmaps-basic-interface
lcmaps-openssl-interface.noarch: E: devel-dependency openssl-devel
lcmaps-openssl-interface.noarch: W: spelling-error %description -l en_US middleware -> middle ware, middle-ware, middleweight
lcmaps-openssl-interface.noarch: W: no-documentation
lcmaps-openssl-interface.noarch: W: devel-file-in-non-devel-package /usr/include/lcmaps/lcmaps_openssl.h
lcmaps-openssl-interface.noarch: W: devel-file-in-non-devel-package /usr/share/pkgconfig/lcmaps-openssl-interface.pc
lcmaps-devel.x86_64: W: spelling-error %description -l en_US middleware -> middle ware, middle-ware, middleweight
lcmaps-devel.x86_64: W: spelling-error %description -l en_US pluggable -> plug gable, plug-gable, plugged
lcmaps-devel.x86_64: W: no-documentation
lcmaps-globus-interface.noarch: E: devel-dependency globus-gssapi-gsi-devel
lcmaps-globus-interface.noarch: W: spelling-error %description -l en_US middleware -> middle ware, middle-ware, middleweight
lcmaps-globus-interface.noarch: W: no-documentation
lcmaps-globus-interface.noarch: W: devel-file-in-non-devel-package /usr/include/lcmaps/lcmaps_return_poolindex.h
lcmaps-globus-interface.noarch: W: devel-file-in-non-devel-package /usr/include/lcmaps/lcmaps.h
lcmaps-globus-interface.noarch: W: devel-file-in-non-devel-package /usr/include/lcmaps/lcmaps_globus.h
lcmaps-globus-interface.noarch: W: devel-file-in-non-devel-package /usr/share/pkgconfig/lcmaps-interface.pc
lcmaps-globus-interface.noarch: W: devel-file-in-non-devel-package /usr/include/lcmaps/_lcmaps_return_poolindex.h
lcmaps-globus-interface.noarch: W: devel-file-in-non-devel-package /usr/share/pkgconfig/lcmaps-globus-interface.pc
lcmaps-without-gsi.x86_64: W: spelling-error %description -l en_US middleware -> middle ware, middle-ware, middleweight
lcmaps-without-gsi.x86_64: W: spelling-error %description -l en_US pluggable -> plug gable, plug-gable, plugged
lcmaps-without-gsi.x86_64: W: unused-direct-shlib-dependency /usr/lib64/liblcmaps_gss_assist_gridmap_without_gsi.so.0.0.0 /lib64/libdl.so.2
lcmaps-without-gsi.x86_64: W: unused-direct-shlib-dependency /usr/lib64/liblcmaps_return_poolindex_without_gsi.so.0.0.0 /lib64/libdl.so.2
lcmaps-without-gsi.x86_64: W: devel-file-in-non-devel-package /usr/lib64/liblcmaps_return_poolindex_without_gsi.so
lcmaps-without-gsi.x86_64: W: devel-file-in-non-devel-package /usr/lib64/liblcmaps_without_gsi.so
lcmaps-without-gsi.x86_64: W: devel-file-in-non-devel-package /usr/lib64/liblcmaps_gss_assist_gridmap_without_gsi.so
lcmaps-without-gsi-devel.x86_64: W: spelling-error %description -l en_US middleware -> middle ware, middle-ware, middleweight
lcmaps-without-gsi-devel.x86_64: W: spelling-error %description -l en_US pluggable -> plug gable, plug-gable, plugged
lcmaps-without-gsi-devel.x86_64: W: no-documentation
lcmaps.x86_64: W: spelling-error %description -l en_US middleware -> middle ware, middle-ware, middleweight
lcmaps.x86_64: W: spelling-error %description -l en_US pluggable -> plug gable, plug-gable, plugged
lcmaps.x86_64: W: unused-direct-shlib-dependency /usr/lib64/liblcmaps_verify_account_from_pem.so.0.0.0 /lib64/libglobus_gssapi_gsi.so.4
lcmaps.x86_64: W: unused-direct-shlib-dependency /usr/lib64/liblcmaps_verify_account_from_pem.so.0.0.0 /lib64/libvomsapi.so.1
lcmaps.x86_64: W: unused-direct-shlib-dependency /usr/lib64/liblcmaps_verify_account_from_pem.so.0.0.0 /lib64/libssl.so.10
lcmaps.x86_64: W: unused-direct-shlib-dependency /usr/lib64/liblcmaps_verify_account_from_pem.so.0.0.0 /lib64/libglobus_gsi_credential.so.1
lcmaps.x86_64: W: unused-direct-shlib-dependency /usr/lib64/liblcmaps_verify_account_from_pem.so.0.0.0 /lib64/libglobus_common.so.0
lcmaps.x86_64: W: unused-direct-shlib-dependency /usr/lib64/liblcmaps_verify_account_from_pem.so.0.0.0 /lib64/libcrypto.so.10
lcmaps.x86_64: W: unused-direct-shlib-dependency /usr/lib64/liblcmaps_verify_account_from_pem.so.0.0.0 /lib64/libdl.so.2
lcmaps.x86_64: W: unused-direct-shlib-dependency /usr/lib64/liblcmaps_return_account_from_pem.so.0.0.0 /lib64/libglobus_gssapi_gsi.so.4
lcmaps.x86_64: W: unused-direct-shlib-dependency /usr/lib64/liblcmaps_return_account_from_pem.so.0.0.0 /lib64/libvomsapi.so.1
lcmaps.x86_64: W: unused-direct-shlib-dependency /usr/lib64/liblcmaps_return_account_from_pem.so.0.0.0 /lib64/libssl.so.10
lcmaps.x86_64: W: unused-direct-shlib-dependency /usr/lib64/liblcmaps_return_account_from_pem.so.0.0.0 /lib64/libglobus_gsi_credential.so.1
lcmaps.x86_64: W: unused-direct-shlib-dependency /usr/lib64/liblcmaps_return_account_from_pem.so.0.0.0 /lib64/libglobus_common.so.0
lcmaps.x86_64: W: unused-direct-shlib-dependency /usr/lib64/liblcmaps_return_account_from_pem.so.0.0.0 /lib64/libcrypto.so.10
lcmaps.x86_64: W: unused-direct-shlib-dependency /usr/lib64/liblcmaps_return_account_from_pem.so.0.0.0 /lib64/libdl.so.2
lcmaps.x86_64: W: unused-direct-shlib-dependency /usr/lib64/liblcmaps_return_poolindex.so.0.0.0 /lib64/libvomsapi.so.1
lcmaps.x86_64: W: unused-direct-shlib-dependency /usr/lib64/liblcmaps_return_poolindex.so.0.0.0 /lib64/libssl.so.10
lcmaps.x86_64: W: unused-direct-shlib-dependency /usr/lib64/liblcmaps_return_poolindex.so.0.0.0 /lib64/libglobus_gsi_credential.so.1
lcmaps.x86_64: W: unused-direct-shlib-dependency /usr/lib64/liblcmaps_return_poolindex.so.0.0.0 /lib64/libcrypto.so.10
lcmaps.x86_64: W: unused-direct-shlib-dependency /usr/lib64/liblcmaps_return_poolindex.so.0.0.0 /lib64/libdl.so.2
lcmaps.x86_64: W: unused-direct-shlib-dependency /usr/lib64/liblcmaps.so.0.0.0 /lib64/libssl.so.10
lcmaps.x86_64: W: unused-direct-shlib-dependency /usr/lib64/liblcmaps_gss_assist_gridmap.so.0.0.0 /lib64/libglobus_gssapi_gsi.so.4
lcmaps.x86_64: W: unused-direct-shlib-dependency /usr/lib64/liblcmaps_gss_assist_gridmap.so.0.0.0 /lib64/libvomsapi.so.1
lcmaps.x86_64: W: unused-direct-shlib-dependency /usr/lib64/liblcmaps_gss_assist_gridmap.so.0.0.0 /lib64/libssl.so.10
lcmaps.x86_64: W: unused-direct-shlib-dependency /usr/lib64/liblcmaps_gss_assist_gridmap.so.0.0.0 /lib64/libglobus_gsi_credential.so.1
lcmaps.x86_64: W: unused-direct-shlib-dependency /usr/lib64/liblcmaps_gss_assist_gridmap.so.0.0.0 /lib64/libglobus_common.so.0
lcmaps.x86_64: W: unused-direct-shlib-dependency /usr/lib64/liblcmaps_gss_assist_gridmap.so.0.0.0 /lib64/libcrypto.so.10
lcmaps.x86_64: W: unused-direct-shlib-dependency /usr/lib64/liblcmaps_gss_assist_gridmap.so.0.0.0 /lib64/libdl.so.2
lcmaps.x86_64: W: devel-file-in-non-devel-package /usr/lib64/liblcmaps_return_poolindex.so
lcmaps.x86_64: W: devel-file-in-non-devel-package /usr/lib64/liblcmaps_gss_assist_gridmap.so
lcmaps.x86_64: W: devel-file-in-non-devel-package /usr/lib64/liblcmaps_verify_account_from_pem.so
lcmaps.x86_64: W: devel-file-in-non-devel-package /usr/lib64/liblcmaps.so
lcmaps.x86_64: W: devel-file-in-non-devel-package /usr/lib64/liblcmaps_return_account_from_pem.so
lcmaps-basic-interface.noarch: W: spelling-error %description -l en_US middleware -> middle ware, middle-ware, middleweight
lcmaps-basic-interface.noarch: W: devel-file-in-non-devel-package /usr/include/lcmaps/lcmaps_basic.h
lcmaps-basic-interface.noarch: W: devel-file-in-non-devel-package /usr/include/lcmaps/lcmaps_utils.h
lcmaps-basic-interface.noarch: W: devel-file-in-non-devel-package /usr/share/pkgconfig/lcmaps-basic-interface.pc
lcmaps-basic-interface.noarch: W: devel-file-in-non-devel-package /usr/include/lcmaps/lcmaps_version.h
lcmaps-basic-interface.noarch: W: devel-file-in-non-devel-package /usr/include/lcmaps/_lcmaps_verify_account_from_pem.h
lcmaps-basic-interface.noarch: W: devel-file-in-non-devel-package /usr/include/lcmaps/lcmaps_return_poolindex_without_gsi.h
lcmaps-basic-interface.noarch: W: devel-file-in-non-devel-package /usr/include/lcmaps/_lcmaps_return_account_from_pem.h
lcmaps-basic-interface.noarch: W: devel-file-in-non-devel-package /usr/include/lcmaps/lcmaps_gss_assist_gridmap.h
lcmaps-basic-interface.noarch: W: devel-file-in-non-devel-package /usr/include/lcmaps/lcmaps_account.h
lcmaps-basic-interface.noarch: W: devel-file-in-non-devel-package /usr/include/lcmaps/lcmaps_defines.h
lcmaps-basic-interface.noarch: W: devel-file-in-non-devel-package /usr/include/lcmaps/_lcmaps_gss_assist_gridmap.h
lcmaps-basic-interface.noarch: W: devel-file-in-non-devel-package /usr/include/lcmaps/lcmaps_cred_data.h
lcmaps-basic-interface.noarch: W: devel-file-in-non-devel-package /usr/include/lcmaps/lcmaps_db_read.h
lcmaps-basic-interface.noarch: W: devel-file-in-non-devel-package /usr/include/lcmaps/lcmaps_if.h
lcmaps-basic-interface.noarch: W: devel-file-in-non-devel-package /usr/include/lcmaps/lcmaps_modules.h
lcmaps-basic-interface.noarch: W: devel-file-in-non-devel-package /usr/include/lcmaps/lcmaps_log.h
lcmaps-basic-interface.noarch: W: devel-file-in-non-devel-package /usr/include/lcmaps/lcmaps_vo_data.h
lcmaps-basic-interface.noarch: W: devel-file-in-non-devel-package /usr/include/lcmaps/lcmaps_return_account_from_pem.h
lcmaps-basic-interface.noarch: W: devel-file-in-non-devel-package /usr/include/lcmaps/lcmaps_arguments.h
lcmaps-basic-interface.noarch: W: devel-file-in-non-devel-package /usr/include/lcmaps/lcmaps_verify_account_from_pem.h
lcmaps-basic-interface.noarch: W: devel-file-in-non-devel-package /usr/include/lcmaps/_lcmaps.h
lcmaps-basic-interface.noarch: W: devel-file-in-non-devel-package /usr/include/lcmaps/lcmaps_types.h
7 packages and 0 specfiles checked; 2 errors, 82 warnings.
# echo 'rpmlint-done:'



Requires
--------
lcmaps-openssl-interface (rpmlib, GLIBC filtered):
    /usr/bin/pkg-config
    lcmaps-basic-interface
    openssl-devel
    pkgconfig
    pkgconfig(lcmaps-basic-interface)
    pkgconfig(openssl)

lcmaps-devel (rpmlib, GLIBC filtered):
    /usr/bin/pkg-config
    lcmaps
    lcmaps-globus-interface
    pkgconfig(globus-gsi-cert-utils)
    pkgconfig(globus-gss-assist)
    pkgconfig(globus-gssapi-gsi)
    pkgconfig(lcmaps)
    pkgconfig(openssl)
    pkgconfig(voms-2.0)

lcmaps-globus-interface (rpmlib, GLIBC filtered):
    /usr/bin/pkg-config
    globus-gssapi-gsi-devel
    lcmaps-openssl-interface
    pkgconfig
    pkgconfig(globus-gssapi-gsi)
    pkgconfig(lcmaps-globus-interface)
    pkgconfig(lcmaps-openssl-interface)

lcmaps-without-gsi (rpmlib, GLIBC filtered):
    /sbin/ldconfig
    libc.so.6()(64bit)
    libdl.so.2()(64bit)
    liblcmaps_gss_assist_gridmap_without_gsi.so.0()(64bit)
    liblcmaps_return_poolindex_without_gsi.so.0()(64bit)
    liblcmaps_without_gsi.so.0()(64bit)
    rtld(GNU_HASH)

lcmaps-without-gsi-devel (rpmlib, GLIBC filtered):
    /usr/bin/pkg-config
    lcmaps-basic-interface
    lcmaps-without-gsi
    pkgconfig(lcmaps-without-gsi)

lcmaps (rpmlib, GLIBC filtered):
    /sbin/ldconfig
    libc.so.6()(64bit)
    libcrypto.so.10()(64bit)
    libcrypto.so.10(libcrypto.so.10)(64bit)
    libdl.so.2()(64bit)
    libglobus_common.so.0()(64bit)
    libglobus_common.so.0(GLOBUS_COMMON_14)(64bit)
    libglobus_gsi_credential.so.1()(64bit)
    libglobus_gss_assist.so.3()(64bit)
    libglobus_gssapi_gsi.so.4()(64bit)
    libglobus_gssapi_gsi.so.4(globus_gssapi_gsi)(64bit)
    liblcmaps.so.0()(64bit)
    liblcmaps_gss_assist_gridmap.so.0()(64bit)
    liblcmaps_return_account_from_pem.so.0()(64bit)
    liblcmaps_return_poolindex.so.0()(64bit)
    liblcmaps_verify_account_from_pem.so.0()(64bit)
    libssl.so.10()(64bit)
    libvomsapi.so.1()(64bit)
    rtld(GNU_HASH)

lcmaps-basic-interface (rpmlib, GLIBC filtered):
    /usr/bin/pkg-config
    pkgconfig



Provides
--------
lcmaps-openssl-interface:
    lcmaps-openssl-interface
    pkgconfig(lcmaps-openssl-interface)

lcmaps-devel:
    lcmaps-devel
    lcmaps-devel(x86-64)
    pkgconfig(lcmaps)
    pkgconfig(lcmaps-gss-assist-gridmap)
    pkgconfig(lcmaps-return-account-from-pem)
    pkgconfig(lcmaps-return-poolindex)
    pkgconfig(lcmaps-verify-account-from-pem)

lcmaps-globus-interface:
    lcmaps-globus-interface
    lcmaps-interface
    pkgconfig(lcmaps-globus-interface)
    pkgconfig(lcmaps-interface)

lcmaps-without-gsi:
    lcmaps-without-gsi
    lcmaps-without-gsi(x86-64)
    liblcmaps_gss_assist_gridmap_without_gsi.so.0()(64bit)
    liblcmaps_return_poolindex_without_gsi.so.0()(64bit)
    liblcmaps_without_gsi.so.0()(64bit)

lcmaps-without-gsi-devel:
    lcmaps-without-gsi-devel
    lcmaps-without-gsi-devel(x86-64)
    pkgconfig(lcmaps-gss-assist-gridmap-without-gsi)
    pkgconfig(lcmaps-return-poolindex-without-gsi)
    pkgconfig(lcmaps-without-gsi)

lcmaps:
    lcmaps
    lcmaps(x86-64)
    liblcmaps.so.0()(64bit)
    liblcmaps_gss_assist_gridmap.so.0()(64bit)
    liblcmaps_return_account_from_pem.so.0()(64bit)
    liblcmaps_return_poolindex.so.0()(64bit)
    liblcmaps_verify_account_from_pem.so.0()(64bit)

lcmaps-basic-interface:
    lcmaps-basic-interface
    pkgconfig(lcmaps-basic-interface)



Unversioned so-files
--------------------
lcmaps: /usr/lib64/liblcmaps.so
lcmaps: /usr/lib64/liblcmaps_gss_assist_gridmap.so
lcmaps: /usr/lib64/liblcmaps_return_account_from_pem.so
lcmaps: /usr/lib64/liblcmaps_return_poolindex.so
lcmaps: /usr/lib64/liblcmaps_verify_account_from_pem.so
lcmaps-without-gsi: /usr/lib64/liblcmaps_gss_assist_gridmap_without_gsi.so
lcmaps-without-gsi: /usr/lib64/liblcmaps_return_poolindex_without_gsi.so
lcmaps-without-gsi: /usr/lib64/liblcmaps_without_gsi.so

Source checksums
----------------
http://software.nikhef.nl/security/lcmaps/lcmaps-1.6.1.tar.gz :
  CHECKSUM(SHA256) this package     : 42fc067cef226d0745ba3a52ff1519a12f2942a5ec5fa464c77fd24262a71a71
  CHECKSUM(SHA256) upstream package : 42fc067cef226d0745ba3a52ff1519a12f2942a5ec5fa464c77fd24262a71a71


Generated by fedora-review 0.5.0 (920221d) last change: 2013-08-30
Command line :/usr/bin/fedora-review -n lcmaps -p
Buildroot used: fedora-19-x86_64
Active plugins: Generic, Shell-api, C/C++
Disabled plugins: Java, Python, SugarActivity, Perl, R, PHP, Ruby
Disabled flags: EPEL5, EXARCH, DISTTAG
Comment 18 Dennis van Dok 2013-10-22 09:21:37 EDT
(In reply to Orion Poplawski from comment #17)
> I'll take this.
> 
> General:
> 
> - I think http://wiki.nikhef.nl/grid/LCMAPS might be a better URL for this
> package.

OK.

> - I don't like the -interface naming convention for packages that contain
> -devel files (headers).  Use -devel instead.

We've spent some time thinking about this. Normally a -devel package is dependent on its main package, but the way it is set up this is not at all required for LCMAPS. Is it OK to set up the lcmaps-*-devel packages without depending on lcmaps?


> - If the .so files are going to be dlopen()ed instead of linked to, they
> should go into %{_libdir}/%{name} and not be in the general linker path.

OK.
 
> Then you can drop ldconfig as well.

Right.

> - If your are going to have sonames for your dlopen()ed libraries, I would
> argue that you should be dlopen()ing the sonames directly and not the .so
> files.

There is some automatic detection in the code to see which version of the library is opened. This makes the software more forward and backward compatible. That is the reason we open the .so file instead of e.g. lcmaps.so.0.


> - Drop %defattr(), not even needed in EL5
> - Please address the various unused-direct-shlib-dependency rpmlint warnings.

OK.

I'll upload a new version soon.

Thanks,

Dennis
Comment 19 Orion Poplawski 2013-10-22 09:46:11 EDT
(In reply to Dennis van Dok from comment #18)
> (In reply to Orion Poplawski from comment #17)
> > - I don't like the -interface naming convention for packages that contain
> > -devel files (headers).  Use -devel instead.
> 
> We've spent some time thinking about this. Normally a -devel package is
> dependent on its main package, but the way it is set up this is not at all
> required for LCMAPS. Is it OK to set up the lcmaps-*-devel packages without
> depending on lcmaps?

If the -devel package truly doesn't depend on the base package, I'm fine with that.
Comment 20 Dennis van Dok 2013-10-23 10:43:30 EDT
(In reply to Orion Poplawski from comment #17)

> - If the .so files are going to be dlopen()ed instead of linked to, they
> should go into %{_libdir}/%{name} and not be in the general linker path. 
> Then you can drop ldconfig as well.

Actually, we support both linking and dlopening. So I guess their place is still in %{_libdir}.
Comment 21 Dennis van Dok 2013-10-23 22:11:30 EDT
New Spec URL: https://ndpfsvn.nikhef.nl/cgi-bin/viewvc.cgi/mwsec/packaging/fedora/branches/rawhide/lcmaps.spec?revision=17102&view=co

Renamed all the -interface packages to -devel. I've fixed libtool to get rid of the unused-direct-shlib-dependency errors.

I hope the situation with the .so files is clear; they may be used with direct linking *or* using dlopen(). The latter is version-independent, which is why we don't use the versioned .so file there (version detection is built into the library).

Thanks for reviewing!
Comment 22 Dennis van Dok 2013-10-23 22:17:07 EDT
New Spec URL: https://ndpfsvn.nikhef.nl/ro/mwsec/packaging/fedora/branches/rawhide/lcmaps.spec

(foiled again by the URL parser!)
Comment 23 Dennis van Dok 2013-10-23 22:23:00 EDT
New SRPM URL: http://www.nikhef.nl/~dennisvd/lcmaps-1.6.1-2.fc19.src.rpm

Apparently the SRPM must match the spec file when running fedora-review.
Comment 24 Michael Schwendt 2013-10-24 02:25:39 EDT
The packaging aims at much flexibility, but due to that there are pitfalls.

In general, a versioned base package dependency in -devel packages is a MUST:
https://fedoraproject.org/wiki/Packaging:Guidelines#Requiring_Base_Package

That dependency ensures that build-time and run-time packages are kept in sync. There is a run-time package, and the various inter-dependencies chain also ought to be in sync (e.g. with regard to bug-fixes, contents, file conflicts).

Currently, installing any of the three -*-devel packages does not result in pulling in a matching lcmaps package ([lcmaps-devel ->] lcmaps-globus-devel -> lcmaps-openssl-devel -> lcmaps-basic-devel).

The base dependency also ought to be arch-specific using %{?_isa}, but since the separate -*-devel packages here have been made "noarch", it's getting more difficult. The dependency on openssl-devel is not arch-specific. The dep on pkgconfig(openssl) as a result of "Requires: openssl" in the .pc file always links with "pkg-config --libs openssl":

  $ rpm -qpR lcmaps-openssl-devel-1.6.1-2.fc21.noarch.rpm|grep -v ^rpm
  /usr/bin/pkg-config
  lcmaps-basic-devel = 1.6.1-2.fc21
  openssl-devel
  pkgconfig
  pkgconfig(lcmaps-basic-interface) = 1.6.1
  pkgconfig(openssl)

Please notice the automatic RPM dependencies for pkgconfig file contents as well as /usr/bin/pkgconfig (-> no need to explicitly Requires pkgconfig). Preferably, you rely on those automatic deps, or you make the RPM package deps match the pkgconfig deps.

The pkgconfig file in lcmaps-devel contains -llcmaps (and several other .pc files in that package link with other libs), so that's another reason for adding a dependency that makes available the needed libs. The pkgconfig inter-dependencies would be broken, if the build-time libs are missing.

Currently, the pkgconfig deps are broken, because the package needed for linking with -llcmaps (and the other libs) is not pulled in via pkgconfig "Requires". It is only pulled in indirectly via the different RPM based dependency-chain. The pkgconfig file "Requires: lcmaps" is useless, because it is included in the same package, but that one doesn't include the .so symlinks.

For a library that will also be used for dlopening (not just theoretically but with programs doing that actually), any library developer could come and claim it is intentional that compiling with the API doesn't need access to the libs. That would be a corner-case, because for run-time testing a built client, the libs would not be available -> dlopening would fail.
Comment 25 Dennis van Dok 2013-10-24 04:41:42 EDT
(In reply to Michael Schwendt from comment #24)

> For a library that will also be used for dlopening (not just theoretically
> but with programs doing that actually), any library developer could come and
> claim it is intentional that compiling with the API doesn't need access to
> the libs. That would be a corner-case, because for run-time testing a built
> client, the libs would not be available -> dlopening would fail.

Are you suggesting that we drop the separation and just require the run-time package from lcmaps-basic-devel? And make all -*-devel packages arch-specific?
Comment 26 Michael Schwendt 2013-10-24 06:02:00 EDT
Yes, I would prefer simplified packaging. Orion is the reviewer, though. And you've put some thought into the current packaging, too. That's why I pointed out some pitfalls.

I'm not convinced there should be more than three -devel packages,

  lcmaps-devel
  lcmaps-common-devel
  lcmaps-without-gsi-devel

and two alternative runtime packages:

  lcmaps
  lcmaps-without-gsi

Bottom up: 

For the run-time there is "lcmaps" and the alternative "lcmaps-without-gsi", which has less dependencies. One may want either one. So far so good.

For the build-time, since "lcmaps-without-gsi" contains different libs, a corresponding "lcmaps-without-gsi-devel" package is added and requires its base libs and the common header package lcmaps-common-devel. Since "lcmaps" has deps on globus, openssl and voms, IMO there is little benefit when making build-time deps on those optional via multiple -*-devel packages. Hence a single lcmaps-devel, which requires its base libs and the -common-devel, too.

Inside the -devel packages, the individual pieces are nicely separated via many alternative pkgconfig files. And not even the two runtime packages conflict.


Often, if there are too many subpackages, users (including developers) install everything, because they don't want to hunt down which packages they need. The developers here need to use specific pkgconfig files and don't build with anything accidentally. There are not even alternative headers, but just one package that contains all of them.

And only with arch-specific -devel packages, you could add an arch-specific dep on openssl-devel. Beneficial for multiarch installations:

 # yum list openssl-devel|grep ^o
 openssl-devel.x86_64              1:1.0.1e-28.fc20              @updates-testing
 openssl-devel.i686                1:1.0.1e-28.fc20              updates-testing
Comment 27 Dennis van Dok 2013-10-24 08:12:28 EDT
(In reply to Michael Schwendt from comment #26)
> Yes, I would prefer simplified packaging. Orion is the reviewer, though. And
> you've put some thought into the current packaging, too. That's why I
> pointed out some pitfalls.

I understand.

> I'm not convinced there should be more than three -devel packages,

And I'm not going to try to convince you. The packaging as we designed it dates back to a time where we needed to integrate our Grid middleware with many other packages on Scientific Linux 4 (later 5); dependencies such as Globus Toolkit and VOMS were not in the mainstream distribution then as they are now. This makes packaging much simpler.

>   lcmaps-devel
>   lcmaps-common-devel
>   lcmaps-without-gsi-devel

OK; the lcmaps-common-devel will be the former lcmaps-basic-devel; the lcmaps-devel will absorb lcmaps-{openssl,globus}-devel. The without-gsi-devel will only contain the .pc files.

I will prepare and test the new packaging, but it will take a little time.

Thanks for the help!

By the way, the situation remains that the unversioned .so files need to be in the run-time package (because of dlopen()). This causes rpmlint warnings but there's not much I can do about it.
Comment 28 Orion Poplawski 2013-10-24 10:26:18 EDT
Just to be explicit - all of Michael's comments are spot on and appreciated.  Thank you for following them.
Comment 29 Michael Schwendt 2013-10-24 15:29:24 EDT
> By the way, the situation remains that the unversioned .so files
> need to be in the run-time package (because of dlopen()). This
> causes rpmlint warnings but there's not much I can do about it.

Right. If it's by design, not much can be done about it. It complicates the RPM packaging of any interface users, because for ABI compatibility of package contents you cannot rely on automatically determined dependencies (SONAME based ones). The burden of keeping package upgrades ABI-compatible is completely on the shoulders of the package maintainer. Only manually added deps can help in that case.

Since all libs are still at version .so.0 (even .so.0.0.0), any idea when that version would change for the first time? So far, it would have worked just fine to dlopen the .so.0 libs instead.
Comment 30 Dennis van Dok 2013-10-25 10:10:18 EDT
> Right. If it's by design, not much can be done about it. It complicates the
> RPM packaging of any interface users, because for ABI compatibility of
> package contents you cannot rely on automatically determined dependencies
> (SONAME based ones).

That's understood, and we thought about that.

> The burden of keeping package upgrades ABI-compatible
> is completely on the shoulders of the package maintainer. Only manually
> added deps can help in that case.

The internals of the library should take care of most cases; the only reason to specify a versioned dep is if the client needs a newer feature that wasn't there in an earlier case.

> Since all libs are still at version .so.0 (even .so.0.0.0), any idea when
> that version would change for the first time? So far, it would have worked
> just fine to dlopen the .so.0 libs instead.

We (speaking with upstream hat on here) are very careful not to break the ABI. So far, there hasn't been a need and perhaps there never will be. So maybe in retrospect we tried to plan ahead too far.
Comment 31 Dennis van Dok 2013-11-06 10:42:25 EST
New SRPM URL: http://www.nikhef.nl/~dennisvd/lcmaps-1.6.1-2.fc19.src.rpm

I've reduced the number of packages as suggested. The only thing that's still not OK is the unused-direct-shlib-dependencies. We don't really know how to fix all of these.

 - the libssl dependency is due to a bug in the voms-2.0.pc file which sets a Requires on openssl instead of a Requires.private[1]. I've contacted the packager about this.

  - the libvomsapi dependency is partly our own fault, a new release will fix this

  - the libdl dependency is due to AC_CHECK_LIB([dl], [dlopen]), which adds it to LIBS which is used for all libraries

  - the remaining libraries come from putting ./liblcmaps.la in the LIBADD for the interface libraries, which causes all the dependent libraries of liblcmaps to be linked with the interface libraries as well. This seems to be a bug in libtool; Debian uses a patch on libtool prevent linking[2].

1. https://github.com/italiangrid/voms/issues/7
2. http://bugs.debian.org/cgi-bin/bugreport.cgi?archive=yes&bug=522663

Any suggestions on how to address these issues is welcome. In any case, I hope they aren't showstoppers.
Comment 32 Orion Poplawski 2013-11-09 09:55:03 EST
Thank you for putting in the effort to address the linking issues and working with upstreams - it is really appreciated.

The libdl dep should be handled like other library dep - a true/false macro should be added to the AC_CHECK_LIB() call (see the call for crypto a little below) to set a DL_LIBS variable which would only be added to those link lines that need it.  Although I'm not seeing any more unused lib dep rpmlint messages myself on F20, so I'm not sure it is necessary.

FWIW - If you still want to target EPEL5, you'll need BuildRoot and %clean.  If not, I would drop the conditionals for %{rhel}<=5.

Finally - are you *sure* you want to keep the -devel packages as noarch?  Michael has pointed out some of the drawbacks to that, and the gains are very little.
Comment 33 Dennis van Dok 2013-11-10 17:30:59 EST
(In reply to Orion Poplawski from comment #32)
> The libdl dep should be handled like other library dep - a true/false macro
> should be added to the AC_CHECK_LIB() call (see the call for crypto a little
> below) to set a DL_LIBS variable which would only be added to those link
> lines that need it.

The next release will address this issue.

> Although I'm not seeing any more unused lib dep rpmlint
> messages myself on F20, so I'm not sure it is necessary.

Perhaps the --as-needed did the trick after all? I'm running fedora-review on f19, I'm not sure I should expect the same results.
 
> FWIW - If you still want to target EPEL5, you'll need BuildRoot and %clean. 
> If not, I would drop the conditionals for %{rhel}<=5.

Yes, we do aim for EPEL5. So I'll fix this.

> Finally - are you *sure* you want to keep the -devel packages as noarch? 

No, are the -devel packages noarch now? The only thing I see is that they have a requires on some packages without %{?_isa}; is that harmful?
Comment 34 Orion Poplawski 2013-11-11 09:32:08 EST
(In reply to Dennis van Dok from comment #33)
> Perhaps the --as-needed did the trick after all? I'm running fedora-review
> on f19, I'm not sure I should expect the same results.

Ah, yes --as-needed would have done it.

> > Finally - are you *sure* you want to keep the -devel packages as noarch? 
> 
> No, are the -devel packages noarch now? The only thing I see is that they
> have a requires on some packages without %{?_isa}; is that harmful?

Yes, they have "BuildArch: noarch" in their declarations.  See comment #24 for issues with the noarch deps.  It would be better to be arch and depend on the arch specific deps.
Comment 35 Dennis van Dok 2013-11-11 10:05:29 EST
(In reply to Orion Poplawski from comment #34)

> > No, are the -devel packages noarch now? The only thing I see is that they
> > have a requires on some packages without %{?_isa}; is that harmful?
> 
> Yes, they have "BuildArch: noarch" in their declarations.

I removed them from the Spec file on Oct 30th. The latest SRPM should be ok...

In any case, hang on while I address a few last issues:

- Put the BuildRoot and %clean section back in for EPEL5;
- include some Provides for the *-interface packages to be backward compatible with the earlier setup of packages. This way our own packaging won't outright conflict with Fedora's; this is a transitional thing that can go away once we've cleaned all our packages of the *-interface dependencies.
Comment 36 Dennis van Dok 2013-11-11 11:18:45 EST
New SRPM URL: http://www.nikhef.nl/~dennisvd/lcmaps-1.6.1-4.fc19.src.rpm
New Spec URL: https://ndpfsvn.nikhef.nl/ro/mwsec/packaging/fedora/branches/rawhide/lcmaps.spec

OK, here goes. Happy reviewing!
Comment 37 Orion Poplawski 2013-11-11 12:20:14 EST
- EPEL5: Package requires pkgconfig, if .pc files are present.

Now you've removed these, which were needed for EPEL5:

# the pkgconfig requirement is only necessary for EPEL5 and below;
# it's automatic for Fedora and EPEL6.
%if %{?rhel}%{!?rhel:0} <= 5
Requires: pkgconfig
%endif

- EPEL5: Package does run rm -rf %{buildroot} (or $RPM_BUILD_ROOT) at the
  beginning of %install.

I can't upgrade from your previous packages:

Error: Package: lcmaps-without-gsi-devel-1.6.1-1.fc21.x86_64 (@/lcmaps-without-gsi-devel-1.6.1-1.fc21.x86_64)
           Requires: lcmaps-basic-interface = 1.6.1-1.fc21
           Removing: lcmaps-basic-interface-1.6.1-1.fc21.noarch (@/lcmaps-basic-interface-1.6.1-1.fc21.noarch)
               lcmaps-basic-interface = 1.6.1-1.fc21
           Obsoleted By: lcmaps-common-devel-1.6.1-4.fc19.x86_64 (/lcmaps-common-devel-1.6.1-4.fc19.x86_64)
               lcmaps-basic-interface = 1.6.1-4.fc19
 You could try using --skip-broken to work around the problem
Error: Package: lcmaps-openssl-interface-1.6.1-1.fc21.noarch (@/lcmaps-openssl-interface-1.6.1-1.fc21.noarch)
           Requires: lcmaps-basic-interface = 1.6.1-1.fc21
           Removing: lcmaps-basic-interface-1.6.1-1.fc21.noarch (@/lcmaps-basic-interface-1.6.1-1.fc21.noarch)
               lcmaps-basic-interface = 1.6.1-1.fc21
           Obsoleted By: lcmaps-common-devel-1.6.1-4.fc19.x86_64 (/lcmaps-common-devel-1.6.1-4.fc19.x86_64)
               lcmaps-basic-interface = 1.6.1-4.fc19

If there are lcmaps-without-gsi-devel and lcmaps-openssl-interface packages out in the wild, you will want to obsolete/provide them.
Comment 38 Dennis van Dok 2013-11-11 18:18:57 EST
New Spec URL: http://software.nikhef.nl/temporary/fedora-review/lcmaps.spec
New SRPM URL: http://software.nikhef.nl/temporary/fedora-review/lcmaps-1.6.1-5.fc19.src.rpm

I'm getting the impression you keep seeing outdated versions of the spec file. Maybe it's the version control system acting up. I've put new ones up on the above location. The Obsoletes/Provides are in place, as are the requires on pkgconfig. Please try this version!

Thanks,

Dennis
Comment 39 Orion Poplawski 2013-11-11 22:34:58 EST
Still need to add %{?_isa} to these so you bring in the proper architecture:

Requires: globus-gssapi-gsi-devel
Requires: openssl-devel

https://fedoraproject.org/wiki/Packaging:Guidelines#Requires

But that I think is the last thing.

(Also, even EPEL5 doesn't need %defattr() - that's a bug in fedora-review)
Comment 40 Dennis van Dok 2013-11-12 05:46:34 EST
(In reply to Orion Poplawski from comment #39)
> Still need to add %{?_isa} to these so you bring in the proper architecture:
> 
> Requires: globus-gssapi-gsi-devel
> Requires: openssl-devel

OK, fixed.

> (Also, even EPEL5 doesn't need %defattr() - that's a bug in fedora-review)

I removed them again.


New Spec URL: http://software.nikhef.nl/temporary/fedora-review/lcmaps.spec
New SRPM URL: http://software.nikhef.nl/temporary/fedora-review/lcmaps-1.6.1-6.fc19.src.rpm
Comment 41 Orion Poplawski 2013-11-12 09:44:08 EST
Great.  Approved.  Welcome aboard!  Don't hesitate to contact me if you have any questions.
Comment 42 Dennis van Dok 2013-11-12 10:06:03 EST
Thanks, Orion! And to the other reviewers as well!
Comment 43 Dennis van Dok 2013-11-12 17:35:48 EST
New Package SCM Request
=======================
Package Name: lcmaps
Short Description: Grid (X.509) and VOMS credentials to local account mapping service
Owners: dennisvd 
Branches: f18 f19 f20 el5 el6
InitialCC:
Comment 44 Jon Ciesla 2013-11-13 08:02:07 EST
Git done (by process-git-requests).
Comment 45 Fedora Update System 2013-11-13 17:41:15 EST
lcmaps-1.6.1-6.el5 has been submitted as an update for Fedora EPEL 5.
https://admin.fedoraproject.org/updates/lcmaps-1.6.1-6.el5
Comment 46 Fedora Update System 2013-11-13 17:47:39 EST
lcmaps-1.6.1-6.fc18 has been submitted as an update for Fedora 18.
https://admin.fedoraproject.org/updates/lcmaps-1.6.1-6.fc18
Comment 47 Fedora Update System 2013-11-13 17:47:51 EST
lcmaps-1.6.1-6.fc20 has been submitted as an update for Fedora 20.
https://admin.fedoraproject.org/updates/lcmaps-1.6.1-6.fc20
Comment 48 Fedora Update System 2013-11-13 17:48:04 EST
lcmaps-1.6.1-6.fc19 has been submitted as an update for Fedora 19.
https://admin.fedoraproject.org/updates/lcmaps-1.6.1-6.fc19
Comment 49 Fedora Update System 2013-11-13 17:48:19 EST
lcmaps-1.6.1-6.el6 has been submitted as an update for Fedora EPEL 6.
https://admin.fedoraproject.org/updates/lcmaps-1.6.1-6.el6
Comment 50 Fedora Update System 2013-11-14 14:16:00 EST
lcmaps-1.6.1-6.fc20 has been pushed to the Fedora 20 testing repository.
Comment 51 Fedora Update System 2013-11-23 22:52:57 EST
lcmaps-1.6.1-6.fc20 has been pushed to the Fedora 20 stable repository.
Comment 52 Fedora Update System 2013-11-25 23:02:00 EST
lcmaps-1.6.1-6.fc18 has been pushed to the Fedora 18 stable repository.
Comment 53 Fedora Update System 2013-11-25 23:11:35 EST
lcmaps-1.6.1-6.fc19 has been pushed to the Fedora 19 stable repository.
Comment 54 Fedora Update System 2013-11-27 08:43:39 EST
lcmaps-1.6.1-7.el6 has been submitted as an update for Fedora EPEL 6.
https://admin.fedoraproject.org/updates/lcmaps-1.6.1-7.el6
Comment 55 Fedora Update System 2013-11-27 08:45:55 EST
lcmaps-1.6.1-7.el5 has been submitted as an update for Fedora EPEL 5.
https://admin.fedoraproject.org/updates/lcmaps-1.6.1-7.el5
Comment 56 Fedora Update System 2013-12-12 20:44:57 EST
lcmaps-1.6.1-7.el6 has been pushed to the Fedora EPEL 6 stable repository.  If problems still persist, please make note of it in this bug report.
Comment 57 Fedora Update System 2013-12-12 20:45:17 EST
lcmaps-1.6.1-7.el5 has been pushed to the Fedora EPEL 5 stable repository.  If problems still persist, please make note of it in this bug report.
Comment 58 Dennis van Dok 2014-09-16 10:12:11 EDT
Package Change Request
======================
Package Name: lcmaps 
New Branches: epel7
Owners: dennisvd

I would like lcmaps to go to EPEL7 as well.
Comment 59 Jens Petersen 2014-09-17 03:02:38 EDT
Git done (by process-git-requests).