Bug 845703

Summary: Review Request: mule - Mule Enterprise Service Bus Java libraries
Product: [Fedora] Fedora Reporter: Andy Grimm <agrimm>
Component: Package ReviewAssignee: Matt Spaulding <mspaulding06>
Status: CLOSED RAWHIDE QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: rawhideCC: jgoulding, lemenkov, mspaulding06, notting, package-review
Target Milestone: ---Flags: mspaulding06: 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: 2012-08-08 12:45:41 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:

Description Andy Grimm 2012-08-03 22:53:20 UTC
Name        : mule
Version     : 2.0.2.20080813
License     : CPAL
URL         : http://www.mulesoft.com
Summary     : Mule Enterprise Service Bus Java libraries
Description :
Mule comprises an infrastructure for Java applications to communicate,
referred to as a bus. It also gives the applications an address to
be contacted.  At this stage of the development of the packaging,
all sub-components are together in a single binary package.

SPEC: http://arg.fedorapeople.org/reviews/mule/2.0.2.20080813-2/mule.spec
SRPM: http://arg.fedorapeople.org/reviews/mule/2.0.2.20080813-2/mule-2.0.2.20080813-2.fc18.src.rpm

Ugh, I just realized the description needs to change, because I _did_ separate it into many packages... please review, and I'll make a note to fix that.

Koji build:
http://koji.fedoraproject.org/koji/taskinfo?taskID=4356486

Comment 1 Matt Spaulding 2012-08-05 21:30:05 UTC
RPMLint Output:
mule.noarch: W: name-repeated-in-summary C Mule
mule.noarch: W: class-path-in-manifest /usr/share/java/mule/mule-core.jar
mule.src: W: name-repeated-in-summary C Mule
mule.src: W: invalid-url Source0: mule-2.0.2.20080813.tbz
mule-buildtools.noarch: W: no-documentation
mule-module-builders.noarch: W: no-documentation
mule-module-builders.noarch: W: class-path-in-manifest /usr/share/java/mule/mule-module-builders.jar
mule-module-client.noarch: W: no-documentation
mule-module-client.noarch: W: class-path-in-manifest /usr/share/java/mule/mule-module-client.jar
mule-module-jaas.noarch: W: no-documentation
mule-module-jaas.noarch: W: class-path-in-manifest /usr/share/java/mule/mule-module-jaas.jar
mule-module-ognl.noarch: W: no-documentation
mule-module-ognl.noarch: W: class-path-in-manifest /usr/share/java/mule/mule-module-ognl.jar
mule-module-spring-config.noarch: W: no-documentation
mule-module-spring-config.noarch: W: class-path-in-manifest /usr/share/java/mule/mule-module-spring-config.jar
mule-module-xml.noarch: W: no-documentation
mule-module-xml.noarch: W: class-path-in-manifest /usr/share/java/mule/mule-module-xml.jar
mule-transport-bpm.noarch: W: no-documentation
mule-transport-bpm.noarch: W: class-path-in-manifest /usr/share/java/mule/mule-transport-bpm.jar
mule-transport-ejb.noarch: W: no-documentation
mule-transport-ejb.noarch: W: class-path-in-manifest /usr/share/java/mule/mule-transport-ejb.jar
mule-transport-http.noarch: W: no-documentation
mule-transport-http.noarch: W: class-path-in-manifest /usr/share/java/mule/mule-transport-http.jar
mule-transport-jms.noarch: W: no-documentation
mule-transport-jms.noarch: W: class-path-in-manifest /usr/share/java/mule/mule-transport-jms.jar
mule-transport-multicast.noarch: W: no-documentation
mule-transport-multicast.noarch: W: class-path-in-manifest /usr/share/java/mule/mule-transport-multicast.jar
mule-transport-quartz.noarch: W: no-documentation
mule-transport-quartz.noarch: W: class-path-in-manifest /usr/share/java/mule/mule-transport-quartz.jar
mule-transport-rmi.noarch: W: no-documentation
mule-transport-rmi.noarch: W: class-path-in-manifest /usr/share/java/mule/mule-transport-rmi.jar
mule-transport-servlet.noarch: W: no-documentation
mule-transport-servlet.noarch: W: class-path-in-manifest /usr/share/java/mule/mule-transport-servlet.jar
mule-transport-soap.noarch: W: no-documentation
mule-transport-soap.noarch: W: class-path-in-manifest /usr/share/java/mule/mule-transport-soap.jar
mule-transport-ssl.noarch: W: no-documentation
mule-transport-ssl.noarch: W: class-path-in-manifest /usr/share/java/mule/mule-transport-ssl.jar
mule-transport-stdio.noarch: W: no-documentation
mule-transport-stdio.noarch: W: class-path-in-manifest /usr/share/java/mule/mule-transport-stdio.jar
mule-transport-tcp.noarch: W: no-documentation
mule-transport-tcp.noarch: W: class-path-in-manifest /usr/share/java/mule/mule-transport-tcp.jar
mule-transport-udp.noarch: W: no-documentation
mule-transport-udp.noarch: W: class-path-in-manifest /usr/share/java/mule/mule-transport-udp.jar
mule-transport-vm.noarch: W: no-documentation
mule-transport-vm.noarch: W: class-path-in-manifest /usr/share/java/mule/mule-transport-vm.jar
/home/mspaulding/rpmbuild/SPECS/mule.spec: W: invalid-url Source0: mule-2.0.2.20080813.tbz
24 packages and 1 specfiles checked; 0 errors, 46 warnings.


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

