Bug 2035671 (mrcpp) - Review Request: mrcpp - A general purpose numerical mathematics library based on multiresolution analysis
Summary: Review Request: mrcpp - A general purpose numerical mathematics library based...
Keywords:
Status: CLOSED ERRATA
Alias: mrcpp
Product: Fedora
Classification: Fedora
Component: Package Review
Version: rawhide
Hardware: All
OS: Linux
medium
medium
Target Milestone: ---
Assignee: Ben Beasley
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks: F-ExcludeArch-s390x mrchem
TreeView+ depends on / blocked
 
Reported: 2021-12-26 18:52 UTC by Susi Lehtola
Modified: 2022-01-30 02:07 UTC (History)
4 users (show)

Fixed In Version:
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
Environment:
Last Closed: 2022-01-30 01:33:21 UTC
Type: ---
Embargoed:
code: fedora-review+


Attachments (Terms of Use)

Description Susi Lehtola 2021-12-26 18:52:40 UTC
Spec URL: https://jussilehtola.fedorapeople.org/mrcpp.spec
SRPM URL: https://jussilehtola.fedorapeople.org/mrcpp-1.4.0-1.fc35.src.rpm
Fedora Account System Username: jussilehtola

Description:
The MultiResolution Computation Program Package (MRCPP) is a general
purpose numerical mathematics library based on multiresolution
analysis and the multiwavelet basis which provide low-scaling
algorithms as well as rigorous error control in numerical
computations.

mrcpp is a requirement for mrchem

Comment 1 Ben Beasley 2021-12-27 15:07:08 UTC
Package Review
==============

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

- The License should be “LGPLv3+”, not “LGPLv3”, since all the file header
  comments have the “any later version” boilerplate.

- Don’t glob over the so-version, as this makes it easier to miss an SONAME
  bump in an update. Change

    %{_libdir}/libmrcpp.so.*

  to

    %{_libdir}/libmrcpp.so.1

  https://docs.fedoraproject.org/en-US/packaging-guidelines/#_listing_shared_library_files

- You can, if you like, shorten the source URL by writing

    Source0:        %{url}/archive/v%{version}/%{name}-%{version}.tar.gz

  but this is, of course, optional.

- It would be nice to link https://github.com/MRChemSoft/mrcpp/issues/186 in
  the comment above the patch that loosens the eigen3 version check.

- You should split out the noarch data (%{_datadir}/MCRPP) out into a noarch
  -data subpackage upon which the base package depends. That way, this large
  (~56M) data package can be shared across architectures on the mirrors.

- The Summary should be under 80 characters:

    mrcpp.x86_64: E: summary-too-long A general purpose numerical mathematics library based on multiresolution analysis

  Please re-write it to fit in that limit.

- Does it really make sense to install the “mrcpp-tests” executable? I would be
  inclined to skip it, adding

    rm -v '%{buildroot}%{_bindir}/mrcpp-tests'

  after %cmake_install, but perhaps I am missing some way it would be useful.

  If you leave it in the package, you will need to fix the rpath it contains:

    mrcpp.x86_64: E: binary-or-shlib-defines-rpath /usr/bin/mrcpp-tests $ORIGIN/../lib64

  See
  https://docs.fedoraproject.org/en-US/packaging-guidelines/#_beware_of_rpath
  for details.

===== 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.
[!]: License field in the package spec file matches the actual license.
     Note: Checking patched sources after %prep for licenses. Licenses
     found: "Unknown or generated", "[generated file]", "GNU Lesser General
     Public License, Version 3", "GNU Lesser General Public License v3.0 or
     later", "*No copyright* BSD 3-Clause License", "MIT License". 471
     files have unknown license. Detailed output of licensecheck in
     /home/reviewer/2035671-mrcpp/licensecheck.txt
[x]: License file installed when any subpackage combination is installed.
[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.
[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 20480 bytes in 4 files.
[x]: Package complies to the Packaging Guidelines

     (except as noted)

[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]: 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:
[-]: Sources can be downloaded from URI in Source: tag
     Note: Could not download Source0:
     https://github.com/MRChemSoft/mrcpp/archive/v1.4.0/mrcpp-1.4.0.tar.gz
     See: https://docs.fedoraproject.org/en-US/packaging-
     guidelines/SourceURL/

     OK; works when tested manually.

[-]: 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]: Package functions as described.

     (tests pass)

[x]: Latest version is packaged.
[x]: Package does not include license text files separate from upstream.
[x]: Patches link to upstream bugs/comments/lists or are otherwise
     justified.
[-]: SourceX tarball generation or download is documented.
     Note: Package contains tarball without URL, check comments

     URL is actually OK.

[-]: 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]: SourceX is a working URL.
[x]: Spec use %global instead of %define unless justified.

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

Generic:
[!]: Large data in /usr/share should live in a noarch subpackage if package
     is arched.
     Note: Arch-ed rpms have a total of 57518080 bytes in /usr/share
     mrcpp-1.4.0-1.fc36.x86_64.rpm:57497600
     See:
     https://fedoraproject.org/wiki/Packaging:ReviewGuidelines#Package_Review_Guidelines
