split plugins to subpkgs and adapted launchers
procyon crashes without warning, asmtool8 packed in bad, old version
This commit is contained in:
parent
ff42bdeea2
commit
3ddebd0508
4 changed files with 128 additions and 47 deletions
|
|
@ -16,41 +16,35 @@ function warning() {
|
|||
fi
|
||||
}
|
||||
|
||||
# identify directory tree
|
||||
JRD=`basename $0`
|
||||
# the launcher is reused uder different name, hardcoding name
|
||||
JRD=java-runtime-decompiler
|
||||
CONF_HOME=$XDG_CONFIG_HOME
|
||||
|
||||
|
||||
if [ "$CONF_HOME" = "" ] ; then
|
||||
CONF_HOME=$HOME/.config/$JRD
|
||||
|
||||
else
|
||||
CONF_HOME=$CONF_HOME/$JRD
|
||||
|
||||
fi
|
||||
|
||||
LOG_DIR=$CONF_HOME/logs
|
||||
|
||||
CONF_DIR=$CONF_HOME/conf
|
||||
|
||||
# create directory tree
|
||||
PLUGIN_HOME=$CONF_HOME/plugins
|
||||
PLUGIN_HOME_LEGACY=$CONF_HOME/plugins-legacy
|
||||
|
||||
mkdir -p $LOG_DIR
|
||||
|
||||
mkdir -p $CONF_DIR
|
||||
|
||||
mkdir -p $PLUGIN_HOME
|
||||
|
||||
: ${MAIN_CLASS:=org.jrd.backend.data.Main}
|
||||
|
||||
# set java and jvm arguments
|
||||
export _prefer_jre=false
|
||||
export _prefer_jre=false #although java moved compiler classes to jre, PREFERING jdk should not hurt
|
||||
_set_java_home
|
||||
set_jvm
|
||||
|
||||
# all dependencies must be on classpath
|
||||
set_classpath java-runtime-decompiler rsyntaxtextarea byteman google-gson classpathless-compiler objectweb-asm
|
||||
set_classpath java-runtime-decompiler rsyntaxtextarea byteman google-gson classpathless-compiler objectweb-asm java-diff-utils
|
||||
CLASSPATH=$CLASSPATH:${JAVA_HOME}/lib/tools.jar
|
||||
|
||||
# set path to agent automatically
|
||||
|
|
@ -60,16 +54,19 @@ AGENT_PREFIX="AGENT_PATH==="
|
|||
AGENT_STRING=$AGENT_PREFIX$AGENT
|
||||
|
||||
# copy json wrappers information to home so the users can edit
|
||||
CP_FILES="$(ls /etc/$JRD/plugins/*.json)"
|
||||
for cpfile in $CP_FILES; do
|
||||
FILE_NAME="$(basename -- $cpfile)"
|
||||
if [ ! -e "$PLUGIN_HOME/$FILE_NAME" ]
|
||||
then
|
||||
cp $cpfile $PLUGIN_HOME
|
||||
else
|
||||
warning "Configuration files were not copied for $FILE_NAME - the existing configuration would be overwritten."
|
||||
fi
|
||||
done
|
||||
if [ ! -e "$PLUGIN_HOME_LEGACY" -a -e "$PLUGIN_HOME" ] ; then
|
||||
mv "$PLUGIN_HOME" "$PLUGIN_HOME_LEGACY"
|
||||
echo "jrd no longer handles custom plugins for you. Your's "
|
||||
echo "$PLUGIN_HOME was moved to $PLUGIN_HOME_LEGACY"
|
||||
echo "You can play with custom plugins in $PLUGIN_HOME"
|
||||
echo "but keep $PLUGIN_HOME_LEGACY created, so it is not renamed again"
|
||||
fi
|
||||
mkdir -p $PLUGIN_HOME_LEGACY
|
||||
|
||||
warning "jrd no longer handles custom plugins for you. Your's "
|
||||
warning echo "$PLUGIN_HOME was moved to $PLUGIN_HOME_LEGACY"
|
||||
warning "You can play with custom plugins in $PLUGIN_HOME"
|
||||
warning "but keep $PLUGIN_HOME_LEGACY created, so it is not renamed again"
|
||||
|
||||
# create config file and add agent default path
|
||||
touch $CONFIG_FILE
|
||||
|
|
@ -92,4 +89,4 @@ else
|
|||
fi
|
||||
|
||||
export FLAGS="$FLAGS -Djdk.attach.allowAttachSelf=true --add-exports jdk.jdeps/com.sun.tools.javap=ALL-UNNAMED" # jdk11+ do not allow attach by default; jdk17 is hiding javap api
|
||||
run "$@"
|
||||
run "$@"
|
||||
|
|
|
|||
|
|
@ -5,8 +5,9 @@ Release: 1%{?dist}
|
|||
License: GPLv3
|
||||
URL: https://github.com/pmikova/java-runtime-decompiler
|
||||
Source0: https://github.com/pmikova/%{name}/archive/%{name}-%{version}.tar.gz
|
||||
Source1: java-runtime-decompiler
|
||||
Source1: %{name}
|
||||
Source3: jrd.desktop
|
||||
Source4: jrd-hex.desktop
|
||||
Patch1: systemFernflower.patch
|
||||
Patch2: systemProcyon.patch
|
||||
Patch21: systemProcyonAssembler.patch
|
||||
|
|
@ -41,20 +42,23 @@ BuildRequires: java-devel
|
|||
BuildRequires: google-gson
|
||||
BuildRequires: desktop-file-utils
|
||||
BuildRequires: classpathless-compiler
|
||||
Requires: google-gson
|
||||
Requires: byteman
|
||||
Requires: rsyntaxtextarea
|
||||
Requires: java-headless
|
||||
Recommends: java
|
||||
Requires: classpathless-compiler
|
||||
Requires: java-diff-utils
|
||||
Recommends: fernflower
|
||||
Recommends: procyon-decompiler >= 0.6
|
||||
Recommends: CFR
|
||||
Recommends: openjdk-asmtools >= 8.0
|
||||
Recommends: openjdk-asmtools7
|
||||
Recommends: java
|
||||
Recommends: %{name}-fernflower-plugin
|
||||
Recommends: %{name}-procyon-plugin
|
||||
Recommends: %{name}-cfr-plugin
|
||||
Recommends: %{name}-asmtools-plugin
|
||||
Recommends: %{name}-asmtools7-plugin
|
||||
|
||||
%description
|
||||
This application can access JVM memory at runtime,
|
||||
extract byte code from the JVM and decompile it.
|
||||
In addition, it can modify the obtained code and comple it back
|
||||
This application can access JVM at runtime,
|
||||
extract byte code from the JVM and decompile it, modify the obtained code and compile it back.
|
||||
It also works with local classpath and source path and provide standalone hex, with binary diff.
|
||||
|
||||
%package javadoc
|
||||
Summary: Javadoc for %{name}
|
||||
|
|
@ -63,6 +67,46 @@ Requires: %{name} = %{version}-%{release}
|
|||
%description javadoc
|
||||
This package contains the API documentation for %{name}.
|
||||
|
||||
%package fernflower-plugin
|
||||
Requires: fernflower
|
||||
Summary: fernflower decompiler plugin for %{name}
|
||||
Requires: %{name} = %{version}-%{release}
|
||||
|
||||
%description fernflower-plugin
|
||||
This package provides bindings and requirements to fernflower decompiler for %{name}.
|
||||
|
||||
%package procyon-plugin
|
||||
Requires: procyon-decompiler >= 0.6
|
||||
Summary: procyon decompiler plugin for %{name}
|
||||
Requires: %{name} = %{version}-%{release}
|
||||
|
||||
%description procyon-plugin
|
||||
This package provides bindings and requirements to procyon decompiler for %{name}.
|
||||
|
||||
%package cfr-plugin
|
||||
Requires: CFR
|
||||
Summary: CFR decompiler plugin for %{name}
|
||||
Requires: %{name} = %{version}-%{release}
|
||||
|
||||
%description cfr-plugin
|
||||
This package provides bindings and requirements to CFR decompiler for %{name}.
|
||||
|
||||
%package asmtools-plugin
|
||||
Requires: openjdk-asmtools >= 8.0
|
||||
Summary: asmtools disassembler and assembler plugin for %{name}
|
||||
Requires: %{name} = %{version}-%{release}
|
||||
|
||||
%description asmtools-plugin
|
||||
This package provides bindings and requirements to asmtools disassembler and assembler for %{name}.
|
||||
|
||||
%package asmtools7-plugin
|
||||
Requires: openjdk-asmtools7
|
||||
Summary: asmtools7 disassembler and assembler plugin for %{name}
|
||||
Requires: %{name} = %{version}-%{release}
|
||||
|
||||
%description asmtools7-plugin
|
||||
This package provides bindings and requirements to asmtools7 disassembler and assembler for %{name}.
|
||||
|
||||
%prep
|
||||
%setup -q -n %{name}-%{name}-%{version}
|
||||
%patch1 -p0
|
||||
|
|
@ -105,66 +149,96 @@ java -cp $CPLC/classpathless-compiler.jar:$CPLC/classpathless-compiler-api.jar:$
|
|||
%mvn_install
|
||||
install -d -m 755 $RPM_BUILD_ROOT%{_mandir}/man1/
|
||||
install -m 644 %{name}.1 $RPM_BUILD_ROOT%{_mandir}/man1/
|
||||
pushd $RPM_BUILD_ROOT%{_mandir}/man1/
|
||||
ln -s %{name}.1 jrd.1
|
||||
ln -s %{name}.1 %{name}-hex.1
|
||||
ln -s %{name}.1 jrd-hex.1
|
||||
popd
|
||||
|
||||
install -d -m 755 $RPM_BUILD_ROOT%{_bindir}
|
||||
install -m 755 %{SOURCE1} $RPM_BUILD_ROOT%{_bindir}/
|
||||
install -d -m 755 $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/
|
||||
pushd $RPM_BUILD_ROOT%{_bindir}
|
||||
cp %{name} %{name}-hex
|
||||
sed 's/^run .*/run -hex "$@"/' -i %{name}-hex
|
||||
ln -s %{name} jrd
|
||||
ln -s %{name}-hex jrd-hex
|
||||
popd
|
||||
|
||||
cp -r %{_builddir}/%{name}-%{name}-%{version}/runtime-decompiler/src/plugins/ $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/
|
||||
|
||||
install -d -m 755 $RPM_BUILD_ROOT%{_datadir}/applications
|
||||
desktop-file-install --vendor="fedora" \
|
||||
--dir=${RPM_BUILD_ROOT}%{_datadir}/applications %{SOURCE3}
|
||||
desktop-file-install --vendor="fedora" --dir=${RPM_BUILD_ROOT}%{_datadir}/applications %{SOURCE3}
|
||||
desktop-file-install --vendor="fedora" --dir=${RPM_BUILD_ROOT}%{_datadir}/applications %{SOURCE4}
|
||||
|
||||
#jd is not yet packed and sucks anyway
|
||||
rm $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/plugins/JdDecompilerWrapper.java
|
||||
rm $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/plugins/JdDecompilerWrapper.json
|
||||
|
||||
|
||||
%files -f .mfiles
|
||||
%attr(755, root, -) %{_bindir}/java-runtime-decompiler
|
||||
%{_mandir}/man1/java-runtime-decompiler.1*
|
||||
%attr(755, root, -) %{_bindir}/java-runtime-decompiler-hex
|
||||
%{_bindir}/jrd
|
||||
%{_bindir}/jrd-hex
|
||||
%{_mandir}/man1/java-runtime-decompiler*.1*
|
||||
%{_mandir}/man1/jrd*.1*
|
||||
# wrappers for decompilers
|
||||
%dir %{_sysconfdir}/%{name}
|
||||
%dir %{_sysconfdir}/%{name}/plugins
|
||||
%dir %{_datadir}/applications
|
||||
%{_datadir}/applications/fedora-jrd.desktop
|
||||
%{_datadir}/applications/fedora-jrd-hex.desktop
|
||||
|
||||
%files fernflower-plugin
|
||||
%config %{_sysconfdir}/%{name}/plugins/FernflowerDecompilerWrapper.java
|
||||
%config(noreplace) %{_sysconfdir}/%{name}/plugins/FernflowerDecompilerWrapper.json
|
||||
|
||||
%files procyon-plugin
|
||||
%config %{_sysconfdir}/%{name}/plugins/ProcyonDecompilerWrapper.java
|
||||
%config(noreplace) %{_sysconfdir}/%{name}/plugins/ProcyonDecompilerWrapper.json
|
||||
%config %{_sysconfdir}/%{name}/plugins/ProcyonAssemblerDecompilerWrapper.java
|
||||
%config(noreplace) %{_sysconfdir}/%{name}/plugins/ProcyonAssemblerDecompilerWrapper.json
|
||||
|
||||
%files cfr-plugin
|
||||
%config %{_sysconfdir}/%{name}/plugins/CfrDecompilerWrapper.java
|
||||
%config(noreplace) %{_sysconfdir}/%{name}/plugins/CfrDecompilerWrapper.json
|
||||
|
||||
%files asmtools-plugin
|
||||
%config %{_sysconfdir}/%{name}/plugins/JasmDecompilerWrapper.java
|
||||
%config(noreplace) %{_sysconfdir}/%{name}/plugins/JasmDecompilerWrapper.json
|
||||
%config %{_sysconfdir}/%{name}/plugins/JasmGDecompilerWrapper.java
|
||||
%config(noreplace) %{_sysconfdir}/%{name}/plugins/JasmGDecompilerWrapper.json
|
||||
%config %{_sysconfdir}/%{name}/plugins/Jasm7DecompilerWrapper.java
|
||||
%config(noreplace) %{_sysconfdir}/%{name}/plugins/Jasm7DecompilerWrapper.json
|
||||
%config %{_sysconfdir}/%{name}/plugins/JasmG7DecompilerWrapper.java
|
||||
%config(noreplace) %{_sysconfdir}/%{name}/plugins/JasmG7DecompilerWrapper.json
|
||||
%config %{_sysconfdir}/%{name}/plugins/JcoderDecompilerWrapper.java
|
||||
%config(noreplace) %{_sysconfdir}/%{name}/plugins/JcoderDecompilerWrapper.json
|
||||
%config %{_sysconfdir}/%{name}/plugins/JcoderGDecompilerWrapper.java
|
||||
%config(noreplace) %{_sysconfdir}/%{name}/plugins/JcoderGDecompilerWrapper.json
|
||||
|
||||
%files asmtools7-plugin
|
||||
%config %{_sysconfdir}/%{name}/plugins/Jasm7DecompilerWrapper.java
|
||||
%config(noreplace) %{_sysconfdir}/%{name}/plugins/Jasm7DecompilerWrapper.json
|
||||
%config %{_sysconfdir}/%{name}/plugins/JasmG7DecompilerWrapper.java
|
||||
%config(noreplace) %{_sysconfdir}/%{name}/plugins/JasmG7DecompilerWrapper.json
|
||||
%config %{_sysconfdir}/%{name}/plugins/Jcoder7DecompilerWrapper.java
|
||||
%config(noreplace) %{_sysconfdir}/%{name}/plugins/Jcoder7DecompilerWrapper.json
|
||||
%config %{_sysconfdir}/%{name}/plugins/JcoderG7DecompilerWrapper.java
|
||||
%config(noreplace) %{_sysconfdir}/%{name}/plugins/JcoderG7DecompilerWrapper.json
|
||||
%license LICENSE
|
||||
|
||||
%dir %{_datadir}/applications
|
||||
%{_datadir}/applications/fedora-jrd.desktop
|
||||
|
||||
%files javadoc -f .mfiles-javadoc
|
||||
%license LICENSE
|
||||
|
||||
%changelog
|
||||
* Wed Mar 15 2023 Fedora Release Engineering <releng@fedoraproject.org> - 7.1-1
|
||||
- moved to jrd 7.1
|
||||
- todo: new launchers, new classpath (diff, cplc api...)
|
||||
- verify current wrappers
|
||||
- fixed procyon wrapper
|
||||
- removed jd wrapper (was new in 7.1)
|
||||
- todo verify current wrappers
|
||||
- added desp on java-diff and new cplc
|
||||
- fixed(?) procyon wrapper
|
||||
- todo procyon crashes witout trace
|
||||
- todo asmtools8 pacekd in old version
|
||||
- removed jd wrapper (was new in 7.1, maybe will be added)
|
||||
- split plugins to subpkgs
|
||||
- added jrd-hex launcher
|
||||
- added hex launcher, added jrd symlinks
|
||||
|
||||
* Thu Jul 21 2022 Fedora Release Engineering <releng@fedoraproject.org> - 6.1-5
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
|
||||
|
|
|
|||
9
jrd-hex.desktop
Normal file
9
jrd-hex.desktop
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
[Desktop Entry]
|
||||
Encoding=UTF-8
|
||||
Type=Application
|
||||
Categories=Development;Profiling;Java;
|
||||
Version=1.0
|
||||
Name=Java Runtime Decompiler Hex editor
|
||||
Exec=java-runtime-decompiler-hex
|
||||
Terminal=false
|
||||
Name[en_US]=jrd-hex.desktop
|
||||
|
|
@ -6,3 +6,4 @@ Version=1.0
|
|||
Name=Java Runtime Decompiler
|
||||
Exec=java-runtime-decompiler
|
||||
Terminal=false
|
||||
Name[en_US]=jrd.desktop
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue