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
Should be built as: rpmbuild -ba --without osgi --without nosql jetty8.spec osgi,nosql support are left in as conditionals for the time being.
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.
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. DONE 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 jpackage-utils mvn(org.eclipse.jetty.orbit:javax.servlet) 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. DONE 5) Unneeded modules (like OSGi and NoSQL) should be removed together with all the conditional cruft. DONE
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. e.g., $ 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
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.
My proposed spec file which is much simpler and contains only required modules. http://mizdebsk.fedorapeople.org/review/jetty8/jetty8.spec
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.
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?
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.
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 ============== 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. * 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 /home/wibenton/devel/review/review-jetty8/licensecheck.txt [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 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]: Packages must not store files under /srv, /opt or /usr/local Java: [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 subpackage [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 Maven: [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 comment * 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 ===== Generic: [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 architectures. [!]: %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 $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 tarball generation or download is documented. [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. * these warnings are spurious [x]: Large data in /usr/share should live in a noarch subpackage if package is arched. [x]: Spec file according to URL is the same as in SRPM. Rpmlint ------- Checking: jetty8-8.1.14-1.fc21.noarch.rpm jetty8-javadoc-8.1.14-1.fc21.noarch.rpm jetty8-8.1.14-1.fc21.src.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:' Requires -------- jetty8 (rpmlib, GLIBC filtered): java jpackage-utils mvn(org.eclipse.jetty.orbit:javax.servlet) jetty8-javadoc (rpmlib, GLIBC filtered): jpackage-utils Provides -------- jetty8: jetty8 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-io:8.1.14.v20131031) mvn(org.eclipse.jetty:jetty-jmx:8.1.14.v20131031) mvn(org.eclipse.jetty:jetty-project) mvn(org.eclipse.jetty:jetty-project:pom:8.1.14.v20131031) mvn(org.eclipse.jetty:jetty-security:8.1.14.v20131031) mvn(org.eclipse.jetty:jetty-server:8.1.14.v20131031) mvn(org.eclipse.jetty:jetty-servlet:8.1.14.v20131031) mvn(org.eclipse.jetty:jetty-util:8.1.14.v20131031) mvn(org.eclipse.jetty:jetty-webapp:8.1.14.v20131031) mvn(org.eclipse.jetty:jetty-xml:8.1.14.v20131031) osgi(org.eclipse.jetty.continuation) osgi(org.eclipse.jetty.http) osgi(org.eclipse.jetty.io) osgi(org.eclipse.jetty.jmx) osgi(org.eclipse.jetty.security) osgi(org.eclipse.jetty.server) osgi(org.eclipse.jetty.servlet) osgi(org.eclipse.jetty.util) osgi(org.eclipse.jetty.webapp) osgi(org.eclipse.jetty.xml) jetty8-javadoc: jetty8-javadoc 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
OK, the iconv is acceptable. Add %{_javadir}/jetty8 to %files and I'll approve the review.
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.
Thanks for making the change, Pete!
New Package SCM Request ======================= Package Name: jetty8 Short Description: Jetty 8 compatibility package Owners: mizdebsk pmackinn Branches: f20 InitialCC: java-sig
Git done (by process-git-requests).
jetty8-8.1.14-1.fc20 has been submitted as an update for Fedora 20. https://admin.fedoraproject.org/updates/jetty8-8.1.14-1.fc20
jetty8-8.1.14-1.fc20 has been pushed to the Fedora 20 testing repository.
jetty8-8.1.14-4.fc20 has been pushed to the Fedora 20 testing repository.
jetty8-8.1.14-4.fc20 has been pushed to the Fedora 20 stable repository.