Bug 976793 - Review Request: lunchbox - C++ library for multi-threaded programming [NEEDINFO]
Summary: Review Request: lunchbox - C++ library for multi-threaded programming
Keywords:
Status: NEW
Alias: None
Product: Fedora
Classification: Fedora
Component: Package Review
Version: rawhide
Hardware: Unspecified
OS: Unspecified
unspecified
unspecified
Target Milestone: ---
Assignee: Otto Urpelainen
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On: 1972445
Blocks: 758472
TreeView+ depends on / blocked
 
Reported: 2013-06-21 13:17 UTC by Jaroslav Škarvada
Modified: 2021-07-22 06:06 UTC (History)
9 users (show)

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed:
Type: Bug
oturpe: fedora-review?
oturpe: needinfo? (jskarvad)


Attachments (Terms of Use)

Description Jaroslav Škarvada 2013-06-21 13:17:43 UTC
Spec URL: http://jskarvad.fedorapeople.org/libLunchbox.spec
SRPM URL: http://jskarvad.fedorapeople.org/libLunchbox-1.4.0-1.fc18.src.rpm

Description: 
Lunchbox is C++ library for multi-threaded programming, providing OS abstraction,
utility classes and high-performance primitives, such as atomic variables,
spin locks and lock-free containers. It is needed by Equalizer.

Comment 1 Jaroslav Škarvada 2013-06-21 15:15:29 UTC
I already renamed it to libLunchbox. It would be great if upstream could change the project name. I will ask them about it.

Comment 2 Michael Schwendt 2013-06-22 18:52:23 UTC
This will be non-trivial to review, and I dunno whether I will find enough time this weekend to do everything. How deeply have you reviewed the package already?


rpmlint tells:
libLunchbox.src: E: description-line-too-long C Lunchbox is C++ library for multi-threaded programming, providing OS abstraction,


> Name:           libLunchbox
> Group:          Development/Libraries

"System Environment/Libraries" is the group for the run-time library base packages.


> License:        LGPLv2

It's more than that.

Lunchbox-1.4.0/lunchbox/md5/md5.cc and md5.hh : This is a copied MD5 implementation with an own license by RSA Data Security Inc. And it's one not mentioned at https://fedoraproject.org/wiki/Packaging:No_Bundled_Libraries already.

Lunchbox-1.4.0/lunchbox/atomic.h : Distributed under the Boost Software License, Version 1.0.

Lunchbox-1.4.0/lunchbox/indexIterator.h : LGPLv3
Lunchbox-1.4.0/lunchbox/lfVector.h : LGPLv3
Lunchbox-1.4.0/lunchbox/lfVectorIterator.h : LGPLv3
Lunchbox-1.4.0/lunchbox/serializable.h : LGPLv3
Lunchbox-1.4.0/tests/lfVector.cpp : LGPLv3
Lunchbox-1.4.0/tests/servus.cpp : LGPLv3

https://fedoraproject.org/wiki/Packaging:LicensingGuidelines#License_Clarification


> BuildRequires:  cmake, doxygen, graphviz

build.log contains a few "could not find …" messages. Are any of them [optional] missing BuildRequires?


> %package devel
> Requires:       pkgconfig, cmake

Both should be dropped. There's an automatic dependency on /usr/bin/pkg-config already. And this -devel package certainly does not strictly require cmake, because e.g. it contains a pkgconfig file and can be used without cmake. Feel free to include the cmake directories based on this in the guidelines:

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


> %package doc
> Requires:       %{name} = %{version}-%{release}

Separate documentation -doc packages typically don't require the base package. It should be possible to install documentation without having to install a program and all its dependencies.  

With a total size of just 76716 bytes, the files in this -doc package could stay in the -devel package.


> %files
> %{_datadir}/%{name}

This tree belongs into the -devel package.

  drwxr-xr-x  /usr/share/libLunchbox
  drwxr-xr-x  /usr/share/libLunchbox/CMake
  -rw-r--r--  /usr/share/libLunchbox/CMake/options.cmake

The path is broken afaics after you move the file in the %install section.

