diff --git a/.gitignore b/.gitignore index 9a636c6..25ad59e 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,2 @@ /mstrobel-procyon-ee404caa9a29.zip /v0.5.36.tar.gz -/procyon-1.0~SNAPSHOT.tar.gz -/procyon-92ba3f44b8f2b755a21efcdc05dec347ab4df552.tar.gz -/procyon-88a95fa93c58322393174f84543edc7a0a2ca44d.tar.gz diff --git a/adaptToNewerJcommander.patch b/adaptToNewerJcommander.patch new file mode 100644 index 0000000..bab3d59 --- /dev/null +++ b/adaptToNewerJcommander.patch @@ -0,0 +1,12 @@ +--- a/Procyon.Decompiler/src/main/java/com/strobel/decompiler/CommandLineOptions.java_nw ++++ b/Procyon.Decompiler/src/main/java/com/strobel/decompiler/CommandLineOptions.java +@@ -23,7 +23,7 @@ + + public class CommandLineOptions { + @Parameter(description = "") +- private final List _inputs = new ArrayList<>(); ++ private List _inputs = new ArrayList<>(); + + @Parameter( + names = { "-?", "--help" }, + diff --git a/disableFatJar.patch b/disableFatJar.patch new file mode 100644 index 0000000..5d8bbef --- /dev/null +++ b/disableFatJar.patch @@ -0,0 +1,28 @@ +diff -r ee404caa9a29 Procyon.Decompiler/build.gradle +--- a/Procyon.Decompiler/build.gradle ++++ b/Procyon.Decompiler/build.gradle.nw +@@ -3,23 +3,10 @@ + jcenter() + } + +- dependencies { +- classpath 'eu.appsatori:gradle-fatjar-plugin:0.3' +- } + } + + jar.enabled = true + uploadArchives.enabled = false +- +-apply plugin: 'eu.appsatori.fatjar' +- +-fatJar { +-// from rootProject.allprojects.collect({ it.sourceSets.main.allSource }) +- +- manifest { +- attributes 'Title': archivesBaseName, 'Manifest-Version': '1.0', 'Version': version +- } +-} + + dependencies { + compile 'com.beust:jcommander:1.30' + diff --git a/generate-tarball.sh b/generate-tarball.sh deleted file mode 100755 index 817fc26..0000000 --- a/generate-tarball.sh +++ /dev/null @@ -1,23 +0,0 @@ -#!/bin/bash -set -ex - -name=procyon -version=`cat procyon.spec | grep "%global commit " | sed "s/.*commit //"` - -# RETRIEVE -rm -rf procyon -git clone "https://github.com/mstrobel/procyon.git" - -# CLEAN TARBALL -pushd procyon -git checkout "$version" - -rm -rf .git .idea docs -rm -rf gradle* -popd - -rm -rf "${name}-${version}" -mv procyon "${name}-${version}" - -tar -czf "${name}-${version}.tar.gz" "${name}-${version}" -rm -rf "${name}-${version}" diff --git a/newJcommander.patch b/newJcommander.patch new file mode 100644 index 0000000..140fc73 --- /dev/null +++ b/newJcommander.patch @@ -0,0 +1,12 @@ +--- a/Procyon.Decompiler/src/main/java/com/strobel/decompiler/DecompilerDriver.java ++++ a/Procyon.Decompiler/src/main/java/com/strobel/decompiler/DecompilerDriver.java +@@ -64,7 +64,7 @@ + final boolean decompileJar = !StringUtilities.isNullOrWhitespace(jarFile); + + if (options.getPrintVersion()) { +- JCommander.getConsole().println(Procyon.version()); ++ jCommander.getConsole().println(Procyon.version()); + if (options.getPrintUsage()) { + jCommander.usage(); + } + diff --git a/procyon.spec b/procyon.spec index 08caf50..3b36204 100644 --- a/procyon.spec +++ b/procyon.spec @@ -2,34 +2,31 @@ %define debug_package %{nil} %global remove_tests 1 -%global commit 88a95fa93c58322393174f84543edc7a0a2ca44d -%global shortcommit %(c=%{commit}; echo ${c:0:7}) -%global commitdate 20220221 - Name: procyon -Version: 0.6.0 -Release: 0.11.%{commitdate}.git%{shortcommit}%{?dist} +Version: 0.5.36 +Release: 0.1%{?dist} Summary: procyon java decompiler and other tools -# Automatically converted from old format: ASL 2.0 - review is highly recommended. -License: Apache-2.0 -URL: https://github.com/mstrobel/procyon -# ./generate-tarball.sh -# This script uses a fork of the original project -Source0: %{name}-%{commit}.tar.gz +License: ASL 2.0 +URL: https://bitbucket.org/mstrobel/procyon/ +Source0: https://bitbucket.org/mstrobel/procyon/get/v0.5.36.tar.gz Source1: procyon-decompiler +# main removal is not upstream-able, and is enforced by fedora policy +# signature is touching online world, necessary for packaging, not usptream able +Patch0: removeSigningAndIfDecompilerAndMain.patch +# fat jar do not have much sense for fedora packagin. not upstream-able +Patch1: disableFatJar.patch +# patch should be proposed to upstream. +Patch2: adaptToNewerJcommander.patch Patch3: madeToPasXlint.patch - - +Patch4: newJcommander.patch BuildArch: noarch -ExclusiveArch: %{java_arches} noarch - BuildRequires: javapackages-tools -BuildRequires: java-25-devel +BuildRequires: java-devel BuildRequires: dos2unix BuildRequires: beust-jcommander -Requires: java-25-headless +Requires: java-headless Requires: javapackages-tools -# main package is just meta package for all subprojects and their artifacts +# 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} @@ -45,7 +42,6 @@ The Procyon libraries are available from Maven Central under group ID org.bitbuc %package compilertools Summary: The procyon-compilertools project BuildArch: noarch -ExclusiveArch: %{java_arches} noarch Requires: javapackages-tools %description compilertools @@ -57,7 +53,6 @@ The Compiler Toolset is still early in development and subject to change. %package core Summary: The procyon-core framework contains common support classes BuildArch: noarch -ExclusiveArch: %{java_arches} noarch Requires: javapackages-tools %description core @@ -69,7 +64,6 @@ and some runtime type helpers. %package expressions Summary: The procyon-expressions framework provides a more natural form of Linq-like code generation BuildArch: noarch -ExclusiveArch: %{java_arches} noarch Requires: javapackages-tools %description expressions @@ -84,7 +78,6 @@ minus the dynamic callsite support (and with more relaxed rules regarding type c %package decompiler Summary: procyon-decompiler is a front-end for the Java decompiler BuildArch: noarch -ExclusiveArch: %{java_arches} noarch Requires: %{name}-core Requires: %{name}-compilertools Requires: beust-jcommander @@ -98,7 +91,6 @@ https://bitbucket.org/mstrobel/procyon/wiki/Java%20Decompiler %package reflection Summary: The procyon-reflection framework provides a rich reflection and code generation API BuildArch: noarch -ExclusiveArch: %{java_arches} noarch Requires: javapackages-tools %description reflection @@ -108,8 +100,9 @@ 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. + %prep -%setup -q -n %{name}-%{commit} +%setup -q -n mstrobel-procyon-9f7822463e41 %if %{remove_tests} find | grep "\\.class$" #find | grep "\\.jar$" @@ -121,22 +114,27 @@ find | grep "\\.jar$" && exit 1 dos2unix Procyon.Decompiler/build.gradle dos2unix build.gradle dos2unix README.md +# also removing main method from enter point jar +%patch0 -p1 +%patch1 -p1 +%patch2 -p1 dos2unix Procyon.CompilerTools/src/main/java/com/strobel/assembler/metadata/MethodBinder.java -%patch -P3 -p1 +%patch3 -p1 +%patch4 -p1 + %build + 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} -sourceVersion="-source 8 -target 8 -g" - -javac $sourceVersion -d build/Procyon.Core/classes/ ` find Procyon.Core/src/main/java -type f | grep "\.java"` -javac $sourceVersion -d build/Procyon.Reflection/classes/ -cp build/Procyon.Core/classes/ ` find Procyon.Reflection/src/main/java -type f | grep "\.java"` -javac $sourceVersion -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 $sourceVersion -d build/Procyon.CompilerTools/classes/ -cp build/Procyon.Core/classes/ ` find Procyon.CompilerTools/src/main/java -type f | grep "\.java"` +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 @@ -149,7 +147,7 @@ done # create just launcher jar to be used in fedora mkdir build/launcher-minimal mkdir build/launcher-minimal/classes -javac -source 8 -target 8 -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"` +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 build/launcher-minimal/classes/ jar -cf ../../../build/Procyon.Decompiler/libs/%{name}-decompiler-%{version}.jar com @@ -173,6 +171,7 @@ ln -s %{name}-expressions-%{version}.jar %{name}-expressions.jar ln -s %{name}-reflection-%{version}.jar %{name}-reflection.jar popd + %files %license License.txt %doc README.md @@ -213,5 +212,26 @@ popd %license License.txt %doc README.md + %changelog -%autochangelog +* Tue Feb 18 2020 Jiri Vanek - 0.5.36-0.1 +- bumped to latest tagged forest 0.5.36 +- fixed bug in usage of newer jcommander + +* Tue Feb 18 2020 Jiri Vanek - 0.5.33-0.5.pre02 +- removed fat jar, as gradle is gone +- removed javadoc and srcs artifacts. will eb building by javac +- buit by javac instead of gradle + +* Fri Jul 26 2019 Fedora Release Engineering - 0.5.33-0.3.pre02 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + +* Sat Feb 02 2019 Fedora Release Engineering - 0.5.33-0.2.pre02 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + +* 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 + +* Fri Dec 21 2018 Jiri Vanek 0.5.33-0.1.pre01 +- inital load diff --git a/removeSigningAndIfDecompilerAndMain.patch b/removeSigningAndIfDecompilerAndMain.patch new file mode 100644 index 0000000..31315a9 --- /dev/null +++ b/removeSigningAndIfDecompilerAndMain.patch @@ -0,0 +1,127 @@ +diff -r ee404caa9a29 Procyon.Decompiler/build.gradle +--- a/Procyon.Decompiler/build.gradle Thu Jul 26 07:08:30 2018 -0400 ++++ b/Procyon.Decompiler/build.gradle Fri Dec 21 17:02:23 2018 +0100 +@@ -8,7 +8,7 @@ + } + } + +-jar.enabled = false ++jar.enabled = true + uploadArchives.enabled = false + + apply plugin: 'eu.appsatori.fatjar' +@@ -17,7 +17,7 @@ + // from rootProject.allprojects.collect({ it.sourceSets.main.allSource }) + + manifest { +- attributes 'Title': archivesBaseName, 'Manifest-Version': '1.0', 'Version': version, 'Main-Class' : 'com.strobel.decompiler.DecompilerDriver' ++ attributes 'Title': archivesBaseName, 'Manifest-Version': '1.0', 'Version': version + } + } + +@@ -25,4 +25,4 @@ + compile 'com.beust:jcommander:1.30' + compile project(':Procyon.Core') + compile project(':Procyon.CompilerTools') +-} +\ No newline at end of file ++} +diff -r ee404caa9a29 build.gradle +--- a/build.gradle Thu Jul 26 07:08:30 2018 -0400 ++++ b/build.gradle Fri Dec 21 17:02:23 2018 +0100 +@@ -59,7 +59,6 @@ + + subprojects { + apply plugin: 'maven' +- apply plugin: 'signing' + + archivesBaseName = 'procyon-' + it.name.split("\\.")[1].toLowerCase() + +@@ -80,7 +79,7 @@ + from sourceSets.main.allSource + } + +- if (project.name != "Procyon.Decompiler") { ++ + javadoc { + options.encoding = 'UTF-8' + } +@@ -91,78 +90,6 @@ + archives sourcesJar + } + +- signing { +- sign configurations.archives +- } + +- uploadArchives { +- repositories.mavenDeployer { +- beforeDeployment { MavenDeployment deployment -> +- signing.signPom(deployment) +- } +- snapshotRepository(url: "https://oss.sonatype.org/content/repositories/snapshots") { +- authentication(userName: project.properties.get("sonatypeUsername"), password: project.properties.get("sonatypePassword")) +- } +- +- repository(url: "https://oss.sonatype.org/service/local/staging/deploy/maven2") { +- authentication(userName: project.properties.get("sonatypeUsername"), password: project.properties.get("sonatypePassword")) +- } +- +- pom { +- groupId = project.group +- version = project.version +- artifactId = project.archivesBaseName +- +- project { +- name project.archivesBaseName +- packaging 'jar' +- description 'Procyon' +- url 'https://bitbucket.org/mstrobel/procyon' +- +- scm { +- url 'https://bitbucket.org/mstrobel/procyon' +- connection 'scm:hg:https://hg@bitbucket.org/mstrobel/procyon' +- developerConnection 'scm:hg:https://mstrobel@bitbucket.org/mstrobel/procyon' +- } +- +- issueManagement { +- system 'jira' +- url 'https://bitbucket.org/mstrobel/procyon/issues' +- } +- +- licenses { +- license { +- name 'The Apache Software License, Version 2.0' +- url 'http://www.apache.org/licenses/LICENSE-2.0.txt' +- distribution 'repo' +- } +- } +- +- developers { +- developer { +- id 'mstrobel' +- name 'Mike Strobel' +- roles { +- role 'owner' +- role 'packager' +- role 'developer' +- } +- } +- } +- +- dependencies { +- dependency { +- groupId 'junit' +- artifactId 'junit' +- version '4.11' +- scope 'test' +-// optional = true +- } +- } +- } +- } +- } +- } +- } + } + diff --git a/sources b/sources index 1dfc060..77ab89d 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (procyon-88a95fa93c58322393174f84543edc7a0a2ca44d.tar.gz) = 69c782cb8648f5c8f6ed1999d301df2318f64a3d3479a16ef340891deaef7a1b161d4d2808d98e70372381626dbe5488d9d0dc9b6c17feacc8e0d38f1747985e +SHA512 (v0.5.36.tar.gz) = 4f70f1b6886cb14a10e7686350bc13b7f5b0a3d09295982e6d03814f329fe426b503900e57c285b4f6906f824c623d142fd7cb3131cf6729dcf3044d0beb48c6