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
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
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
Thanks for the update! I’ll get back to it as soon as I can.
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.
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
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
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.
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
(fedscm-admin): The Pagure repository was created at https://src.fedoraproject.org/rpms/mrcpp
The tests fail on s390x, and upstream doesn't support it, so I am disabling s390x in the initial import.
FEDORA-2022-9b00caab36 has been submitted as an update to Fedora 34. https://bodhi.fedoraproject.org/updates/FEDORA-2022-9b00caab36
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?
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…
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.
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.
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.
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.
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.
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.
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.