Bug 1878903 - Review Request: jmol - Java viewer for chemical structures in 3D
Summary: Review Request: jmol - Java viewer for chemical structures in 3D
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Fedora
Classification: Fedora
Component: Package Review
Version: rawhide
Hardware: All
OS: Linux
medium
medium
Target Milestone: ---
Assignee: Andy Mender
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On: 1878902
Blocks:
TreeView+ depends on / blocked
 
Reported: 2020-09-14 20:44 UTC by Jerry James
Modified: 2020-10-05 16:34 UTC (History)
3 users (show)

Fixed In Version:
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
Environment:
Last Closed: 2020-10-05 16:34:48 UTC
Type: ---
Embargoed:
andymenderunix: fedora-review+


Attachments (Terms of Use)

Description Jerry James 2020-09-14 20:44:51 UTC
Spec URL: https://jjames.fedorapeople.org/jmol/jmol.spec
SRPM URL: https://jjames.fedorapeople.org/jmol/jmol-14.31.4-1.fc34.src.rpm
Fedora Account System Username: jjames
Description: Jmol is a free, open source molecule viewer for students, educators, and researchers in chemistry and biochemistry.

NOTE: The jmol package was previously in Fedora.  This is a re-review due to it being absent for some months.

Comment 1 Susi Lehtola 2020-09-15 13:58:49 UTC
Since you're using the old spec, please keep at least some parts of the old %changelog.

Comment 2 Jerry James 2020-09-15 15:24:40 UTC
Which parts do you think are worth keeping?  Certainly not the automatic rebuilds.  Even the "update to <version>" entries aren't worth keeping, in my opinion, since we're starting out on a newer version than the last build.  Which ones do you think should be kept?

Comment 3 Susi Lehtola 2020-09-15 15:58:35 UTC
The unretiring guideline https://fedoraproject.org/wiki/Orphaned_package_that_need_new_maintainers says: "Restore the contents in GIT and prepare a new build and update (if necessary)"

which means that the changelog shouldn't be purged, as for any other update.

If the old changelog is much too long, you can just keep e.g. the last 5 or 10 entries so that you have at least one that is not an automatic rebuild. Looks like 14.6.0 had 8 releases, and 14.4.0 had 2; if you keep 10 then you keep 5 years of history which is surely sufficient, and still won't take too much space in the spec.

Note that the changelog is anyway trimmed from the binary packages so you don't have to trim it from the spec
https://www.spinics.net/lists/fedora-devel/msg260690.html

Comment 4 Andy Mender 2020-09-26 19:10:35 UTC
Thanks a lot for packaging Jmol! I remember using it quite a bit during my PhD studies. 

COPR project with jmol and its dependency naga: https://copr.fedorainfracloud.org/coprs/andymenderunix/jmol/
If you'd like to get write access to it, please request permissions via COPR :).

> Name:           jmol
> Version:        14.31.4
> Release:        1%{?dist}
> Summary:        Java viewer for chemical structures in 3D

A couple of new versions were recently released, newest being 14.31.8: https://sourceforge.net/projects/jmol/files/Jmol/Version%2014.31/Jmol%2014.31.8/

> Requires:       apache-commons-cli
> Requires:       hicolor-icon-theme
> Requires:       java
> Requires:       javapackages-tools
> Requires:       naga
The Java Packaging Guidelines mention also that a Requires on javapackages-filesystem and java-headless should be added as well: https://docs.fedoraproject.org/en-US/packaging-guidelines/Java/#_buildrequires_and_requires
> Requires:       java-headless
> Requires:       javapackages-filesystem

> %files -n jsmol
> %doc appletweb/jsmol/README.TXT
> %{_jsdir}/jsmol/

If jsmol is an independent package, it needs to provide its own license file with the %license macro. If it's not independent, it needs to explicitly Requires the main jmol package:
> Requires: %{name} = %{version}-%{release}

> # Icons from Nuvola are included, but at different sizes than Fedora provides
> Provides:       bundled(nuvola-icon-theme)

Is the license on this icon set compatible with the other licenses?

Full review below:

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

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


Issues:
=======
- Package installs properly.
  Note: Installation errors (see attachment)
  See: https://docs.fedoraproject.org/en-US/packaging-guidelines/
- This seems like a Java package, please install fedora-review-plugin-java
  to get additional checks
  Review: not maintained anymore.