$ cd Lunchbox-1.4.0
$ grep options.cmake * -R
CMake/FindLunchbox.cmake:  include("${LUNCHBOX_LIBRARY_DIRS}/../share/Lunchbox/CMake/options.cmake")
CMakeLists.txt:install(FILES ${CMAKE_BINARY_DIR}/options.cmake
lunchbox/configure.cmake:set(OPTIONS_CMAKE ${CMAKE_BINARY_DIR}/options.cmake)

Comment 3 Jaroslav Škarvada 2013-06-25 14:23:49 UTC
(In reply to Michael Schwendt from comment #2)
Thanks for the comments, I will try to go through them probably during next week and provide new version.

Comment 4 Jaroslav Škarvada 2013-06-25 14:26:06 UTC
Reply from Stefan regarding the rename to libLunchbox:

> Hi Jaroslav,

> I've looked into Lunchbox vs. libLunchbox and came to the conclusion that only the package name should change, the rest should stay:
>
> include/Lunchbox/...
> libLunchbox....
> share/Lunchbox/...
>
> Do you agree? If so, what do I need to do?
>
> Changing the project name to libLunchbox doesn't make sense to me, since it entails:
>
> find_package(libLunchbox)
> include/libLunchbox/...
> liblibLunchbox...
>
> and so on for consistency.
>
> 
> Cheers,
>
> Stefan.

I am +1 for the package name only change. Any comments?

Comment 5 Michael Schwendt 2013-06-26 09:27:52 UTC
Rest assured, it wouldn't be the first project to do that. Project name "foo" releases library with SONAME libfoo.so.N in tarball "libfoo" with headers in /usr/include/foo (#include <foo/blubb.h>) and using root directories such as /usr/share/foo.

Comment 6 Christopher Meng 2013-10-25 07:46:07 UTC
I'm still confused with pkgconfig explicit requires now.

And can you update this package to 1.6.0 version?

Thanks.

Comment 7 Jaroslav Škarvada 2014-07-07 16:25:33 UTC
(In reply to Christopher Meng from comment #6)
> I'm still confused with pkgconfig explicit requires now.
> 
It's installing pkgconfig files and the basedir is provided by pkgconfig.

> And can you update this package to 1.6.0 version?
> 
I upgraded it to 1.9.1:
Spec URL: http://jskarvad.fedorapeople.org/libLunchbox.spec
SRPM URL: http://jskarvad.fedorapeople.org/libLunchbox-1.9.1-1.fc20.src.rpm

But I am afraid it would require re-packing according to MPI guidelines, will look on it later.

Comment 8 Jonathan Wakely 2015-03-06 14:00:34 UTC
I wondered why the upstream still has its own thread library, instead of using std::thread / boost::thread etc.

And indeed the upstream API docs say the Lunchbox classes are deprecated.

Comment 9 James Hogarth 2015-12-04 03:20:54 UTC
This bug has not had an update in a long time.

Are you still intending to progress this?

As per policy if there is no update this bug will be closed.

https://fedoraproject.org/wiki/Policy_for_stalled_package_reviews

Comment 10 Jaroslav Škarvada 2015-12-04 09:35:48 UTC
(In reply to James Hogarth from comment #9)
> This bug has not had an update in a long time.
> 
> Are you still intending to progress this?
> 
> As per policy if there is no update this bug will be closed.
> 
> https://fedoraproject.org/wiki/Policy_for_stalled_package_reviews

Hi,

I still want to get it into Fedora. IMHO it's waiting on the reviewer.

Comment 11 Jaroslav Škarvada 2015-12-04 09:41:38 UTC
(In reply to Jonathan Wakely from comment #8)
> I wondered why the upstream still has its own thread library, instead of
> using std::thread / boost::thread etc.
> 
> And indeed the upstream API docs say the Lunchbox classes are deprecated.

IIRC it's there mainly for the 'bino' [1] from the rpmfusion [2], which can use 'Equalizer', which IIRC uses 'Lunchbox', from the upstream docs [3]:

> Lunchbox is a C++ library for multi-threaded programming, providing OS
> abstraction, utility classes and high-performance primitives, such as atomic
> variables, spin locks and lock-free containers. It is used as a base library
> for Collage and Equalizer. 

Thus I think this package is still useful.

[1] http://bino3d.org/
[2] http://download1.rpmfusion.org/free/fedora/releases/22/Everything/x86_64/os/bino-1.4.4-6.fc22.x86_64.rpm
[3] http://www.equalizergraphics.com/

Comment 12 James Hogarth 2015-12-04 11:07:38 UTC
Christopher do you still want to review this?

If not best to unset the assignee and flag so someone else can take over.

Comment 13 James Hogarth 2015-12-11 16:20:46 UTC
It's been over a week with no response from the reviewer to the NeedsInfo flag.

Resetting the review flag an unassigning as per policy.

Comment 14 Package Review 2020-07-10 00:48:19 UTC
This is an automatic check from review-stats script.

This review request ticket hasn't been updated for some time. We're sorry
it is taking so long. If you're still interested in packaging this software
into Fedora repositories, please respond to this comment clearing the
NEEDINFO flag.

You may want to update the specfile and the src.rpm to the latest version
available and to propose a review swap on Fedora devel mailing list to increase
chances to have your package reviewed. If this is your first package and you
need a sponsor, you may want to post some informal reviews. Read more at
https://fedoraproject.org/wiki/How_to_get_sponsored_into_the_packager_group.

Without any reply, this request will shortly be considered abandoned
and will be closed.
Thank you for your patience.

Comment 15 Jaroslav Škarvada 2020-07-14 18:16:17 UTC
I am still going to handle it.

Comment 16 Mattia Verga 2020-11-07 14:18:12 UTC
Could you provide an updated spec and srpm, so that I can try to review this?

Comment 17 Otto Urpelainen 2021-05-23 09:58:33 UTC
Adding needinfo flag for the reporter, so the review can either progress or be closed automatically in one month.

Comment 18 Jaroslav Škarvada 2021-06-15 19:36:24 UTC
Rebasing to 1.17.0, the latest released upstream version.

Comment 19 Jaroslav Škarvada 2021-06-15 22:22:20 UTC
Unfortunately upstream complicates it even more. Now it requires Servus (bug 1972445) and what's worse it's bundling it as a git submodule. I encouraged upstream to add support for building with the system Servus. I could patch it myself, but at first we need Servus to get in.

Comment 20 Jaroslav Škarvada 2021-06-15 22:52:14 UTC
Tests temporary disabled due to:
https://github.com/Eyescale/Lunchbox/issues/330

Comment 21 Jaroslav Škarvada 2021-06-16 00:13:37 UTC
Spec URL: https://jskarvad.fedorapeople.org/lunchbox/lunchbox.spec
SRPM URL: https://jskarvad.fedorapeople.org/lunchbox/lunchbox-1.17.0-1.fc33.src.rpm

I used lunchbox name with lowercase 'l' which seemed better to me. It's bundling some cmake macros from the Lunchbox upstream. Currently I don't know what to do with it, so I bundled them and encouraged upstream to bundle it to the release package. Another variant is to package it to individual package and encourage upstream to add it as a dep (currently upstream consumes it as a submodule). For the bundling probably FESCO exception will be needed. I also opened several upstream bugs, see the comments in the spec.

Comment 22 Otto Urpelainen 2021-06-19 07:16:55 UTC
Jaroslav,

Thank you for continuing this effort. For the tests, consider disabling only the problematic test and let others run, either by patching of whatever filtering option the test runner may have. We want to know that everything else is still working even if that single case is having issues.

I will take a look at Servus review request.

Comment 23 Otto Urpelainen 2021-06-23 05:00:57 UTC
I started reviewing this. Running fedora-review is waiting for Servus dependency to appear in Rawhide, so full review can only happen after that. But some initial comments:

> LICENSE.txt

License issues here, just like there were in Servus.
This file contains this sentence "See file LGPL.txt for the full license".
But that file does not exist.
Also, LGPL is a layer on top of GPL, so full text of that is required also.
Need to contact upstream here,
and possibly add patch the missing licenses if upstream is not active.

> # https://github.com/Eyescale/Lunchbox/issues/330
> #%%check
> #cd %{_vpath_builddir}
> #make test

If only some test cases fail, patch to disable them and execute the rest.
Much better than blindly disabling everything.

> %cmake -DCOMMON_DOC_DIR=%{_docdir}/%{name}

When I try to build (after installing servus and servus-devel dependencies),
I get the following error:

> CMake Error at CMake/common/SubProject.cmake:86 (message):
>   Subproject Servus not found in
>   /builddir/build/BUILD/Lunchbox-1.17.0/Servus, do:
> 
>   cmake -DCLONE_SUBPROJECTS=ON
> 
>   to git-clone it automatically.
> Call Stack (most recent call first):
>   CMake/common/SubProject.cmake:148 (add_subproject)
>   .gitsubprojects:2 (git_subproject)
>   CMake/common/SubProject.cmake:161 (include)
>   CMake/common/Common.cmake:161 (include)
>   CMakeLists.txt:28 (include)

Comment 24 Jaroslav Škarvada 2021-06-28 14:46:55 UTC
(In reply to Otto Urpelainen from comment #23)
> I started reviewing this. Running fedora-review is waiting for Servus
> dependency to appear in Rawhide, so full review can only happen after that.
> But some initial comments:
> 
> > LICENSE.txt
> 
> License issues here, just like there were in Servus.
> This file contains this sentence "See file LGPL.txt for the full license".
> But that file does not exist.
> Also, LGPL is a layer on top of GPL, so full text of that is required also.
> Need to contact upstream here,
> and possibly add patch the missing licenses if upstream is not active.
>
https://github.com/Eyescale/Lunchbox/issues/331
Updated the spec.

> > # https://github.com/Eyescale/Lunchbox/issues/330
> > #%%check
> > #cd %{_vpath_builddir}
> > #make test
> 
> If only some test cases fail, patch to disable them and execute the rest.
> Much better than blindly disabling everything.
>
Re-enabled test-suite.

> > %cmake -DCOMMON_DOC_DIR=%{_docdir}/%{name}
> 
> When I try to build (after installing servus and servus-devel dependencies),
> I get the following error:
> 
> > CMake Error at CMake/common/SubProject.cmake:86 (message):
> >   Subproject Servus not found in
> >   /builddir/build/BUILD/Lunchbox-1.17.0/Servus, do:
> > 
> >   cmake -DCLONE_SUBPROJECTS=ON
> > 
> >   to git-clone it automatically.
> > Call Stack (most recent call first):
> >   CMake/common/SubProject.cmake:148 (add_subproject)
> >   .gitsubprojects:2 (git_subproject)
> >   CMake/common/SubProject.cmake:161 (include)
> >   CMake/common/Common.cmake:161 (include)
> >   CMakeLists.txt:28 (include)

I cannot reproduce. I am building for rawhide, but it shouldn't matter. It seems the cmake macro cannot find servus-devel files, but I don't know why it doesn't work on your system.

It seems there is the same problem with the strange library versioning:
https://github.com/Eyescale/Lunchbox/issues/332

Comment 26 Otto Urpelainen 2021-06-28 18:51:23 UTC
Thank you, the fixes look good. Since the Servus review looks almost complete, I will wait until that is available in Rawhide. That should fix my build issues and allow running fedora-review.

Comment 27 Otto Urpelainen 2021-07-08 18:09:57 UTC
Now that Servus has been finalized, this review can continue. Some update is needed because of servus.so versioning difficulties, I now get this:

    CMake Error at /usr/share/Servus/CMake/ServusTargets.cmake:88 (message):
      The imported target "Servus" references the file

         "/usr/lib64/libServus.so.1.6.0"

      but this file does not exist.

Comment 28 Petr Menšík 2021-07-20 10:52:21 UTC
Current package does not build in mock on rawhide.

CMake Error at CMake/common/SubProject.cmake:86 (message):
  Subproject Servus not found in
  /builddir/build/BUILD/Lunchbox-1.17.0/Servus, do:

  cmake -DCLONE_SUBPROJECTS=ON

  to git-clone it automatically.
Call Stack (most recent call first):
  CMake/common/SubProject.cmake:148 (add_subproject)
  .gitsubprojects:2 (git_subproject)
  CMake/common/SubProject.cmake:161 (include)
  CMake/common/Common.cmake:161 (include)
  CMakeLists.txt:28 (include)

It seems Servus devel package is not used properly. As Otto mentioned in comment #27.

Comment 29 Jaroslav Škarvada 2021-07-20 19:13:35 UTC
Multiple problems: one missing dep which got to the chroot during the Servus build, problems related to the SONAME fixes in Servus and failing tests on armv7hl.

New version:
Spec URL: https://jskarvad.fedorapeople.org/lunchbox/lunchbox.spec
SRPM URL: https://jskarvad.fedorapeople.org/lunchbox/lunchbox-1.17.0-3.fc33.src.rpm

Comment 30 Otto Urpelainen 2021-07-21 07:53:20 UTC
The servus update needed for this
barely missed the last compose before mass rebuild.
I will wait until the next compose is available
for the (hopefully) final review run.

I wonder if the failing tests could be disabled
only for the architecture where they fail?
Just thinking aloud here,
I do not see this as a blocker in any way.

Comment 31 Jaroslav Škarvada 2021-07-21 11:06:19 UTC
(In reply to Otto Urpelainen from comment #30)
> The servus update needed for this
> barely missed the last compose before mass rebuild.
> I will wait until the next compose is available
> for the (hopefully) final review run.
> 
> I wonder if the failing tests could be disabled
> only for the architecture where they fail?
> Just thinking aloud here,
> I do not see this as a blocker in any way.

New version:
Spec URL: https://jskarvad.fedorapeople.org/lunchbox/lunchbox.spec
SRPM URL: https://jskarvad.fedorapeople.org/lunchbox/lunchbox-1.17.0-4.fc33.src.rpm

Comment 32 Petr Menšík 2021-07-21 16:22:44 UTC
It looks almost good. I found just /usr/share/Lunchbox/benchmarks/perf-* binaries from main package to be offending FHS. They are architecture dependent executables, I think they should be somewhere under /usr/libexec/Lunchbox/ or similar. Not sure they are useful in main package, I think they should have own subpackage or be part of -devel subpackage.
I think /usr/share/Lunchbox/tests/ should be moved to devel subpackage too, it would not be useful to possible lunchbox dependent package builds.
I think LICENSE.txt and LGPL.txt should be marked as %license, even when they have wrong address.

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

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


Issues:
=======
- 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.
  Note: License file LICENSE.txt is not marked as %license
  See: https://docs.fedoraproject.org/en-US/packaging-
  guidelines/LicensingGuidelines/#_license_text


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

C/C++:
[x]: Package does not contain kernel modules.
[x]: Package contains no static executables.
[x]: If your application is a C or C++ application you must list a
     BuildRequires against gcc, gcc-c++ or clang.
[x]: Header files in -devel subpackage, if present.
[x]: ldconfig not called in %post and %postun for Fedora 28 and later.
[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: "Unknown or generated", "GNU Lesser General Public License,
     Version 2.1 [obsolete FSF postal address (Temple Place)]", "GNU Lesser
     General Public License, Version 2.1", "GNU General Public License,
     Version 2", "GNU Lesser General Public License, Version 3", "GNU
     Lesser General Public License, Version 3 Boost Software License 1.0",
     "Boost Software License 1.0", "BSD 3-clause "New" or "Revised"
     License", "GNU Lesser General Public License v2.1 or later", "*No
     copyright* BSD 3-clause "New" or "Revised" License", "BSD 3-clause
     "New" or "Revised" License GNU General Public License, Version 2". 124
     files have unknown license. Detailed output of licensecheck in
     /home/reviewer/fedora/rawhide/976793-lunchbox/licensecheck.txt
[x]: License file installed when any subpackage combination is installed.
[x]: If the package is under multiple licenses, the licensing breakdown
     must be documented in the spec.
[x]: %build honors applicable compiler flags or justifies otherwise.
[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.
[x]: Package does not generate any conflict.
[!]: 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 51200 bytes in 5 files.
[x]: Package complies to the Packaging Guidelines
[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]: Package requires other packages for directories it uses.
[x]: Package must own all directories that it creates.
[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]: Dist tag is present.
[x]: Package does not contain duplicates in %files.
[x]: Permissions on files are set properly.
[x]: Package must not depend on deprecated() packages.
[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:
[x]: 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).
[?]: Package functions as described.
[x]: Latest version is packaged.
[!]: Package does not include license text files separate from upstream.
     -- original upstream license is provided too just as %doc
[x]: Patches link to upstream bugs/comments/lists or are otherwise
     justified.
[-]: Sources are verified with gpgverify first in %prep if upstream
     publishes signatures.
     Note: gpgverify is not 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.
[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]: Fully versioned dependency in subpackages if applicable.
[x]: Packager, Vendor, PreReq, Copyright tags should not be in spec file
[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: lunchbox-1.17.0-4.fc35.x86_64.rpm
          lunchbox-devel-1.17.0-4.fc35.x86_64.rpm
          lunchbox-debuginfo-1.17.0-4.fc35.x86_64.rpm
          lunchbox-debugsource-1.17.0-4.fc35.x86_64.rpm
          lunchbox-1.17.0-4.fc35.src.rpm
lunchbox.x86_64: E: description-line-too-long C Lunchbox is C++ library for multi-threaded programming, providing OS abstraction,
lunchbox.x86_64: E: arch-dependent-file-in-usr-share /usr/share/Lunchbox/benchmarks/perf-lfVector
lunchbox.x86_64: E: arch-dependent-file-in-usr-share /usr/share/Lunchbox/benchmarks/perf-mutex
lunchbox.x86_64: E: arch-dependent-file-in-usr-share /usr/share/Lunchbox/benchmarks/perf-rwLock
lunchbox.x86_64: W: devel-file-in-non-devel-package /usr/share/Lunchbox/tests/any.cpp
lunchbox.x86_64: W: devel-file-in-non-devel-package /usr/share/Lunchbox/tests/anySerialization.cpp
lunchbox.x86_64: W: devel-file-in-non-devel-package /usr/share/Lunchbox/tests/bitOperation.cpp
lunchbox.x86_64: W: devel-file-in-non-devel-package /usr/share/Lunchbox/tests/buffer.cpp
lunchbox.x86_64: W: devel-file-in-non-devel-package /usr/share/Lunchbox/tests/clock.cpp
lunchbox.x86_64: W: devel-file-in-non-devel-package /usr/share/Lunchbox/tests/debug.cpp
lunchbox.x86_64: W: devel-file-in-non-devel-package /usr/share/Lunchbox/tests/dso.cpp
lunchbox.x86_64: W: devel-file-in-non-devel-package /usr/share/Lunchbox/tests/file.cpp
lunchbox.x86_64: W: devel-file-in-non-devel-package /usr/share/Lunchbox/tests/future.cpp
lunchbox.x86_64: W: devel-file-in-non-devel-package /usr/share/Lunchbox/tests/init.cpp
lunchbox.x86_64: W: devel-file-in-non-devel-package /usr/share/Lunchbox/tests/intervalSet.cpp
lunchbox.x86_64: W: devel-file-in-non-devel-package /usr/share/Lunchbox/tests/issue1.cpp
lunchbox.x86_64: W: devel-file-in-non-devel-package /usr/share/Lunchbox/tests/lfQueue.cpp
lunchbox.x86_64: W: devel-file-in-non-devel-package /usr/share/Lunchbox/tests/memoryMap.cpp
lunchbox.x86_64: W: devel-file-in-non-devel-package /usr/share/Lunchbox/tests/monitor.cpp
lunchbox.x86_64: W: devel-file-in-non-devel-package /usr/share/Lunchbox/tests/mtQueue.cpp
lunchbox.x86_64: W: devel-file-in-non-devel-package /usr/share/Lunchbox/tests/perThread.cpp
lunchbox.x86_64: W: devel-file-in-non-devel-package /usr/share/Lunchbox/tests/perf/lfVector.cpp
lunchbox.x86_64: W: devel-file-in-non-devel-package /usr/share/Lunchbox/tests/perf/mutex.cpp
lunchbox.x86_64: W: devel-file-in-non-devel-package /usr/share/Lunchbox/tests/perf/rwLock.cpp
lunchbox.x86_64: W: devel-file-in-non-devel-package /usr/share/Lunchbox/tests/pluginFactory.cpp
lunchbox.x86_64: W: devel-file-in-non-devel-package /usr/share/Lunchbox/tests/refPtr.cpp
lunchbox.x86_64: W: devel-file-in-non-devel-package /usr/share/Lunchbox/tests/requestHandler.cpp
lunchbox.x86_64: W: devel-file-in-non-devel-package /usr/share/Lunchbox/tests/result.cpp
lunchbox.x86_64: W: devel-file-in-non-devel-package /usr/share/Lunchbox/tests/rng.cpp
lunchbox.x86_64: W: devel-file-in-non-devel-package /usr/share/Lunchbox/tests/string.cpp
lunchbox.x86_64: W: devel-file-in-non-devel-package /usr/share/Lunchbox/tests/thread.cpp
lunchbox.x86_64: W: devel-file-in-non-devel-package /usr/share/Lunchbox/tests/threadPool.cpp
lunchbox-devel.x86_64: W: no-documentation
lunchbox.src: E: description-line-too-long C Lunchbox is C++ library for multi-threaded programming, providing OS abstraction,
lunchbox.src:23: W: unversioned-explicit-provides bundled(eyescale-cmake-common)
5 packages and 0 specfiles checked; 5 errors, 30 warnings.




Rpmlint (debuginfo)
-------------------
Checking: lunchbox-debuginfo-1.17.0-4.fc35.x86_64.rpm
1 packages and 0 specfiles checked; 0 errors, 0 warnings.





Rpmlint (installed packages)
----------------------------
Cannot parse rpmlint output:


Source checksums
----------------
https://www.gnu.org/licenses/old-licenses/gpl-2.0.txt :
  CHECKSUM(SHA256) this package     : 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643
  CHECKSUM(SHA256) upstream package : 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643
https://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt :
  CHECKSUM(SHA256) this package     : dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551
  CHECKSUM(SHA256) upstream package : dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551
https://github.com/Eyescale/CMake/archive/refs/tags/2018.02.tar.gz :
  CHECKSUM(SHA256) this package     : 06ae367f70e34e5e5b27fac2296f7bdf33e36d5c016b1545020239fc49e5dd56
  CHECKSUM(SHA256) upstream package : 06ae367f70e34e5e5b27fac2296f7bdf33e36d5c016b1545020239fc49e5dd56
https://github.com/Eyescale/Lunchbox/archive/1.17.0/lunchbox-1.17.0.tar.gz :
  CHECKSUM(SHA256) this package     : 5d5e29ceacef6d024f3a1fa8178ae77a31fe41ebee82b36e76af5c65cd0f353b
  CHECKSUM(SHA256) upstream package : 5d5e29ceacef6d024f3a1fa8178ae77a31fe41ebee82b36e76af5c65cd0f353b


Requires
--------
lunchbox (rpmlib, GLIBC filtered):
    glibc
    libLunchbox.so.10()(64bit)
    libServus.so.6()(64bit)
    libboost_filesystem.so.1.75.0()(64bit)
    libboost_regex.so.1.75.0()(64bit)
    libboost_serialization.so.1.75.0()(64bit)
    libboost_system.so.1.75.0()(64bit)
    libboost_unit_test_framework.so.1.75.0()(64bit)
    libc.so.6()(64bit)
    libgcc_s.so.1()(64bit)
    libgcc_s.so.1(GCC_3.0)(64bit)
    libgcc_s.so.1(GCC_3.3.1)(64bit)
    libm.so.6()(64bit)
    libstdc++.so.6()(64bit)
    libstdc++.so.6(CXXABI_1.3)(64bit)
    rtld(GNU_HASH)

lunchbox-devel (rpmlib, GLIBC filtered):
    cmake
    libLunchbox.so.10()(64bit)
    lunchbox(x86-64)
    pkgconfig

lunchbox-debuginfo (rpmlib, GLIBC filtered):

lunchbox-debugsource (rpmlib, GLIBC filtered):



Provides
--------
lunchbox:
    bundled(eyescale-cmake-common)
    libLunchbox.so.10()(64bit)
    lunchbox
    lunchbox(x86-64)

lunchbox-devel:
    lunchbox-devel
    lunchbox-devel(x86-64)

lunchbox-debuginfo:
    debuginfo(build-id)
    libLunchbox.so.1.17.0-1.17.0-4.fc35.x86_64.debug()(64bit)
    lunchbox-debuginfo
    lunchbox-debuginfo(x86-64)

lunchbox-debugsource:
    lunchbox-debugsource
    lunchbox-debugsource(x86-64)



Generated by fedora-review 0.7.6 (b083f91) last change: 2020-11-10
Command line :/usr/bin/fedora-review -b 976793
Buildroot used: fedora-rawhide-x86_64
Active plugins: C/C++, Shell-api, Generic
Disabled plugins: fonts, Ocaml, SugarActivity, Java, Perl, Python, PHP, Haskell, R
Disabled flags: EPEL6, EPEL7, DISTTAG, BATCH, EXARCH

Comment 33 Petr Menšík 2021-07-21 16:30:53 UTC
Seems to me whole %{_datadir}/Lunchbox should be moved to devel. I doubt even cmake rules are useful outside devel package.

Comment 34 Otto Urpelainen 2021-07-21 18:18:12 UTC
@pemensik@redhat.com 

Since you already did so much for the review,
would you mind if I passed the reviewer's torch to you?
I am still up for completing this,
but I do not see the point of duplicating the effort either.

Comment 35 Petr Menšík 2021-07-21 18:42:59 UTC
The review bug were not assigned, I just spent a little time on it.  If you wish to finish it, feel free to do so. It would be even better because Jaroslav is my colleague and it would be more 'independent' review from you. Feel free to take it yourself. Just shared my opinions on it, no claims on it taken.

Comment 36 Otto Urpelainen 2021-07-21 18:47:11 UTC
(In reply to Petr Menšík from comment #35)
> The review bug were not assigned, I just spent a little time on it.  If you
> wish to finish it, feel free to do so. It would be even better because
> Jaroslav is my colleague and it would be more 'independent' review from you.
> Feel free to take it yourself. Just shared my opinions on it, no claims on
> it taken.

Yes, it has been my intention to review this.
I just forgot to set myself as the assignee,
I only set the fedora-review flag.
So I will continue from here complete this.
Thank you for your input!
Any further comments are also welcome.

Comment 37 Otto Urpelainen 2021-07-22 06:06:22 UTC
Review taken, here is everything I could spot.

1.
> # CMake/common/ittnotify.h is under GPLv2, the rest is LGPL
I am not sure if it counts, since it is part of the build script only,
and License field should describe the packaged content, not srpm.
Reference: https://docs.fedoraproject.org/en-US/packaging-guidelines/LicensingGuidelines/#_license_field

2.
Looking at licensecheck.txt generated by fedora-review
and disregarding the build script,
it looks like the actual license is more like this:

    (
      and Boost    # lunchbox/atomic.h, lunchbox/any.h
      and LGPLv2   # most files
      and LGPLv3   # some files, like any.cpp and lfVector.h
    )

According to GPL Compatibility Matrix from Fedora Wiki [1]
LGPLv2 and LGPLv3 mix only by "converting to GPLv3".
I suppose the correct action would then be
to mark the license as "Boost and GPLv3",
note somewhere that the conversion option was used
(I am not aware of specific instructions on how to do this)
and include GPLv3 license text as %license.
The Boost license is already included in ACKNOWLEDGEMENTS.txt,
so that should be installed as %license.


Additionally, lunchbox/test.h is under BSD.
It is a test runner,
contains its license in the file header
and is not compiled during the build.
As long as it goes to devel package or is simply not installed,
its license is ok.

Getting licensing right is messy as usual, 
there may well be something we have missed.
Let us try to get as close to reality as possible,
even if upstream situation is quite unclear.

[1]: https://fedoraproject.org/wiki/Licensing:Main?rd=Licensing#GPL_Compatibility_Matrix

3.
> Provides:      bundled(eyescale-cmake-common)

Use versioned Provides.
Reference: https://docs.fedoraproject.org/en-US/packaging-guidelines/#bundling

4.
> %{_libdir}/libLunchbox.so.1*
Globbing that hides important parts of the shared object file name should not be used.
Because the found suffixes here are 1.17.0 and 10.0.0,
it would be better to select both of these separately.
Reference: https://docs.fedoraproject.org/en-US/packaging-guidelines/#_listing_shared_library_files

5. 
> Requires:      pkgconfig
> Requires:      cmake

I do not think these are needed.
The build does not produce a pkgconfig file
and CMake files are installed under self-owner directory %{_datadir}/Lunchbox

6. 
I agree Petr regarding the contents of /usr/share/Lunchbox,
those should not go to the binary package.

> /usr/share/Lunchbox/CMake/LunchboxConfig.cmake
> /usr/share/Lunchbox/CMake/LunchboxConfigVersion.cmake
> /usr/share/Lunchbox/CMake/LunchboxTargets-debug.cmake
> /usr/share/Lunchbox/CMake/LunchboxTargets.cmake
> /usr/share/Lunchbox/CMake/options.cmake

I am not familiar enough with CMake builds in Fedora
to say how cmake scripts should be packaged
(the CMake guidelines should be extended to cover this)
but assuming that the directory structure is acceptable
these should be package in the -devel package.

> /usr/share/Lunchbox/benchmarks/perf-lfVector
> /usr/share/Lunchbox/benchmarks/perf-mutex
> /usr/share/Lunchbox/benchmarks/perf-rwLock

Test executables, should go to -devel
if packaged at all.
Also, binaries have no place in %{_datadir},
rpmlint complains about this.
So if they are package in any package,
they should go to %{_bindir}.

> /usr/share/Lunchbox/tests/any.cpp
> /usr/share/Lunchbox/tests/anySerialization.cpp
> /usr/share/Lunchbox/tests/buffer.cpp
> /usr/share/Lunchbox/tests/clock.cpp
> /usr/share/Lunchbox/tests/debug.cpp
> /usr/share/Lunchbox/tests/dso.cpp
> /usr/share/Lunchbox/tests/file.cpp
> /usr/share/Lunchbox/tests/future.cpp
> /usr/share/Lunchbox/tests/init.cpp
> /usr/share/Lunchbox/tests/issue1.cpp
> /usr/share/Lunchbox/tests/lfQueue.cpp
> /usr/share/Lunchbox/tests/memoryMap.cpp
> /usr/share/Lunchbox/tests/monitor.cpp
> /usr/share/Lunchbox/tests/mtQueue.cpp
> /usr/share/Lunchbox/tests/perThread.cpp
> /usr/share/Lunchbox/tests/perf/lfVector.cpp
> /usr/share/Lunchbox/tests/perf/mutex.cpp
> /usr/share/Lunchbox/tests/perf/rwLock.cpp
> /usr/share/Lunchbox/tests/pluginFactory.cpp
> /usr/share/Lunchbox/tests/refPtr.cpp
> /usr/share/Lunchbox/tests/requestHandler.cpp
> /usr/share/Lunchbox/tests/rng.cpp
> /usr/share/Lunchbox/tests/thread.cpp
> /usr/share/Lunchbox/tests/threadPool.cpp

Test source files.
I do not see any reason to package these,
they are already available in srpm
and it is not usual to package sources in -devel.

7. 
> $ rpm -q --requires ./review-lunchbox/results/lunchbox-1.17.0-3.fc35.x86_64.rpm
> libboost_unit_test_framework.so.1.75.0()(64bit)

As this package is not a test runner or similar tool
there should be no unit test framework dependencies.
Probably this is solved when all the test related files
are moved to -devel or removed from installation.

8.
I would consider removing directory pthreads in %prep
as it contains a shady tarball
apprently only needed for Windows builds.
This is not blocking,
because as far as I can tell,
there is nothing that is strictly disallowed there.
Just a general suggestion.

9.
Man pages are absent.
There is a SHOULD in the guidelines about trying to get them added.
My understanding is that upstream does not really respond to queries
so in my opinion, there is no need to take action.
Of course it is better if you do ask upstream about it.
Reference: https://docs.fedoraproject.org/en-US/packaging-guidelines/#_manpages

10. 
> Rpmlint
> -------
> Checking: lunchbox-1.17.0-3.fc35.x86_64.rpm
>           lunchbox-devel-1.17.0-3.fc35.x86_64.rpm
>           lunchbox-debuginfo-1.17.0-3.fc35.x86_64.rpm
>           lunchbox-debugsource-1.17.0-3.fc35.x86_64.rpm
>           lunchbox-1.17.0-3.fc35.src.rpm
> lunchbox.x86_64: E: description-line-too-long C Lunchbox is C++ library for multi-threaded programming, providing OS abstraction,

Please shorten it.


Note You need to log in before you can comment on or make changes to this bug.