Bug 1353064

Summary: Review Request: ignition-transport - A fast and efficient message passing system
Product: [Fedora] Fedora Reporter: Rich Mattes <richmattes>
Component: Package ReviewAssignee: Raphael Groner <projects.rg>
Status: CLOSED NEXTRELEASE QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: medium Docs Contact:
Priority: medium    
Version: rawhideCC: package-review, projects.rg
Target Milestone: ---Flags: projects.rg: fedora-review+
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2016-08-30 22:50:11 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 1247414    

Description Rich Mattes 2016-07-06 01:16:11 UTC
Spec URL: https://rmattes.fedorapeople.org/RPMS/ignition-transport/ignition-transport.spec
SRPM URL: https://rmattes.fedorapeople.org/RPMS/ignition-transport/ignition-transport-1.2.0-1.fc24.src.rpm

Description:
The ignition transport library combines ZeroMQ with Protobufs to create
a fast and efficient message passing system. Asynchronous message publication
and subscription is provided along with service calls and discovery.

Fedora Account System Username: rmattes

$ rpmlint ./ignition-transport.spec ../RPMS/x86_64/ignition-transport-*
ignition-transport.x86_64: W: shared-lib-calls-exit /usr/lib64/libignition-transport1.so.1.2.0 exit.5
ignition-transport-devel.x86_64: W: only-non-binary-in-usr-lib
ignition-transport-devel.x86_64: W: no-documentation
3 packages and 1 specfiles checked; 0 errors, 3 warnings.


The only-non-binary-in-usr-lib is fine, it's the library symlink.   The no documentation is also fine, as the development documentation is in the doc subpackage.  The call to exit() happens in a catch statement when zeromq initialization fails.  It could probably be handled better, I'll ask about it upstream.

Comment 1 Raphael Groner 2016-07-12 20:29:05 UTC
Looks interesting. Taken.
Are you interested in a review swap?

Comment 2 Raphael Groner 2016-07-12 21:24:48 UTC
APPROVED. Please notice my hints below.

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

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



===== 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.
[x]: Development (unversioned) .so files in -devel subpackage, if present.

Generic:
[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)", "BSD (3 clause)", "Unknown or generated". 16
     files have unknown license. Detailed output of licensecheck in
     /home/builder/fedora-review/1353064-ignition-
     transport/licensecheck.txt
=> BSD is for gtest. Unbundle and use official gtest package?
=> As gtest is for execution of tests only and does get built into binary
   package, license is okay.

[x]: License file installed when any subpackage combination is installed.
[!]: Package does not own files or directories owned by other packages.
     Note: Dirs in package are owned also by:
     /usr/lib64/pkgconfig(pkgconfig), /usr/include/ignition(ignition-math-
     devel), /usr/lib64/cmake(gtk-doc, cmake, qt5-qtlocation, phonon-
     qt5-devel, qt5-qtbase)
=> Be more specific about fiiles in pkgconfig and cmake subfolders.
=> Conflict with ignition-math package. Can you rename folder path to
   %{_includir}/%{name} to use separate location?

[x]: %build honors applicable compiler flags or justifies otherwise.
=> Why disable SSE3 and SSE4?

[x]: Package contains no bundled libraries without FPC exception.
[x]: Changelog in prescribed format.
[x]: Sources contain only permissible code or content.
[-]: Package contains desktop file if it is a GUI application.
[x]: 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.
[?]: Package does not generate any conflict.
=> See conflict above with include folder.

