Bug 1206080 - Review Request: antlr4 - Java parser generator
Summary: Review Request: antlr4 - Java parser generator
Keywords:
Status: CLOSED RAWHIDE
Alias: None
Product: Fedora
Classification: Fedora
Component: Package Review
Version: rawhide
Hardware: Unspecified
OS: Unspecified
unspecified
unspecified
Target Milestone: ---
Assignee: Michael Simacek
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
: 1135700 (view as bug list)
Depends On:
Blocks: 1197395
TreeView+ depends on / blocked
 
Reported: 2015-03-26 09:43 UTC by Mikolaj Izdebski
Modified: 2015-04-06 11:30 UTC (History)
5 users (show)

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed: 2015-03-31 15:53:02 UTC
Type: ---
Embargoed:
msimacek: fedora-review+
gwync: fedora-cvs+


Attachments (Terms of Use)

Description Mikolaj Izdebski 2015-03-26 09:43:33 UTC
Spec URL: http://mizdebsk.fedorapeople.org/review/antlr4/antlr4.spec
SRPM URL: http://mizdebsk.fedorapeople.org/review/antlr4/antlr4-4.5-1.fc23.src.rpm
Description: ANTLR (ANother Tool for Language Recognition) is a powerful parser
generator for reading, processing, executing, or translating
structured text or binary files.  It's widely used to build languages,
tools, and frameworks. From a grammar, ANTLR generates a parser that
can build and walk parse trees.
Fedora Account System Username: mizdebsk

Comment 1 Mikolaj Izdebski 2015-03-26 11:39:06 UTC
FPC bootstrap bundling exception: https://fedorahosted.org/fpc/ticket/517

Comment 2 Raphael Groner 2015-03-30 09:27:09 UTC
Some things first from a manual review of your spec file:

> %bcond_without bootstrap

What's this for?

> # Upstream uses an experimental bulid tool (http://bildtool.org/),

So why not package this tool in first place and use it as a dependency?

> # Prebuild binaries, used for bootstrapping only

I would not suggest to use copr therefore. You should look for a more statically available location to provide those binaries. Further, it is not allowed to ship prebuild binaries in an official Fedora package, at least not without allowed exception.

> %prep

Use cp -p here to preserve timestamps.

> %files

You have to include the license file in each subpackage. Alternatively you should require the runtime subpackage for all other packages incl. the main package that you build here from the source tarball.

When the above things are fixed, I could do also an official fedora-review.

