Bug 1057670 - Review Request: jetty8 - jetty compatibility package (libs only)
Summary: Review Request: jetty8 - jetty compatibility package (libs only)
Alias: None
Product: Fedora
Classification: Fedora
Component: Package Review
Version: rawhide
Hardware: All
OS: Linux
Target Milestone: ---
Assignee: Will Benton
QA Contact: Fedora Extras Quality Assurance
Depends On:
Blocks: bigdata-review solr
TreeView+ depends on / blocked
Reported: 2014-01-24 15:20 UTC by Pete MacKinnon
Modified: 2014-03-25 08:14 UTC (History)
4 users (show)

Fixed In Version: jetty8-8.1.14-4.fc20
Doc Type: Bug Fix
Doc Text:
Clone Of:
Last Closed: 2014-03-25 08:14:21 UTC
Type: ---
willb: fedora-review+
gwync: fedora-cvs+

Attachments (Terms of Use)

Description Pete MacKinnon 2014-01-24 15:20:23 UTC
Spec URL: http://pmackinn.fedorapeople.org/jetty8/jetty8.spec
SRPM URL: http://pmackinn.fedorapeople.org/jetty8/jetty8-8.1.14-1.fc21.src.rpm
Description: This is a compatibility package. It generates libraries only and lacks systemd support for a jetty 8 server (generally the embedded use case). It is runtime target compatible with Java 6.
Fedora Account System Username: pmackinn

Comment 1 Pete MacKinnon 2014-01-24 16:05:16 UTC
Should be built as:

rpmbuild -ba --without osgi --without nosql jetty8.spec

osgi,nosql support are left in as conditionals for the time being.

Comment 2 Mikolaj Izdebski 2014-01-24 16:41:51 UTC
Several issues:

1) You should use %mvn_install to install artifacts.

2) Requires are incorrect (they still require Jetty 9.x modules), you should drop explicit requres and rely on autorequires.

3) %pre, %post, %preun, %postun are not needed and should be removed.

4) You should enable tests or document why they are skipped.

5) Unneeded modules (like OSGi and NoSQL) should be removed together with all the conditional cruft.

Comment 3 Pete MacKinnon 2014-01-25 17:51:07 UTC
Spec URL: http://pmackinn.fedorapeople.org/jetty8/jetty8.spec
SRPM URL: http://pmackinn.fedorapeople.org/jetty8/jetty8-8.1.14-2.fc21.src.rpm

1) You should use %mvn_install to install artifacts.

2) Requires are incorrect (they still require Jetty 9.x modules), you should drop explicit requres and rely on autorequires.
Think I got this right:

$ rpm -qp --requires jetty8-server-8.1.14-2.fc21.noarch.rpm
java >= 1:1.6
mvn(org.eclipse.jetty:jetty-continuation) = 8.1.14.v20131031
mvn(org.eclipse.jetty:jetty-http) = 8.1.14.v20131031
mvn(org.eclipse.jetty:jetty-jmx) = 8.1.14.v20131031
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(FileDigests) <= 4.6.0-1
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rpmlib(PayloadIsXz) <= 5.2-1
$ rpm -qp --provides jetty8-server-8.1.14-2.fc21.noarch.rpm
jetty8-server = 8.1.14-2.fc21
mvn(org.eclipse.jetty:jetty-server) = 8.1.14.v20131031
osgi(org.eclipse.jetty.server) = 8.1.14

3) %pre, %post, %preun, %postun are not needed and should be removed.

5) Unneeded modules (like OSGi and NoSQL) should be removed together with all the conditional cruft.

Comment 4 Pete MacKinnon 2014-01-26 00:22:16 UTC
Spec URL: http://pmackinn.fedorapeople.org/jetty8/jetty8.spec
SRPM URL: http://pmackinn.fedorapeople.org/jetty8/jetty8-8.1.14-3.fc21.src.rpm

Further updated for (hopefully) correct usage of mvn_compat_version macro.


$ rpm -qp --provides jetty8-xml-8.1.14-3.fc21.noarch.rpm
jetty8-xml = 8.1.14-3.fc21
mvn(org.eclipse.jetty:jetty-xml:8) = 8.1.14.v20131031
mvn(org.eclipse.jetty:jetty-xml:8.1.14.v20131031) = 8.1.14.v20131031
osgi(org.eclipse.jetty.xml) = 8.1.14

