Bug 1636019 - Review Request: java-runtime-decompiler - a tool for extraction and decompilation of bytecode from JVM memory
Summary: Review Request: java-runtime-decompiler - a tool for extraction and decompila...
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Fedora
Classification: Fedora
Component: Package Review
Version: rawhide
Hardware: All
OS: Linux
medium
medium
Target Milestone: ---
Assignee: jiri vanek
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2018-10-04 09:24 UTC by Petra Alice Mikova
Modified: 2018-12-05 02:35 UTC (History)
3 users (show)

Fixed In Version:
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
Environment:
Last Closed: 2018-12-05 01:57:20 UTC
jvanek: fedora-review+


Attachments (Terms of Use)

Description Petra Alice Mikova 2018-10-04 09:24:08 UTC
Spec URL: <https://github.com/pmikova/fedora-packaging-jrd/blob/master/java-runtime-decompiler.spec>
SRPM URL: <https://github.com/pmikova/fedora-packaging-jrd/blob/master/java-runtime-decompiler-1.1-1.fc28.src.rpm>
Description: This application allows you to extract bytecode from running JVM and decompile it, using an external decompiler.
Fedora Account System Username: pmikova

Comment 2 Severin Gehwolf 2018-10-04 09:37:50 UTC
Thanks for the CC.

Comment 5 jiri vanek 2018-10-04 11:36:44 UTC
Yup. those works.

Comment 6 Severin Gehwolf 2018-10-04 12:07:38 UTC
A couple of observations:

Please run rpmlint on specs/RPMs.

Please use, "License: GPLv3"

Provides look strange:
    mvn(java:decompiler-agent)
    mvn(java:decompiler-agent:pom:)
    mvn(java:java-runtime-decompiler:pom:)
    mvn(java:runtime-decompiler)
    mvn(java:runtime-decompiler:pom:)

I believe you are in control of the upstream project. I'd suggest to use a better gId (Maven group ID). E.g. me.pmikova:decompiler-agent, etc.

You can drop explicit requires. The maven requires generator in Fedora will add those:

    mvn(com.fifesoft:rsyntaxtextarea)
    mvn(com.google.code.gson:gson)
    mvn(com.sun:tools)
    mvn(org.jboss.byteman:byteman-install)

From the spec file:

Requires: java-devel >= 1:1.8.0

Yet, in the script you do this:
CLASSPATH=$CLASSPATH:${JAVA_HOME}/lib/tools.jar

That path is only present for JDK 8. JDK 11 won't have tools.jar. Has this been considered?

Comment 7 jiri vanek 2018-10-04 12:56:44 UTC
Are you sure with:
    mvn(com.sun:tools)
being adde dautoagically?

I dont believe jrdc currently do support jdk11, so indeed, 
   Requires: java-devel >= 1:1.8.0
may be bad.

I'm not sure if = 1:1.8.0 is good idea though.


IIRC, In jdk11, you have tools module.

Comment 8 jiri vanek 2018-10-04 12:57:16 UTC
It do not build in rawhide. Restarting review with f29, but you will need to fix it for rawhide.

Comment 9 Severin Gehwolf 2018-10-04 13:45:05 UTC
(In reply to jiri vanek from comment #7)
> Are you sure with:
>     mvn(com.sun:tools)
> being adde dautoagically?

The tools.jar from JDK 8 is in java-1.8.0-openjdk-devel. Since the package requires it (-devel) for runtime there is no need for depending on maven to generate it. Yet, I believe for JDK 8 based builds such a requirement would get generated.

thermostat got it generated:
https://koji.fedoraproject.org/koji/rpminfo?rpmID=14962640

JDK 9+ builds don't seem to produce those requires any more which makes sense. No more tools.jar.

Comment 10 jiri vanek 2018-10-04 14:26:24 UTC
There is a bug in the luncher:

cp $cpfile $PLUGIN_HOME

This always rewirte custom configuration. Please check for its existence before copying! This is necessary for this review.

Simialrly, grep for AGENT_STRING is to stroing, isnt it?  If I change it, it will get rewritten. You shold be checking only for AGENT_PATH==, and well, you dont have this oen extracted in variable at all :)