[x]: Rpmlint is run on debuginfo package(s).
     Note: There are rpmlint messages (see attachment).
[x]: Rpmlint is run on all installed packages.
     Note: There are rpmlint messages (see attachment).
[x]: Spec file according to URL is the same as in SRPM.


Rpmlint
-------
Cannot parse rpmlint output:


Rpmlint (debuginfo)
-------------------
Cannot parse rpmlint output:



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


Requires
--------
mrcpp (rpmlib, GLIBC filtered):
    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)
    libgomp.so.1()(64bit)
    libgomp.so.1(GOMP_1.0)(64bit)
    libgomp.so.1(GOMP_4.0)(64bit)
    libgomp.so.1(GOMP_4.5)(64bit)
    libgomp.so.1(OMP_1.0)(64bit)
    libgomp.so.1(OMP_3.0)(64bit)
    libm.so.6()(64bit)
    libmrcpp.so.1()(64bit)
    libstdc++.so.6()(64bit)
    libstdc++.so.6(CXXABI_1.3)(64bit)
    libstdc++.so.6(CXXABI_1.3.13)(64bit)
    libstdc++.so.6(CXXABI_1.3.3)(64bit)
    libstdc++.so.6(CXXABI_1.3.8)(64bit)
    libstdc++.so.6(CXXABI_1.3.9)(64bit)
    rtld(GNU_HASH)

mrcpp-devel (rpmlib, GLIBC filtered):
    cmake-filesystem
    libmrcpp.so.1()(64bit)
    mrcpp(x86-64)

mrcpp-debuginfo (rpmlib, GLIBC filtered):

mrcpp-debugsource (rpmlib, GLIBC filtered):



Provides
--------
mrcpp:
    libmrcpp.so.1()(64bit)
    mrcpp
    mrcpp(x86-64)

mrcpp-devel:
    cmake(MRCPP)
    cmake(mrcpp)
    mrcpp-devel
    mrcpp-devel(x86-64)

mrcpp-debuginfo:
    debuginfo(build-id)
    libmrcpp.so.1-1.4.0-1.fc36.x86_64.debug()(64bit)
    mrcpp-debuginfo
    mrcpp-debuginfo(x86-64)

mrcpp-debugsource:
    mrcpp-debugsource
    mrcpp-debugsource(x86-64)



Generated by fedora-review 0.7.6 (b083f91) last change: 2020-11-10
Command line :/usr/bin/fedora-review -b 2035671
Buildroot used: fedora-rawhide-x86_64
Active plugins: Generic, Shell-api, C/C++
Disabled plugins: PHP, Java, Haskell, SugarActivity, Perl, Python, Ocaml, R, fonts
Disabled flags: EPEL6, EPEL7, DISTTAG, BATCH, EXARCH
============================ rpmlint session starts ============================
rpmlint: 2.2.0
configuration:
    /usr/lib/python3.10/site-packages/rpmlint/configdefaults.toml
    /etc/xdg/rpmlint/fedora.toml
    /etc/xdg/rpmlint/licenses.toml
    /etc/xdg/rpmlint/scoring.toml
    /etc/xdg/rpmlint/users-groups.toml
    /etc/xdg/rpmlint/warn-on-functions.toml
checks: 32, packages: 5