Comment 3 Mikolaj Izdebski 2015-03-30 10:21:14 UTC
(In reply to Raphael Groner from comment #2)
> Some things first from a manual review of your spec file:
> 
> > %bcond_without bootstrap
> 
> What's this for?

This allows the same SRPM to be built either in bootstrap or non-bootstrap mode by passing "--with bootstrap" or "--without bootstrap" to tools like rpmbuild or mock.

> > # Upstream uses an experimental bulid tool (http://bildtool.org/),
> 
> So why not package this tool in first place and use it as a dependency?

Because this is not necessary and it would be impractical to do so - the build tool downloads dependencies from network so build script would need to be heavily patched anyways.

> > # Prebuild binaries, used for bootstrapping only
> 
> I would not suggest to use copr therefore. You should look for a more
> statically available location to provide those binaries. Further, it is not
> allowed to ship prebuild binaries in an official Fedora package, at least
> not without allowed exception.

I don't see why copr rpms shouldn't be used. Prebuilt binaries are used only for the initial bootstrap build and will be removed afterwards. There is FPC bootstrap exception for antlr4, see https://fedorahosted.org/fpc/ticket/517

> > %prep
> 
> Use cp -p here to preserve timestamps.

Minor issue, but I'll fix that.

> > %files
> 
> You have to include the license file in each subpackage. Alternatively you
> should require the runtime subpackage for all other packages incl. the main
> package that you build here from the source tarball.

License files don't need to be installed in antlr4 and antlr4-maven-plugin packages because both of them depend on antlr4-runtime which includes license text. antlr4-javadoc doesn't depend on any other antlr4 subpackage and therefore it installs a separate copy of license text. This is in accordance with https://fedoraproject.org/wiki/Packaging:LicensingGuidelines#Subpackage_Licensing

Comment 4 Michael Simacek 2015-03-30 11:31:19 UTC
Package Review
==============

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


Issues:
=======
- Why the weird source URL?
- The prebuilt RPMS on Copr don't match the ones in SRPM
  (not a problem, just FYI)
- antlr4-4.5/runtime/Java/lib - there's a bundled jar, should be removed in prep
- Minor detail - double colon in %jpackage_script classpath.
  It does nothing, but it's confusing to the people who read the specfile


===== 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.
[x]: License field in the package spec file matches the actual license.
     Note: Checking patched sources after %prep for licenses. Licenses found:
     "BSD (3 clause)", "Unknown or generated". 40 files have unknown license.
     Detailed output of licensecheck in
     /home/msimacek/reviews/1206080-antlr4/licensecheck.txt
[x]: License file installed when any subpackage combination is installed.
[!]: Package contains no bundled libraries without FPC exception.
[x]: Changelog in prescribed format.
[x]: Sources contain only permissible code or content.
[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.
[x]: Package contains systemd file(s) if in need.
[x]: Package is not known to require an ExcludeArch tag.
     Note: Test run failed
[x]: Large documentation must go in a -doc subpackage. Large could be size
     (~1MB) or number of files.
     Note: Test run failed
[x]: Packages must not store files under /srv, /opt or /usr/local
     Note: Test run failed
[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]: Package requires other packages for directories it uses.
[x]: Package must own all directories that it creates.
[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.
[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]: Spec file name must match the spec package %{name}, in the format
     %{name}.spec.
[x]: File names are valid UTF-8.

Java:
[!]: Bundled jar/class files should be removed before build
     Note: Test run failed
[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)

Maven:
[x]: If package contains pom.xml files install it (including depmaps) even
     when building with ant
[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 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:
[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.
     Note: No Requires: %{name}%{?_isa} = %{version}-%{release} in
     antlr4-runtime , antlr4-maven-plugin , antlr4-javadoc
[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.
[x]: %check is present and all tests pass.
[!]: 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]: Large data in /usr/share should live in a noarch subpackage if package is
     arched.
     Note: Test run failed
[x]: Rpmlint is run on all installed packages.
     Note: There are rpmlint messages (see attachment).
[x]: Spec file according to URL is the same as in SRPM.


Rpmlint
-------
Checking: antlr4-4.5-1.fc23.noarch.rpm
          antlr4-runtime-4.5-1.fc23.noarch.rpm
          antlr4-maven-plugin-4.5-1.fc23.noarch.rpm
          antlr4-javadoc-4.5-1.fc23.noarch.rpm
          antlr4-4.5-1.fc23.src.rpm
antlr4.noarch: W: no-manual-page-for-binary antlr4
antlr4-runtime.noarch: W: spelling-error %description -l en_US parsers -> parser, parses, parers
antlr4-maven-plugin.noarch: W: spelling-error %description -l en_US parsers -> parser, parses, parers
antlr4-maven-plugin.noarch: W: no-documentation
antlr4.src: W: file-size-mismatch antlr4-maven-plugin-4.5-1.fc23.noarch.rpm = 21000, https://copr-be.cloud.fedoraproject.org/results/mizdebsk/newpkg/fedora-rawhide-x86_64/antlr4-4.5-1.fc23/antlr4-maven-plugin-4.5-1.fc23.noarch.rpm = 21632
antlr4.src: W: file-size-mismatch antlr4-runtime-4.5-1.fc23.noarch.rpm = 320168, https://copr-be.cloud.fedoraproject.org/results/mizdebsk/newpkg/fedora-rawhide-x86_64/antlr4-4.5-1.fc23/antlr4-runtime-4.5-1.fc23.noarch.rpm = 320796
antlr4.src: W: file-size-mismatch antlr4-4.5-1.fc23.noarch.rpm = 558248, https://copr-be.cloud.fedoraproject.org/results/mizdebsk/newpkg/fedora-rawhide-x86_64/antlr4-4.5-1.fc23/antlr4-4.5-1.fc23.noarch.rpm = 558876
5 packages and 0 specfiles checked; 0 errors, 7 warnings.




Rpmlint (installed packages)
----------------------------
Cannot parse rpmlint output:


Requires
--------
antlr4-javadoc (rpmlib, GLIBC filtered):
    jpackage-utils

antlr4-maven-plugin (rpmlib, GLIBC filtered):
    java-headless
    jpackage-utils
    mvn(org.antlr:antlr4)
    mvn(org.apache.maven:maven-core)
    mvn(org.apache.maven:maven-plugin-api)
    mvn(org.codehaus.plexus:plexus-compiler-api)
    mvn(org.sonatype.plexus:plexus-build-api)

antlr4 (rpmlib, GLIBC filtered):
    /bin/bash
    java-headless
    jpackage-utils
    mvn(org.antlr:ST4)
    mvn(org.antlr:antlr-runtime)
    mvn(org.antlr:antlr4-runtime)

antlr4-runtime (rpmlib, GLIBC filtered):
    java-headless
    jpackage-utils
    mvn(org.abego.treelayout:org.abego.treelayout.core)



Provides
--------
antlr4-javadoc:
    antlr4-javadoc

antlr4-maven-plugin:
    antlr4-maven-plugin
    mvn(org.antlr:antlr4-maven-plugin)
    mvn(org.antlr:antlr4-maven-plugin:pom:)

antlr4:
    antlr4
    mvn(org.antlr:antlr4)
    mvn(org.antlr:antlr4:pom:)

antlr4-runtime:
    antlr4-runtime
    mvn(org.antlr:antlr4-runtime)
    mvn(org.antlr:antlr4-runtime:pom:)
    osgi(org.antlr.antlr4-runtime-osgi)



Source checksums
----------------
https://github.com/antlr/antlr4/archive/4.5.tar.gz#/antlr4-4.5.tar.gz :
  CHECKSUM(SHA256) this package     : c1f24b710050565233598f610df9a9ec696f6f7c7cf8b7b727f8093374f52ee7
  CHECKSUM(SHA256) upstream package : c1f24b710050565233598f610df9a9ec696f6f7c7cf8b7b727f8093374f52ee7
https://copr-be.cloud.fedoraproject.org/results/mizdebsk/newpkg/fedora-rawhide-x86_64/antlr4-4.5-1.fc23/antlr4-runtime-4.5-1.fc23.noarch.rpm :
  CHECKSUM(SHA256) this package     : 1e9a011717859e24c23e2429496940bb24094a394461d76f9acea7f64b02635c
  CHECKSUM(SHA256) upstream package : cdae1fbc2e23ba22a0582c4a8ba310a8c18e997dbe24b9408005185f1d873a8f
https://copr-be.cloud.fedoraproject.org/results/mizdebsk/newpkg/fedora-rawhide-x86_64/antlr4-4.5-1.fc23/antlr4-4.5-1.fc23.noarch.rpm :
  CHECKSUM(SHA256) this package     : f48c93928e8d141293c63d31a29d5a117ad54339230b6a6291db887df0e4bd97
  CHECKSUM(SHA256) upstream package : 6bfdc127f56010d86729a4e0107795ea3835041f87ab049541d9dc125eeab128
https://copr-be.cloud.fedoraproject.org/results/mizdebsk/newpkg/fedora-rawhide-x86_64/antlr4-4.5-1.fc23/antlr4-maven-plugin-4.5-1.fc23.noarch.rpm :
  CHECKSUM(SHA256) this package     : 78391806168a51d3de808c8548be95a869347f0fdc1e16b9f498f994ec8d7b13
  CHECKSUM(SHA256) upstream package : 330e1896693e2d6d43f649f033eb3a50d4d3ad5d95bca244662afa53b0547039
diff -r also reports differences


Generated by fedora-review 0.5.2 (63c24cb) last change: 2014-07-14
Command line :/usr/bin/fedora-review -b 1206080
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 5 Mikolaj Izdebski 2015-03-30 11:57:28 UTC
(In reply to Michael Simacek from comment #4)
> - Why the weird source URL?

This is a way of forcing different local file name of given source. rpmbuild sees only the part after last "/" character (antlr4-4.5.tar.gz) while upstream web server ignores the part after "#" character. Without that filename would be just "4.5.tar.gz", which is ambiguous.

> - The prebuilt RPMS on Copr don't match the ones in SRPM
>   (not a problem, just FYI)

Fixed.

> - antlr4-4.5/runtime/Java/lib - there's a bundled jar, should be removed in
> prep

Fixed.

> - Minor detail - double colon in %jpackage_script classpath.
>   It does nothing, but it's confusing to the people who read the specfile

Fixed.

> [!]: Package contains no bundled libraries without FPC exception.

Bundled binaries used for bootstrapping have FPC exception. Are there any other bundled libraries? Libraries bundled in SRPM but not used during build are allowed.


Spec URL: http://mizdebsk.fedorapeople.org/review/antlr4/antlr4.spec
SRPM URL: http://mizdebsk.fedorapeople.org/review/antlr4/antlr4-4.5-2.fc23.src.rpm

Comment 6 Michael Simacek 2015-03-30 12:16:33 UTC
(In reply to Mikolaj Izdebski from comment #5)
> (In reply to Michael Simacek from comment #4)
> > - Why the weird source URL?
> 
> This is a way of forcing different local file name of given source. rpmbuild
> sees only the part after last "/" character (antlr4-4.5.tar.gz) while
> upstream web server ignores the part after "#" character. Without that
> filename would be just "4.5.tar.gz", which is ambiguous.
> 
> > - The prebuilt RPMS on Copr don't match the ones in SRPM
> >   (not a problem, just FYI)
> 
> Fixed.
> 
> > - antlr4-4.5/runtime/Java/lib - there's a bundled jar, should be removed in
> > prep
> 
> Fixed.
> 
> > - Minor detail - double colon in %jpackage_script classpath.
> >   It does nothing, but it's confusing to the people who read the specfile
> 
> Fixed.
> 
> > [!]: Package contains no bundled libraries without FPC exception.
> 
> Bundled binaries used for bootstrapping have FPC exception. Are there any
> other bundled libraries? Libraries bundled in SRPM but not used during build
> are allowed.

No, I meant the bundled jar.

> 
> 
> Spec URL: http://mizdebsk.fedorapeople.org/review/antlr4/antlr4.spec
> SRPM URL:
> http://mizdebsk.fedorapeople.org/review/antlr4/antlr4-4.5-2.fc23.src.rpm

APPROVED

Comment 7 Mikolaj Izdebski 2015-03-30 12:20:51 UTC
New Package SCM Request
=======================
Package Name: antlr4
Short Description: Java parser generator
Owners: mizdebsk msrb msimacek gil
Branches: f22
InitialCC: java-sig

Comment 8 Patrick Uiterwijk 2015-03-30 20:26:56 UTC
Please add the upstream URL field to your SCM request.

Comment 9 Mikolaj Izdebski 2015-03-31 12:44:00 UTC
New Package SCM Request
=======================
Package Name: antlr4
Short Description: Java parser generator
Owners: mizdebsk msrb msimacek gil
Branches: f22
InitialCC: java-sig
Upstream URL: http://www.antlr.org/

Comment 10 Gwyn Ciesla 2015-03-31 13:41:29 UTC
Git done (by process-git-requests).

Comment 11 Mikolaj Izdebski 2015-03-31 15:53:02 UTC
Built for rawhide. Cloning.
http://koji.fedoraproject.org/koji/taskinfo?taskID=9380964

Comment 12 Mikolaj Izdebski 2015-03-31 15:56:52 UTC
*** Bug 1135700 has been marked as a duplicate of this bug. ***

Comment 13 Raphael Groner 2015-03-31 18:25:17 UTC
You should not close a review manually. Bodhi can handle that for you when you specify the bug# in the update.

Comment 14 Mikolaj Izdebski 2015-03-31 18:28:45 UTC
(In reply to Raphael Groner from comment #13)
> You should not close a review manually. Bodhi can handle that for you when
> you specify the bug# in the update.

Bodhi is not involved as this is package is for F23+ only.

(Besides that I prefer to close bugs myself, Bodhi is not smart enough to close them properly.)


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