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.
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.
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
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
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.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.
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.
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.
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.
>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
(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
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
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.
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.
(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.
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).
New Spec URL: https://ndpfsvn.nikhef.nl/cgi-bin/viewvc.cgi/mwsec/packaging/fedora/tags/lcmaps/1.6.1/lcmaps.spec?view=co New SRPM URL: http://software.nikhef.nl/dist/mwsec/rpm/f19/SRPMS/lcmaps-1.6.1-1.fc19.src.rpm I'm going to give this yet another spin.
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)
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
(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
(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.
(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}.
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!
New Spec URL: https://ndpfsvn.nikhef.nl/ro/mwsec/packaging/fedora/branches/rawhide/lcmaps.spec (foiled again by the URL parser!)
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.
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.
(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?
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
(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.
Just to be explicit - all of Michael's comments are spot on and appreciated. Thank you for following them.
> 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.
> 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.
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.
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.
(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?
(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.
(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.
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!
- 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.
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
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)
(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
Great. Approved. Welcome aboard! Don't hesitate to contact me if you have any questions.
Thanks, Orion! And to the other reviewers as well!
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:
Git done (by process-git-requests).
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
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
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
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
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
lcmaps-1.6.1-6.fc20 has been pushed to the Fedora 20 testing repository.
lcmaps-1.6.1-6.fc20 has been pushed to the Fedora 20 stable repository.
lcmaps-1.6.1-6.fc18 has been pushed to the Fedora 18 stable repository.
lcmaps-1.6.1-6.fc19 has been pushed to the Fedora 19 stable repository.
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
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
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.
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.
Package Change Request ====================== Package Name: lcmaps New Branches: epel7 Owners: dennisvd I would like lcmaps to go to EPEL7 as well.