mrcpp-debuginfo.x86_64: W: unstripped-binary-or-object /usr/lib/debug/.dwz/mrcpp-1.4.0-1.fc36.x86_64
mrcpp-debuginfo.x86_64: W: unstripped-binary-or-object /usr/lib/debug/usr/bin/mrcpp-tests-1.4.0-1.fc36.x86_64.debug
mrcpp-debuginfo.x86_64: W: unstripped-binary-or-object /usr/lib/debug/usr/lib64/libmrcpp.so.1-1.4.0-1.fc36.x86_64.debug
mrcpp.src: E: summary-too-long A general purpose numerical mathematics library based on multiresolution analysis
mrcpp.x86_64: E: summary-too-long A general purpose numerical mathematics library based on multiresolution analysis
mrcpp-debuginfo.x86_64: E: statically-linked-binary /usr/lib/debug/.dwz/mrcpp-1.4.0-1.fc36.x86_64
mrcpp-debuginfo.x86_64: E: shared-library-without-dependency-information /usr/lib/debug/usr/bin/mrcpp-tests-1.4.0-1.fc36.x86_64.debug
mrcpp-debuginfo.x86_64: E: shared-library-without-dependency-information /usr/lib/debug/usr/lib64/libmrcpp.so.1-1.4.0-1.fc36.x86_64.debug
mrcpp.x86_64: W: no-manual-page-for-binary mrcpp-tests
mrcpp-devel.x86_64: E: no-library-dependency-on mrcpp /usr/lib64/libmrcpp.so.1
mrcpp-debuginfo.x86_64: W: no-documentation
mrcpp-debugsource.x86_64: W: no-documentation
mrcpp-devel.x86_64: W: no-documentation
mrcpp-debuginfo.x86_64: E: missing-PT_GNU_STACK-section /usr/lib/debug/.dwz/mrcpp-1.4.0-1.fc36.x86_64
mrcpp.x86_64: W: incoherent-version-in-changelog 1.0.2-1 ['1.4.0-1.fc36', '1.4.0-1']
mrcpp-debuginfo.x86_64: W: hidden-file-or-dir /usr/lib/debug/.dwz
mrcpp-debuginfo.x86_64: W: hidden-file-or-dir /usr/lib/debug/.dwz
mrcpp-debugsource.x86_64: E: files-duplicated-waste 143094
mrcpp-debugsource.x86_64: W: files-duplicate /usr/src/debug/mrcpp-1.4.0-1.fc36.x86_64/src/core/FilterCache.h /usr/src/debug/mrcpp-1.4.0-1.fc36.x86_64/redhat-linux-build/include/MRCPP/core/FilterCache.h
mrcpp-debugsource.x86_64: W: files-duplicate /usr/src/debug/mrcpp-1.4.0-1.fc36.x86_64/src/core/InterpolatingBasis.h /usr/src/debug/mrcpp-1.4.0-1.fc36.x86_64/redhat-linux-build/include/MRCPP/core/InterpolatingBasis.h
mrcpp-debugsource.x86_64: W: files-duplicate /usr/src/debug/mrcpp-1.4.0-1.fc36.x86_64/src/core/LegendreBasis.h /usr/src/debug/mrcpp-1.4.0-1.fc36.x86_64/redhat-linux-build/include/MRCPP/core/LegendreBasis.h
mrcpp-debugsource.x86_64: W: files-duplicate /usr/src/debug/mrcpp-1.4.0-1.fc36.x86_64/src/core/MWFilter.h /usr/src/debug/mrcpp-1.4.0-1.fc36.x86_64/redhat-linux-build/include/MRCPP/core/MWFilter.h
mrcpp-debugsource.x86_64: W: files-duplicate /usr/src/debug/mrcpp-1.4.0-1.fc36.x86_64/src/core/ObjectCache.h /usr/src/debug/mrcpp-1.4.0-1.fc36.x86_64/redhat-linux-build/include/MRCPP/core/ObjectCache.h
mrcpp-debugsource.x86_64: W: files-duplicate /usr/src/debug/mrcpp-1.4.0-1.fc36.x86_64/src/core/ScalingBasis.h /usr/src/debug/mrcpp-1.4.0-1.fc36.x86_64/redhat-linux-build/include/MRCPP/core/ScalingBasis.h
mrcpp-debugsource.x86_64: W: files-duplicate /usr/src/debug/mrcpp-1.4.0-1.fc36.x86_64/src/functions/GaussExp.h /usr/src/debug/mrcpp-1.4.0-1.fc36.x86_64/redhat-linux-build/include/MRCPP/functions/GaussExp.h
mrcpp-debugsource.x86_64: W: files-duplicate /usr/src/debug/mrcpp-1.4.0-1.fc36.x86_64/src/functions/GaussFunc.h /usr/src/debug/mrcpp-1.4.0-1.fc36.x86_64/redhat-linux-build/include/MRCPP/functions/GaussFunc.h
mrcpp-debugsource.x86_64: W: files-duplicate /usr/src/debug/mrcpp-1.4.0-1.fc36.x86_64/src/functions/GaussPoly.h /usr/src/debug/mrcpp-1.4.0-1.fc36.x86_64/redhat-linux-build/include/MRCPP/functions/GaussPoly.h
mrcpp-debugsource.x86_64: W: files-duplicate /usr/src/debug/mrcpp-1.4.0-1.fc36.x86_64/src/functions/Gaussian.h /usr/src/debug/mrcpp-1.4.0-1.fc36.x86_64/redhat-linux-build/include/MRCPP/functions/Gaussian.h
mrcpp-debugsource.x86_64: W: files-duplicate /usr/src/debug/mrcpp-1.4.0-1.fc36.x86_64/src/functions/LegendrePoly.h /usr/src/debug/mrcpp-1.4.0-1.fc36.x86_64/redhat-linux-build/include/MRCPP/functions/LegendrePoly.h
mrcpp-debugsource.x86_64: W: files-duplicate /usr/src/debug/mrcpp-1.4.0-1.fc36.x86_64/src/functions/Polynomial.h /usr/src/debug/mrcpp-1.4.0-1.fc36.x86_64/redhat-linux-build/include/MRCPP/functions/Polynomial.h
mrcpp-debugsource.x86_64: W: files-duplicate /usr/src/debug/mrcpp-1.4.0-1.fc36.x86_64/src/functions/RepresentableFunction.h /usr/src/debug/mrcpp-1.4.0-1.fc36.x86_64/redhat-linux-build/include/MRCPP/functions/RepresentableFunction.h
mrcpp-debugsource.x86_64: W: files-duplicate /usr/src/debug/mrcpp-1.4.0-1.fc36.x86_64/src/operators/ABGVOperator.h /usr/src/debug/mrcpp-1.4.0-1.fc36.x86_64/redhat-linux-build/include/MRCPP/operators/ABGVOperator.h
mrcpp-debugsource.x86_64: W: files-duplicate /usr/src/debug/mrcpp-1.4.0-1.fc36.x86_64/src/operators/BSOperator.h /usr/src/debug/mrcpp-1.4.0-1.fc36.x86_64/redhat-linux-build/include/MRCPP/operators/BSOperator.h
mrcpp-debugsource.x86_64: W: files-duplicate /usr/src/debug/mrcpp-1.4.0-1.fc36.x86_64/src/operators/ConvolutionOperator.h /usr/src/debug/mrcpp-1.4.0-1.fc36.x86_64/redhat-linux-build/include/MRCPP/operators/ConvolutionOperator.h
mrcpp-debugsource.x86_64: W: files-duplicate /usr/src/debug/mrcpp-1.4.0-1.fc36.x86_64/src/operators/DerivativeOperator.h /usr/src/debug/mrcpp-1.4.0-1.fc36.x86_64/redhat-linux-build/include/MRCPP/operators/DerivativeOperator.h
mrcpp-debugsource.x86_64: W: files-duplicate /usr/src/debug/mrcpp-1.4.0-1.fc36.x86_64/src/operators/GreensKernel.h /usr/src/debug/mrcpp-1.4.0-1.fc36.x86_64/redhat-linux-build/include/MRCPP/operators/GreensKernel.h
mrcpp-debugsource.x86_64: W: files-duplicate /usr/src/debug/mrcpp-1.4.0-1.fc36.x86_64/src/operators/HelmholtzKernel.h /usr/src/debug/mrcpp-1.4.0-1.fc36.x86_64/redhat-linux-build/include/MRCPP/operators/HelmholtzKernel.h
mrcpp-debugsource.x86_64: W: files-duplicate /usr/src/debug/mrcpp-1.4.0-1.fc36.x86_64/src/operators/HelmholtzOperator.h /usr/src/debug/mrcpp-1.4.0-1.fc36.x86_64/redhat-linux-build/include/MRCPP/operators/HelmholtzOperator.h
mrcpp-debugsource.x86_64: W: files-duplicate /usr/src/debug/mrcpp-1.4.0-1.fc36.x86_64/src/operators/MWOperator.h /usr/src/debug/mrcpp-1.4.0-1.fc36.x86_64/redhat-linux-build/include/MRCPP/operators/MWOperator.h
mrcpp-debugsource.x86_64: W: files-duplicate /usr/src/debug/mrcpp-1.4.0-1.fc36.x86_64/src/operators/PHOperator.h /usr/src/debug/mrcpp-1.4.0-1.fc36.x86_64/redhat-linux-build/include/MRCPP/operators/PHOperator.h
mrcpp-debugsource.x86_64: W: files-duplicate /usr/src/debug/mrcpp-1.4.0-1.fc36.x86_64/src/operators/PoissonKernel.h /usr/src/debug/mrcpp-1.4.0-1.fc36.x86_64/redhat-linux-build/include/MRCPP/operators/PoissonKernel.h
mrcpp-debugsource.x86_64: W: files-duplicate /usr/src/debug/mrcpp-1.4.0-1.fc36.x86_64/src/operators/PoissonOperator.h /usr/src/debug/mrcpp-1.4.0-1.fc36.x86_64/redhat-linux-build/include/MRCPP/operators/PoissonOperator.h
mrcpp-debugsource.x86_64: W: files-duplicate /usr/src/debug/mrcpp-1.4.0-1.fc36.x86_64/src/treebuilders/CrossCorrelationCalculator.h /usr/src/debug/mrcpp-1.4.0-1.fc36.x86_64/redhat-linux-build/include/MRCPP/treebuilders/CrossCorrelationCalculator.h
mrcpp-debugsource.x86_64: W: files-duplicate /usr/src/debug/mrcpp-1.4.0-1.fc36.x86_64/src/treebuilders/OperatorAdaptor.h /usr/src/debug/mrcpp-1.4.0-1.fc36.x86_64/redhat-linux-build/include/MRCPP/treebuilders/OperatorAdaptor.h
mrcpp-debugsource.x86_64: W: files-duplicate /usr/src/debug/mrcpp-1.4.0-1.fc36.x86_64/src/treebuilders/TreeAdaptor.h /usr/src/debug/mrcpp-1.4.0-1.fc36.x86_64/redhat-linux-build/include/MRCPP/treebuilders/TreeAdaptor.h
mrcpp-debugsource.x86_64: W: files-duplicate /usr/src/debug/mrcpp-1.4.0-1.fc36.x86_64/src/treebuilders/TreeBuilder.h /usr/src/debug/mrcpp-1.4.0-1.fc36.x86_64/redhat-linux-build/include/MRCPP/treebuilders/TreeBuilder.h
mrcpp-debugsource.x86_64: W: files-duplicate /usr/src/debug/mrcpp-1.4.0-1.fc36.x86_64/src/treebuilders/TreeCalculator.h /usr/src/debug/mrcpp-1.4.0-1.fc36.x86_64/redhat-linux-build/include/MRCPP/treebuilders/TreeCalculator.h
mrcpp-debugsource.x86_64: W: files-duplicate /usr/src/debug/mrcpp-1.4.0-1.fc36.x86_64/src/treebuilders/WaveletAdaptor.h /usr/src/debug/mrcpp-1.4.0-1.fc36.x86_64/redhat-linux-build/include/MRCPP/treebuilders/WaveletAdaptor.h
mrcpp-debugsource.x86_64: W: files-duplicate /usr/src/debug/mrcpp-1.4.0-1.fc36.x86_64/src/treebuilders/add.h /usr/src/debug/mrcpp-1.4.0-1.fc36.x86_64/redhat-linux-build/include/MRCPP/treebuilders/add.h
mrcpp-debugsource.x86_64: W: files-duplicate /usr/src/debug/mrcpp-1.4.0-1.fc36.x86_64/src/treebuilders/grid.h /usr/src/debug/mrcpp-1.4.0-1.fc36.x86_64/redhat-linux-build/include/MRCPP/treebuilders/grid.h
mrcpp-debugsource.x86_64: W: files-duplicate /usr/src/debug/mrcpp-1.4.0-1.fc36.x86_64/src/treebuilders/project.h /usr/src/debug/mrcpp-1.4.0-1.fc36.x86_64/redhat-linux-build/include/MRCPP/treebuilders/project.h
mrcpp-debugsource.x86_64: W: files-duplicate /usr/src/debug/mrcpp-1.4.0-1.fc36.x86_64/src/trees/BandWidth.h /usr/src/debug/mrcpp-1.4.0-1.fc36.x86_64/redhat-linux-build/include/MRCPP/trees/BandWidth.h
mrcpp-debugsource.x86_64: W: files-duplicate /usr/src/debug/mrcpp-1.4.0-1.fc36.x86_64/src/trees/BoundingBox.h /usr/src/debug/mrcpp-1.4.0-1.fc36.x86_64/redhat-linux-build/include/MRCPP/trees/BoundingBox.h
mrcpp-debugsource.x86_64: W: files-duplicate /usr/src/debug/mrcpp-1.4.0-1.fc36.x86_64/src/trees/FunctionTree.h /usr/src/debug/mrcpp-1.4.0-1.fc36.x86_64/redhat-linux-build/include/MRCPP/trees/FunctionTree.h
mrcpp-debugsource.x86_64: W: files-duplicate /usr/src/debug/mrcpp-1.4.0-1.fc36.x86_64/src/trees/FunctionTreeVector.h /usr/src/debug/mrcpp-1.4.0-1.fc36.x86_64/redhat-linux-build/include/MRCPP/trees/FunctionTreeVector.h
mrcpp-debugsource.x86_64: W: files-duplicate /usr/src/debug/mrcpp-1.4.0-1.fc36.x86_64/src/trees/MWNode.h /usr/src/debug/mrcpp-1.4.0-1.fc36.x86_64/redhat-linux-build/include/MRCPP/trees/MWNode.h
mrcpp-debugsource.x86_64: W: files-duplicate /usr/src/debug/mrcpp-1.4.0-1.fc36.x86_64/src/trees/MWTree.h /usr/src/debug/mrcpp-1.4.0-1.fc36.x86_64/redhat-linux-build/include/MRCPP/trees/MWTree.h
mrcpp-debugsource.x86_64: W: files-duplicate /usr/src/debug/mrcpp-1.4.0-1.fc36.x86_64/src/trees/MultiResolutionAnalysis.h /usr/src/debug/mrcpp-1.4.0-1.fc36.x86_64/redhat-linux-build/include/MRCPP/trees/MultiResolutionAnalysis.h
mrcpp-debugsource.x86_64: W: files-duplicate /usr/src/debug/mrcpp-1.4.0-1.fc36.x86_64/src/trees/NodeAllocator.h /usr/src/debug/mrcpp-1.4.0-1.fc36.x86_64/redhat-linux-build/include/MRCPP/trees/NodeAllocator.h
mrcpp-debugsource.x86_64: W: files-duplicate /usr/src/debug/mrcpp-1.4.0-1.fc36.x86_64/src/trees/NodeBox.h /usr/src/debug/mrcpp-1.4.0-1.fc36.x86_64/redhat-linux-build/include/MRCPP/trees/NodeBox.h
mrcpp-debugsource.x86_64: W: files-duplicate /usr/src/debug/mrcpp-1.4.0-1.fc36.x86_64/src/trees/NodeIndex.h /usr/src/debug/mrcpp-1.4.0-1.fc36.x86_64/redhat-linux-build/include/MRCPP/trees/NodeIndex.h
mrcpp-debugsource.x86_64: W: files-duplicate /usr/src/debug/mrcpp-1.4.0-1.fc36.x86_64/src/trees/OperatorTree.h /usr/src/debug/mrcpp-1.4.0-1.fc36.x86_64/redhat-linux-build/include/MRCPP/trees/OperatorTree.h
mrcpp-debugsource.x86_64: W: files-duplicate /usr/src/debug/mrcpp-1.4.0-1.fc36.x86_64/src/utils/Printer.h /usr/src/debug/mrcpp-1.4.0-1.fc36.x86_64/redhat-linux-build/include/MRCPP/utils/Printer.h
mrcpp-debugsource.x86_64: W: files-duplicate /usr/src/debug/mrcpp-1.4.0-1.fc36.x86_64/src/utils/details.h /usr/src/debug/mrcpp-1.4.0-1.fc36.x86_64/redhat-linux-build/include/MRCPP/utils/details.h
mrcpp-debugsource.x86_64: W: files-duplicate /usr/src/debug/mrcpp-1.4.0-1.fc36.x86_64/src/utils/math_utils.h /usr/src/debug/mrcpp-1.4.0-1.fc36.x86_64/redhat-linux-build/include/MRCPP/utils/math_utils.h
mrcpp-debugsource.x86_64: W: files-duplicate /usr/src/debug/mrcpp-1.4.0-1.fc36.x86_64/src/utils/omp_utils.h /usr/src/debug/mrcpp-1.4.0-1.fc36.x86_64/redhat-linux-build/include/MRCPP/utils/omp_utils.h
mrcpp-debugsource.x86_64: W: files-duplicate /usr/src/debug/mrcpp-1.4.0-1.fc36.x86_64/src/utils/tree_utils.h /usr/src/debug/mrcpp-1.4.0-1.fc36.x86_64/redhat-linux-build/include/MRCPP/utils/tree_utils.h
mrcpp-debuginfo.x86_64: W: dangling-relative-symlink /usr/lib/debug/.build-id/0f/ef862cd720a5097d8b039b2c40893bc4f968ef ../../../.build-id/0f/ef862cd720a5097d8b039b2c40893bc4f968ef
mrcpp-debuginfo.x86_64: W: dangling-relative-symlink /usr/lib/debug/.build-id/7b/04f57bbb19008ee39d6dcc112783ab8aae10a9 ../../../.build-id/7b/04f57bbb19008ee39d6dcc112783ab8aae10a9
mrcpp.x86_64: E: binary-or-shlib-defines-rpath /usr/bin/mrcpp-tests $ORIGIN/../lib64
 5 packages and 0 specfiles checked; 9 errors, 61 warnings, 9 badness; has taken 3.0 s

