[Bug 800720] Review Request: resteasy - Framework for RESTful Web services and Java applications

bugzilla at redhat.com bugzilla at redhat.com
Wed Mar 14 11:39:20 UTC 2012


Please do not reply directly to this email. All additional
comments should be made in the comments box of this bug.


https://bugzilla.redhat.com/show_bug.cgi?id=800720

--- Comment #4 from Juan Hernández <juan.hernandez at redhat.com> 2012-03-14 07:39:18 EDT ---

=== REQUIRED ITEMS ===
[!]  Rpmlint output:

Output of rpmlint of the source package:

$ rpmlint resteasy-2.3.2-1.fc17.src.rpm
resteasy.src: W: name-repeated-in-summary C RESTEasy
resteasy.src: W: invalid-url URL: http://www.jboss.org/resteasy HTTP Error 403:
Forbidden
resteasy.src:217: W: macro-in-comment %{namedversion}
resteasy.src:218: W: macro-in-comment %{buildroot}
resteasy.src:218: W: macro-in-comment %{_javadir}
resteasy.src:218: W: macro-in-comment %{name}
...

The rpmlint command complais about macros in the comments, but it has been
discussed and agreed in #fedora-java that these comments are acceptable in this
case.

Output of rpmlint of the binary packages:

$ rpmlint resteasy-2.3.2-1.fc18.noarch.rpm
resteasy-javadoc-2.3.2-1.fc18.noarch.rpm 
resteasy.noarch: E: explicit-lib-dependency cglib
resteasy.noarch: W: name-repeated-in-summary C RESTEasy
resteasy.noarch: W: invalid-url URL: http://www.jboss.org/resteasy HTTP Error
403: Forbidden
resteasy-javadoc.noarch: W: spelling-error Summary(en_US) Javadocs -> Java
docs, Java-docs, Avocados
resteasy-javadoc.noarch: W: invalid-url URL: http://www.jboss.org/resteasy HTTP
Error 403: Forbidden
2 packages and 0 specfiles checked; 1 errors, 4 warnings.

The cglib dependency is not a library, but a legitimate package name.

[x]  Package is named according to the Package Naming Guidelines[1].
[x]  Spec file name must match the base package name, in the format
%{name}.spec.
[x]  Package meets the Packaging Guidelines[2].
[x]  Package successfully compiles and builds into binary rpms.
[x]  Buildroot definition is not present
[x]  Package is licensed with an open-source compatible license and meets other
legal requirements as defined in the legal section of Packaging
Guidelines[3,4].
[!]  License field in the package spec file matches the actual license.

The "License.html" file states that the license used is ASL 2.0, but them some
files contain different license statements:

* The files under "tjws" use a BDS style license. They are used mostly for
tests and we are building and packaging them.

* The files under the "eagledns" use a BSD style license. The latest upstream
version of this software uses LGPLv3. The resteasy upstream developers forked
it, but it is used only for some examples and tests and we are not building or
packaging it at the moment.

* These files tate that the license is "CDDL":

