Spec URL: https://orion.fedorapeople.org/dbcsr.spec SRPM URL: https://orion.fedorapeople.org/dbcsr-2.6.0-1.fc40.src.rpm Description: DBCSR stands for Distributed Blocked Compressed Sparse Row. DBCSR is a library designed to efficiently perform sparse matrix-matrix multiplication, among other operations. It is MPI and OpenMP parallel and can exploit Nvidia and AMD GPUs via CUDA and HIP. Fedora Account System Username: orion Scratch build: https://koji.fedoraproject.org/koji/taskinfo?taskID=106019125 Looks like mpich tests are failing on s390x, filed upstream: https://github.com/cp2k/dbcsr/issues/703
Copr build: https://copr.fedorainfracloud.org/coprs/build/6393237 (failed) Build log: https://download.copr.fedorainfracloud.org/results/@fedora-review/fedora-review-2238263-dbcsr/fedora-rawhide-x86_64/06393237-dbcsr/builder-live.log.gz Please make sure the package builds successfully at least for Fedora Rawhide. - If the build failed for unrelated reasons (e.g. temporary network unavailability), please ignore it. - If the build failed because of missing BuildRequires, please make sure they are listed in the "Depends On" field --- This comment was created by the fedora-review-service https://github.com/FrostyX/fedora-review-service If you want to trigger a new Copr build, add a comment containing new Spec and SRPM URLs or [fedora-review-service-build] string.
Now ignoring test failure on s390x: https://koji.fedoraproject.org/koji/taskinfo?taskID=106020270 [fedora-review-service-build]
Created attachment 1988156 [details] The .spec file difference from Copr build 6393237 to 6394175
Copr build: https://copr.fedorainfracloud.org/coprs/build/6394175 (failed) Build log: https://download.copr.fedorainfracloud.org/results/@fedora-review/fedora-review-2238263-dbcsr/fedora-rawhide-x86_64/06394175-dbcsr/builder-live.log.gz Please make sure the package builds successfully at least for Fedora Rawhide. - If the build failed for unrelated reasons (e.g. temporary network unavailability), please ignore it. - If the build failed because of missing BuildRequires, please make sure they are listed in the "Depends On" field --- This comment was created by the fedora-review-service https://github.com/FrostyX/fedora-review-service If you want to trigger a new Copr build, add a comment containing new Spec and SRPM URLs or [fedora-review-service-build] string.
[fedora-review-service-build]
Copr build: https://copr.fedorainfracloud.org/coprs/build/6394932 (succeeded) Review template: https://download.copr.fedorainfracloud.org/results/@fedora-review/fedora-review-2238263-dbcsr/fedora-rawhide-x86_64/06394932-dbcsr/fedora-review/review.txt Please take a look if any issues were found. --- This comment was created by the fedora-review-service https://github.com/FrostyX/fedora-review-service If you want to trigger a new Copr build, add a comment containing new Spec and SRPM URLs or [fedora-review-service-build] string.
Package Review ============== Legend: [x] = Pass, [!] = Fail, [-] = Not applicable, [?] = Not evaluated [ ] = Manual review needed Issues: ======= - The License field must be a valid SPDX expression. Note: Not a valid SPDX expression 'GPLv2+'. It seems that you are using the old Fedora license abbreviations. Try `license-fedora2spdx' for converting it to SPDX. See: https://fedoraproject.org/wiki/Changes/SPDX_Licenses_Phase_1 ===== MUST items ===== C/C++: [ ]: Package does not contain kernel modules. [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]: Package contains no static executables. [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", "*No copyright* GNU General Public License", "GNU General Public License, Version 2", "Boost Software License 1.0", "BSD 2-Clause License". 171 files have unknown license. Detailed output of licensecheck in /home/FedoraPackaging/reviews/dbcsr/2238263-dbcsr/licensecheck.txt [x]: License file installed when any subpackage combination is installed. [ ]: Package requires other packages for directories it uses. Note: No known owner of /usr/lib64/gfortran [ ]: Package must own all directories that it creates. Note: Directories without known owners: /usr/lib64/gfortran, /usr/lib64/mpich/lib/cmake, /usr/lib64/openmpi/lib/cmake, /usr/lib64/gfortran/modules, /usr/lib64/mpich/include, /usr/lib64/openmpi/include, /usr/lib64/gfortran/modules/mpich, /usr/lib64/gfortran/modules/openmpi [ ]: %build honors applicable compiler flags or justifies otherwise. [ ]: Package contains no bundled libraries without FPC exception. [x]: Changelog in prescribed format. [ ]: Sources contain only permissible code or content. [-]: Package contains desktop file if it is a GUI application. [x]: Development files must be in a -devel package [x]: Package uses nothing in %doc for runtime. [x]: Package consistently uses macros (instead of hard-coded directory names). [x]: Package is named according to the Package Naming Guidelines. [ ]: Package does not generate any conflict. [ ]: 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. [ ]: Useful -debuginfo package or justification otherwise. [ ]: 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 31575 bytes in 3 files. [ ]: 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 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). [ ]: Fully versioned dependency in subpackages if applicable. Note: No Requires: %{name}%{?_isa} = %{version}-%{release} in dbcsr- openmpi , dbcsr-openmpi-devel , dbcsr-mpich , dbcsr-mpich-devel [ ]: Package functions as described. [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. [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: 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: dbcsr-2.6.0-1.fc38.x86_64.rpm dbcsr-devel-2.6.0-1.fc38.x86_64.rpm dbcsr-openmpi-2.6.0-1.fc38.x86_64.rpm dbcsr-openmpi-devel-2.6.0-1.fc38.x86_64.rpm dbcsr-mpich-2.6.0-1.fc38.x86_64.rpm dbcsr-mpich-devel-2.6.0-1.fc38.x86_64.rpm dbcsr-debuginfo-2.6.0-1.fc38.x86_64.rpm dbcsr-debugsource-2.6.0-1.fc38.x86_64.rpm dbcsr-2.6.0-1.fc38.src.rpm =========================================================== rpmlint session starts ========================================================== rpmlint: 2.4.0 configuration: /usr/lib/python3.11/site-packages/rpmlint/configdefaults.toml /etc/xdg/rpmlint/fedora-legacy-licenses.toml /etc/xdg/rpmlint/fedora-spdx-licenses.toml /etc/xdg/rpmlint/fedora.toml /etc/xdg/rpmlint/scoring.toml /etc/xdg/rpmlint/users-groups.toml /etc/xdg/rpmlint/warn-on-functions.toml rpmlintrc: [PosixPath('/tmp/tmp8yo3fcnc')] checks: 31, packages: 9 dbcsr.src: W: strange-permission dbcsr-2.6.0.tar.gz 660 dbcsr.src: W: strange-permission dbcsr-flags.patch 660 dbcsr.src: W: strange-permission dbcsr-fmoddir.patch 660 dbcsr.src: W: strange-permission dbcsr.spec 660 dbcsr-mpich-devel.x86_64: W: only-non-binary-in-usr-lib dbcsr-openmpi-devel.x86_64: W: only-non-binary-in-usr-lib dbcsr-devel.x86_64: W: no-documentation dbcsr-mpich-devel.x86_64: W: no-documentation dbcsr-openmpi-devel.x86_64: W: no-documentation dbcsr-debugsource.x86_64: E: files-duplicated-waste 7503395 ============================ 9 packages and 0 specfiles checked; 1 errors, 9 warnings, 1 badness; has taken 6.3 s =========================== Rpmlint (debuginfo) ------------------- Checking: dbcsr-openmpi-debuginfo-2.6.0-1.fc38.x86_64.rpm dbcsr-debuginfo-2.6.0-1.fc38.x86_64.rpm dbcsr-mpich-debuginfo-2.6.0-1.fc38.x86_64.rpm =========================================================== rpmlint session starts ========================================================== rpmlint: 2.4.0 configuration: /usr/lib/python3.11/site-packages/rpmlint/configdefaults.toml /etc/xdg/rpmlint/fedora-legacy-licenses.toml /etc/xdg/rpmlint/fedora-spdx-licenses.toml /etc/xdg/rpmlint/fedora.toml /etc/xdg/rpmlint/scoring.toml /etc/xdg/rpmlint/users-groups.toml /etc/xdg/rpmlint/warn-on-functions.toml rpmlintrc: [PosixPath('/tmp/tmplayen9lk')] checks: 31, packages: 3 ============================ 3 packages and 0 specfiles checked; 0 errors, 0 warnings, 0 badness; has taken 4.4 s =========================== Rpmlint (installed packages) ---------------------------- ============================ rpmlint session starts ============================ rpmlint: 2.4.0 configuration: /usr/lib/python3.11/site-packages/rpmlint/configdefaults.toml /etc/xdg/rpmlint/fedora-legacy-licenses.toml /etc/xdg/rpmlint/fedora-spdx-licenses.toml /etc/xdg/rpmlint/fedora.toml /etc/xdg/rpmlint/scoring.toml /etc/xdg/rpmlint/users-groups.toml /etc/xdg/rpmlint/warn-on-functions.toml checks: 31, packages: 10 dbcsr-openmpi.x86_64: E: unused-direct-shlib-dependency /usr/lib64/openmpi/lib/libdbcsr_c.so.2.6.0 /lib64/libm.so.6 dbcsr-openmpi.x86_64: E: unused-direct-shlib-dependency /usr/lib64/openmpi/lib/libdbcsr_c.so.2.6.0 /lib64/libgcc_s.so.1 dbcsr-mpich.x86_64: E: unused-direct-shlib-dependency /usr/lib64/mpich/lib/libdbcsr_c.so.2.6.0 /lib64/libm.so.6 dbcsr-mpich.x86_64: E: unused-direct-shlib-dependency /usr/lib64/mpich/lib/libdbcsr_c.so.2.6.0 /lib64/libgcc_s.so.1 dbcsr-mpich.x86_64: E: undefined-non-weak-symbol /usr/lib64/mpich/lib/libdbcsr.so.2.6.0 MPI_UNWEIGHTED (/usr/lib64/mpich/lib/libmpifort.so.12) dbcsr-mpich.x86_64: E: undefined-non-weak-symbol /usr/lib64/mpich/lib/libdbcsr.so.2.6.0 MPI_F_STATUSES_IGNORE (/usr/lib64/mpich/lib/libmpifort.so.12) ... PMPI_Pack_size (/usr/lib64/mpich/lib/libmpifort.so.12) dbcsr-mpich.x86_64: E: undefined-non-weak-symbol /usr/lib64/mpich/lib/libdbcsr_c.so.2.6.0 PMPI_Status_set_elements (/usr/lib64/mpich/lib/libmpifort.so.12) dbcsr-mpich-devel.x86_64: W: only-non-binary-in-usr-lib dbcsr-openmpi-devel.x86_64: W: only-non-binary-in-usr-lib dbcsr-mpich-devel.x86_64: W: no-documentation dbcsr-openmpi-devel.x86_64: W: no-documentation dbcsr-devel.x86_64: W: no-documentation dbcsr-debugsource.x86_64: E: files-duplicated-waste 7503395 10 packages and 0 specfiles checked; 1621 errors, 5 warnings, 1621 badness; has taken 13.2 s Source checksums ---------------- https://github.com/cp2k/dbcsr/releases/download/v2.6.0/dbcsr-2.6.0.tar.gz : CHECKSUM(SHA256) this package : c67b02ff9abc7c1f529af446a9f01f3ef9e5b0574f220259128da8d5ca7e9dc6 CHECKSUM(SHA256) upstream package : c67b02ff9abc7c1f529af446a9f01f3ef9e5b0574f220259128da8d5ca7e9dc6 Requires -------- dbcsr (rpmlib, GLIBC filtered): libc.so.6()(64bit) libflexiblas.so.3()(64bit) libgcc_s.so.1()(64bit) libgcc_s.so.1(GCC_3.0)(64bit) libgcc_s.so.1(GCC_3.3.1)(64bit) libgcc_s.so.1(GCC_4.0.0)(64bit) libgfortran.so.5()(64bit) libgfortran.so.5(GFORTRAN_10)(64bit) libgfortran.so.5(GFORTRAN_8)(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_2.0)(64bit) libgomp.so.1(OMP_3.0)(64bit) libm.so.6()(64bit) libmvec.so.1()(64bit) rtld(GNU_HASH) dbcsr-devel (rpmlib, GLIBC filtered): cmake-filesystem(x86-64) dbcsr(x86-64) dbcsr-openmpi (rpmlib, GLIBC filtered): libc.so.6()(64bit) libdbcsr.so.2.6()(64bit)(openmpi-x86_64) libflexiblas.so.3()(64bit) libgcc_s.so.1()(64bit) libgcc_s.so.1(GCC_3.0)(64bit) libgcc_s.so.1(GCC_3.3.1)(64bit) libgcc_s.so.1(GCC_4.0.0)(64bit) libgfortran.so.5()(64bit) libgfortran.so.5(GFORTRAN_10)(64bit) libgfortran.so.5(GFORTRAN_8)(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_2.0)(64bit) libgomp.so.1(OMP_3.0)(64bit) libm.so.6()(64bit) libmpi_mpifh.so.40()(64bit)(openmpi-x86_64) libmvec.so.1()(64bit) rtld(GNU_HASH) dbcsr-openmpi-devel (rpmlib, GLIBC filtered): dbcsr-openmpi(x86-64) dbcsr-mpich (rpmlib, GLIBC filtered): libc.so.6()(64bit) libdbcsr.so.2.6()(64bit)(mpich-x86_64) libflexiblas.so.3()(64bit) libgcc_s.so.1()(64bit) libgcc_s.so.1(GCC_3.0)(64bit) libgcc_s.so.1(GCC_3.3.1)(64bit) libgcc_s.so.1(GCC_4.0.0)(64bit) libgfortran.so.5()(64bit) libgfortran.so.5(GFORTRAN_10)(64bit) libgfortran.so.5(GFORTRAN_8)(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_2.0)(64bit) libgomp.so.1(OMP_3.0)(64bit) libm.so.6()(64bit) libmpifort.so.12()(64bit)(mpich-x86_64) libmvec.so.1()(64bit) rtld(GNU_HASH) dbcsr-mpich-devel (rpmlib, GLIBC filtered): dbcsr-mpich(x86-64) dbcsr-debuginfo (rpmlib, GLIBC filtered): dbcsr-debugsource (rpmlib, GLIBC filtered): Provides -------- dbcsr: dbcsr dbcsr(x86-64) libdbcsr.so.2.6()(64bit) dbcsr-devel: cmake(DBCSR) cmake(dbcsr) dbcsr-devel dbcsr-devel(x86-64) dbcsr-openmpi: dbcsr-openmpi dbcsr-openmpi(x86-64) libdbcsr.so.2.6()(64bit)(openmpi-x86_64) libdbcsr_c.so.2.6()(64bit)(openmpi-x86_64) dbcsr-openmpi-devel: dbcsr-openmpi-devel dbcsr-openmpi-devel(x86-64) dbcsr-mpich: dbcsr-mpich dbcsr-mpich(x86-64) libdbcsr.so.2.6()(64bit)(mpich-x86_64) libdbcsr_c.so.2.6()(64bit)(mpich-x86_64) dbcsr-mpich-devel: dbcsr-mpich-devel dbcsr-mpich-devel(x86-64) dbcsr-debuginfo: dbcsr-debuginfo dbcsr-debuginfo(x86-64) debuginfo(build-id) dbcsr-debugsource: dbcsr-debugsource dbcsr-debugsource(x86-64) Generated by fedora-review 0.10.0 (e79b66b) last change: 2023-07-24 Command line :/usr/bin/fedora-review -b 2238263 -m fedora-38-x86_64 Buildroot used: fedora-38-x86_64 Active plugins: C/C++, Shell-api, Generic Disabled plugins: Python, Haskell, R, Ocaml, SugarActivity, PHP, Ruby, Perl, fonts, Java Disabled flags: EXARCH, EPEL6, EPEL7, DISTTAG, BATCH Comments: a) dbcsr-2.6.0/tools/build_libsmm/ seems to be under BSD-2-Clause. b) Please use SPDX identifier GPL-2.0-only instead of GPLv2 c) Any idea why there are so many undefined-non-weak-symbol warnings when using Mpich and not with OpeMPI?
a) tools/* seems to not be needed, so I've removed it in %prep b) Fixed c) I'm not quite sure why it's different, but I suspect that fedora review doesn't know that it needs to load the appropriate mpi modules before evaluating symbols. It checks out okay manually: $ LD_LIBRARY_PATH=/usr/lib64/mpich/lib ldd -r /usr/lib64/mpich/lib/libdbcsr.so.2.6.0 linux-vdso.so.1 (0x00007ffcdc2dc000) libflexiblas.so.3 => /lib64/libflexiblas.so.3 (0x00007f0497800000) libgfortran.so.5 => /lib64/libgfortran.so.5 (0x00007f0497400000) libmvec.so.1 => /lib64/libmvec.so.1 (0x00007f0497706000) libmpifort.so.12 => /usr/lib64/mpich/lib/libmpifort.so.12 (0x00007f0497313000) libgomp.so.1 => /lib64/libgomp.so.1 (0x00007f0498016000) libm.so.6 => /lib64/libm.so.6 (0x00007f0497231000) libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f0497bdc000) libc.so.6 => /lib64/libc.so.6 (0x00007f0496e00000) libquadmath.so.0 => /lib64/libquadmath.so.0 (0x00007f0497b94000) /lib64/ld-linux-x86-64.so.2 (0x00007f049809d000) libmpi.so.12 => /usr/lib64/mpich/lib/libmpi.so.12 (0x00007f0496600000) libhwloc.so.15 => /lib64/libhwloc.so.15 (0x00007f04971d3000) libfabric.so.1 => /lib64/libfabric.so.1 (0x00007f0495e00000) libyaksa.so.0 => /lib64/libyaksa.so.0 (0x00007f0493a00000) libudev.so.1 => /lib64/libudev.so.1 (0x00007f049719b000) librdmacm.so.1 => /lib64/librdmacm.so.1 (0x00007f0497ff6000) libefa.so.1 => /lib64/libefa.so.1 (0x00007f0497b88000) libnl-3.so.200 => /lib64/libnl-3.so.200 (0x00007f04976e1000) libnl-route-3.so.200 => /lib64/libnl-route-3.so.200 (0x00007f0497105000) libpsm2.so.2 => /lib64/libpsm2.so.2 (0x00007f049709c000) libibverbs.so.1 => /lib64/libibverbs.so.1 (0x00007f049707a000) libuuid.so.1 => /lib64/libuuid.so.1 (0x00007f0497b7e000) libnuma.so.1 => /lib64/libnuma.so.1 (0x00007f0497b6f000) libcap.so.2 => /lib64/libcap.so.2 (0x00007f04976d7000)
Thanks for submitting this, Orion. After this is built, we can look at unbundling dbcsr from cp2k package.
- I like the compact design in `elpa`[1], what do you think of using similar `pushd`, `popd` approach with `%cmake -S ../`. There the `module load mpi/openmpi-%{_arch}` are called manually. Maybe these can work with `lua` for loops? - `-DCMAKE_INSTALL_LIBDIR:PATH=lib` should be `MPI_LIB` I don't see `$MPI_HOME` to be documented. - `-DCMAKE_PREFIX_PATH` should not be necessary. Are there cmake modules installed specific for mpi flavours? Even so they should be handled by `%{_openmpi_load}` - What is the purpose of `%global _vpath_builddir %{_vendor}-%{_target_os}-build`? - ``` # Tests fail - reported https://github.com/cp2k/dbcsr/issues/703 %ctest || : ``` Are all the tests failing, if not, how about filtering the specific test? `ctest -E <regex_of_test>` - `Release: 1%{?dist}` Should be using `rpmautospec`. Can convert it with using `rpmautospec convert` - ``` # SONAME is based on major.minor version %global sover 2.6 Version: %{sover}.0 ``` I think it is best not to rely on a macro here. E.g. packit would override the `Version` text - ``` %global git 0 %global snapshot 20230905 %global commit 4d60929fea25d66ef58ab66eaced315242d8c029 %global shortcommit %(c=%{commit}; echo ${c:0:7}) ``` Are these meant to be used in production, e.g. releasing an untagged commit version? [1] https://src.fedoraproject.org/rpms/elpa/blob/rawhide/f/elpa.spec#_258
(In reply to Cristian Le from comment #10) > - I like the compact design in `elpa`[1], what do you think of using similar > `pushd`, `popd` approach with `%cmake -S ../`. > There the `module load mpi/openmpi-%{_arch}` are called manually. Maybe > these can work with `lua` for loops? I've reworked it now to use loops. The differences between the mpi builds doesn't make it as clean as it might be, but probably better. Thoughts? > - `-DCMAKE_INSTALL_LIBDIR:PATH=lib` should be `MPI_LIB` I don't see > `$MPI_HOME` to be documented. Sure. Hmm, seems like we should document MPI_HOME then. > - `-DCMAKE_PREFIX_PATH` should not be necessary. Are there cmake modules > installed specific for mpi flavours? Even so they should be handled by > `%{_openmpi_load}` I suppose I just copied that from something that needed it. Dropped. > - What is the purpose of `%global _vpath_builddir > %{_vendor}-%{_target_os}-build`? This resets the previous declarations of _vpath_builddir. This sets the cmake build directory. Reworked now. > - ``` > # Tests fail - reported https://github.com/cp2k/dbcsr/issues/703 > %ctest || : > ``` > Are all the tests failing, if not, how about filtering the specific test? > `ctest -E <regex_of_test>` I prefer to be able to easily see if the test is still failing in the future. > - `Release: 1%{?dist}` Should be using `rpmautospec`. Can convert it with > using `rpmautospec convert` I'm still not a fan of rpmautospec. > - ``` > # SONAME is based on major.minor version > %global sover 2.6 > Version: %{sover}.0 > ``` > I think it is best not to rely on a macro here. E.g. packit would override > the `Version` text > - ``` > %global git 0 > %global snapshot 20230905 > %global commit 4d60929fea25d66ef58ab66eaced315242d8c029 > %global shortcommit %(c=%{commit}; echo ${c:0:7}) > ``` > Are these meant to be used in production, e.g. releasing an untagged > commit version? Yes. > [1] https://src.fedoraproject.org/rpms/elpa/blob/rawhide/f/elpa.spec#_258
> > - `Release: 1%{?dist}` Should be using `rpmautospec`. Can convert it with > > using `rpmautospec convert` > > I'm still not a fan of rpmautospec. I thought this is already supposed to be enforced with f38 onwards https://fedoraproject.org/wiki/Changes/Rpmautospec_by_Default > I've reworked it now to use loops. The differences between the mpi builds doesn't make it as clean as it might be, but probably better. Thoughts? I think it does make it look neater. But you're missing pushd/popd or equivalents. I will do some experimentation around [1]. I like the approach there where a macro is defined. I want to test if it can be combined with inline evaluation of a for loop (like adding a bash for loop to the `dconfigure` definition there) > I prefer to be able to easily see if the test is still failing in the future. Fair point. For this reason I like to implement packit upstream and have an open PR to monitor the progress of that. A few final points on my side: - ``` export CFLAGS="%{optflags} -fPIC" export CXXFLAGS="%{optflags} -fPIC" export FFLAGS="%{optflags} -fPIC" ``` This is already handled by `BUILD_SHARED_LIBS`. It can be necessary if upstream uses object libraries and doesn't patch those - `%{_libdir}/libdbcsr.so.%{sover}*` I prefer simply `%{_libdir}/libdbcsr.so.*`. Thoughts? [1] https://docs.fedoraproject.org/en-US/packaging-guidelines/MPI/#_a_sample_spec_file
(In reply to Cristian Le from comment #12) > - `%{_libdir}/libdbcsr.so.%{sover}*` > I prefer simply `%{_libdir}/libdbcsr.so.*`. Thoughts? Your preference is actually discouraged these days as it will miss SONAME changes: https://docs.fedoraproject.org/en-US/packaging-guidelines/#_shared_libraries ... Shared libraries installed directly into %{_libdir} SHOULD NOT be listed in the %files section of the spec by using a glob in a way that conceals important parts of the file name (e.g. libfoo.so*), since changes to the SONAME also result in a changed file name in most cases.
But in this case `%sover == %version` so it will always be changed when a non-minor version is changed. This should be an issue upstream in that the SOVERSION is changing too much. It should adopt symver and only take the major to be soversion. I am not sure just avoiding the glob is sufficient. I would say using the `rpminspect` and in this case `rpmdeplint` [1] like it is done in `bohdi` catch these errors much better. If they could be implemented as default in zuul [2], that would be ideal. [1] https://github.com/fedora-ci/rpmdeplint-pipeline [2] https://pagure.io/fedora-zuul-jobs/issue/181
(In reply to Cristian Le from comment #12) > > > - `Release: 1%{?dist}` Should be using `rpmautospec`. Can convert it with > > > using `rpmautospec convert` > > > > I'm still not a fan of rpmautospec. > > I thought this is already supposed to be enforced with f38 onwards > https://fedoraproject.org/wiki/Changes/Rpmautospec_by_Default It's recommended as the default, but it doesn't say it's required. Any way, if the other maintainers (esp. Dominik) really want it, I'm fine switching. > > I've reworked it now to use loops. The differences between the mpi builds doesn't make it as clean as it might be, but probably better. Thoughts? > > I think it does make it look neater. But you're missing pushd/popd or > equivalents. I will do some experimentation around [1]. I like the approach > there where a macro is defined. I want to test if it can be combined with > inline evaluation of a for loop (like adding a bash for loop to the > `dconfigure` definition there) There's no need for pushd/popd - _vpath_builddir handles configuring the build directories. > > I prefer to be able to easily see if the test is still failing in the future. > > Fair point. For this reason I like to implement packit upstream and have an > open PR to monitor the progress of that. > > > A few final points on my side: > - ``` > export CFLAGS="%{optflags} -fPIC" > export CXXFLAGS="%{optflags} -fPIC" > export FFLAGS="%{optflags} -fPIC" > ``` > This is already handled by `BUILD_SHARED_LIBS`. It can be necessary if > upstream uses object libraries and doesn't patch those It's needed for a particular cmake test that dbcsr does. I hope to report that upstream at some point. > - `%{_libdir}/libdbcsr.so.%{sover}*` > I prefer simply `%{_libdir}/libdbcsr.so.*`. Thoughts? Nope, as Dominik stated, we're keeping explicit mention of the SONAME scheme. > [1] > https://docs.fedoraproject.org/en-US/packaging-guidelines/MPI/ > #_a_sample_spec_file I had a typo in my last spec. I hopefully have fixed that now, new scratch build: https://koji.fedoraproject.org/koji/taskinfo?taskID=106164819
> `%global _vpath_builddir %{_vendor}-%{_target_os}-build-${mpi:-serial}` Oh interesting, it is a really neat approach, and it should be documented in the packaging guidelines. I am adopting a slight variant, and adding some comments for other packagers who want to use it as reference: > # Note: The following works beause: > # - %%global: macros are evaluated explicitly at definition, $variables are not expanded > # - %%define: macros are evaluated in-place, $variables are also expanded > %global _vpath_builddir %{_target_platform}_${mpi:-serial} I am experimenting with using `%{?}` and `%define` to do in-place expansion so that the `%cmake` build step can look cleaner and more consistent with non-mpi builds, e.g. `-DCP2K_USE_MPI=%{?$mpi:ON}%{!?$mpi:OFF}` Otherwise, maybe using environment variable expansion: `${MPI_LIB:+-DCMAKE_INSTALL_LIBDIR:PATH=$MPI_LIB}`. So far no much luck other than delving into writing lua macros. Can you check that the test are properly run in parallel? Looking at the timings for `mpich` variant, it looks really bad [1]. I do not see that PROCESSORS [1] property is set, and I don't think the upstream definition [2] takes into account `ctest -j2` that is used by default in `%ctest`. From what I read in `ProcessorCount`[3], it gets the system's max number of processors. If you know of similar discussions, let me know, I have a similar design issue to solve. [1] Github: https://github.com/LecrisUT/fedora-cp2k/pulls Copr: https://copr.fedorainfracloud.org/coprs/lecris/cp2k/builds/ [2] https://cmake.org/cmake/help/latest/prop_test/PROCESSORS.html#prop_test:PROCESSORS [3] https://github.com/cp2k/dbcsr/blob/579110dc00580dcdc06d3beef31bccd0378cf1dc/tests/CMakeLists.txt#L2C1-L14C9 [4] https://cmake.org/cmake/help/latest/module/ProcessorCount.html
I'm not sure about the processors - but in the koji build I see: Tests will run with 3 MPI ranks and 2 OpenMP threads each so it seems like something it getting detected. Benson - any more concerns or are we good here? Thanks.
> I'm not sure about the processors - but in the koji build I see: > Tests will run with 3 MPI ranks and 2 OpenMP threads each I have just ran locally `ctest -j 2 -N -V` and it is reporting ``` 19: Test command: /opt/intel/oneapi/mpi/2021.10.0/bin/mpiexec "-n" "8" "./dbcsr_tensor_test" 19: Working Directory: /dbcsr/cmake-build-debug-intel/tests 19: Environment variables: 19: OMP_NUM_THREADS=2 Test #19: dbcsr_tensor_test ``` My `nproc` is 16, and with `ctest -j 2`, it means that it runs 2 mpi jobs at maximum nproc. This is not good because the OS scheduler with have to constantly be switching. Looking at the `%ctest` macro [1], it seems that it does not explicitly adds `-j 2`, so maybe you can specify it for MPI jobs to be `%ctest -j 1`. Alternatively you can manually set `TEST_MPI_RANKS` to `$(nproc)/$TEST_OMP_THREADS/$ctest_jobs`. [1] https://src.fedoraproject.org/rpms/cmake/blob/rawhide/f/macros.cmake.in#_47
Will need one more day to get to this. Sorry for the delay.
Benson, just a friendly ping. Thanks.
fedora review does not complete at present. Error message: -- FYPP preprocessor found. -- Configuring done (5.5s) CMake Error: CMake can not determine linker language for target: fypp_DBCSR_FORTRAN_SRCS -- Generating done (0.1s) CMake Warning: Manually-specified variables were not used by the project: CMAKE_INSTALL_DO_STRIP INCLUDE_INSTALL_DIR LIB_INSTALL_DIR LIB_SUFFIX SHARE_INSTALL_PREFIX SYSCONF_INSTALL_DIR CMake Generate step failed. Build files cannot be regenerated correctly. RPM build errors: error: Bad exit status from /var/tmp/rpm-tmp.GET0PH (%build) Bad exit status from /var/tmp/rpm-tmp.GET0PH (%build) Child return code was: 1 [fedora-review-service-build]
I'm stumped, but I think it's a change in cmake or fypp. Scratch build in f37 with cmake 3.27.4-6/fypp 3.1-6 succeeds in running cmake. https://koji.fedoraproject.org/koji/taskinfo?taskID=106541192
Package Review ============== Legend: [x] = Pass, [!] = Fail, [-] = Not applicable, [?] = Not evaluated [ ] = Manual review needed ===== MUST items ===== C/C++: [ ]: Provides: bundled(gnulib) in place as required. Note: Sources not installed [x]: Package does not contain kernel modules. [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]: Package contains no static executables. [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", "*No copyright* GNU General Public License", "GNU General Public License, Version 2", "Boost Software License 1.0". 144 files have unknown license. Detailed output of licensecheck in /home/fedora/2238263-dbcsr/licensecheck.txt [x]: License file installed when any subpackage combination is installed. [ ]: Package requires other packages for directories it uses. Note: No known owner of /usr/lib64/gfortran [ ]: Package must own all directories that it creates. Note: Directories without known owners: /usr/lib64/openmpi/lib/cmake, /usr/lib64/gfortran/modules/openmpi, /usr/lib64/mpich/lib/cmake, /usr/lib64/gfortran, /usr/lib64/mpich/include, /usr/lib64/gfortran/modules, /usr/lib64/openmpi/include, /usr/lib64/gfortran/modules/mpich [x]: %build honors applicable compiler flags or justifies otherwise. [ ]: 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. [ ]: 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: Test run failed [ ]: 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]: The License field must be a valid SPDX expression. [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 dbcsr- openmpi , dbcsr-openmpi-devel , dbcsr-mpich , dbcsr-mpich-devel [ ]: Package functions as described. [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. [ ]: Package should compile and build into binary rpms on all supported architectures. [ ]: %check is present and all tests pass. [x]: Packages should try to preserve timestamps of original installed files. [x]: 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: 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: dbcsr-2.6.0-1.fc40.aarch64.rpm dbcsr-devel-2.6.0-1.fc40.aarch64.rpm dbcsr-openmpi-2.6.0-1.fc40.aarch64.rpm dbcsr-openmpi-devel-2.6.0-1.fc40.aarch64.rpm dbcsr-mpich-2.6.0-1.fc40.aarch64.rpm dbcsr-mpich-devel-2.6.0-1.fc40.aarch64.rpm dbcsr-debuginfo-2.6.0-1.fc40.aarch64.rpm dbcsr-debugsource-2.6.0-1.fc40.aarch64.rpm dbcsr-2.6.0-1.fc40.src.rpm ============================ rpmlint session starts ============================ rpmlint: 2.4.0 configuration: /usr/lib/python3.12/site-packages/rpmlint/configdefaults.toml /etc/xdg/rpmlint/fedora-legacy-licenses.toml /etc/xdg/rpmlint/fedora-spdx-licenses.toml /etc/xdg/rpmlint/fedora.toml /etc/xdg/rpmlint/scoring.toml /etc/xdg/rpmlint/users-groups.toml /etc/xdg/rpmlint/warn-on-functions.toml rpmlintrc: [PosixPath('/tmp/tmp941baknm')] checks: 31, packages: 9 dbcsr.src: W: strange-permission dbcsr-2.6.0.tar.gz 660 dbcsr.src: W: strange-permission dbcsr-flags.patch 660 dbcsr.src: W: strange-permission dbcsr-fmoddir.patch 660 dbcsr.src: W: strange-permission dbcsr.spec 660 dbcsr-mpich-devel.aarch64: W: only-non-binary-in-usr-lib dbcsr-openmpi-devel.aarch64: W: only-non-binary-in-usr-lib dbcsr-devel.aarch64: W: no-documentation dbcsr-mpich-devel.aarch64: W: no-documentation dbcsr-openmpi-devel.aarch64: W: no-documentation dbcsr-debugsource.aarch64: E: files-duplicated-waste 7492578 9 packages and 0 specfiles checked; 1 errors, 9 warnings, 1 badness; has taken 1.7 s Rpmlint (debuginfo) ------------------- Checking: dbcsr-openmpi-debuginfo-2.6.0-1.fc40.aarch64.rpm dbcsr-mpich-debuginfo-2.6.0-1.fc40.aarch64.rpm dbcsr-debuginfo-2.6.0-1.fc40.aarch64.rpm ============================ rpmlint session starts ============================ rpmlint: 2.4.0 configuration: /usr/lib/python3.12/site-packages/rpmlint/configdefaults.toml /etc/xdg/rpmlint/fedora-legacy-licenses.toml /etc/xdg/rpmlint/fedora-spdx-licenses.toml /etc/xdg/rpmlint/fedora.toml /etc/xdg/rpmlint/scoring.toml /etc/xdg/rpmlint/users-groups.toml /etc/xdg/rpmlint/warn-on-functions.toml rpmlintrc: [PosixPath('/tmp/tmpbl9_knez')] checks: 31, packages: 3 3 packages and 0 specfiles checked; 0 errors, 0 warnings, 0 badness; has taken 0.9 s Rpmlint (installed packages) ---------------------------- ============================ rpmlint session starts ============================ rpmlint: 2.4.0 configuration: /usr/lib/python3.12/site-packages/rpmlint/configdefaults.toml /etc/xdg/rpmlint/fedora-legacy-licenses.toml /etc/xdg/rpmlint/fedora-spdx-licenses.toml /etc/xdg/rpmlint/fedora.toml /etc/xdg/rpmlint/scoring.toml /etc/xdg/rpmlint/users-groups.toml /etc/xdg/rpmlint/warn-on-functions.toml checks: 31, packages: 10 dbcsr-mpich.aarch64: E: undefined-non-weak-symbol /usr/lib64/mpich/lib/libdbcsr.so.2.6.0 MPI_UNWEIGHTED (/usr/lib64/mpich/l ib/libmpifort.so.12) .... dbcsr-mpich.aarch64: E: undefined-non-weak-symbol /usr/lib64/mpich/lib/libdbcsr_c.so.2.6.0 PMPI_Status_set_elements (/u sr/lib64/mpich/lib/libmpifort.so.12) dbcsr-mpich-devel.aarch64: W: only-non-binary-in-usr-lib dbcsr-openmpi-devel.aarch64: W: only-non-binary-in-usr-lib dbcsr-devel.aarch64: W: no-documentation dbcsr-mpich-devel.aarch64: W: no-documentation dbcsr-openmpi-devel.aarch64: W: no-documentation dbcsr-debugsource.aarch64: E: files-duplicated-waste 7492578 10 packages and 0 specfiles checked; 1705 errors, 5 warnings, 1705 badness; has taken 3.0 s Source checksums ---------------- https://github.com/cp2k/dbcsr/releases/download/v2.6.0/dbcsr-2.6.0.tar.gz : CHECKSUM(SHA256) this package : c67b02ff9abc7c1f529af446a9f01f3ef9e5b0574f220259128da8d5ca7e9dc6 CHECKSUM(SHA256) upstream package : c67b02ff9abc7c1f529af446a9f01f3ef9e5b0574f220259128da8d5ca7e9dc6 Requires -------- dbcsr (rpmlib, GLIBC filtered): ld-linux-aarch64.so.1()(64bit) libc.so.6()(64bit) libflexiblas.so.3()(64bit) libgcc_s.so.1()(64bit) libgcc_s.so.1(GCC_3.0)(64bit) libgcc_s.so.1(GCC_3.3.1)(64bit) libgcc_s.so.1(GCC_4.0.0)(64bit) libgfortran.so.5()(64bit) libgfortran.so.5(GFORTRAN_10)(64bit) libgfortran.so.5(GFORTRAN_8)(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_2.0)(64bit) libgomp.so.1(OMP_3.0)(64bit) libm.so.6()(64bit) rtld(GNU_HASH) dbcsr-devel (rpmlib, GLIBC filtered): cmake-filesystem(aarch-64) dbcsr(aarch-64) dbcsr-openmpi (rpmlib, GLIBC filtered): ld-linux-aarch64.so.1()(64bit) libc.so.6()(64bit) libdbcsr.so.2.6()(64bit)(openmpi-aarch64) libflexiblas.so.3()(64bit) libgcc_s.so.1()(64bit) libgcc_s.so.1(GCC_3.0)(64bit) libgcc_s.so.1(GCC_3.3.1)(64bit) libgcc_s.so.1(GCC_4.0.0)(64bit) libgfortran.so.5()(64bit) libgfortran.so.5(GFORTRAN_10)(64bit) libgfortran.so.5(GFORTRAN_8)(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_2.0)(64bit) libgomp.so.1(OMP_3.0)(64bit) libm.so.6()(64bit) libmpi_mpifh.so.40()(64bit)(openmpi-aarch64) rtld(GNU_HASH) dbcsr-openmpi-devel (rpmlib, GLIBC filtered): dbcsr-openmpi(aarch-64) dbcsr-mpich (rpmlib, GLIBC filtered): ld-linux-aarch64.so.1()(64bit) libc.so.6()(64bit) libdbcsr.so.2.6()(64bit)(mpich-aarch64) libflexiblas.so.3()(64bit) libgcc_s.so.1()(64bit) libgcc_s.so.1(GCC_3.0)(64bit) libgcc_s.so.1(GCC_3.3.1)(64bit) libgcc_s.so.1(GCC_4.0.0)(64bit) libgfortran.so.5()(64bit) libgfortran.so.5(GFORTRAN_10)(64bit) libgfortran.so.5(GFORTRAN_8)(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_2.0)(64bit) libgomp.so.1(OMP_3.0)(64bit) libm.so.6()(64bit) libmpifort.so.12()(64bit)(mpich-aarch64) rtld(GNU_HASH) dbcsr-mpich-devel (rpmlib, GLIBC filtered): dbcsr-mpich(aarch-64) dbcsr-debuginfo (rpmlib, GLIBC filtered): dbcsr-debugsource (rpmlib, GLIBC filtered): Provides -------- dbcsr: dbcsr dbcsr(aarch-64) libdbcsr.so.2.6()(64bit) dbcsr-devel: cmake(DBCSR) cmake(dbcsr) dbcsr-devel dbcsr-devel(aarch-64) dbcsr-openmpi: dbcsr-openmpi dbcsr-openmpi(aarch-64) libdbcsr.so.2.6()(64bit)(openmpi-aarch64) libdbcsr_c.so.2.6()(64bit)(openmpi-aarch64) dbcsr-openmpi-devel: dbcsr-openmpi-devel dbcsr-openmpi-devel(aarch-64) dbcsr-mpich: dbcsr-mpich dbcsr-mpich(aarch-64) libdbcsr.so.2.6()(64bit)(mpich-aarch64) libdbcsr_c.so.2.6()(64bit)(mpich-aarch64) dbcsr-mpich-devel: dbcsr-mpich-devel dbcsr-mpich-devel(aarch-64) dbcsr-debuginfo: dbcsr-debuginfo dbcsr-debuginfo(aarch-64) debuginfo(build-id) dbcsr-debugsource: dbcsr-debugsource dbcsr-debugsource(aarch-64) Generated by fedora-review 0.10.0 (e79b66b) last change: 2023-07-24 Command line :/usr/bin/fedora-review -b 2238263 Buildroot used: fedora-rawhide-aarch64 Active plugins: C/C++, Shell-api, Generic Disabled plugins: Haskell, Ocaml, Java, Python, SugarActivity, Perl, R, fonts, PHP Disabled flags: EXARCH, EPEL6, EPEL7, DISTTAG, BATCH Comments: a) Have made pull requests to the fedora repositories for OpenMPI and MPICH packages to own some of the directories listed above without owners. Probably further pull requests are needed for the gfortran subdirectories. b) Documentation requires Ford which am packaging: https://github.com/Fortran-FOSS-Programmers/ford c) s390x build fails: https://koji.fedoraproject.org/koji/taskinfo?taskID=106962999
make sure you have the latest version - that seems to build okay: https://koji.fedoraproject.org/koji/taskinfo?taskID=107009010
Package Review ============== Legend: [x] = Pass, [!] = Fail, [-] = Not applicable, [?] = Not evaluated [ ] = Manual review needed ===== MUST items ===== C/C++: [ ]: Provides: bundled(gnulib) in place as required. Note: Sources not installed [ ]: Package does not contain kernel modules. [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]: Package contains no static executables. [x]: Rpath absent or only used for internal libs. [x]: Development (unversioned) .so files in -devel subpackage, if present. Generic: [ ]: 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", "*No copyright* GNU General Public License", "GNU General Public License, Version 2", "Boost Software License 1.0". 144 files have unknown license. Detailed output of licensecheck in /home/fedora/2238263-dbcsr/licensecheck.txt [ ]: License file installed when any subpackage combination is installed. [ ]: Package requires other packages for directories it uses. Note: No known owner of /usr/lib64/gfortran [ ]: Package must own all directories that it creates. Note: Directories without known owners: /usr/lib64/gfortran/modules, /usr/lib64/openmpi/lib/cmake, /usr/lib64/gfortran, /usr/lib64/gfortran/modules/mpich, /usr/lib64/gfortran/modules/openmpi [ ]: %build honors applicable compiler flags or justifies otherwise. [ ]: Package contains no bundled libraries without FPC exception. [ ]: Changelog in prescribed format. [ ]: Sources contain only permissible code or content. [ ]: Package contains desktop file if it is a GUI application. [ ]: Development files must be in a -devel package [ ]: Package uses nothing in %doc for runtime. [ ]: Package consistently uses macros (instead of hard-coded directory names). [ ]: Package is named according to the Package Naming Guidelines. [ ]: 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. [ ]: Requires correct, justified where necessary. [ ]: Spec file is legible and written in American English. [ ]: Package contains systemd file(s) if in need. [ ]: Useful -debuginfo package or justification otherwise. [ ]: 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: Test run failed [ ]: 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]: The License field must be a valid SPDX expression. [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. [ ]: Final provides and requires are sane (see attachments). [ ]: Fully versioned dependency in subpackages if applicable. Note: No Requires: %{name}%{?_isa} = %{version}-%{release} in dbcsr- openmpi , dbcsr-openmpi-devel , dbcsr-mpich , dbcsr-mpich-devel [ ]: Package functions as described. [ ]: Latest version is packaged. [ ]: Package does not include license text files separate from upstream. [ ]: 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. [ ]: Package should compile and build into binary rpms on all supported architectures. [ ]: %check is present and all tests pass. [ ]: 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: 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: dbcsr-2.6.0-1.fc40.aarch64.rpm dbcsr-devel-2.6.0-1.fc40.aarch64.rpm dbcsr-openmpi-2.6.0-1.fc40.aarch64.rpm dbcsr-openmpi-devel-2.6.0-1.fc40.aarch64.rpm dbcsr-mpich-2.6.0-1.fc40.aarch64.rpm dbcsr-mpich-devel-2.6.0-1.fc40.aarch64.rpm dbcsr-debuginfo-2.6.0-1.fc40.aarch64.rpm dbcsr-debugsource-2.6.0-1.fc40.aarch64.rpm dbcsr-2.6.0-1.fc40.src.rpm ============================ rpmlint session starts ============================ rpmlint: 2.4.0 configuration: /usr/lib/python3.11/site-packages/rpmlint/configdefaults.toml /etc/xdg/rpmlint/fedora-legacy-licenses.toml /etc/xdg/rpmlint/fedora-spdx-licenses.toml /etc/xdg/rpmlint/fedora.toml /etc/xdg/rpmlint/scoring.toml /etc/xdg/rpmlint/users-groups.toml /etc/xdg/rpmlint/warn-on-functions.toml rpmlintrc: [PosixPath('/tmp/tmphjjbzss8')] checks: 31, packages: 9 dbcsr.src: W: strange-permission dbcsr-2.6.0.tar.gz 660 dbcsr.src: W: strange-permission dbcsr-flags.patch 660 dbcsr.src: W: strange-permission dbcsr-fmoddir.patch 660 dbcsr.src: W: strange-permission dbcsr.spec 660 dbcsr-mpich-devel.aarch64: W: only-non-binary-in-usr-lib dbcsr-openmpi-devel.aarch64: W: only-non-binary-in-usr-lib dbcsr-devel.aarch64: W: no-documentation dbcsr-mpich-devel.aarch64: W: no-documentation dbcsr-openmpi-devel.aarch64: W: no-documentation dbcsr-debugsource.aarch64: E: files-duplicated-waste 7446481 9 packages and 0 specfiles checked; 1 errors, 9 warnings, 1 badness; has taken 1.5 s Rpmlint (debuginfo) ------------------- Checking: dbcsr-openmpi-debuginfo-2.6.0-1.fc40.aarch64.rpm dbcsr-mpich-debuginfo-2.6.0-1.fc40.aarch64.rpm dbcsr-debuginfo-2.6.0-1.fc40.aarch64.rpm ============================ rpmlint session starts ============================ rpmlint: 2.4.0 configuration: /usr/lib/python3.11/site-packages/rpmlint/configdefaults.toml /etc/xdg/rpmlint/fedora-legacy-licenses.toml /etc/xdg/rpmlint/fedora-spdx-licenses.toml /etc/xdg/rpmlint/fedora.toml /etc/xdg/rpmlint/scoring.toml /etc/xdg/rpmlint/users-groups.toml /etc/xdg/rpmlint/warn-on-functions.toml rpmlintrc: [PosixPath('/tmp/tmpk4a89edy')] checks: 31, packages: 3 3 packages and 0 specfiles checked; 0 errors, 0 warnings, 0 badness; has taken 0.8 s Rpmlint (installed packages) ---------------------------- ============================ rpmlint session starts ============================ rpmlint: 2.4.0 configuration: /usr/lib/python3.12/site-packages/rpmlint/configdefaults.toml /etc/xdg/rpmlint/fedora-legacy-licenses.toml /etc/xdg/rpmlint/fedora-spdx-licenses.toml /etc/xdg/rpmlint/fedora.toml /etc/xdg/rpmlint/scoring.toml /etc/xdg/rpmlint/users-groups.toml /etc/xdg/rpmlint/warn-on-functions.toml checks: 31, packages: 10 dbcsr-mpich.aarch64: E: undefined-non-weak-symbol /usr/lib64/mpich/lib/libdbcsr.so.2.6.0 MPI_UNWEI GHTED (/usr/lib64/mpich/lib/libmpifort.so.12) ... dbcsr-mpich.aarch64: E: undefined-non-weak-symbol /usr/lib64/mpich/lib/libdbcsr_c.so.2.6.0 PMPI_Status_set_elements (/usr/lib64/mpich/lib/libmpifort.so.12) dbcsr-openmpi-devel.aarch64: W: only-non-binary-in-usr-lib dbcsr-mpich-devel.aarch64: W: only-non-binary-in-usr-lib dbcsr-openmpi-devel.aarch64: W: no-documentation dbcsr-devel.aarch64: W: no-documentation dbcsr-mpich-devel.aarch64: W: no-documentation dbcsr-debugsource.aarch64: E: files-duplicated-waste 7446481 10 packages and 0 specfiles checked; 1705 errors, 5 warnings, 1705 badness; has taken 3.1 s Source checksums ---------------- https://github.com/cp2k/dbcsr/releases/download/v2.6.0/dbcsr-2.6.0.tar.gz : CHECKSUM(SHA256) this package : c67b02ff9abc7c1f529af446a9f01f3ef9e5b0574f220259128da8d5ca7e9dc6 CHECKSUM(SHA256) upstream package : c67b02ff9abc7c1f529af446a9f01f3ef9e5b0574f220259128da8d5ca7e9dc6 Requires -------- dbcsr (rpmlib, GLIBC filtered): ld-linux-aarch64.so.1()(64bit) libc.so.6()(64bit) libflexiblas.so.3()(64bit) libgcc_s.so.1()(64bit) libgcc_s.so.1(GCC_3.0)(64bit) libgcc_s.so.1(GCC_3.3.1)(64bit) libgcc_s.so.1(GCC_4.0.0)(64bit) libgfortran.so.5()(64bit) libgfortran.so.5(GFORTRAN_10)(64bit) libgfortran.so.5(GFORTRAN_8)(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_2.0)(64bit) libgomp.so.1(OMP_3.0)(64bit) libm.so.6()(64bit) rtld(GNU_HASH) dbcsr-devel (rpmlib, GLIBC filtered): cmake-filesystem(aarch-64) dbcsr(aarch-64) dbcsr-openmpi (rpmlib, GLIBC filtered): ld-linux-aarch64.so.1()(64bit) libc.so.6()(64bit) libdbcsr.so.2.6()(64bit)(openmpi-aarch64) libflexiblas.so.3()(64bit) libgcc_s.so.1()(64bit) libgcc_s.so.1(GCC_3.0)(64bit) libgcc_s.so.1(GCC_3.3.1)(64bit) libgcc_s.so.1(GCC_4.0.0)(64bit) libgfortran.so.5()(64bit) libgfortran.so.5(GFORTRAN_10)(64bit) libgfortran.so.5(GFORTRAN_8)(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_2.0)(64bit) libgomp.so.1(OMP_3.0)(64bit) libm.so.6()(64bit) libmpi_mpifh.so.40()(64bit)(openmpi-aarch64) rtld(GNU_HASH) dbcsr-openmpi-devel (rpmlib, GLIBC filtered): dbcsr-openmpi(aarch-64) dbcsr-mpich (rpmlib, GLIBC filtered): ld-linux-aarch64.so.1()(64bit) libc.so.6()(64bit) libdbcsr.so.2.6()(64bit)(mpich-aarch64) libflexiblas.so.3()(64bit) libgcc_s.so.1()(64bit) libgcc_s.so.1(GCC_3.0)(64bit) libgcc_s.so.1(GCC_3.3.1)(64bit) libgcc_s.so.1(GCC_4.0.0)(64bit) libgfortran.so.5()(64bit) libgfortran.so.5(GFORTRAN_10)(64bit) libgfortran.so.5(GFORTRAN_8)(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_2.0)(64bit) libgomp.so.1(OMP_3.0)(64bit) libm.so.6()(64bit) libmpifort.so.12()(64bit)(mpich-aarch64) rtld(GNU_HASH) dbcsr-mpich-devel (rpmlib, GLIBC filtered): dbcsr-mpich(aarch-64) dbcsr-debuginfo (rpmlib, GLIBC filtered): dbcsr-debugsource (rpmlib, GLIBC filtered): Provides -------- dbcsr: dbcsr dbcsr(aarch-64) libdbcsr.so.2.6()(64bit) dbcsr-devel: cmake(DBCSR) cmake(dbcsr) dbcsr-devel dbcsr-devel(aarch-64) dbcsr-openmpi: dbcsr-openmpi dbcsr-openmpi(aarch-64) libdbcsr.so.2.6()(64bit)(openmpi-aarch64) libdbcsr_c.so.2.6()(64bit)(openmpi-aarch64) dbcsr-openmpi-devel: dbcsr-openmpi-devel dbcsr-openmpi-devel(aarch-64) dbcsr-mpich: dbcsr-mpich dbcsr-mpich(aarch-64) libdbcsr.so.2.6()(64bit)(mpich-aarch64) libdbcsr_c.so.2.6()(64bit)(mpich-aarch64) dbcsr-mpich-devel: dbcsr-mpich-devel dbcsr-mpich-devel(aarch-64) dbcsr-debuginfo: dbcsr-debuginfo dbcsr-debuginfo(aarch-64) debuginfo(build-id) dbcsr-debugsource: dbcsr-debugsource dbcsr-debugsource(aarch-64) Generated by fedora-review 0.10.0 (e79b66b) last change: 2023-07-24 Command line :/usr/bin/fedora-review -b 2238263 Buildroot used: fedora-rawhide-aarch64 Active plugins: Generic, C/C++, Shell-api Disabled plugins: Java, Ocaml, Haskell, R, Python, fonts, PHP, SugarActivity, Perl Disabled flags: EXARCH, EPEL6, EPEL7, DISTTAG, BATCH Comments: a) Mostly seems ok. Any way to fix directory ownership problems?
I think the ownership issues are mostly resolved, and are minor in any case. openmpi-devel and mpich-devel now own the cmake and gfortran/modules paths. gcc-fortran owns /usr/lib64/gfortran/modules, but I don't think it's appropriate to have dbcsr-devel require gcc-fortran as it could be use by other languages.
Guidelines require use of Requires: gcc-gfortran%{_isa} https://docs.fedoraproject.org/en-US/packaging-guidelines/Fortran/#_packaging_of_fortran_programs for any package with Fortran modules, though this does not mention MPI. Will make pull requests so openmpi and mpich own %{_fmoddir}/openmpi and %{_fmoddir}/mpich respectively.
Added Requires: gcc-gfortran%{_isa} to -devel.
Thanks. Approved. https://src.fedoraproject.org/rpms/mpich/pull-request/12 https://src.fedoraproject.org/rpms/openmpi/pull-request/15
The Pagure repository was created at https://src.fedoraproject.org/rpms/dbcsr
Checked in and built. Thanks everyone.