Comment 5 Pete MacKinnon 2014-01-27 16:09:52 UTC
Spec URL: http://pmackinn.fedorapeople.org/jetty8/jetty8.spec
SRPM URL: http://pmackinn.fedorapeople.org/jetty8/jetty8-8.1.14-4.fc21.src.rpm

mvn_compat_version hardcoded to include current version but will also provide packaged version.

Comment 6 Mikolaj Izdebski 2014-01-27 18:16:36 UTC
My proposed spec file which is much simpler and contains only required modules.

Comment 7 Pete MacKinnon 2014-01-29 17:40:45 UTC
Thanks for the improvements. I don't even recognize it anymore! The current jetty 9 spec should enjoy such a makeover.

Will, assuming that it is OK to let go of the changelog history, moving to a monolithic package (which may be confusing for some), and, in general, any resemblance of it's previous iterations, this looks fine. 

The modules Mikolaj has isolated look to be the minimum ones we'll need in the ecosystem (at least for now). jetty-annotations, jetty-jsp *may* have to be folded in at some point in the future.

Comment 8 Will Benton 2014-01-29 17:55:39 UTC
It is a very clean spec, and I'm grateful for an idiomatic example of current xmvn best practices.  Mikolaj, we also appreciate your continued assistance in keeping things running smoothly in the face of Fedora Java infrastructure changes.

The changelog absence doesn't bother me that much (since it is essentially a "new old" package), but the monolithic packaging could be a problem.  What's the preferred way to split it up into subpackages?

Comment 9 Mikolaj Izdebski 2014-01-29 18:07:05 UTC
In the past I split Jetty into multiple packages because it had multiple users and use cases.  For example if Jetty is used as a library only then it doesn't make sense to require systemd and install service files.  But also if some package requires just servlets then it makes no sense to pull in whole Eclipse (jetty-osgi requires it) or JSP modules.

With jetty8 package there is no such problem because it has few dependants (one?) and it doesn't install jetty-distribution with systemd files et al.  But if you decide to split it into subpackages then you can do it on per-use-case basis.  For example if later it turns out that JSP is needed then you can leave one "base" jetty8 package as in comment #6 and put JSP modules in jetty8-jsp.

Comment 10 Will Benton 2014-01-29 23:49:08 UTC
Thanks, Mikolaj!  Here's my review; the only thing I'm waiting on is a clarification as to whether or not running iconv on the CDDL text constitutes an impermissible license patch.  (This is just the sort of thing I prefer to be cautious about.)

Package Review

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

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

[x]: Package is licensed with an open-source compatible license and meets
     other legal requirements as defined in the legal section of Packaging

	  * however:  I would like a clarification that running iconv on LICENSE-CONTRIBUTOR/CDDLv1.0.txt is acceptable and does not constitute an unacceptable license patch 

[x]: License field in the package spec file matches the actual license.
     Note: Checking patched sources after %prep for licenses. Licenses found:
     "MIT/X11 (BSD like)", "Apache (v2.0)", "Unknown or generated". 1313 files
     have unknown license. Detailed output of licensecheck in
[x]: License file installed when any subpackage combination is installed.
[x]: If the package is under multiple licenses, the licensing breakdown must
     be documented in the spec.
[!]: Package requires other packages for directories it uses.
[!]: Package must own all directories that it creates.

	* shouldn't %{_javadir}/jetty8 be in %files?

[x]: Package contains no bundled libraries without FPC exception.
[x]: Changelog in prescribed format.
[x]: Sources contain only permissible code or content.
[x]: Macros in Summary, %description expandable at SRPM build time.

	* ok, but maybe change "100%" --> "100%%"

[x]: 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.
[x]: If the package is a rename of another package, proper Obsoletes and
     Provides are present.
[x]: Requires correct, justified where necessary.
[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 911360 bytes in 21 files.
[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]: 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]: 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]: Each %files section contains %defattr if rpm < 4.4
[x]: Package does not contain duplicates in %files.
[x]: Permissions on files are set properly.
[x]: Package use %makeinstall only when make install' ' DESTDIR=... doesn't
[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
[x]: File names are valid UTF-8.
[x]: Packages must not store files under /srv, /opt or /usr/local

[x]: Packages have proper BuildRequires/Requires on jpackage-utils
     Note: Maven packages do not need to (Build)Require jpackage-utils. It is
     pulled in by maven-local
[x]: Javadoc documentation files are generated and included in -javadoc
[x]: Javadoc subpackages should not have Requires: jpackage-utils
[x]: Javadocs are placed in %{_javadocdir}/%{name} (no -%{version} symlink)
[x]: Bundled jar/class files should be removed before build

[x]: If package contains pom.xml files install it (including depmaps) even
     when building with ant
[x]: If tests are skipped during package build explain why it was needed in a

	  * tests disabled due to missing dependencies
[x]: Pom files have correct Maven mapping
[x]: Maven packages should use new style packaging
[x]: Old add_to_maven_depmap macro is not being used
[x]: Packages DOES 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 =====

[x]: 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).
[x]: Fully versioned dependency in subpackages if applicable.
[x]: Package functions as described.
[x]: Latest version is packaged.
[x]: Package does not include license text files separate from upstream.
[x]: 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
[!]: %check is present and all tests pass.

	* not a blocker; see above