- Package does not use a name that already exists.
  Note: A package with this name already exists. Please check
  https://src.fedoraproject.org/rpms/jmol
  See: https://docs.fedoraproject.org/en-US/packaging-
  guidelines/Naming/#_conflicting_package_names
  Review: It's fine, since it's a re-review of a retired package.


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

Generic:
[x]: Package successfully compiles and builds into binary rpms on at least
     one supported primary architecture.
     Note: Using prebuilt packages
     Review: Tested in COPR. 
[x]: Package is licensed with an open-source compatible license and meets
     other legal requirements as defined in the legal section of Packaging
     Guidelines.
[x]: License field in the package spec file matches the actual license.
     Note: Checking patched sources after %prep for licenses. Licenses
     found: "Unknown or generated", "GNU Lesser General Public License
     (v2.1 or later)", "*No copyright* IBM Public License 1.0", "BSD
     2-clause "Simplified" License", "GPL (v2 or later) (with incorrect FSF
     address)", "BSD 2-clause "Simplified" License GNU Lesser General
     Public License (v2.1 or later)", "GPL (v2)", "*No copyright* GNU
     Lesser General Public License (v2.1 or later)", "GNU Lesser General
     Public License", "BSD 3-clause "New" or "Revised" License", "*No
     copyright* Apache License 2.0", "*No copyright* Creative Commons
     Attribution-ShareAlike 3.0 Unported License". 840 files have unknown
     license. Detailed output of licensecheck in
     /home/amender/rpmbuild/SPECS/jmol/jmol/licensecheck.txt
[!]: License file installed when any subpackage combination is installed.
     Review: missing in jsmol.
[x]: If the package is under multiple licenses, the licensing breakdown
     must be documented in the spec.
[ ]: Package contains no bundled libraries without FPC exception.
     Review: contains 3 bundled libraries. Were FPC exceptions granted for these?
[x]: Changelog in prescribed format.
     Review: Yes, but should include past entries as suggested by Susi Lehtola.
[x]: Sources contain only permissible code or content.
[-]: Development files must be in a -devel package
[?]: 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.
[x]: If the package is a rename of another package, proper Obsoletes and
     Provides are present.
     Review: Obsoletes for jspecview properly indicated.
[x]: Requires correct, justified where necessary.
     Review: yes, but see earlier comments.
[x]: Spec file is legible and written in American English.
[-]: Package contains systemd file(s) if in need.
[x]: Package is not known to require an ExcludeArch tag.
[x]: Large documentation must go in a -doc subpackage. Large could be size
     (~1MB) or number of files.
     Note: Documentation size is 593920 bytes in 4 files.
[x]: Package complies to the Packaging Guidelines
[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]: Package contains desktop file if it is a GUI application.
[x]: Package installs a %{name}.desktop using desktop-file-install or
     desktop-file-validate if there is such a file.
