diff --git a/madeToPasXlint.patch b/madeToPasXlint.patch new file mode 100644 index 0000000..c1eb252 --- /dev/null +++ b/madeToPasXlint.patch @@ -0,0 +1,30 @@ +--- a/Procyon.CompilerTools/src/main/java/com/strobel/assembler/metadata/MethodBinder.java ++++ b/Procyon.CompilerTools/src/main/java/com/strobel/assembler/metadata/MethodBinder.java2 +@@ -213,7 +213,7 @@ + + // + // Find the most specific method based on the parameters. On the first pass, prohibit +- // auto-(un)boxing and variable arity (see JLS §15.12.2.2). ++ // auto-(un)boxing and variable arity (see JLS 15.12.2.2). + // + int result = findMostSpecific( + m1.getParameters(), +@@ -229,7 +229,7 @@ + + // + // If the first attempt produced an ambiguous result, try again with boxing conversions +- // allowed (see JLS §15.12.2.3). ++ // allowed (see JLS 15.12.2.3). + // + if (result == 0) { + result = findMostSpecific( +@@ -247,7 +247,7 @@ + + // + // If the second attempt produced an ambiguous result, try again with both boxing +- // conversions and variable arity allowed (see JLS §15.12.2.4). ++ // conversions and variable arity allowed (see JLS 15.12.2.4). + // + if (result == 0) { + result = findMostSpecific( + diff --git a/procyon.spec b/procyon.spec index bcd1098..2b15d77 100644 --- a/procyon.spec +++ b/procyon.spec @@ -1,12 +1,10 @@ #in noarch? why... %define debug_package %{nil} -# assembled single-jar decompiler can not be currently packed in fedora, but can be build locally -%global enable_fat_jar 0 %global remove_tests 1 Name: procyon Version: 0.5.33 -Release: 0.1.pre02%{?dist} +Release: 0.1.pre03%{?dist} Summary: procyon java decompiler and other tools Group: Development/Tools License: ASL 2.0 @@ -21,37 +19,20 @@ Patch0: removeSigningAndIfDecompilerAndMain.patch Patch1: disableFatJar.patch # patch should be proposed to upstream. Patch2: adaptToNewerJcommander.patch +Patch3: madeToPasXlint.patch BuildArch: noarch -BuildRequires: javapackages-tools +BuildRequires: jpackage-utils BuildRequires: java-devel -%if %{enable_fat_jar} -BuildRequires: gradle -%else -BuildRequires: gradle-local -%endif BuildRequires: dos2unix BuildRequires: beust-jcommander Requires: java-headless -Requires: javapackages-tools +Requires: jpackage-utils # main package is just meta package for all subprojects andtheirs artifacts -Recommends: %{name}-compilertools = %{version}-%{release} -Recommends: %{name}-core = %{version}-%{release} -Recommends: %{name}-expressions = %{version}-%{release} -Recommends: %{name}-reflection = %{version}-%{release} -Recommends: %{name}-decompiler = %{version}-%{release} -%if %{enable_fat_jar} -Recommends: %{name}-decompiler-all = %{version}-%{release} -%endif -Recommends: %{name}-compilertools-javadoc = %{version}-%{release} -Recommends: %{name}-core-javadoc = %{version}-%{release} -Recommends: %{name}-expressions-javadoc = %{version}-%{release} -Recommends: %{name}-reflection-javadoc = %{version}-%{release} -Recommends: %{name}-decompiler-javadoc = %{version}-%{release} -Recommends: %{name}-compilertools-srcs = %{version}-%{release} -Recommends: %{name}-core-srcs = %{version}-%{release} -Recommends: %{name}-expressions-srcs = %{version}-%{release} -Recommends: %{name}-reflection-srcs = %{version}-%{release} -Recommends: %{name}-decompiler-srcs = %{version}-%{release} +Requires: %{name}-compilertools = %{version}-%{release} +Requires: %{name}-core = %{version}-%{release} +Requires: %{name}-expressions = %{version}-%{release} +Requires: %{name}-reflection = %{version}-%{release} +Requires: %{name}-decompiler = %{version}-%{release} %description Procyon is a suite of Java metaprogramming tools focused on code generation and analysis. @@ -112,19 +93,6 @@ procyon-decompiler is a front-end for the Java decompiler included in procyon-co For more information about the decompiler, see the Java Decompiler wiki page - https://bitbucket.org/mstrobel/procyon/wiki/Java%20Decompiler -%if %{enable_fat_jar} -%package decompiler-all -Summary: procyon-decompiler-all is library with assembled core and compiler-tools together with cli -Group: Development/Tools -BuildArch: noarch -Requires: javapackages-tools - -%description decompiler-all -procyon-decompiler is a front-end for the Java decompiler with all depndencies packed -For more information about the decompiler, see the Java Decompiler wiki page - -https://bitbucket.org/mstrobel/procyon/wiki/Java%20Decompiler -%endif - %package reflection Summary: The procyon-reflection framework provides a rich reflection and code generation API Group: Development/Tools @@ -138,90 +106,6 @@ Emit APIs and is meant to address many of the shortcomings of the core Java refl limited and cumbersome support for generic type inspection. Its code generation facilities include a TypeBuilder, MethodBuilder, and a bytecode emitter. -%package compilertools-javadoc -Summary: The procyon-compilertools project javadoc -Group: Documentation -BuildArch: noarch - -%description compilertools-javadoc -javadoc - -%package core-javadoc -Summary: The procyon-core framework javadoc -Group: Documentation -BuildArch: noarch - -%description core-javadoc -javadoc - -%package expressions-javadoc -Summary: The procyon-expressions framework provides javadoc -Group: Documentation -BuildArch: noarch - -%description expressions-javadoc -javadoc - -%package decompiler-javadoc -Summary: procyon-decompiler javadoc -Group: Documentation -BuildArch: noarch - -%description decompiler-javadoc -javadoc - -%package reflection-javadoc -Summary: The procyon-reflection framework javadoc -Group: Documentation -BuildArch: noarch - -%description reflection-javadoc -javadoc - -%package compilertools-srcs -Summary: The procyon-compilertools project sources -Group: Documentation -BuildArch: noarch -Requires: javapackages-tools - -%description compilertools-srcs -sources - -%package core-srcs -Summary: The procyon-core framework sources -Group: Documentation -BuildArch: noarch -Requires: javapackages-tools - -%description core-srcs -sources - -%package expressions-srcs -Summary: The procyon-expressions framework provides sources -Group: Documentation -BuildArch: noarch -Requires: javapackages-tools - -%description expressions-srcs -sources - -%package decompiler-srcs -Summary: procyon-decompiler sources -Group: Documentation -BuildArch: noarch -Requires: javapackages-tools - -%description decompiler-srcs -sources - -%package reflection-srcs -Summary: The procyon-reflection framework sources -Group: Documentation -BuildArch: noarch -Requires: javapackages-tools - -%description reflection-srcs -sources %prep %setup -q -n mstrobel-procyon-ee404caa9a29 @@ -238,81 +122,59 @@ dos2unix build.gradle dos2unix README.md # also removing main method from enter point jar %patch0 -p1 -%if %{enable_fat_jar} -echo "not applying patch1, enabeld fat jar" -%else %patch1 -p1 -%endif %patch2 -p1 +dos2unix Procyon.CompilerTools/src/main/java/com/strobel/assembler/metadata/MethodBinder.java +%patch3 -p1 %build -#gradle build -x test -%gradle_build -f + +mkdir -p build/Procyon.CompilerTools/{libs,classes} +mkdir -p build/Procyon.Core/{libs,classes} +mkdir -p build/Procyon.Decompiler/{libs,classes} +mkdir -p build/Procyon.Expressions/{libs,classes} +mkdir -p build/Procyon.Reflection/{libs,classes} + +javac -d build/Procyon.Core/classes/ ` find Procyon.Core/src/main/java -type f | grep "\.java"` +javac -d build/Procyon.Reflection/classes/ -cp build/Procyon.Core/classes/ ` find Procyon.Reflection/src/main/java -type f | grep "\.java"` +javac -d build/Procyon.Expressions/classes/ -cp build/Procyon.Core/classes/:build/Procyon.Reflection/classes/ ` find Procyon.Expressions/src/main/java -type f | grep "\.java"` +javac -d build/Procyon.CompilerTools/classes/ -cp build/Procyon.Core/classes/ ` find Procyon.CompilerTools/src/main/java -type f | grep "\.java"` + +# pack the jars +for x in Procyon.CompilerTools Procyon.Core Procyon.Reflection Procyon.Expressions ; do + pushd build/$x/classes/ + project=`echo $x | sed -e "s/Procyon.//" | sed -e 's/\(.*\)/\L\1/'` + jar -cf ../../../build/$x/libs/%{name}-$project-%{version}.jar com + popd +done + # create just launcher jar to be used in fedora -mkdir launcher-minimal -mkdir launcher-minimal/classes -javac -cp build/Procyon.Core/libs/%{name}-core-%{version}.jar:build/Procyon.CompilerTools/libs/%{name}-compilertools-%{version}.jar:%{_javadir}/beust-jcommander.jar -d launcher-minimal/classes ` find Procyon.Decompiler/src/main/java -type f | grep "\.java"` -%if %{enable_fat_jar} -# some dependent packages depnds on this assembeld decompiler jar (we build without its main in manifest (good idea?), see patch0 -gradle fatjar -x test -# rename -mv build/Procyon.Decompiler/libs/%{name}-decompiler-%{version}.jar build/Procyon.Decompiler/libs/%{name}-decompiler-all-%{version}.jar -%endif +mkdir build/launcher-minimal +mkdir build/launcher-minimal/classes +javac -cp build/Procyon.Core/classes/:build/Procyon.CompilerTools/classes/:%{_javadir}/beust-jcommander.jar -d build/launcher-minimal/classes ` find Procyon.Decompiler/src/main/java -type f | grep "\.java"` # pack the minimal jar -pushd launcher-minimal/classes/ -jar -cf ../../build/Procyon.Decompiler/libs/%{name}-decompiler-%{version}.jar com +pushd build/launcher-minimal/classes/ +jar -cf ../../../build/Procyon.Decompiler/libs/%{name}-decompiler-%{version}.jar com popd %install mkdir -p $RPM_BUILD_ROOT/%{_bindir}/ cp %{SOURCE1} $RPM_BUILD_ROOT/%{_bindir}/ # cusotm launcher for main method in main jar mkdir -p $RPM_BUILD_ROOT/%{_javadir}/%{name}/ -mkdir -p $RPM_BUILD_ROOT/%{_javadir}/%{name}/srcs -mkdir -p $RPM_BUILD_ROOT/%{_javadocdir}/%{name}/ cp build/Procyon.CompilerTools/libs/%{name}-compilertools-%{version}.jar $RPM_BUILD_ROOT/%{_javadir}/%{name}/ cp build/Procyon.Core/libs/%{name}-core-%{version}.jar $RPM_BUILD_ROOT/%{_javadir}/%{name}/ cp build/Procyon.Decompiler/libs/%{name}-decompiler-%{version}.jar $RPM_BUILD_ROOT/%{_javadir}/%{name}/ -%if %{enable_fat_jar} -cp build/Procyon.Decompiler/libs/%{name}-decompiler-all-%{version}.jar $RPM_BUILD_ROOT/%{_javadir}/%{name}/ -%endif cp build/Procyon.Expressions/libs/%{name}-expressions-%{version}.jar $RPM_BUILD_ROOT/%{_javadir}/%{name}/ cp build/Procyon.Reflection/libs/%{name}-reflection-%{version}.jar $RPM_BUILD_ROOT/%{_javadir}/%{name}/ -cp build/Procyon.CompilerTools/libs/%{name}-compilertools-%{version}-javadoc.jar $RPM_BUILD_ROOT/%{_javadocdir}/%{name}/ -cp build/Procyon.Core/libs/%{name}-core-%{version}-javadoc.jar $RPM_BUILD_ROOT/%{_javadocdir}/%{name}/ -cp build/Procyon.Decompiler/libs/%{name}-decompiler-%{version}-javadoc.jar $RPM_BUILD_ROOT/%{_javadocdir}/%{name}/ -cp build/Procyon.Expressions/libs/%{name}-expressions-%{version}-javadoc.jar $RPM_BUILD_ROOT/%{_javadocdir}/%{name}/ -cp build/Procyon.Reflection/libs/%{name}-reflection-%{version}-javadoc.jar $RPM_BUILD_ROOT/%{_javadocdir}/%{name}/ - -cp build/Procyon.CompilerTools/libs/%{name}-compilertools-%{version}-sources.jar $RPM_BUILD_ROOT/%{_javadir}/%{name}/srcs/ -cp build/Procyon.Core/libs/%{name}-core-%{version}-sources.jar $RPM_BUILD_ROOT/%{_javadir}/%{name}/srcs/ -cp build/Procyon.Decompiler/libs/%{name}-decompiler-%{version}-sources.jar $RPM_BUILD_ROOT/%{_javadir}/%{name}/srcs/ -cp build/Procyon.Expressions/libs/%{name}-expressions-%{version}-sources.jar $RPM_BUILD_ROOT/%{_javadir}/%{name}/srcs/ -cp build/Procyon.Reflection/libs/%{name}-reflection-%{version}-sources.jar $RPM_BUILD_ROOT/%{_javadir}/%{name}/srcs/ pushd $RPM_BUILD_ROOT/%{_javadir}/%{name}/ ln -s %{name}-compilertools-%{version}.jar %{name}-compilertools.jar ln -s %{name}-core-%{version}.jar %{name}-core.jar ln -s %{name}-decompiler-%{version}.jar %{name}-decompiler.jar -%if %{enable_fat_jar} -ln -s %{name}-decompiler-all-%{version}.jar %{name}-decompiler-all.jar -%endif ln -s %{name}-expressions-%{version}.jar %{name}-expressions.jar ln -s %{name}-reflection-%{version}.jar %{name}-reflection.jar popd -pushd $RPM_BUILD_ROOT/%{_javadocdir}/%{name}/ -ln -s %{name}-compilertools-%{version}-javadoc.jar %{name}-compilertools-javadoc.jar -ln -s %{name}-core-%{version}-javadoc.jar %{name}-core-javadoc.jar -ln -s %{name}-decompiler-%{version}-javadoc.jar %{name}-decompiler-javadoc.jar -ln -s %{name}-expressions-%{version}-javadoc.jar %{name}-expressions-javadoc.jar -ln -s %{name}-reflection-%{version}-javadoc.jar %{name}-reflection-javadoc.jar -popd -pushd $RPM_BUILD_ROOT/%{_javadir}/%{name}/srcs -ln -s %{name}-compilertools-%{version}-sources.jar %{name}-compilertools-sources.jar -ln -s %{name}-core-%{version}-sources.jar %{name}-core-sources.jar -ln -s %{name}-decompiler-%{version}-sources.jar %{name}-decompiler-sources.jar -ln -s %{name}-expressions-%{version}-sources.jar %{name}-expressions-sources.jar -ln -s %{name}-reflection-%{version}-sources.jar %{name}-reflection-sources.jar -popd + %files %license License.txt @@ -347,16 +209,6 @@ popd %license License.txt %doc README.md -%if %{enable_fat_jar} -%files decompiler-all -%dir %{_javadir}/%{name} -%{_bindir}/%{name}-decompiler -%{_javadir}/%{name}/%{name}-decompiler-all-%{version}.jar -%{_javadir}/%{name}/%{name}-decompiler-all.jar -%license License.txt -%doc README.md -%endif - %files reflection %dir %{_javadir}/%{name}/ %{_javadir}/%{name}/%{name}-reflection-%{version}.jar @@ -364,84 +216,14 @@ popd %license License.txt %doc README.md -%files compilertools-javadoc -%dir %{_javadocdir}/%{name}/ -%{_javadocdir}/%{name}/%{name}-compilertools-%{version}-javadoc.jar -%{_javadocdir}/%{name}/%{name}-compilertools-javadoc.jar -%license License.txt -%doc README.md - -%files core-javadoc -%dir %{_javadocdir}/%{name}/ -%{_javadocdir}/%{name}/%{name}-core-%{version}-javadoc.jar -%{_javadocdir}/%{name}/%{name}-core-javadoc.jar -%license License.txt -%doc README.md - -%files expressions-javadoc -%dir %{_javadocdir}/%{name}/ -%{_javadocdir}/%{name}/%{name}-expressions-%{version}-javadoc.jar -%{_javadocdir}/%{name}/%{name}-expressions-javadoc.jar -%license License.txt -%doc README.md - -%files decompiler-javadoc -%dir %{_javadocdir}/%{name}/ -%{_bindir}/%{name}-decompiler -%{_javadocdir}/%{name}/%{name}-decompiler-%{version}-javadoc.jar -%{_javadocdir}/%{name}/%{name}-decompiler-javadoc.jar -%license License.txt -%doc README.md - -%files reflection-javadoc -%dir %{_javadocdir}/%{name}/ -%{_javadocdir}/%{name}/%{name}-reflection-%{version}-javadoc.jar -%{_javadocdir}/%{name}/%{name}-reflection-javadoc.jar -%license License.txt -%doc README.md - -%files compilertools-srcs -%dir %{_javadir}/%{name} -%dir %{_javadir}/%{name}/srcs -%{_javadir}/%{name}/srcs/%{name}-compilertools-%{version}-sources.jar -%{_javadir}/%{name}/srcs/%{name}-compilertools-sources.jar -%license License.txt -%doc README.md - -%files core-srcs -%dir %{_javadir}/%{name} -%dir %{_javadir}/%{name}/srcs -%{_javadir}/%{name}/srcs/%{name}-core-%{version}-sources.jar -%{_javadir}/%{name}/srcs/%{name}-core-sources.jar -%license License.txt -%doc README.md - -%files expressions-srcs -%dir %{_javadir}/%{name} -%dir %{_javadir}/%{name}/srcs -%{_javadir}/%{name}/srcs/%{name}-expressions-%{version}-sources.jar -%{_javadir}/%{name}/srcs/%{name}-expressions-sources.jar -%license License.txt -%doc README.md - -%files decompiler-srcs -%dir %{_javadir}/%{name} -%dir %{_javadir}/%{name}/srcs -%{_bindir}/%{name}-decompiler -%{_javadir}/%{name}/srcs/%{name}-decompiler-%{version}-sources.jar -%{_javadir}/%{name}/srcs/%{name}-decompiler-sources.jar -%license License.txt -%doc README.md - -%files reflection-srcs -%dir %{_javadir}/%{name} -%dir %{_javadir}/%{name}/srcs -%{_javadir}/%{name}/srcs/%{name}-reflection-%{version}-sources.jar -%{_javadir}/%{name}/srcs/%{name}-reflection-sources.jar -%license License.txt -%doc README.md %changelog +* Fri Jan 18 2019 Jiri Vanek 0.5.33-0.1.pre03 +- removed fat jar, as epel have no gradle +- removed javadoc and srcs artifacts. will eb building by javac +- adapted br/r/provides to epel7 +- buit by javac instead of gradle + * Fri Dec 21 2018 Jiri Vanek 0.5.33-0.1.pre02 - created special package for assembled fat jar - adapted rest of package to include and cooperate with minimal decompiler frontend