Comment 2 Susi Lehtola 2021-12-27 16:48:48 UTC
Thanks for the speedy review! All issues should be fixed

https://jussilehtola.fedorapeople.org/mrcpp.spec
https://jussilehtola.fedorapeople.org/mrcpp-1.4.0-2.fc35.src.rpm

Comment 3 Ben Beasley 2021-12-28 14:44:14 UTC
Thanks for the update! I’ll get back to it as soon as I can.

Comment 4 Ben Beasley 2022-01-06 01:22:11 UTC
Without copying out the full re-review just yet, I think this looks
good, except for the following:

- The base package correctly depends on the -data subpackage, but the
  -data package doesn’t need to circularly depend on the base package.
  Also, since the -data package is noarch, it can’t have an arched
  dependency (no %{?_isa}). The architecture is taken from the build
  host, and the resulting RPM is not really noarch anymore. I
  recommend simply removing this line:

    Requires:       %{name}%{?_isa} = %{version}-%{release}

  from %package data.

  At that point, it will be possible (if not terribly useful) to
  install the -data subpackage by itself, so you’ll need to add

    %license LICENSE

  to %files data. However, since the base package depends on the
  -data subpackage, you can remove the license file from the base
  package.

- If you’re packaging mrcpp-tests, I suggest splitting it into a
  -tests subpackage, separate from the library. See this comment
  (https://bugzilla.redhat.com/show_bug.cgi?id=1955394#c12) for
  the rationale, which is related to multilib filtering.

----

If you like, you could avoid repeating the description with something
like:

  %global common_description %{expand: \
  The MultiResolution Computation Program Package (MRCPP) is a general
  purpose numerical mathematics library based on multiresolution
  analysis and the multiwavelet basis which provide low-scaling
  algorithms as well as rigorous error control in numerical
  computations.}

  %description
  %{common_description}

  […]
  %description devel
  %{common_description}

  This package contains the development headers and libraries.

  […]

but you certainly do not have to.

Comment 5 Susi Lehtola 2022-01-14 02:51:27 UTC
Thanks for noticing the architecture dependent dependency. I decided to keep the circular dependency; it's not an issue for package managers, and avoids the data package being left behind if mrcpp is removed.

I removed the test binary, since packaging it into a separate subpackage seems like overkill.

https://jussilehtola.fedorapeople.org/mrcpp.spec
https://jussilehtola.fedorapeople.org/mrcpp-1.4.1-1.fc35.src.rpm

Comment 6 Ben Beasley 2022-01-14 13:08:09 UTC
Package Review
==============

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

===== Issues =====

- Since eigen3 is a header-only library, you must add:

    BuildRequires:  eigen3-static

  for tracking purposes.

  https://docs.fedoraproject.org/en-US/packaging-guidelines/#_packaging_header_only_libraries


===== 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", "[generated file]", "GNU Lesser General
     Public License, Version 3", "GNU Lesser General Public License v3.0 or
     later", "*No copyright* BSD 3-Clause License", "MIT License". 472
     files have unknown license. Detailed output of licensecheck in
     /home/reviewer/2035671-mrcpp/licensecheck.txt
[x]: License file installed when any subpackage combination is installed.
[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.
[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 20480 bytes in 4 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]: 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]: 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:
[-]: 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 mrcpp-
     data
[x]: Package functions as described.

     (based on tests passing)

[x]: Latest version is packaged.
[x]: Package does not include license text files separate from upstream.
[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]: 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: There are rpmlint messages (see attachment).
[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
-------
Cannot parse rpmlint output:


Rpmlint (debuginfo)
-------------------
Cannot parse rpmlint output:



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


Source checksums
----------------
https://github.com/MRChemSoft/mrcpp/archive/v1.4.1/mrcpp-1.4.1.tar.gz :
  CHECKSUM(SHA256) this package     : f369d72cc37415e9a6bdc0692ec4f6c5cfcc22e34b9ce569470e656c45e5b86c
  CHECKSUM(SHA256) upstream package : f369d72cc37415e9a6bdc0692ec4f6c5cfcc22e34b9ce569470e656c45e5b86c


Requires
--------
mrcpp (rpmlib, GLIBC filtered):
    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)
    libgomp.so.1()(64bit)
    libgomp.so.1(GOMP_1.0)(64bit)
    libgomp.so.1(GOMP_4.0)(64bit)
    libgomp.so.1(GOMP_4.5)(64bit)
    libgomp.so.1(OMP_1.0)(64bit)
    libgomp.so.1(OMP_3.0)(64bit)
    libm.so.6()(64bit)
    libstdc++.so.6()(64bit)
    libstdc++.so.6(CXXABI_1.3)(64bit)
    libstdc++.so.6(CXXABI_1.3.8)(64bit)
    libstdc++.so.6(CXXABI_1.3.9)(64bit)
    mrcpp-data
    rtld(GNU_HASH)

mrcpp-devel (rpmlib, GLIBC filtered):
    cmake-filesystem
    libmrcpp.so.1()(64bit)
    mrcpp(x86-64)

mrcpp-data (rpmlib, GLIBC filtered):
    mrcpp

mrcpp-debuginfo (rpmlib, GLIBC filtered):

mrcpp-debugsource (rpmlib, GLIBC filtered):



Provides
--------
mrcpp:
    libmrcpp.so.1()(64bit)
    mrcpp
    mrcpp(x86-64)

mrcpp-devel:
    cmake(MRCPP)
    cmake(mrcpp)
    mrcpp-devel
    mrcpp-devel(x86-64)

mrcpp-data:
    mrcpp-data

mrcpp-debuginfo:
    debuginfo(build-id)
    libmrcpp.so.1-1.4.1-1.fc36.x86_64.debug()(64bit)
    mrcpp-debuginfo
    mrcpp-debuginfo(x86-64)

mrcpp-debugsource:
    mrcpp-debugsource
    mrcpp-debugsource(x86-64)



Generated by fedora-review 0.7.6 (b083f91) last change: 2020-11-10
Command line :/usr/bin/fedora-review -b 2035671
Buildroot used: fedora-rawhide-x86_64
Active plugins: C/C++, Generic, Shell-api
Disabled plugins: Java, Haskell, Ocaml, Perl, PHP, fonts, SugarActivity, R, Python
Disabled flags: EPEL6, EPEL7, DISTTAG, BATCH, EXARCH
============================ rpmlint session starts ============================
rpmlint: 2.2.0
configuration:
    /usr/lib/python3.10/site-packages/rpmlint/configdefaults.toml
    /etc/xdg/rpmlint/fedora.toml
    /etc/xdg/rpmlint/licenses.toml
    /etc/xdg/rpmlint/scoring.toml
    /etc/xdg/rpmlint/users-groups.toml
    /etc/xdg/rpmlint/warn-on-functions.toml
checks: 32, packages: 6

mrcpp-debuginfo.x86_64: W: unstripped-binary-or-object /usr/lib/debug/usr/lib64/libmrcpp.so.1-1.4.1-1.fc36.x86_64.debug
mrcpp-debuginfo.x86_64: E: shared-library-without-dependency-information /usr/lib/debug/usr/lib64/libmrcpp.so.1-1.4.1-1.fc36.x86_64.debug
mrcpp-devel.x86_64: E: no-library-dependency-on mrcpp /usr/lib64/libmrcpp.so.1
mrcpp-data.noarch: W: no-documentation
mrcpp-debuginfo.x86_64: W: no-documentation
mrcpp-debugsource.x86_64: W: no-documentation
mrcpp-devel.x86_64: W: no-documentation
mrcpp-debugsource.x86_64: W: files-duplicate /usr/src/debug/mrcpp-1.4.1-1.fc36.x86_64/src/utils/Printer.h /usr/src/debug/mrcpp-1.4.1-1.fc36.x86_64/redhat-linux-build/include/MRCPP/utils/Printer.h
mrcpp-debuginfo.x86_64: W: dangling-relative-symlink /usr/lib/debug/.build-id/c8/25824f7d36c40fd895a760695ed76777eaba50 ../../../.build-id/c8/25824f7d36c40fd895a760695ed76777eaba50
 6 packages and 0 specfiles checked; 2 errors, 7 warnings, 2 badness; has taken 1.7 s

Comment 7 Ben Beasley 2022-01-14 13:09:29 UTC
Except for the header-only library handling issue noted above, this looks great.

I went ahead and APPROVED the package since this last change is so trivial, but pleas do remember to add

> BuildRequires:  eigen3-static

on import.

Comment 8 Susi Lehtola 2022-01-14 17:15:21 UTC
Thank you! I've added the BR: eigen3-static in


https://jussilehtola.fedorapeople.org/mrcpp.spec
https://jussilehtola.fedorapeople.org/mrcpp-1.4.1-2.fc35.src.rpm

Comment 9 Gwyn Ciesla 2022-01-14 17:50:53 UTC
(fedscm-admin):  The Pagure repository was created at https://src.fedoraproject.org/rpms/mrcpp

Comment 10 Susi Lehtola 2022-01-17 03:18:30 UTC
The tests fail on s390x, and upstream doesn't support it, so I am disabling s390x in the initial import.

Comment 11 Fedora Update System 2022-01-17 03:49:57 UTC
FEDORA-2022-9b00caab36 has been submitted as an update to Fedora 34. https://bodhi.fedoraproject.org/updates/FEDORA-2022-9b00caab36

Comment 12 Dan Horák 2022-01-17 08:09:02 UTC
Susi, do you know what "unsupported" means? Is it "broken by design", because it's "little-endian only" or they just don't care and it's missing some arch specific bits/fixes?

Comment 13 Ben Beasley 2022-01-17 16:17:15 UTC
Here’s a scratch build with s390x re-enabled: https://koji.fedoraproject.org/koji/taskinfo?taskID=81362814

It’s not yet quite finished, but about half of the test executables are failing.

The first place I would look to fix it would be the routines that read binary data files, e.g. https://github.com/MRChemSoft/mrcpp/blob/0e079a929794aa0c135c8016c9aa4995f3376c58/src/core/CrossCorrelation.cpp#L100. There seem to be only a few of these based on grepping for std::ios::binary, and removing the little-endian assumption in these might be enough to fix s390x. Whether upstream would be receptive to a patch that adds complexity or possibly has a small impact on performance is another question…

Comment 14 Ben Beasley 2022-01-17 17:30:17 UTC
It looks like, in https://github.com/MRChemSoft/mrcpp/blob/0e079a929794aa0c135c8016c9aa4995f3376c58/src/trees/FunctionTree.cpp#L126, mrcpp obliviously byte-copies an MRNode<D> into and out of a file. This is a nontrivial data structure (https://github.com/MRChemSoft/mrcpp/blob/0e079a929794aa0c135c8016c9aa4995f3376c58/src/trees/MWNode.h#L157) and I wouldn’t expect round-trips through these .tree files to work across platforms in general. Fortunately, I don’t think the library’s tests expect that to work.

Comment 15 Fedora Update System 2022-01-18 01:23:11 UTC
FEDORA-2022-9b00caab36 has been pushed to the Fedora 34 testing repository.
Soon you'll be able to install the update with the following command:
`sudo dnf install --enablerepo=updates-testing --advisory=FEDORA-2022-9b00caab36 \*`
You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-2022-9b00caab36

See also https://fedoraproject.org/wiki/QA:Updates_Testing for more information on how to test updates.

Comment 16 Fedora Update System 2022-01-18 01:44:05 UTC
FEDORA-2022-5658d99233 has been pushed to the Fedora 35 testing repository.
Soon you'll be able to install the update with the following command:
`sudo dnf install --enablerepo=updates-testing --advisory=FEDORA-2022-5658d99233 \*`
You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-2022-5658d99233

See also https://fedoraproject.org/wiki/QA:Updates_Testing for more information on how to test updates.

Comment 17 Stig Rune Jensen 2022-01-18 11:58:15 UTC
Hi,

Dan, I guess you can say it's unsupported because we haven't cared up to this point, since we've only ever been concerned with little-endian so far.

The problem here is probably the likes of the CrossCorrelation.cpp binary readings that Ben is pointing out, which are reading static data from files that come shipped with the package. This is a small amount of data and happens once at first encounter in the code, so it is not really critical. It can quite easily be written in an endian-safe manner, but it has sort of stuck around since the beginning of time...

The other part with the MWNode is data serialization which _is_ performance critical, so I would be more hesitant to change it. This part is not meant (and never expected) to be platform portable, though.

Comment 18 Dan Horák 2022-01-18 12:21:59 UTC
Thanks to all for details. As the s390x (and ppc64le) maintainer I am always trying to better understand the reasons behind excluding packages for those architectures.

Comment 19 Fedora Update System 2022-01-30 01:33:21 UTC
FEDORA-2022-5658d99233 has been pushed to the Fedora 35 stable repository.
If problem still persists, please make note of it in this bug report.

Comment 20 Fedora Update System 2022-01-30 02:07:27 UTC
FEDORA-2022-9b00caab36 has been pushed to the Fedora 34 stable repository.
If problem still persists, please make note of it in this bug report.


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