[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 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

Java:
[x]: Bundled jar/class files should be removed before build

===== SHOULD items =====

Generic:
[x]: Reviewer should test that the package builds in mock.
[-]: 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 jsmol
     Review: mentioned in earlier comment.
[?]: Package functions as described.
[!]: Latest version is packaged.
     Review: No, see earlier comments.
[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.
     Review: verified in COPR.
[-]: %check is present and all tests pass.
[x]: Packages should try to preserve timestamps of original installed
     files.
[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:
[!]: Rpmlint is run on all installed packages.
     Note: Mock build failed
     See: https://docs.fedoraproject.org/en-US/packaging-
     guidelines/#_use_rpmlint


Installation errors
-------------------
INFO: mock.py version 2.6 starting (python version = 3.8.5)...
Start: init plugins
INFO: selinux enabled
Finish: init plugins
INFO: Signal handler active
Start: run
Start: chroot init
INFO: calling preinit hooks
INFO: enabled root cache
INFO: enabled package manager cache
Start: cleaning package manager metadata
Finish: cleaning package manager metadata
INFO: enabled HW Info plugin
Mock Version: 2.6
INFO: Mock Version: 2.6
Finish: chroot init
INFO: installing package(s): /home/amender/rpmbuild/SPECS/jmol/jmol-javadoc-14.31.4-1.fc34.noarch.rpm /home/amender/rpmbuild/SPECS/jmol/jsmol-14.31.4-1.fc34.noarch.rpm /home/amender/rpmbuild/SPECS/jmol/jmol-doc-14.31.4-1.fc34.noarch.rpm /home/amender/rpmbuild/SPECS/jmol/jmol-14.31.4-1.fc34.noarch.rpm
ERROR: Command failed: 
 # /usr/bin/dnf --installroot /var/lib/mock/fedora-rawhide-x86_64/root/ --releasever 34 --setopt=deltarpm=False --allowerasing --disableplugin=local --disableplugin=spacewalk install /home/amender/rpmbuild/SPECS/jmol/jmol-javadoc-14.31.4-1.fc34.noarch.rpm /home/amender/rpmbuild/SPECS/jmol/jsmol-14.31.4-1.fc34.noarch.rpm /home/amender/rpmbuild/SPECS/jmol/jmol-doc-14.31.4-1.fc34.noarch.rpm /home/amender/rpmbuild/SPECS/jmol/jmol-14.31.4-1.fc34.noarch.rpm --setopt=tsflags=nocontexts



Rpmlint
-------
Checking: jmol-14.31.4-1.fc34.noarch.rpm
          jsmol-14.31.4-1.fc34.noarch.rpm
          jmol-javadoc-14.31.4-1.fc34.noarch.rpm
          jmol-doc-14.31.4-1.fc34.noarch.rpm
          jmol-14.31.4-1.fc34.src.rpm
jmol.noarch: W: obsolete-not-provided jspecview
jmol.noarch: E: incorrect-fsf-address /usr/share/licenses/jmol/COPYRIGHT.txt
jmol.noarch: W: no-manual-page-for-binary jmol
jsmol.noarch: W: spelling-error %description -l en_US jmol -> moll
jsmol.noarch: W: spelling-error %description -l en_US sourceforge -> Sourceforge, source forge, source-forge
jmol-javadoc.noarch: W: obsolete-not-provided jspecview-javadoc
jmol-javadoc.noarch: E: incorrect-fsf-address /usr/share/licenses/jmol-javadoc/COPYRIGHT.txt
jmol-doc.noarch: E: incorrect-fsf-address /usr/share/licenses/jmol-doc/COPYRIGHT.txt
jmol.src:56: W: unversioned-explicit-provides bundled(jspecview)
jmol.src:59: W: unversioned-explicit-provides bundled(sparshui)
jmol.src:62: W: unversioned-explicit-provides bundled(nuvola-icon-theme)
5 packages and 0 specfiles checked; 3 errors, 8 warnings.




Source checksums
----------------
http://biomodel.uah.es/Jmol/logos/Jmol_icon13.svg :
  CHECKSUM(SHA256) this package     : 247d373230b127826809480183b624d0ceff3b22a49ac1626ff31aa526af0b5a
  CHECKSUM(SHA256) upstream package : 247d373230b127826809480183b624d0ceff3b22a49ac1626ff31aa526af0b5a
http://downloads.sourceforge.net/jmol/Jmol-14.31.4-full.tar.gz :
  CHECKSUM(SHA256) this package     : 3700a7a684a0ff20decee2817f1ea3ffa1d09effbba534ee116dca9ec9ac8670
  CHECKSUM(SHA256) upstream package : 3700a7a684a0ff20decee2817f1ea3ffa1d09effbba534ee116dca9ec9ac8670


Requires
--------
jmol (rpmlib, GLIBC filtered):
    /usr/bin/bash
    apache-commons-cli
    hicolor-icon-theme
    java
    javapackages-tools
    naga

jsmol (rpmlib, GLIBC filtered):
    web-assets-filesystem

jmol-javadoc (rpmlib, GLIBC filtered):
    javapackages-tools

jmol-doc (rpmlib, GLIBC filtered):



Provides
--------
jmol:
    application()
    application(jmol.desktop)
    bundled(jspecview)
    bundled(nuvola-icon-theme)
    bundled(sparshui)
    jmol

jsmol:
    jsmol

jmol-javadoc:
    jmol-javadoc

jmol-doc:
    jmol-doc

Comment 5 Jerry James 2020-09-29 23:37:59 UTC
(In reply to Susi Lehtola from comment #3)
> The unretiring guideline
> https://fedoraproject.org/wiki/Orphaned_package_that_need_new_maintainers
> says: "Restore the contents in GIT and prepare a new build and update (if
> necessary)"
> 
> which means that the changelog shouldn't be purged, as for any other update.

I missed that.  Thanks for pointing it out.  I have restored the entire changelog.

(In reply to Andy Mender from comment #4)
> A couple of new versions were recently released, newest being 14.31.8:
> https://sourceforge.net/projects/jmol/files/Jmol/Version%2014.31/Jmol%2014.
> 31.8/

Upstream seems to release frequently.  I'm sure that will make maintaining this package ... interesting. :-)

I have updated to version 14.31.8.

> The Java Packaging Guidelines mention also that a Requires on
> javapackages-filesystem and java-headless should be added as well:
> https://docs.fedoraproject.org/en-US/packaging-guidelines/Java/

I have added javapackages-filesystem.  However, java-headless is not good enough.  This package uses Java's GUI features, so the dependency has to be on java.  This is covered by https://docs.fedoraproject.org/en-US/packaging-guidelines/Java/#_buildrequires_and_requires.

> If jsmol is an independent package, it needs to provide its own license file
> with the %license macro. If it's not independent, it needs to explicitly
> Requires the main jmol package:
> > Requires: %{name} = %{version}-%{release}

I have added the license files to jsmol.

> > # Icons from Nuvola are included, but at different sizes than Fedora provides
> > Provides:       bundled(nuvola-icon-theme)
> 
> Is the license on this icon set compatible with the other licenses?

Good catch.  The icons are GPLv2, so I have added that license to the License field.

New URLs:
Spec URL: https://jjames.fedorapeople.org/jmol/jmol.spec
SRPM URL: https://jjames.fedorapeople.org/jmol/jmol-14.31.8-1.fc34.src.rpm

Comment 6 Andy Mender 2020-09-30 19:02:56 UTC
> I have added javapackages-filesystem.  However, java-headless is not good enough.  This package uses Java's GUI features, so the dependency has to be on java.  This is covered by https://docs.fedoraproject.org/en-US/packaging-guidelines/Java/#_buildrequires_and_requires.

Makes sense!

> Good catch.  The icons are GPLv2, so I have added that license to the License field.

I ran a license check against this doc, since the package has multiple licenses: https://fedoraproject.org/wiki/Licensing:Main?rd=Licensing#SoftwareLicenses
There are some aspects of LGPLv2 vs GPLv2 which make certain scenarios not permissible, but I think in this case it's okay.

A follow-up COPR build with latest naga: https://copr.fedorainfracloud.org/coprs/andymenderunix/jmol/build/1690301/

Before I approve, could you have a look at the failed builds on Fedora 32? It seems like it's picking up Java 8 and not 11. Or is the package not compatible with Java < 11 and should only go into Fedora 33+?

Comment 7 Jerry James 2020-09-30 19:47:25 UTC
Thank you for the review, Andy.

(In reply to Andy Mender from comment #6)
> Before I approve, could you have a look at the failed builds on Fedora 32?
> It seems like it's picking up Java 8 and not 11. Or is the package not
> compatible with Java < 11 and should only go into Fedora 33+?

I have a comment at the top of the spec file about this.  My intention is to leave the package alone in <= F32 and only build this version of it in F33+.  There is a conditional

%if 0%{fedora} <= 32

on line 128 of the spec file from when I tried to get this all to work on F32, but I think I will remove that before importing.  The problem is that patch0 sets target to 11, which makes JDK 8 unhappy.

Comment 8 Andy Mender 2020-09-30 20:28:08 UTC
Sounds good, package approved!

Comment 9 Fedora Update System 2020-10-01 18:50:01 UTC
FEDORA-2020-f28bd01371 has been submitted as an update to Fedora 33. https://bodhi.fedoraproject.org/updates/FEDORA-2020-f28bd01371

Comment 10 Fedora Update System 2020-10-02 01:48:26 UTC
FEDORA-2020-f28bd01371 has been pushed to the Fedora 33 testing repository.
In short time you'll be able to install the update with the following command:
`sudo dnf upgrade --enablerepo=updates-testing --advisory=FEDORA-2020-f28bd01371`
You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-2020-f28bd01371

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

Comment 11 Fedora Update System 2020-10-05 16:34:48 UTC
FEDORA-2020-f28bd01371 has been pushed to the Fedora 33 stable repository.
If problem still persists, please make note of it in this bug report.


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