Bug 1930386 - Review Request: R-arules - Mining Association Rules and Frequent Itemsets
Summary: Review Request: R-arules - Mining Association Rules and Frequent Itemsets
Keywords:
Status: CLOSED RAWHIDE
Alias: None
Product: Fedora
Classification: Fedora
Component: Package Review
Version: rawhide
Hardware: All
OS: Linux
medium
medium
Target Milestone: ---
Assignee: Ankur Sinha (FranciscoD)
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks: fedora-neuro, NeuroFedora
TreeView+ depends on / blocked
 
Reported: 2021-02-18 19:01 UTC by Iztok Fister Jr.
Modified: 2021-04-15 08:20 UTC (History)
2 users (show)

Fixed In Version:
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
Environment:
Last Closed: 2021-04-15 08:20:59 UTC
Type: ---
Embargoed:
sanjay.ankur: fedora-review+


Attachments (Terms of Use)

Description Iztok Fister Jr. 2021-02-18 19:01:59 UTC
Spec URL: https://raw.githubusercontent.com/firefly-cpp/arules-rpm/main/R-arules.spec
SRPM URL: https://github.com/firefly-cpp/arules-rpm/raw/main/R-arules-1.6-1.fc33.src.rpm
Description: Provides the infrastructure for representing, manipulating and analyzing transaction data and patterns (frequent itemsets and association rules). Also provides C implementations of the association mining algorithms Apriori and Eclat. 

Fedora Account System Username: iztokf

Comment 1 Ankur Sinha (FranciscoD) 2021-03-11 09:22:06 UTC
Hi Iztok,

Sorry for the delay. The package looks pretty good but there are a few tweaks that we need to make:


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

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


Issues:
=======
- Package have the default element marked as %%doc :doc, DESCRIPTION,
  CITATION
^
Looks OK as per the guidelines, so a false positive.


- The package has the standard %install section.
  Note: Package doesn't have the standard removal of *.o and *.so.
  See: https://docs.fedoraproject.org/en-US/packaging-guidelines/R/
^
This is mentioned in the spec, so looks like a false positive too. Please do double-check.

- If your application is a C or C++ application you must list a
  BuildRequires against gcc, gcc-c++ or clang.
  Note: No gcc, gcc-c++ or clang found in BuildRequires
  See: https://docs.fedoraproject.org/en-US/packaging-guidelines/C_and_C++/
^

Please include BuildRequires: gcc-c++
It probably gets included by the R-devel package, but good to explicitly include it in case the dependency chain changes in the future.


- cosmetic: use the %autosetup macro?
https://rpm.org/user_doc/autosetup.html

- the version should be 1.6.6 as per https://docs.fedoraproject.org/en-US/packaging-guidelines/R/#_r_version

- it's an arch specific package, so it should install into %{_libdir}/R/library, not %{_datadir}/R/..
https://docs.fedoraproject.org/en-US/packaging-guidelines/R/#_differences_between_arch_specific_and_noarch_r_packages


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

C/C++:
[x]: Package does not contain kernel modules.
[x]: Package contains no static executables.
[-]: Development (unversioned) .so files in -devel subpackage, if present.
     Note: Unversioned so-files in private %_libdir subdirectory (see
     attachment). Verify they are not in ld path.
[x]: Package does not contain any libtool archives (.la)
[x]: Rpath absent or only used for internal libs.

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]: 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.
^
CRAN archive does not include license, but the GitHub archive does: is it worth using the GitHub tar?

[x]: License field in the package spec file matches the actual license.
     Note: Checking patched sources after %prep for licenses. Licenses
     found: "Unknown or generated", "GNU General Public License v2.0 or
     later", "GNU Lesser General Public License". 128 files have unknown
     license. Detailed output of licensecheck in /home/asinha/dump/fedora-
     reviews/1930386-R-arules/licensecheck.txt
^
Hrm, looks OK. There's a file that is LGPL but it is included as is, so should be fine.

[-]: 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.
[-]: 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.
^
Look OK.