Key:
- = N/A
x = Pass
! = Fail
? = Not evaluated

==== Generic ====
[x]: EXTRA Rpmlint is run on all installed packages.
[-]: EXTRA Spec file according to URL is the same as in SRPM.
[x]: MUST Package is licensed with an open-source compatible license and meets
     other legal requirements as defined in the legal section of Packaging
     Guidelines. (CPAL)
[x]: MUST Package successfully compiles and builds into binary rpms on at
     least one supported primary architecture.
[-]: MUST %build honors applicable compiler flags or justifies otherwise.
[x]: MUST All build dependencies are listed in BuildRequires, except for any
     that are listed in the exceptions section of Packaging Guidelines.
[x]: MUST Buildroot is not present
[x]: MUST Package contains no bundled libraries.
[x]: MUST Changelog in prescribed format.
[x]: MUST Package has no %clean section with rm -rf %{buildroot} (or
     $RPM_BUILD_ROOT)
[x]: MUST Sources contain only permissible code or content.
[-]: MUST Each %files section contains %defattr if rpm < 4.4
[x]: MUST Macros in Summary, %description expandable at SRPM build time.
[-]: MUST Package contains desktop file if it is a GUI application.
[-]: MUST Development files must be in a -devel package
[x]: MUST Package requires other packages for directories it uses.
[x]: MUST Package uses nothing in %doc for runtime.
[x]: MUST Package is not known to require ExcludeArch.
[x]: MUST Permissions on files are set properly.
[x]: MUST Package does not contain duplicates in %files.
[x]: MUST Package complies to the Packaging Guidelines
[x]: MUST Spec file lacks Packager, Vendor, PreReq tags.
[x]: MUST Package does not run rm -rf %{buildroot} (or $RPM_BUILD_ROOT) at the
     beginning of %install.
[-]: MUST Large documentation files are in a -doc subpackage, if required.
[x]: MUST 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. [1]
[x]: MUST License field in the package spec file matches the actual license. [2]
[x]: MUST Package consistently uses macros (instead of hard-coded directory
     names).
[x]: MUST Package is named using only allowed ascii characters.
[x]: MUST Package is named according to the Package Naming Guidelines.
[x]: MUST Package does not generate any conflict.
[x]: MUST Package obeys FHS, except libexecdir and /usr/target.
[x]: MUST Package must own all directories that it creates.
[x]: MUST Package does not own files or directories owned by other packages.
[x]: MUST Package installs properly.
[x]: MUST Package is not relocatable.
[!]: MUST Requires correct, justified where necessary.
[x]: MUST Rpmlint is run on all rpms the build produces.
[x]: MUST Sources used to build the package match the upstream source, as
     provided in the spec URL. [1]
[x]: MUST Spec file is legible and written in American English.
[x]: MUST Spec file name must match the spec package %{name}, in the format
     %{name}.spec.
[-]: MUST Package contains systemd file(s) if in need.
[x]: MUST File names are valid UTF-8.
[x]: SHOULD Reviewer should test that the package builds in mock.
[-]: SHOULD 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]: SHOULD Dist tag is present.
[x]: SHOULD No file requires outside of /etc, /bin, /sbin, /usr/bin,
     /usr/sbin.