jaxrs-api/src/main/java/javax/ws/rs/PathParam.java
jaxrs-api/src/main/java/javax/ws/rs/Consumes.java
jaxrs-api/src/main/java/javax/ws/rs/PUT.java
jaxrs-api/src/main/java/javax/ws/rs/DefaultValue.java
jaxrs-api/src/main/java/javax/ws/rs/ext/MessageBodyWriter.java
jaxrs-api/src/main/java/javax/ws/rs/ext/Providers.java
jaxrs-api/src/main/java/javax/ws/rs/ext/RuntimeDelegate.java
jaxrs-api/src/main/java/javax/ws/rs/ext/Provider.java
jaxrs-api/src/main/java/javax/ws/rs/ext/ContextResolver.java
jaxrs-api/src/main/java/javax/ws/rs/ext/ExceptionMapper.java
jaxrs-api/src/main/java/javax/ws/rs/ext/MessageBodyReader.java
jaxrs-api/src/main/java/javax/ws/rs/ext/FactoryFinder.java
jaxrs-api/src/main/java/javax/ws/rs/DELETE.java
jaxrs-api/src/main/java/javax/ws/rs/HEAD.java
jaxrs-api/src/main/java/javax/ws/rs/POST.java
jaxrs-api/src/main/java/javax/ws/rs/ApplicationPath.java
jaxrs-api/src/main/java/javax/ws/rs/WebApplicationException.java
jaxrs-api/src/main/java/javax/ws/rs/MatrixParam.java
jaxrs-api/src/main/java/javax/ws/rs/Produces.java
jaxrs-api/src/main/java/javax/ws/rs/GET.java
jaxrs-api/src/main/java/javax/ws/rs/core/SecurityContext.java
jaxrs-api/src/main/java/javax/ws/rs/core/UriBuilder.java
jaxrs-api/src/main/java/javax/ws/rs/core/Variant.java
jaxrs-api/src/main/java/javax/ws/rs/core/CacheControl.java
jaxrs-api/src/main/java/javax/ws/rs/core/Context.java
jaxrs-api/src/main/java/javax/ws/rs/core/Response.java
jaxrs-api/src/main/java/javax/ws/rs/core/HttpHeaders.java
jaxrs-api/src/main/java/javax/ws/rs/core/UriBuilderException.java
jaxrs-api/src/main/java/javax/ws/rs/core/MediaType.java
jaxrs-api/src/main/java/javax/ws/rs/core/StreamingOutput.java
jaxrs-api/src/main/java/javax/ws/rs/core/NewCookie.java
jaxrs-api/src/main/java/javax/ws/rs/core/GenericEntity.java
jaxrs-api/src/main/java/javax/ws/rs/core/MultivaluedMap.java
jaxrs-api/src/main/java/javax/ws/rs/core/Request.java
jaxrs-api/src/main/java/javax/ws/rs/core/EntityTag.java
jaxrs-api/src/main/java/javax/ws/rs/core/PathSegment.java
jaxrs-api/src/main/java/javax/ws/rs/core/Application.java
jaxrs-api/src/main/java/javax/ws/rs/core/Cookie.java
jaxrs-api/src/main/java/javax/ws/rs/core/UriInfo.java
jaxrs-api/src/main/java/javax/ws/rs/Path.java
jaxrs-api/src/main/java/javax/ws/rs/HttpMethod.java
jaxrs-api/src/main/java/javax/ws/rs/OPTIONS.java
jaxrs-api/src/main/java/javax/ws/rs/FormParam.java
jaxrs-api/src/main/java/javax/ws/rs/CookieParam.java
jaxrs-api/src/main/java/javax/ws/rs/Encoded.java
jaxrs-api/src/main/java/javax/ws/rs/HeaderParam.java
jaxrs-api/src/main/java/javax/ws/rs/QueryParam.java

./jaxrs-api/src/main/java/javax/ws/rs/core/HttpHeaders.java

* These files state that the license is "LGPL":