[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 10240 bytes in 1 files.
[?]: Package complies to the Packaging Guidelines
=> Please fix above directories conflict.

[x]: Package successfully compiles and builds into binary rpms on at least
     one supported primary architecture.
[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 %license.
[x]: Package requires other packages for directories it uses.
[x]: Package must own all directories that it creates.
[x]: All build dependencies are listed in BuildRequires, except for any
     that are listed in the exceptions section of Packaging Guidelines.
[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]: Dist tag is present.
[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 does not use a name that already exists.
[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:
[!]: Uses parallel make %{?_smp_mflags} macro.
=> Strongly recommended! You can use %make_build to magically add options.
=> Not sure if generation of documentation is possible in parallel.

[!]: If the source package does not include license text(s) as a separate
     file from upstream, the packager SHOULD query upstream to include it.
=> Please poke upstream about the source files without license header,
   I can not validate them for given license.

[x]: Final provides and requires are sane (see attachments).
[-]: Fully versioned dependency in subpackages if applicable.
     Note: No Requires: %{name}%{?_isa} = %{version}-%{release} in
     ignition-transport-doc , ignition-transport-debuginfo
=> Ignore. doc subpackage is noarch, debuginfo is automagically.

[x]: Package functions as described.
=> At least, tests pass in %check.

[x]: Latest version is packaged.
=> Why not package 2.0.0?
ignition-transport2-2.0.0-20160609-94f4417.yosemite.bottle.tar.gz

[x]: Package does not include license text files separate from upstream.
[x]: Scriptlets must be sane, if used.
[-]: 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.
=> Task info: http://koji.fedoraproject.org/koji/taskinfo?taskID=14876744

[x]: %check is present and all tests pass.
[x]: Packages should try to preserve timestamps of original installed
     files.
[x]: Reviewer should test that the package builds in mock.
[x]: Buildroot is not present
[x]: Package has no %clean section with rm -rf %{buildroot} (or
     $RPM_BUILD_ROOT)
[x]: No file requires outside of /etc, /bin, /sbin, /usr/bin, /usr/sbin.
[x]: Packager, Vendor, PreReq, Copyright tags should not be in spec file
[x]: The placement of pkgconfig(.pc) files are correct.
[x]: Sources can be downloaded from URI in Source: tag
[x]: SourceX is a working URL.
[x]: Spec use %global instead of %define unless justified.

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

Generic:
[x]: Rpmlint is run on debuginfo package(s).
     Note: No rpmlint messages.
[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: ignition-transport-1.2.0-1.fc25.x86_64.rpm
          ignition-transport-devel-1.2.0-1.fc25.x86_64.rpm
          ignition-transport-doc-1.2.0-1.fc25.noarch.rpm
          ignition-transport-debuginfo-1.2.0-1.fc25.x86_64.rpm
          ignition-transport-1.2.0-1.fc25.src.rpm
ignition-transport.x86_64: W: shared-lib-calls-exit /usr/lib64/libignition-transport1.so.1.2.0 exit.5
ignition-transport-devel.x86_64: W: only-non-binary-in-usr-lib
ignition-transport-devel.x86_64: W: no-documentation
5 packages and 0 specfiles checked; 0 errors, 3 warnings.




Rpmlint (debuginfo)
-------------------
Checking: ignition-transport-debuginfo-1.2.0-1.fc25.x86_64.rpm
1 packages and 0 specfiles checked; 0 errors, 0 warnings.





Rpmlint (installed packages)
----------------------------
ignition-transport-devel.x86_64: W: only-non-binary-in-usr-lib
ignition-transport-devel.x86_64: W: no-documentation
ignition-transport.x86_64: W: unused-direct-shlib-dependency /usr/lib64/libignition-transport1.so.1.2.0 /lib64/libm.so.6
ignition-transport.x86_64: W: shared-lib-calls-exit /usr/lib64/libignition-transport1.so.1.2.0 exit.5
4 packages and 0 specfiles checked; 0 errors, 4 warnings.



Requires
--------
ignition-transport-devel (rpmlib, GLIBC filtered):
    /usr/bin/pkg-config
    ignition-transport(x86-64)
    libignition-transport1.so.1()(64bit)

ignition-transport-doc (rpmlib, GLIBC filtered):

ignition-transport (rpmlib, GLIBC filtered):
    /sbin/ldconfig
    libc.so.6()(64bit)
    libgcc_s.so.1()(64bit)
    libgcc_s.so.1(GCC_3.0)(64bit)
    libm.so.6()(64bit)
    libprotobuf.so.9()(64bit)
    libstdc++.so.6()(64bit)
    libstdc++.so.6(CXXABI_1.3)(64bit)
    libstdc++.so.6(CXXABI_1.3.2)(64bit)
    libstdc++.so.6(CXXABI_1.3.5)(64bit)
    libuuid.so.1()(64bit)
    libuuid.so.1(UUID_1.0)(64bit)
    libzmq.so.5()(64bit)
    rtld(GNU_HASH)

ignition-transport-debuginfo (rpmlib, GLIBC filtered):



Provides
--------
ignition-transport-devel:
    cmake(ignition-transport1)
    ignition-transport-devel
    ignition-transport-devel(x86-64)
    pkgconfig(ignition-transport1)

ignition-transport-doc:
    ignition-transport-doc

ignition-transport:
    ignition-transport
    ignition-transport(x86-64)
    libignition-transport1.so.1()(64bit)

ignition-transport-debuginfo:
    ignition-transport-debuginfo
    ignition-transport-debuginfo(x86-64)



Source checksums
----------------
http://gazebosim.org/distributions/ign-transport/releases/ignition-transport-1.2.0.tar.bz2 :
  CHECKSUM(SHA256) this package     : 80935b712aa175c7f72d66269a7c03c8db0082539fc2bea5f9e8d896754240cc
  CHECKSUM(SHA256) upstream package : 80935b712aa175c7f72d66269a7c03c8db0082539fc2bea5f9e8d896754240cc


Generated by fedora-review 0.6.1 (f03e4e7) last change: 2016-05-02
Command line :/usr/bin/fedora-review -v -m fedora-rawhide-x86_64 -b 1353064
Buildroot used: fedora-rawhide-x86_64
Active plugins: Generic, Shell-api, C/C++
Disabled plugins: Java, Python, fonts, SugarActivity, Ocaml, Perl, Haskell, R, PHP
Disabled flags: EXARCH, DISTTAG, EPEL5, BATCH, EPEL6

Comment 3 Rich Mattes 2016-07-13 14:47:51 UTC
Thanks for the review!  I'd be happy to do a swap - let me know which packages you're interested in and I can get started over the weekend.

As far as your comments are concerned:
I'm pretty sure that the License: tag only covers what's distributed in the RPMs, as stated in https://fedoraproject.org/wiki/Licensing:FAQ?rd=Licensing/FAQ#Does_the_License:_tag_cover_the_SRPM_or_the_binary_RPM.3F  Thus, it wouldn't be needed for the gtest source.  I agree that it might be a good idea to unbundle the gtest source and use the distro version, but gtest is kind of a weird case where upstream doesn't think it should be distributed as a library at all and thus it's not always easy to break it out of project buildsystems.

I think the multiple directory ownership in this case is OK, and that it falls under the guideline here: https://fedoraproject.org/wiki/Packaging:Guidelines#The_directory_is_owned_by_a_package_which_is_not_required_for_your_package_to_function  Specifically, the %{_includedir}/ignition is shared between the ignition packages but those packages do not otherwise need each other.  Similarly, %{_libdir}/pkgconfig and %{_libdir}/cmake are owned by pkgconfig and cmake, but ignition-transport-devel doesn't need either of those to function.

I don't think the documentation can be generated in parallel with _smp_mflags, but I can add it to try.

I will run licensecheck over the source and double-check any files that don't have a header attached.

I'm not sure if 2.0 is released yet - it looks more like a development snapshot.

Comment 4 Raphael Groner 2016-07-13 14:54:05 UTC
(In reply to Rich Mattes from comment #3)
> Thanks for the review!  I'd be happy to do a swap - let me know which
> packages you're interested in and I can get started over the weekend.

Feel free to choose:
https://bugzilla.redhat.com/buglist.cgi?bug_status=NEW&classification=Fedora&component=Package%20Review&email1=projects.rg%40smart.ms&emailreporter1=1&emailtype1=substring&list_id=5451466&product=Fedora&query_format=advanced

> As far as your comments are concerned:
> I'm pretty sure that the License: tag only covers what's distributed in the
> RPMs, as stated in
> https://fedoraproject.org/wiki/Licensing:FAQ?rd=Licensing/
> FAQ#Does_the_License:_tag_cover_the_SRPM_or_the_binary_RPM.3F 

+1

Thanks for all the explanation!

Comment 5 Rich Mattes 2016-07-13 22:56:27 UTC
Will do!

As far as the licensing is concerned:
Changelog.md: *No copyright* UNKNOWN
doc/doxygen.css: *No copyright* UNKNOWN
doc/style.css: *No copyright* UNKNOWN
INSTALL_WINDOWS.md: *No copyright* UNKNOWN
README.md: *No copyright* UNKNOWN
tools/cpplint_to_cppcheckxml.py: *No copyright* UNKNOWN
tools/code_check.sh: *No copyright* UNKNOWN

The stuff without licenses are either documentation or code checking scripts.  None of the source files are missing copyright headers.  I don't think it's an issue, but I created a ticket upstream.

https://bitbucket.org/ignitionrobotics/ign-transport/issues/52/no-copyright-header-for-a-couple-of-tools

Comment 6 Raphael Groner 2016-07-14 06:50:21 UTC
As said, it's about gtest licensed under BSD. However, as we do not build it into binary rpm, this confirms with the guidelines as they always talk about binary compared to source RPM:

"The License: field refers to the licenses of the contents of the *binary* rpm. When in doubt, ask."
https://fedoraproject.org/wiki/Packaging:LicensingGuidelines#License:_field

"If a subpackage is dependent (either implicitly or explicitly) upon a base package (where a base package is defined as a resulting *binary* package from the same source RPM which contains the appropriate license texts as %license), it is not necessary for that subpackage to also include those license texts as %license."
https://fedoraproject.org/wiki/Packaging:LicensingGuidelines#Subpackage_Licensing

I doubt css, md and script files need a license header.

Comment 7 Gwyn Ciesla 2016-07-14 13:08:26 UTC
Package request has been approved: https://admin.fedoraproject.org/pkgdb/package/rpms/ignition-transport

Comment 8 Raphael Groner 2016-07-15 07:06:57 UTC
This is a very interesting project for me. Can I help as co-maintainer? I see you did first build in rawhide, I could continue with branches, if you may like.

Comment 9 Rich Mattes 2016-07-17 20:49:00 UTC
Sure, you're welcome to co-maintain it.  I'd ask that you hold off building outside of rawhide for now though.  There is a 2.0 release coming soon which will have a soname change from 1.2.1.  I'd prefer to wait until 2.0 is released so that we don't have to change sonames in the stable releases.  I only built in rawhide so that I can get the latest gazebo 7 built - once 2.0 is released I'll rebuild gazebo 7 in rawhide.

Comment 10 Raphael Groner 2016-08-30 22:50:11 UTC
I'll close here with reference to the successful build in Fedora 25. Please feel free to reopen or report in another bug if you still think we need builds also for Fedora 24.