[x]: SHOULD Final provides and requires are sane (rpm -q --provides and rpm -q
     --requires).
[x]: SHOULD Package functions as described.
[!]: SHOULD Latest version is packaged.
[x]: SHOULD Package does not include license text files separate from
     upstream.
[x]: SHOULD SourceX / PatchY prefixed with %{name}.
[x]: SHOULD SourceX is a working URL. [1]
[-]: SHOULD Description and summary sections in the package spec file contains
     translations for supported Non-English languages, if available.
[x]: SHOULD Package should compile and build into binary rpms on all supported
     architectures.
[!]: SHOULD %check is present and all tests pass. [3]
[!]: SHOULD Packages should try to preserve timestamps of original installed
     files.
[x]: SHOULD Spec use %global instead of %define.


==== Java ====
[x]: MUST If source tarball includes bundled jar/class files these need to be
     removed prior to building
[x]: MUST Packages have proper BuildRequires/Requires on jpackage-utils [4]
[x]: MUST Fully versioned dependency in subpackages, if present.
[x]: MUST Javadoc documentation files are generated and included in -javadoc
     subpackage
[x]: MUST Javadoc subpackages have Requires: jpackage-utils
[x]: MUST Javadocs are placed in %{_javadocdir}/%{name} (no -%{version}
     symlink)
[x]: SHOULD Package has BuildArch: noarch (if possible)
[x]: SHOULD Package uses upstream build method (ant/maven/etc.)


Issues/Notes:

1. Sub-packages listed as missing documentation in RPMLint output is okay. All documentation is contained in the single javadoc package.

2. RPMLint output claims there are hardcoded locations in the class-path. I have unpacked the jar files and do not see this in the MANIFEST.MF files. Looks like a false positive.

3. No %check section with tests. This is okay since it is noted that tests do not yet build.

4. The package apache-commons-logging is only listed as a BuildRequires, though it appears all packages are using it. I believe this should be listed as a Requires for each package.

5. Copying of LICENSE.txt and javadoc files needs to preserve timestamps. Please fix these.

Comment 2 Andy Grimm 2012-08-06 00:43:04 UTC
Regarding #2, there do appear to be "Class-Path" lines in at least some of the jars.  I'll figure out how to fix that.

I'm not sure where you found that packages are using apache-commons-logging.  Most of the pom files have specific exclusions of commons-logging with the comment "we like slf4j" (and slf4j is required by pretty much every subpackage).

Thanks for the review.  I'll post an update soon.

Comment 3 Matt Spaulding 2012-08-06 01:11:42 UTC
(In reply to comment #2)
> I'm not sure where you found that packages are using apache-commons-logging.
> Most of the pom files have specific exclusions of commons-logging with the
> comment "we like slf4j" (and slf4j is required by pretty much every
> subpackage).
> 

That comment was based on running this command:

unzip -p <mule-jar-file> | /usr/lib/rpm/javadeps --requires -- - | grep logging | sort -u

And getting output like this:

org.apache.commons.logging.Log
org.apache.commons.logging.LogFactory

Comment 4 Andy Grimm 2012-08-06 01:15:26 UTC
(In reply to comment #3)
> (In reply to comment #2)
> > I'm not sure where you found that packages are using apache-commons-logging.
> > Most of the pom files have specific exclusions of commons-logging with the
> > comment "we like slf4j" (and slf4j is required by pretty much every
> > subpackage).
> > 
> 
> That comment was based on running this command:
> 
> unzip -p <mule-jar-file> | /usr/lib/rpm/javadeps --requires -- - | grep
> logging | sort -u
> 
> And getting output like this:
> 
> org.apache.commons.logging.Log
> org.apache.commons.logging.LogFactory

...which, oddly, is also provided by jcl-over-slf4j.jar in the slf4j package.  :)

Comment 6 Matt Spaulding 2012-08-06 01:51:10 UTC
Ok, changes look good to me.

APPROVED!

Comment 7 Andy Grimm 2012-08-06 13:23:16 UTC
New Package SCM Request
=======================
Package Name: mule
Short Description: Mule Enterprise Service Bus Java libraries
Owners: arg madsa
Branches: f17
InitialCC:

Comment 8 Gwyn Ciesla 2012-08-06 13:41:27 UTC
Git done (by process-git-requests).