config/eclipse/jboss-template.xml
providers/jettison/src/main/java/org/jboss/resteasy/annotations/providers/jaxb/json/BadgerFish.java
providers/jettison/src/main/java/org/jboss/resteasy/annotations/providers/jaxb/json/XmlNsMap.java
providers/jettison/src/main/java/org/jboss/resteasy/annotations/providers/jaxb/json/Mapped.java
providers/jaxb/src/main/java/org/jboss/resteasy/plugins/providers/jaxb/JAXBXmlRootElementProvider.java
providers/jaxb/src/main/java/org/jboss/resteasy/plugins/providers/jaxb/XmlNamespacePrefixMapper.java
providers/jaxb/src/main/java/org/jboss/resteasy/plugins/providers/jaxb/JAXBElementProvider.java
providers/jaxb/src/main/java/org/jboss/resteasy/plugins/providers/jaxb/JAXBXmlSeeAlsoProvider.java
providers/jaxb/src/main/java/org/jboss/resteasy/plugins/providers/jaxb/JAXBContextWrapper.java
providers/jaxb/src/main/java/org/jboss/resteasy/plugins/providers/jaxb/AbstractJAXBProvider.java
providers/jaxb/src/main/java/org/jboss/resteasy/plugins/providers/jaxb/JAXBXmlTypeProvider.java
providers/jaxb/src/test/java/org/jboss/resteasy/test/providers/jaxb/XMLStreamFactory.java
providers/jaxb/src/test/java/org/jboss/resteasy/test/providers/jaxb/JAXBCache.java
providers/jaxb/src/test/java/org/jboss/resteasy/test/providers/jaxb/JAXBHelper.java
providers/test-all-jaxb/src/test/java/org/jboss/resteasy/test/providers/jaxb/FastinfoSetJAXBXmlRootElementClient.java
providers/test-all-jaxb/src/test/java/org/jboss/resteasy/test/providers/jaxb/XMLStreamFactory.java
providers/test-all-jaxb/src/test/java/org/jboss/resteasy/test/providers/jaxb/JsonJAXBXmlRootElementClient.java
providers/test-all-jaxb/src/test/java/org/jboss/resteasy/test/providers/jaxb/JAXBCache.java
providers/test-all-jaxb/src/test/java/org/jboss/resteasy/test/providers/jaxb/TestJAXBXmlRootElementProvider.java
providers/test-all-jaxb/src/test/java/org/jboss/resteasy/test/providers/jaxb/JAXBHelper.java
providers/test-all-jaxb/src/test/java/org/jboss/resteasy/test/providers/jaxb/JAXBElementClient.java
providers/test-all-jaxb/src/test/java/org/jboss/resteasy/test/providers/jaxb/XmlOrderClient.java
providers/test-all-jaxb/src/test/java/org/jboss/resteasy/test/providers/jaxb/TestJAXBNamespacePrefix.java
providers/test-all-jaxb/src/test/java/org/jboss/resteasy/test/providers/jaxb/JsonJAXBElementClient.java
providers/test-all-jaxb/src/test/java/org/jboss/resteasy/test/providers/jaxb/OrderResource.java
providers/test-all-jaxb/src/test/java/org/jboss/resteasy/test/providers/jaxb/Parent.java
providers/test-all-jaxb/src/test/java/org/jboss/resteasy/test/providers/jaxb/JunkXmlOrderClient.java
providers/test-all-jaxb/src/test/java/org/jboss/resteasy/test/providers/jaxb/Child.java
providers/test-all-jaxb/src/test/java/org/jboss/resteasy/test/providers/jaxb/JAXBXmlRootElementResource.java
providers/test-all-jaxb/src/test/java/org/jboss/resteasy/test/providers/jaxb/TestXmlJAXBProviders.java
providers/test-all-jaxb/src/test/java/org/jboss/resteasy/test/providers/jaxb/JAXBXmlRootElementClient.java
providers/test-all-jaxb/src/test/java/org/jboss/resteasy/test/providers/jaxb/FastinfoSetJAXBElementClient.java
resteasy-jaxrs/src/main/java/org/jboss/resteasy/test/TestPortProvider.java
resteasy-jaxrs/src/main/java/org/jboss/resteasy/plugins/providers/ProviderHelper.java
resteasy-jaxrs/src/main/java/org/jboss/resteasy/plugins/providers/IIOImageProviderHelper.java
resteasy-jaxrs/src/main/java/org/jboss/resteasy/core/ExceptionAdapter.java
resteasy-jaxrs/src/main/java/org/jboss/resteasy/core/AcceptParameterHttpPreprocessor.java
resteasy-jaxrs/src/main/java/org/jboss/resteasy/annotations/Form.java
resteasy-jaxrs/src/main/java/org/jboss/resteasy/annotations/providers/img/ImageWriterParams.java
resteasy-jaxrs/src/test/java/org/jboss/resteasy/test/finegrain/resource/AcceptParameterHttpPreprocessorTest.java
resteasy-jaxrs/src/test/java/org/jboss/resteasy/test/form/FormValueHolder.java
resteasy-jaxrs/src/test/java/org/jboss/resteasy/test/form/ClientForm.java
resteasy-jaxrs/src/test/java/org/jboss/resteasy/test/form/TestFormResource.java
resteasy-jaxrs/src/test/java/org/jboss/resteasy/test/form/FormResource.java
resteasy-jaxrs/src/test/java/org/jboss/resteasy/test/TypeConverterTest.java
resteasy-spring/src/main/java/javax/ws/rs/core/MediaTypeEditor.java
resteasy-spring/src/test/java/org/jboss/resteasy/springmvc/test/resources/TypeMappingResource.java
resteasy-spring/src/test/java/org/jboss/resteasy/springmvc/test/spring/TypeMappingTest.java
resteasy-spring/src/test/java/org/jboss/resteasy/spring/TestMediaTypePropertyEditor.java
resteasy-test-data/src/main/java/org/jboss/resteasy/test/providers/jaxb/data/Item.java
resteasy-test-data/src/main/java/org/jboss/resteasy/test/providers/jaxb/data/Order.java
resteasy-test-data/src/main/java/org/jboss/resteasy/test/providers/jaxb/data/ShipTo.java