[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
[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 tarball generation or download is documented.
[x]: SourceX is a working URL.
[x]: Spec use %global instead of %define unless justified.

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

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

[x]: Rpmlint is run on all installed packages.

	* these warnings are spurious
[x]: Large data in /usr/share should live in a noarch subpackage if package is
[x]: Spec file according to URL is the same as in SRPM.

Checking: jetty8-8.1.14-1.fc21.noarch.rpm
jetty8.noarch: W: spelling-error %description -l en_US servlets -> settler
jetty8.src: W: spelling-error %description -l en_US servlets -> settler
3 packages and 0 specfiles checked; 0 errors, 2 warnings.

Rpmlint (installed packages)
# rpmlint jetty8 jetty8-javadoc
jetty8.noarch: W: spelling-error %description -l en_US servlets -> settler
2 packages and 0 specfiles checked; 0 errors, 1 warnings.
# echo 'rpmlint-done:'

jetty8 (rpmlib, GLIBC filtered):

jetty8-javadoc (rpmlib, GLIBC filtered):



Source checksums
http://git.eclipse.org/c/jetty/org.eclipse.jetty.project.git/snapshot/jetty-8.1.14.v20131031.tar.bz2 :
  CHECKSUM(SHA256) this package     : 3ec984134f6d752a5158a194fb7b5afe6de18c6f37f63c285ccc308b7fd204d2
  CHECKSUM(SHA256) upstream package : 3ec984134f6d752a5158a194fb7b5afe6de18c6f37f63c285ccc308b7fd204d2

Generated by fedora-review 0.5.0 (920221d) last change: 2013-08-30
Command line :/usr/bin/fedora-review -n jetty8 -m fedora-rawhide-x86_64
Buildroot used: fedora-rawhide-x86_64
Active plugins: Generic, Shell-api, Java
Disabled plugins: C/C++, Python, SugarActivity, Perl, R, PHP, Ruby
Disabled flags: EPEL5, EXARCH, DISTTAG

Comment 11 Will Benton 2014-01-30 00:01:34 UTC
OK, the iconv is acceptable.  Add %{_javadir}/jetty8 to %files and I'll approve the review.

Comment 12 Pete MacKinnon 2014-01-30 16:34:28 UTC
Spec URL: http://pmackinn.fedorapeople.org/jetty8/jetty8.spec
SRPM URL: http://pmackinn.fedorapeople.org/jetty8/jetty8-8.1.14-1.fc21.src.rpm

Mikolaj's version with  %{_javadir}/jetty8 in %files.

Comment 13 Will Benton 2014-01-30 16:41:25 UTC
Thanks for making the change, Pete!

Comment 14 Pete MacKinnon 2014-01-30 17:25:34 UTC
New Package SCM Request
Package Name: jetty8
Short Description: Jetty 8 compatibility package
Owners: mizdebsk pmackinn
Branches: f20
InitialCC: java-sig

Comment 15 Gwyn Ciesla 2014-01-30 17:37:33 UTC
Git done (by process-git-requests).

Comment 16 Fedora Update System 2014-01-30 23:28:45 UTC
jetty8-8.1.14-1.fc20 has been submitted as an update for Fedora 20.

Comment 17 Fedora Update System 2014-02-01 03:59:44 UTC
jetty8-8.1.14-1.fc20 has been pushed to the Fedora 20 testing repository.

Comment 18 Fedora Update System 2014-02-06 03:55:42 UTC
jetty8-8.1.14-4.fc20 has been pushed to the Fedora 20 testing repository.

Comment 19 Fedora Update System 2014-03-25 08:14:21 UTC
jetty8-8.1.14-4.fc20 has been pushed to the Fedora 20 stable repository.

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