Bug 1127879

Summary: Review Request: gnudiff
Product: [Fedora] Fedora Reporter: Ismael Olea <ismael>
Component: Package ReviewAssignee: Mat Booth <mat.booth>
Status: CLOSED NEXTRELEASE QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: rawhideCC: mat.booth, package-review, puntogil
Target Milestone: ---Flags: mat.booth: fedora-review+
gwync: fedora-cvs+
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2014-08-21 15:52:52 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 919550    

Description Ismael Olea 2014-08-07 18:10:38 UTC
http://olea.org/tmp/java-diff.spec
http://olea.org/tmp/java-diff-1.15-1.fc22.src.rpm
https://copr.fedoraproject.org/coprs/olea/OmegaT/build/24897/

Description:

The GNU diff algorithm translated to a Java class. The Diff class computes
the differences between two Object arrays as a list of changes.  This is
very general purpose.  Any of the options to GNU diff can be efficiently
implemented as variations on how Object.equals() is implemented and how the
change list is printed.  DiffPrint now sports a setOutput() method.  The
DiffPrint.Base class and derivatives should really be renamed out of the
empty package.

Comment 1 Ismael Olea 2014-08-08 11:44:05 UTC
Updated the package name and a new mavenized revision:

http://olea.org/tmp/java-gnudiff-1.15-2.fc22.src.rpm
http://olea.org/tmp/java-gnudiff.spec

Comment 3 Mat Booth 2014-08-18 08:47:10 UTC
Some things from a quick glance at the specfile...


You can make maven install the javadocs by passing -J to mvn_install. For example:

  %mvn_install -J path/to/javadocs

And then in the files section, you can have:

  %files javadoc -f .mfiles-javadoc

Also there is no need for the "%defattr(-,root,root,-)" line.

This should make your spec file a bit simpler :-)


I will do a formal review once you fix these things.

Comment 4 Mat Booth 2014-08-18 08:53:45 UTC
Also, the "Group:" tag is no longer necessary.

Comment 5 gil cattaneo 2014-08-18 09:05:31 UTC
there are also unneeded BR:
BuildRequires:  java-devel >= 1:1.6.0
BuildRequires:  maven-local
you can use only
BuildRequires:  javapackages-tools
or better
BuildRequires:  javapackages-local

unnecessary Requires (XMvn handled by XMvn - javapackages-*)
Requires:       java-headless >= 1:1.6.0
Requires:       javapackages-tools
also for sub package javadoc
Requires:       %{name} = %{version}-%{release}
Requires:       javapackages-tools

this should be a bug in XMvn, please contact mizdebsk for more info
%dir /usr/share/maven-poms/%{name}/

please use %dir %{_javadir}/%{name}/ instead of %dir /usr/share/java/%{name}/