[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.
[x]: Package complies to the Packaging Guidelines
[x]: Package successfully compiles and builds into binary rpms on at least
     one supported primary architecture.
[x]: Package installs properly.
[x]: Rpmlint is run on all rpms the build produces.
     Note: There are rpmlint messages (see attachment).
[x]: Package requires other packages for directories it uses.
[x]: Package must own all directories that it creates.
[x]: Package does not own files or directories owned by other packages.
[x]: Package uses either %{buildroot} or $RPM_BUILD_ROOT
[x]: Package does not run rm -rf %{buildroot} (or $RPM_BUILD_ROOT) at the
     beginning of %install.
[x]: Macros in Summary, %description expandable at SRPM build time.
[x]: Dist tag is present.
[x]: Package does not contain duplicates in %files.
[x]: Permissions on files are set properly.
[x]: Package must not depend on deprecated() packages.
[x]: Package use %makeinstall only when make install DESTDIR=... doesn't
     work.
[x]: Package is named using only allowed ASCII characters.
[x]: Package does not use a name that already exists.
[x]: Package is not relocatable.
[x]: Sources used to build the package match the upstream source, as
     provided in the spec URL.
[x]: Spec file name must match the spec package %{name}, in the format
     %{name}.spec.
[x]: File names are valid UTF-8.
[x]: Large documentation must go in a -doc subpackage. Large could be size
     (~1MB) or number of files.
     Note: Documentation size is 0 bytes in 0 files.
[x]: Packages must not store files under /srv, /opt or /usr/local

R:
[x]: Package contains the mandatory BuildRequires.
[x]: Package requires R-core.

===== 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.
^
We could use the GitHub tar.

[x]: Final provides and requires are sane (see attachments).
^
Look good.

[?]: Package functions as described.
^
Not tested this.

[!]: Latest version is packaged.
^
I think it is, but the version in the spec should be 1.6.6 as per this guideline where we replace "-" with ".":
https://docs.fedoraproject.org/en-US/packaging-guidelines/R/#_r_version

[x]: Package does not include license text files separate from upstream.
[-]: 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.
[?]: Package should compile and build into binary rpms on all supported
     architectures.
^
Looks good. Scratch build:
https://koji.fedoraproject.org/koji/taskinfo?taskID=63520763

[!]: %check is present and all tests pass.
^
The tests aren't enabled. Please enable them or document why they are disabled.

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

R:
[!]: The %check macro is present
^
Please enable tests

[!]: Latest version is packaged.
     Note: Latest upstream version is 1.6.6, packaged version is 1.6
     See: https://docs.fedoraproject.org/en-US/packaging-guidelines/
^
Noted above.

===== 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 3635200 bytes in /usr/share
[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]: Spec file according to URL is the same as in SRPM.


Rpmlint
-------
Checking: R-arules-1.6-1.fc35.x86_64.rpm
          R-arules-debuginfo-1.6-1.fc35.x86_64.rpm
          R-arules-debugsource-1.6-1.fc35.x86_64.rpm
          R-arules-1.6-1.fc35.src.rpm
R-arules.x86_64: W: spelling-error %description -l en_US itemsets -> item sets, item-sets, items
R-arules.x86_64: W: spelling-error %description -l en_US Hahsler -> Hassle
R-arules.x86_64: W: spelling-error %description -l en_US doi -> dpi, do, oi
R-arules.x86_64: W: spelling-error %description -l en_US jss -> ass, JCS
R-arules.x86_64: W: incoherent-version-in-changelog 1.6-6-1 ['1.6-1.fc35', '1.6-1']
^
Should be 1.6.6-1

R-arules.x86_64: E: arch-dependent-file-in-usr-share /usr/share/R/library/arules/libs/arules.so
^
We should be installing into %{_libdir}/R/library..

R-arules.src: W: spelling-error %description -l en_US itemsets -> item sets, item-sets, items
R-arules.src: W: spelling-error %description -l en_US Hahsler -> Hassle
R-arules.src: W: spelling-error %description -l en_US doi -> dpi, do, oi
R-arules.src: W: spelling-error %description -l en_US jss -> ass, JCS
4 packages and 0 specfiles checked; 1 errors, 9 warnings.




Rpmlint (debuginfo)
-------------------
Checking: R-arules-debuginfo-1.6-1.fc35.x86_64.rpm
1 packages and 0 specfiles checked; 0 errors, 0 warnings.





Rpmlint (installed packages)
----------------------------
R-arules.x86_64: W: spelling-error %description -l en_US itemsets -> item sets, item-sets, items
R-arules.x86_64: W: spelling-error %description -l en_US Hahsler -> Hassle
R-arules.x86_64: W: spelling-error %description -l en_US doi -> dpi, do, oi
R-arules.x86_64: W: spelling-error %description -l en_US jss -> ass, JCS
^
These can be ignored

R-arules.x86_64: W: incoherent-version-in-changelog 1.6-6-1 ['1.6-1.fc35', '1.6-1']
^
Noted in another point

R-arules.x86_64: E: arch-dependent-file-in-usr-share /usr/share/R/library/arules/libs/arules.so
^ Noted above
3 packages and 0 specfiles checked; 1 errors, 5 warnings.



Unversioned so-files
--------------------
R-arules: /usr/share/R/library/arules/libs/arules.so

Source checksums
----------------
ftp://cran.r-project.org/pub/R/contrib/main/arules_1.6-6.tar.gz :
  CHECKSUM(SHA256) this package     : 7552a8383be43d057ac5ff370cfc7d4c1de0125eb34d7c22cfa50afba39463de
  CHECKSUM(SHA256) upstream package : 7552a8383be43d057ac5ff370cfc7d4c1de0125eb34d7c22cfa50afba39463de


Requires
--------
R-arules (rpmlib, GLIBC filtered):
    R(ABI)
    R(Matrix)
    R(graphics)
    R(methods)
    R(stats)
    R(utils)
    R-core
    libR.so()(64bit)
    libc.so.6()(64bit)
    rtld(GNU_HASH)

R-arules-debuginfo (rpmlib, GLIBC filtered):

R-arules-debugsource (rpmlib, GLIBC filtered):



Provides
--------
R-arules:
    R(arules)
    R-arules
    R-arules(x86-64)

R-arules-debuginfo:
    R-arules-debuginfo
    R-arules-debuginfo(x86-64)
    debuginfo(build-id)

R-arules-debugsource:
    R-arules-debugsource
    R-arules-debugsource(x86-64)



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

Comment 2 Iztok Fister Jr. 2021-03-16 10:23:32 UTC
Hi Ankur,

Thank you very much for your time and detailed comments. I have already uploaded a new version in my repo - https://github.com/firefly-cpp/arules-rpm

|||What has been done?|||

1. In order to stick to the dependency chain, gcc-c++ dependency is now included.

2. Version is now changed to 1.6.6 as per your suggestion.

3. All files go into the %{_libdir}/R/library

4. Tests are now enabled. I skip only examples, due to the problems with dependencies.

Other remarks:

Your comment: CRAN archive does not include license, but the GitHub archive does: is it worth using the GitHub tar

Using an archive from GitHub may involve more work for me as well as the other potential maintainers of this package. I am
going to query upstream to include a LICENSE in Cran archive too. 

||KOJI BUILD||
I am also attaching a final koji scratch build: https://koji.fedoraproject.org/koji/taskinfo?taskID=63879442

Comment 3 Ankur Sinha (FranciscoD) 2021-03-16 18:13:15 UTC
Thanks.

Please add the latest URLs of the spec/srpm to the comment too, so that fedora-review can find them.

SRPM: https://github.com/firefly-cpp/arules-rpm/raw/main/R-arules-1.6.6-1.fc33.src.rpm
SPEC: https://raw.githubusercontent.com/firefly-cpp/arules-rpm/main/R-arules.spec

Re-running fedora-review now.

Comment 4 Ankur Sinha (FranciscoD) 2021-03-17 08:12:33 UTC
Looks good. One or two nitpicks but you can fix those before importing


XXXX APPROVED XXXX

- please correct the cleanup command as per the R guidelines. It should be: test -d %{packname}/src && (cd %{packname}/src; rm -f *.o *.so)
The current command also removes the *c and *h files, but they should not be removed since they are used by the debug packages.
https://docs.fedoraproject.org/en-US/packaging-guidelines/R/#_cleaning_the_r_directory_of_binaries

- Since the CRAN archive does not include the license, you can skip it. In general, if upstream does include a license file in the upstream sources (Git) even if they don't include it in the release tars, we can include just the license file from the upstream SCM like this:

Source1: https://github.com/mhahsler/arules/raw/master/LICENSE

In %prep after %setup:
cp %{SOURCE1} .


This just copies the file to the directory of the uncompressed tar and we can then list the file as we would normally list other files:
%license LICENSE


- I think when you list 

%{_libdir}/R/library/%{packname}/libs

you're already including all the files in the directory, so this shouldn't be required:

%{_libdir}/R/library/%{packname}/libs/%{packname}.so

If you do want to list the files separately, then the directory listing will be:
%dir %{_libdir}/R/library/%{packname}/libs

and then all files will need to be listed (using a wildcard if necessary).

Cheers,
Ankur

Comment 5 Iztok Fister Jr. 2021-03-17 08:56:12 UTC
Thanks again Ankur!

Comment 6 Tomas Hrcka 2021-03-17 10:43:03 UTC
(fedscm-admin):  The Pagure repository was created at https://src.fedoraproject.org/rpms/R-arules


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