Few nits: 
 - procyon decompiler have two members in defautl config, however I have nt able too find the compiler-tools on web. That casued few issues:
 - when I added only path procyon-decompiler, the my changes were silently scratched, and config was not saved
 - after realising it, I removed the tools, and then the config was accepted, and decompiler worked fine anyway .. so?
  - the dialog allows me to edit system (in non root account)files without warning,and again without warning it do not save them


As the configuration os obviously based on something,, and url is contained in json can you show it in dialog?


Generally the dialog shod report something. It is obviously doing soem validations before saving, but it do not tell.


Looking to json file -

  "WrapperURL":   "DependencyURL": 

Both those names are msileading. Thy are pointng to (local)files.

After somehow workarounding  those issues, application works great.

Comment 11 jiri vanek 2018-10-04 14:40:11 UTC
In gui, maaybe hsow path to the config files?

Comment 12 jiri vanek 2018-10-04 15:06:38 UTC
Package Review
==============

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


Issues:
=======
- Package does not contain duplicates in %files.
  Note: BUILDSTDERR: warning: File listed twice: /usr/share/java/java-
  runtime-decompiler
  See: http://fedoraproject.org/wiki/Packaging/Guidelines#DuplicateFiles
- This seems like a Java package, please install fedora-review-plugin-java
  to get additional checks


===== 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.
[!]: 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 %license.

Both packages are misisng license or license i handled wrongly

[x]: License field in the package spec file matches the actual license.
     Note: Checking patched sources after %prep for licenses. Licenses
     found: "GPL (v2 or later)", "Unknown or generated". 50 files have
     unknown license. Detailed output of licensecheck in
     /home/jvanek/1636019-java-runtime-decompiler/licensecheck.txt

However Severin had some issues with your licensing

[!]: License file installed when any subpackage combination is installed.

as above

[x]: Package contains no bundled libraries without FPC exception.
[!]: Changelog in prescribed format.

please, double check versioning

[x]: Sources contain only permissible code or content.
[x]: %config files are marked noreplace or the reason is justified.
     Note: No (noreplace) in %config /etc/java-runtime-
     decompiler/plugins/FernflowerDecompilerWrapper.java %config /etc/java-
     runtime-decompiler/plugins/ProcyonDecompilerWrapper.java
[!]: Package contains desktop file if it is a GUI application.
[x]: Development files must be in a -devel package
[x]: Package uses nothing in %doc for runtime.

Note that there may be issue once you will handle license correctly.