Taking this all into account I think that the license tag should be "ASL 2.0
and BSD and CDDL and LGPLv2+". According to the guidelines this can be
simplified by creating differenct subpackages, each one with its own license
tag.

[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.
[!]  All independent sub-packages have license of their own

The License.html file should go in the javadoc package.

[x]  Spec file is legible and written in American English.
[x]  Sources used to build the package matches the upstream source, as provided
in the spec URL.

Checked using a recursive diff.

[x]  All build dependencies are listed in BuildRequires, except for any that
are listed in the exceptions section of Packaging Guidelines[5].
[x]  Package must own all directories that it creates or must require other
packages for directories it uses.
[x]  Package does not contain duplicates in %files.
[x]  File sections do not contain %defattr(-,root,root,-) unless changed with
good reason
[x]  Permissions on files are set properly.
[x]  Package does NOT have a %clean section which contains rm -rf %{buildroot}
(or $RPM_BUILD_ROOT). (not needed anymore)
[!]  Package consistently uses macros (no %{buildroot} and $RPM_BUILD_ROOT
mixing)

[x]  Package contains code, or permissable content.
[-]  Fully versioned dependency in subpackages, if present.
[-]  Package contains a properly installed %{name}.desktop file if it is a GUI
application.
[x]  Package does not own files or directories owned by other packages.
[x]  Javadoc documentation files are generated and included in -javadoc
subpackage
[x]  Javadocs are placed in %{_javadocdir}/%{name} (no -%{version} symlinks)
[x]  Packages have proper BuildRequires/Requires on jpackage-utils
[x]  Javadoc subpackages have Require: jpackage-utils
[x]  Package uses %global not %define
[x]  If package uses tarball from VCS include comment how to re-create that
tarball (svn export URL, git clone URL, ...)
[-]  If source tarball includes bundled jar/class files these need to be
removed prior to building
[x]  All filenames in rpm packages must be valid UTF-8.
[x]  Jar files are installed to %{_javadir}/%{name}.jar (see [6] for details)
[!]  If package contains pom.xml files install it (including depmaps) even when
building with ant

POM files are missing for the providers.

[x]  pom files has correct add_maven_depmap

=== Maven ===
[x]  Use %{_mavenpomdir} macro for placing pom files instead of
%{_datadir}/maven2/poms
[-]  If package uses "-Dmaven.test.skip=true" explain why it was needed in a
comment
[-]  If package uses custom depmap "-Dmaven.local.depmap.file=*" explain why
it's needed in a comment
[-]  Package DOES NOT use %update_maven_depmap in %post/%postun
[-]  Packages DOES NOT have Requires(post) and Requires(postun) on
jpackage-utils for %update_maven_depmap macro

=== Other suggestions ===
[x]  If possible use upstream build method (maven/ant/javac)
[x]  Avoid having BuildRequires on exact NVR unless necessary
[x]  Package has BuildArch: noarch (if possible)
[x]  Latest version is packaged.
[x]  Reviewer should test that the package builds in mock.
Tested on: http://koji.fedoraproject.org/koji/taskinfo?taskID=3893277

=== Issues ===
1. The name is repeated in the summary.
2. The rpmlint command complais about macros in the comments, but it has been
discussed and agreed in #fedora-java that these comments are acceptable in this
case.
3. License tag should be "ASL 2.0 and BSD and CDDL and LGPLv2+", or simplified
using subpackages. The LGPL files are specially problematic, I think this
requires upstream cleanup.
4. Use only %{buildroot} and not $RPM_BUILD_ROOT if possible.
5. The License.html file should go in the javadoc package.
6. Missing POM files and dependencies maps for providers.

=== Final Notes ===
1. I wonder if the tjws code should be moved to its own independent package.

2. Issues #3 to #6 need attention, specially licensing.

-- 
Configure bugmail: https://bugzilla.redhat.com/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.


More information about the package-review mailing list