Comment 6 Ismael Olea 2014-08-18 10:21:15 UTC
(In reply to gil cattaneo from comment #5)
> there are also unneeded BR:
> BuildRequires:  java-devel >= 1:1.6.0
> BuildRequires:  maven-local
> you can use only
> BuildRequires:  javapackages-tools
> or better
> BuildRequires:  javapackages-local
> 
> unnecessary Requires (XMvn handled by XMvn - javapackages-*)
> Requires:       java-headless >= 1:1.6.0
> Requires:       javapackages-tools
> also for sub package javadoc
> Requires:       %{name} = %{version}-%{release}
> Requires:       javapackages-tools

Reading the guidelines[1] I understand they should be exactly as I wrote :-m

What am I doing wrong?

[1] https://fedoraproject.org/wiki/Packaging:Java#BuildRequires_and_Requires

Comment 7 Ismael Olea 2014-08-18 10:32:42 UTC
(In reply to Mat Booth from comment #3)
 
> I will do a formal review once you fix these things.

Done: 
http://olea.org/tmp/gnudiff.spec
http://olea.org/tmp/gnudiff-1.15-4.fc22.src.rpm

Comment 8 Mat Booth 2014-08-18 11:25:28 UTC
(In reply to Ismael Olea from comment #6)
> (In reply to gil cattaneo from comment #5)
> > there are also unneeded BR:
> > BuildRequires:  java-devel >= 1:1.6.0
> > BuildRequires:  maven-local
> > you can use only
> > BuildRequires:  javapackages-tools
> > or better
> > BuildRequires:  javapackages-local
> > 
> > unnecessary Requires (XMvn handled by XMvn - javapackages-*)
> > Requires:       java-headless >= 1:1.6.0
> > Requires:       javapackages-tools
> > also for sub package javadoc
> > Requires:       %{name} = %{version}-%{release}
> > Requires:       javapackages-tools
> 
> Reading the guidelines[1] I understand they should be exactly as I wrote :-m
> 
> What am I doing wrong?
> 
> [1] https://fedoraproject.org/wiki/Packaging:Java#BuildRequires_and_Requires

The reason is that this package is not actually built with maven, so there is no need to BR the full maven stack. Since you build with javac, you may BR: javapackages-local instead. If you BR: javapackages-local that will also pull in java-devel, so you may choose to omit your BR on that too if you wish.

Also the Javadoc subpackage shouldn’t depend on its base package and vice versa. Please remove "Requires: %{name} = %{version}-%{release}" -- the rationale for that is that documentation should be readable without installing half the java stack. ( See https://fedorahosted.org/released/javapackages/doc/#_javadoc_packages )

Comment 9 Ismael Olea 2014-08-18 15:56:45 UTC
(In reply to Mat Booth from comment #8)

Ok. Fixed:

http://olea.org/tmp/gnudiff.spec
http://olea.org/tmp/gnudiff-1.15-5.fc22.src.rpm

Comment 10 Mat Booth 2014-08-18 16:55:02 UTC
See below for the formal review. There are only two remaining minor problems (see the note below about the junit requirement and macro usage) and one question (see my licensing note below) for my curiosity only :-)

Once these items are addressed, I would be happy to approve this package.



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

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

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

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.

NOTE: Using plain GPL is an unusual choice for java packages, this implies that all packages that require this one are also GPL licenced, is this true?

[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 %doc.
[x]: License field in the package spec file matches the actual license.
     Note: Checking patched sources after %prep for licenses. No licenses
     found. Please check the source files for licenses manually.
[-]: License file installed when any subpackage combination is installed.
[-]: Package requires other packages for directories it uses.
     Note: No known owner of /usr/share/maven-metadata
[-]: Package must own all directories that it creates.
     Note: Directories without known owners: /usr/share/maven-metadata

NOTE: The above directory should be owned by another package, it is not a problem in this package.

[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.
[!]: Package consistently uses macros (instead of hard-coded directory names).

FIXME: Use %{_datadir} instead of /usr/share in the %files section

[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.
[!]: Requires correct, justified where necessary.

FIXME: I'm not sure it's necessary to require junit at runtime. This should probably have "test" scope in the pom.xml.

[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]: 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 some warnings, but they are benign false-positives for spellings of technical terms, safe to ignore.

[x]: Package does not own files or directories owned by other packages.
[x]: All build dependencies are listed in BuildRequires, except for any that
     are listed in the exceptions section of Packaging Guidelines.
[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 does not contain duplicates in %files.
[x]: Permissions on files are set properly.
[-]: Package use %makeinstall only when make install' ' DESTDIR=... doesn't
     work.
[x]: Package is named using only allowed ASCII characters.
[x]: Package do not use a name that already exist
[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

Java:
[x]: Bundled jar/class files should be removed before build
[x]: Javadoc documentation files are generated and included in -javadoc
     subpackage
[x]: Javadoc subpackages should not have Requires: jpackage-utils
[x]: Javadocs are placed in %{_javadocdir}/%{name} (no -%{version} symlink)

Maven:
[x]: If package contains pom.xml files install it (including depmaps) even
     when building with ant
[x]: Old add_to_maven_depmap macro is not being used
[x]: Packages DO NOT have Requires(post) and Requires(postun) on jpackage-
     utils for %update_maven_depmap macro
[x]: Package DOES NOT use %update_maven_depmap in %post/%postun
[x]: Packages use %{_mavenpomdir} instead of %{_datadir}/maven2/poms

===== 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).

FIXME: See note about junit above

[-]: Fully versioned dependency in subpackages if applicable.
[?]: Package functions as described.
[x]: Latest version is packaged.
[x]: Package does not include license text files separate from upstream.
[-]: 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.
[-]: %check is present and all tests pass.
[x]: Packages should try to preserve timestamps of original installed files.
[x]: Packager, Vendor, PreReq, Copyright tags should not be in spec file
[x]: Sources can be downloaded from URI in Source: tag
[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]: Dist tag is present (not strictly required in GL).
[x]: No file requires outside of /etc, /bin, /sbin, /usr/bin, /usr/sbin.
[x]: SourceX is a working URL.
[x]: Spec use %global instead of %define unless justified.

Java:
[x]: Package uses upstream build method (ant/maven/etc.)
[x]: Packages are noarch unless they use JNI

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

Generic:
[x]: Rpmlint is run on all installed packages.
[x]: Spec file according to URL is the same as in SRPM.

Requires
--------
gnudiff-javadoc (rpmlib, GLIBC filtered):
    javapackages-tools
    jpackage-utils

gnudiff (rpmlib, GLIBC filtered):
    java-headless
    jpackage-utils
    mvn(junit:junit)

Provides
--------
gnudiff-javadoc:
    gnudiff-javadoc

gnudiff:
    gnudiff
    mvn(com.bmsi:gnudiff)
    mvn(com.bmsi:gnudiff:pom:)

Source checksums
----------------
http://bmsi.com/java/Diff.java :
  CHECKSUM(SHA256) this package     : 3e8ab9fe496b63ace13d9abc9e21230c968cbd323282d9884423b3c1facdb12e
  CHECKSUM(SHA256) upstream package : 3e8ab9fe496b63ace13d9abc9e21230c968cbd323282d9884423b3c1facdb12e
http://central.maven.org/maven2/com/bmsi/gnudiff/1.7/gnudiff-1.7.pom :
  CHECKSUM(SHA256) this package     : 05e83e2194e0ab0e4a4cb9711126bbc55c440c7783e1d780e80e21847eef4cc8
  CHECKSUM(SHA256) upstream package : 05e83e2194e0ab0e4a4cb9711126bbc55c440c7783e1d780e80e21847eef4cc8


Generated by fedora-review 0.5.1 (bb9bf27) last change: 2013-12-13
Command line :/usr/bin/fedora-review -b 1127879 -P java -m fedora-rawhide-x86_64
Buildroot used: fedora-rawhide-x86_64
Active plugins: Generic, Shell-api, Java
Disabled plugins: C/C++, Python, fonts, SugarActivity, Ocaml, Perl, Haskell, R, PHP, Ruby
Disabled flags: EXARCH, EPEL5, BATCH, DISTTAG

Comment 11 Ismael Olea 2014-08-18 17:41:33 UTC
(In reply to Mat Booth from comment #10)
> See below for the formal review. There are only two remaining minor problems
> (see the note below about the junit requirement and macro usage) and one
> question (see my licensing note below) for my curiosity only :-)

Good.


About the licensing thing, the author wrote at http://bmsi.com/java/#diff: 

  «Many people have asked me to change the license to LGPL. My port is based on GNU Diff, which is GPL. Until someone convinces me otherwise, I don't believe that I have the right to change the license. I have corresponded with the copyright holders of GNU Diff, and they are unwilling to change the license. Their position is that the GPL helps force companies to GPL more code in order to use existing GPL code.»

The modifications are done:

http://olea.org/tmp/gnudiff.spec
http://olea.org/tmp/gnudiff-1.15-6.fc22.src.rpm

Comment 12 Mat Booth 2014-08-20 19:07:56 UTC
(In reply to Ismael Olea from comment #11)
> 
> The modifications are done:
> 
> http://olea.org/tmp/gnudiff.spec
> http://olea.org/tmp/gnudiff-1.15-6.fc22.src.rpm

Super, thanks.

APPROVED

Comment 13 Ismael Olea 2014-08-20 19:22:19 UTC
New Package SCM Request
=======================
Package Name:  gnudiff
Short Description: GNU Diff for Java
Upstream URL: http://bmsi.com/java/#diff
Owners: olea
Branches: f21

Comment 14 Gwyn Ciesla 2014-08-21 11:57:16 UTC
Git done (by process-git-requests).