[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.
[!]: Requires correct, justified where necessary.

Correct form my point of view, but Severin have correct remarks. Please double check instlability and work after you do so.

[x]: Spec file is legible and written in American English.
[-]: Package contains systemd file(s) if in need.
[-]: Package is not known to require an ExcludeArch tag.
[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]: Dist tag is present.
[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]: No %config files under /usr.
[x]: Package does not use a name that already exists.
[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]: Large documentation must go in a -doc subpackage. Large could be size
     (~1MB) or number of files.
     Note: Documentation size is 0 bytes in 0 files.
[x]: Packages must not store files under /srv, /opt or /usr/local

Java:
[x]: Bundled jar/class files should be removed before build

===== SHOULD items =====

Generic:
[-]: If the source package does not include license text(s) as a separate
     file from upstream, the packager SHOULD query upstream to include it.
[!]: Final provides and requires are sane (see attachments).

I think the
  java-runtime-decompiler.noarch: E: devel-dependency java-devel
is acceptable here

There are more rpmlint issues, please fix them. Moslty minors, but resolvces into rpmlint errors.

[-]: Fully versioned dependency in subpackages if applicable.
     Note: No Requires: %{name}%{?_isa} = %{version}-%{release} in java-
     runtime-decompiler-javadoc
[!]: Package functions as described.

See the issues in luncher

[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.
[!]: Package should compile and build into binary rpms on all supported
     architectures.

Did not build for rahide, is no arch. Do it work on non-jit arches?

[-]: %check is present and all tests pass.
[x]: Packages should try to preserve timestamps of original installed
     files.
[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]: No file requires outside of /etc, /bin, /sbin, /usr/bin, /usr/sbin.
[x]: Packager, Vendor, PreReq, Copyright tags should not be in spec file
[x]: Sources can be downloaded from URI in Source: tag
[x]: SourceX is a working URL.
[x]: Spec use %global instead of %define unless justified.

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

Generic:
[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: java-runtime-decompiler-1.1-1.fc29.noarch.rpm
          java-runtime-decompiler-javadoc-1.1-1.fc29.noarch.rpm
          java-runtime-decompiler-1.1-1.fc29.src.rpm
java-runtime-decompiler.noarch: E: devel-dependency java-devel
java-runtime-decompiler.noarch: W: spelling-error Summary(en_US) bytecode -> byte code, byte-code, decorate
java-runtime-decompiler.noarch: W: spelling-error Summary(en_US) decompilation -> recompilation, compilation, contemplation
java-runtime-decompiler.noarch: W: summary-ended-with-dot C Application for extraction of bytecode from running JVM and its decompilation back to source code.
java-runtime-decompiler.noarch: E: summary-too-long C Application for extraction of bytecode from running JVM and its decompilation back to source code.
java-runtime-decompiler.noarch: W: spelling-error %description -l en_US bytecode -> byte code, byte-code, decorate
java-runtime-decompiler.noarch: W: spelling-error %description -l en_US decompile -> recompile, compile
java-runtime-decompiler.noarch: E: description-line-too-long C This application can access JVM memory at runtime, extract classes and their bytecode from the JVM and decompile them back to the source code. It needs an agent jar and external decompiler for targeted JVM language (e.g. Java).
java-runtime-decompiler.noarch: W: incoherent-version-in-changelog 1.0-1 ['1.1-1.fc29', '1.1-1']
java-runtime-decompiler.noarch: W: invalid-license GPL
java-runtime-decompiler.noarch: W: conffile-without-noreplace-flag /etc/java-runtime-decompiler/plugins/FernflowerDecompilerWrapper.java
java-runtime-decompiler.noarch: W: conffile-without-noreplace-flag /etc/java-runtime-decompiler/plugins/ProcyonDecompilerWrapper.java
java-runtime-decompiler.noarch: W: class-path-in-manifest /usr/share/java/java-runtime-decompiler/runtime-decompiler.jar
java-runtime-decompiler-javadoc.noarch: W: invalid-license GPL
java-runtime-decompiler.src: W: spelling-error Summary(en_US) bytecode -> byte code, byte-code, decorate
java-runtime-decompiler.src: W: spelling-error Summary(en_US) decompilation -> recompilation, compilation, contemplation
java-runtime-decompiler.src: W: summary-ended-with-dot C Application for extraction of bytecode from running JVM and its decompilation back to source code.
java-runtime-decompiler.src: E: summary-too-long C Application for extraction of bytecode from running JVM and its decompilation back to source code.
java-runtime-decompiler.src: W: spelling-error %description -l en_US bytecode -> byte code, byte-code, decorate
java-runtime-decompiler.src: W: spelling-error %description -l en_US decompile -> recompile, compile
java-runtime-decompiler.src: E: description-line-too-long C This application can access JVM memory at runtime, extract classes and their bytecode from the JVM and decompile them back to the source code. It needs an agent jar and external decompiler for targeted JVM language (e.g. Java).
java-runtime-decompiler.src: W: invalid-license GPL
3 packages and 0 specfiles checked; 5 errors, 17 warnings.




Rpmlint (installed packages)
----------------------------
sh: /usr/bin/python: No such file or directory
java-runtime-decompiler-javadoc.noarch: W: invalid-license GPL
java-runtime-decompiler-javadoc.noarch: W: invalid-url URL: https://github.com/pmikova/java-runtime-decompiler <urlopen error [Errno -2] Name or service not known>
java-runtime-decompiler.noarch: E: devel-dependency java-devel
java-runtime-decompiler.noarch: W: spelling-error Summary(en_US) bytecode -> byte code, byte-code, decorate
java-runtime-decompiler.noarch: W: spelling-error Summary(en_US) decompilation -> recompilation, compilation, contemplation
java-runtime-decompiler.noarch: W: summary-ended-with-dot C Application for extraction of bytecode from running JVM and its decompilation back to source code.
java-runtime-decompiler.noarch: E: summary-too-long C Application for extraction of bytecode from running JVM and its decompilation back to source code.
java-runtime-decompiler.noarch: W: spelling-error %description -l en_US bytecode -> byte code, byte-code, decorate
java-runtime-decompiler.noarch: W: spelling-error %description -l en_US decompile -> recompile, compile
java-runtime-decompiler.noarch: E: description-line-too-long C This application can access JVM memory at runtime, extract classes and their bytecode from the JVM and decompile them back to the source code. It needs an agent jar and external decompiler for targeted JVM language (e.g. Java).
java-runtime-decompiler.noarch: W: incoherent-version-in-changelog 1.0-1 ['1.1-1.fc29', '1.1-1']
java-runtime-decompiler.noarch: W: invalid-license GPL
java-runtime-decompiler.noarch: W: invalid-url URL: https://github.com/pmikova/java-runtime-decompiler <urlopen error [Errno -2] Name or service not known>
java-runtime-decompiler.noarch: W: conffile-without-noreplace-flag /etc/java-runtime-decompiler/plugins/FernflowerDecompilerWrapper.java
java-runtime-decompiler.noarch: W: conffile-without-noreplace-flag /etc/java-runtime-decompiler/plugins/ProcyonDecompilerWrapper.java
java-runtime-decompiler.noarch: W: class-path-in-manifest /usr/share/java/java-runtime-decompiler/runtime-decompiler.jar
2 packages and 0 specfiles checked; 3 errors, 13 warnings.



Requires
--------
java-runtime-decompiler-javadoc (rpmlib, GLIBC filtered):
    java-runtime-decompiler
    javapackages-filesystem

java-runtime-decompiler (rpmlib, GLIBC filtered):
    /usr/bin/bash
    byteman
    config(java-runtime-decompiler)
    google-gson
    java-devel
    java-headless
    javapackages-filesystem
    javapackages-tools
    mvn(com.fifesoft:rsyntaxtextarea)
    mvn(com.google.code.gson:gson)
    mvn(com.sun:tools)
    mvn(org.jboss.byteman:byteman-install)
    rsyntaxtextarea



Provides
--------
java-runtime-decompiler-javadoc:
    java-runtime-decompiler-javadoc

java-runtime-decompiler:
    config(java-runtime-decompiler)
    java-runtime-decompiler
    mvn(java:decompiler-agent)
    mvn(java:decompiler-agent:pom:)
    mvn(java:java-runtime-decompiler:pom:)
    mvn(java:runtime-decompiler)
    mvn(java:runtime-decompiler:pom:)



Source checksums
----------------
https://github.com/pmikova/java-runtime-decompiler/archive/java-runtime-decompiler-1.1.tar.gz :
  CHECKSUM(SHA256) this package     : 4841ea31c00c6f254754916584c4596b7b66ec947e0bdc4d026f51e5445eda88
  CHECKSUM(SHA256) upstream package : 4841ea31c00c6f254754916584c4596b7b66ec947e0bdc4d026f51e5445eda88


Generated by fedora-review 0.6.1 (f03e4e7) last change: 2016-05-02
Command line :/usr/bin/fedora-review -b 1636019 -m fedora-29-x86_64
Buildroot used: fedora-29-x86_64
Active plugins: Generic, Shell-api, Java
Disabled plugins: C/C++, Python, fonts, SugarActivity, Ocaml, Perl, Haskell, R, PHP
Disabled flags: EXARCH, DISTTAG, EPEL5, BATCH, EPEL6

Comment 13 Petra Alice Mikova 2018-11-19 13:08:18 UTC
Hi,

following issues should be fixed:
- license changed to GPLv3, fixed listing it in %license
- now requires explicitly java 1.8.0, will add support for 11 later as this is not trivial to solve (and not time pressuring)
- fixed agent configuration not to overwrite already created records
- dropped explicit requires
- changelog is now in correct format
- fixed paths in json, now the URL is really URL (not misleading)
- added links to the decompilers into gui as clickable button redirecting to the decompiler website
- removed the compiler tools, as this is ubuntu distro specific 
- config file now contains path to the json file (config source)
- the configuration is now uneditable, when you dont have the permissions to edit the json (e.g. system config)
- the configuration is now correctly saved and if there are issues with the saving, an error dialog is raised
- created and added desktop file
- fixed the duplicated entry in files
- fixed the group id to java-runtime-decompiler, my name would not be fair since I control the upstream, but there is other contributor to the project, who did a lot of job on the decompiler.
- fixed the issues with overwriting changes in configuration - script seemed okay but did not work as expected, should be ok now

Regarding the build in rawhide - it works for me locally - both srpm and rpms were sucesfully created and i was able to install them.
Regarding the question: Is no-arch. Do it work on non-jit arches? - I don't any reason, why it should not, but I dont have the hardware to try it. If someone reports a bug on a specific arch, I either solve it, or restrict the architectures.

Regarding the rpmlint - I have fixed everything I could except:

The decompiler/decompilation etc. errors are unfixable - there are no typos, it just does not know the words. 
Devel dependency is justified - we need the tools.jar for correct run of the application and they are in devel.
The .java configuration files are replacable by design - if we ever want to change the wrappers, they need to be replaced so the application can work, plus they should not be touched by users unless they really know what they are doing, and if yes, they can create their own wrapper or rename the current ones. If we change the .java files, it means, the old ones will no longer be compatible with the application anyways.

New sources (built for rawhide, so I can prove it really works)

Spec URL: https://raw.githubusercontent.com/pmikova/fedora-packaging-jrd/master/java-runtime-decompiler.spec
SRPM URL: https://github.com/pmikova/fedora-packaging-jrd/raw/master/java-runtime-decompiler-2.0-1.fc30.src.rpm

Thanks!

Comment 14 jiri vanek 2018-11-19 13:37:48 UTC
The rawhide build faisl for me with:
[ERROR] COMPILATION ERROR : 
[INFO] -------------------------------------------------------------
[ERROR] /builddir/build/BUILD/java-runtime-decompiler-java-runtime-decompiler-2.0/runtime-decompiler/src/main/java/org/jrd/backend/decompiling/DecompilerWrapperInformationSerializer.java:[17,38] incompatible types: java.lang.String cannot be converted to com.google.gson.JsonElement
[INFO] 1 error
[INFO] -------------------------------------------------------------
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Skipping Java Runtime Decompiler
[INFO] This project has been banned from the build due to previous failures.
[INFO] ------------------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO] 
[INFO] Java Runtime Decompiler ............................ SUCCESS [  0.010 s]
[INFO] runtime-decompiler ................................. FAILURE [  2.351 s]
[INFO] Decompiler Agent ................................... SKIPPED



Which is weird, as  there is correctly java-1.8.0-openjdk-devel (alone) in buildroot.

Comment 15 jiri vanek 2018-11-19 15:58:52 UTC
Package Review
==============

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


Issues:
=======
- This seems like a Java package, please install fedora-review-plugin-java
  to get additional checks


===== 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: "GPL (v2 or later)", "Unknown or generated". 53 files have
     unknown license. Detailed output of licensecheck in
     /home/jvanek/Desktop/1636019-java-runtime-decompiler/licensecheck.txt
[x]: License file installed when any subpackage combination is installed.
[x]: Package does not own files or directories owned by other packages.
     Note: Dirs in package are owned also by:
     /usr/share/applications(filesystem)

there is    /usr/share/applications/jrd.desktop
imho correct


[x]: Package contains no bundled libraries without FPC exception.
[x]: Changelog in prescribed format.

Please there is different version in changelog of spec, and of srpm. Pleae align. srpm ones seems to be wrong.

[x]: Sources contain only permissible code or content.
[x]: %config files are marked noreplace or the reason is justified.
     Note: No (noreplace) in %config /etc/java-runtime-
     decompiler/plugins/FernflowerDecompilerWrapper.java %config /etc/java-
     runtime-decompiler/plugins/ProcyonDecompilerWrapper.java

hat seems correct. where json files are about to be chnaged by user, the java ones are unlikely.

[x]: 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.
[-]: 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.
[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 %license.
[x]: Package requires other packages for directories it uses.
[x]: Package must own all directories that it creates.
[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 contains desktop file if it is a GUI application.
[x]: Package installs a %{name}.desktop using desktop-file-install or
     desktop-file-validate if there is such a file.
[x]: Dist tag is present.
[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]: No %config files under /usr.
[x]: Package does not use a name that already exists.
[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]: Large documentation must go in a -doc subpackage. Large could be size
     (~1MB) or number of files.
     Note: Documentation size is 0 bytes in 0 files.
[x]: Packages must not store files under /srv, /opt or /usr/local

Java:
[x]: Bundled jar/class files should be removed before build

===== 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).
[!]: Fully versioned dependency in subpackages if applicable.
     Note: No Requires: %{name}%{?_isa} = %{version}-%{release} in java-
     runtime-decompiler-javadoc

please fix this

[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.

rawhide have some compilations errors. please fix it asap after pushed

[x]: %check is present and all tests pass.
[x]: Packages should try to preserve timestamps of original installed
     files.
[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]: No file requires outside of /etc, /bin, /sbin, /usr/bin, /usr/sbin.
[x]: Packager, Vendor, PreReq, Copyright tags should not be in spec file
[x]: Sources can be downloaded from URI in Source: tag
[x]: SourceX is a working URL.
[x]: Spec use %global instead of %define unless justified.

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

Generic:
[x]: Spec file according to URL is the same as in SRPM.
     Note: Spec file as given by url is not the same as in SRPM (see
     attached diff).

wrong changelog dates and bad version dleimiter.

     See: (this test has no URL)
[x]: Rpmlint is run on all installed packages.
     Note: There are rpmlint messages (see attachment).


Rpmlint
-------
Checking: java-runtime-decompiler-2.0-1.fc29.noarch.rpm
          java-runtime-decompiler-javadoc-2.0-1.fc29.noarch.rpm
          java-runtime-decompiler-2.0-1.fc29.src.rpm
java-runtime-decompiler.noarch: E: devel-dependency java-devel
java-runtime-decompiler.noarch: W: spelling-error Summary(en_US) decompilation -> recompilation, compilation, contemplation
java-runtime-decompiler.noarch: W: spelling-error %description -l en_US decompile -> recompile, compile
java-runtime-decompiler.noarch: W: conffile-without-noreplace-flag /etc/java-runtime-decompiler/plugins/FernflowerDecompilerWrapper.java
java-runtime-decompiler.noarch: W: conffile-without-noreplace-flag /etc/java-runtime-decompiler/plugins/ProcyonDecompilerWrapper.java
java-runtime-decompiler.src: W: spelling-error Summary(en_US) decompilation -> recompilation, compilation, contemplation
java-runtime-decompiler.src: W: spelling-error %description -l en_US decompile -> recompile, compile
3 packages and 0 specfiles checked; 1 errors, 6 warnings.




Rpmlint (installed packages)
----------------------------
sh: /usr/bin/python: No such file or directory
java-runtime-decompiler-javadoc.noarch: W: invalid-url URL: https://github.com/pmikova/java-runtime-decompiler <urlopen error [Errno -2] Name or service not known>
java-runtime-decompiler.noarch: E: devel-dependency java-devel
java-runtime-decompiler.noarch: W: spelling-error Summary(en_US) decompilation -> recompilation, compilation, contemplation
java-runtime-decompiler.noarch: W: spelling-error %description -l en_US decompile -> recompile, compile
java-runtime-decompiler.noarch: W: invalid-url URL: https://github.com/pmikova/java-runtime-decompiler <urlopen error [Errno -2] Name or service not known>
java-runtime-decompiler.noarch: W: conffile-without-noreplace-flag /etc/java-runtime-decompiler/plugins/FernflowerDecompilerWrapper.java
java-runtime-decompiler.noarch: W: conffile-without-noreplace-flag /etc/java-runtime-decompiler/plugins/ProcyonDecompilerWrapper.java
2 packages and 0 specfiles checked; 1 errors, 6 warnings.



Diff spec file in url and in SRPM
---------------------------------
--- /home/jvanek/Desktop/1636019-java-runtime-decompiler/srpm/java-runtime-decompiler.spec	2018-11-19 14:37:17.826214994 +0100
+++ /home/jvanek/Desktop/1636019-java-runtime-decompiler/srpm-unpacked/java-runtime-decompiler.spec	2018-11-19 12:52:53.000000000 +0100
@@ -73,8 +73,8 @@
 
 %changelog
-* Mon Nov 19 2018 Petra Mikova <petra.alice.mikova@gmail.com> - 2.0-1
+* Wed Nov 14 2018 Petra Mikova <petra.alice.mikova@gmail.com> - 2.0-1
 - fixed issues listed in review (rhbz#1636019)
 - added installation of desktop file
 
-* Wed Jun 06 2018 Petra Mikova <petra.alice.mikova@gmail.com> - 1.1-1
+* Wed Jun 06 2018 Petra Mikova <petra.alice.mikova@gmail.com> 1.1-1
 - initial commit


Requires
--------
java-runtime-decompiler-javadoc (rpmlib, GLIBC filtered):
    java-runtime-decompiler
    javapackages-filesystem

java-runtime-decompiler (rpmlib, GLIBC filtered):
    /usr/bin/bash
    config(java-runtime-decompiler)
    java-devel
    java-headless
    javapackages-filesystem
    mvn(com.fifesoft:rsyntaxtextarea)
    mvn(com.google.code.gson:gson)
    mvn(com.sun:tools)
    mvn(org.jboss.byteman:byteman-install)



Provides
--------
java-runtime-decompiler-javadoc:
    java-runtime-decompiler-javadoc

java-runtime-decompiler:
    application()
    application(fedora-jrd.desktop)
    config(java-runtime-decompiler)
    java-runtime-decompiler
    mvn(java-runtime-decompiler:decompiler-agent)
    mvn(java-runtime-decompiler:decompiler-agent:pom:)
    mvn(java-runtime-decompiler:java-runtime-decompiler:pom:)
    mvn(java-runtime-decompiler:runtime-decompiler)
    mvn(java-runtime-decompiler:runtime-decompiler:pom:)



Source checksums
----------------
https://github.com/pmikova/java-runtime-decompiler/archive/java-runtime-decompiler-2.0.tar.gz :
  CHECKSUM(SHA256) this package     : 58e5e2203fba2b7b22048b6a9c411121b67b9aaecb321d82d3823ca243f7318b
  CHECKSUM(SHA256) upstream package : 58e5e2203fba2b7b22048b6a9c411121b67b9aaecb321d82d3823ca243f7318b


Generated by fedora-review 0.6.1 (f03e4e7) last change: 2016-05-02
Command line :/usr/bin/fedora-review -b 1636019 -m fedora-29-x86_64
Buildroot used: fedora-29-x86_64
Active plugins: Generic, Shell-api, Java
Disabled plugins: C/C++, Python, fonts, SugarActivity, Ocaml, Perl, Haskell, R, PHP
Disabled flags: EXARCH, DISTTAG, EPEL5, BATCH, EPEL6

Comment 16 jiri vanek 2018-11-19 16:00:07 UTC
Please fix requires for javadoc, use best of both sepcfiles, and fix rawhide build failure asap once pushed.

APPROVED

Comment 17 Gwyn Ciesla 2018-11-20 14:47:49 UTC
(fedscm-admin):  The Pagure repository was created at https://src.fedoraproject.org/rpms/java-runtime-decompiler

Comment 18 jiri vanek 2018-11-22 16:48:22 UTC
HI Petra, Have you filled the bodhi updtaes? If so, plese add this bug ID.

Comment 19 Fedora Update System 2018-11-29 02:03:28 UTC
java-runtime-decompiler-2.0-2.fc28 has been pushed to the Fedora 28 testing repository. If problems still persist, please make note of it in this bug report.
See https://fedoraproject.org/wiki/QA:Updates_Testing for
instructions on how to install test updates.
You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-2018-675bc983cc

Comment 20 Fedora Update System 2018-11-29 03:05:35 UTC
java-runtime-decompiler-2.0-2.fc27 has been pushed to the Fedora 27 testing repository. If problems still persist, please make note of it in this bug report.
See https://fedoraproject.org/wiki/QA:Updates_Testing for
instructions on how to install test updates.
You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-2018-a5bce09d26

Comment 21 Fedora Update System 2018-11-29 03:18:12 UTC
java-runtime-decompiler-2.0-2.fc29 has been pushed to the Fedora 29 testing repository. If problems still persist, please make note of it in this bug report.
See https://fedoraproject.org/wiki/QA:Updates_Testing for
instructions on how to install test updates.
You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-2018-386cff7a63

Comment 22 Fedora Update System 2018-12-05 01:57:20 UTC
java-runtime-decompiler-2.0-2.fc28 has been pushed to the Fedora 28 stable repository. If problems still persist, please make note of it in this bug report.

Comment 23 Fedora Update System 2018-12-05 02:35:34 UTC
java-runtime-decompiler-2.0-2.fc29 has been pushed to the Fedora 29 stable repository. If problems still persist, please make note of it in this bug report.


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