ghidra-9.2.4, fix jd-gui gradle requirements

This commit is contained in:
Anton Bolshakov 2021-05-16 10:38:14 +08:00
parent 6f5cd0c984
commit f13b1efad7
No known key found for this signature in database
GPG key ID: 32BDCED870788F04
6 changed files with 77 additions and 103 deletions

View file

@ -1,7 +1,6 @@
DIST AXMLPrinter2.jar 24552 BLAKE2B 3ff09da948c2962919927ad35f8d38a13391c763a83962f8fdce90ec4720430b00be891f68fc149f62180ddf5f5e818af4e6b6a153d1a55e871f181e930d2b7b SHA512 c1168ec913f1fbb0675915d4fd865ec9a8e8573f6c8aedcb6e68166f61f11aeaececc7548d54d78134843c0102c57d6350973f6d3027d0ffdae52a5c57a7f601
DIST Ghidra_9.2.1_build.tar.gz 60822210 BLAKE2B f54a8a04c9687f9ee60b83a2830056e8e93d57a10df15471c57960c7e0415b093d413b1a3ec31aba40bf8ff19935b631fd5abfa2d020a861acc34ddec160852f SHA512 688fe7f26471e3c1035d60953dc5bb81ab1b7a33fb017823cbc4ea4e88bc237a74237da2a525e41d8f93dc11fa8257992a135dbab9429dc35f3012b7c0e48349
DIST Ghidra_9.2.2_build.tar.gz 60821397 BLAKE2B a0fefd5e62a8b57d78aca098af9b9f27009b79ce2f1b8d05144e8e9e4b311631489c400605baac0c6efe5aee0a7a28d252c7fcdc647511d3edf1a3c659f2d54c SHA512 351108ccc32c4ade711d51bfdf6c5617d982e45d267acf899794a6871a03af375bbeffcbd39462fcc053b63d59f6b4ede1172571a47b34a3cf07e50749b252c8
DIST Ghidra_9.2.3_build.tar.gz 60852382 BLAKE2B 76741b3916a182f27a0bc1400eeb907f91fb07fd5e896c44e6ade3ff79b326f85b3978b5724d687d1480ee0ceee22e94fba0d98f6b84a7ec664deb3948ed8031 SHA512 07491e03a503cdba62b1be6383adff55462c495a8feccfce2bad13e6ba77f857808e7ff1c7d4bd1db5c2d5534be2ab58feec0efb36abed4a5df6ee3af3e0df25
DIST Ghidra_9.2.4_build.tar.gz 60855253 BLAKE2B ffc53a18fe67f29b899699a3d0d6914cfae048b58a1f8989307d8c568f8f7615d40c140b4ac4de0e7823905a865b2b50cb6b6852ecefb4db41f9cb2bc89d24a5 SHA512 c87975cd84088c146972b54f64cd5023d8fe362274ead85b93519bf7e551b6982de4b98dfaf914127b2dad37cb8907a3289fba9fcfdc9bdeada4cde62ed15b9a
DIST PyDev-6.3.1.zip 24756333 BLAKE2B e9a942e0ff90b9eafbd1fa0df5429f2ff227ed140b7352a1003be04ffbc043e17bf19bd622d7fe9b958286a75ff4897c03088c1627ee62ea7b6e832752cb427e SHA512 411ed78d1057f5e9780e44169935fb8a0da17e97ce26e9a7a9fa9a251d4d3c1118e9b47dd9f7af03bde1f47180bde0d456039b65687f600026a148055311ecfa
DIST cdt-8.6.0.zip 76639241 BLAKE2B 32c724b1f6ff43132f09c544bac8b35ed3f4f5866c844810abba3a52f82a3585ae7a57430fcf5603afecbeec1f46461a831339e442ca628b77f78c319bd9fc26 SHA512 2b8bb498146aa29995e807c5b4e9d5dab0f6afe89a5ce256978b7b2c478677a0cb5a0f15913a32bd99cb7b4bb31230521f70b9c26cdef1cb983dfcea599737c0
DIST dex-tools-2.0.zip 2362460 BLAKE2B 464f2a143f1c8720eddd4d1c7db5a6f681db1091518d915b0d7807c12d021c8a734d8980bccfd417bc60297647b33ed0b7cc1e004716804bb9e25ee99f29f8ad SHA512 c4a6c72ea09b58a44fcb8918cfada600467f10f99a02b53d2436ac68295e73c8daf9ba0a8bc7160ba1e28e87f032ee034435ebe40af35b6e2fe9fa4607581358

View file

@ -1,99 +0,0 @@
# Copyright 1999-2021 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=7
inherit java-pkg-2
GRADLE_DEP_VER="20201224"
DESCRIPTION="A software reverse engineering framework"
HOMEPAGE="https://ghidra-sre.org/"
SRC_URI="https://github.com/NationalSecurityAgency/${PN}/archive/Ghidra_${PV}_build.tar.gz
https://github.com/pxb1988/dex2jar/releases/download/2.0/dex-tools-2.0.zip
https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/android4me/AXMLPrinter2.jar
https://sourceforge.net/projects/catacombae/files/HFSExplorer/0.21/hfsexplorer-0_21-bin.zip
mirror://sourceforge/yajsw/yajsw/yajsw-stable-12.12.zip
https://www.eclipse.org/downloads/download.php?r=1&protocol=https&file=/tools/cdt/releases/8.6/cdt-8.6.0.zip
mirror://sourceforge/project/pydev/pydev/PyDev%206.3.1/PyDev%206.3.1.zip -> PyDev-6.3.1.zip
https://dev.pentoo.ch/~blshkv/distfiles/${PN}-dependencies-${GRADLE_DEP_VER}.tar.gz"
# run: pentoo/scripts/gradle_dependencies.py with :generateAllExternalLibsFile from "${S}" directory to generate dependencies
LICENSE="Apache-2.0"
SLOT="0"
KEYWORDS="~amd64"
IUSE=""
#java-pkg-2 sets java based on RDEPEND so the java slot in rdepend is used to build
RDEPEND="virtual/jre:11"
DEPEND="${RDEPEND}
virtual/jdk:11
dev-java/gradle-bin:5.2.1
sys-devel/bison
dev-java/jflex
app-arch/unzip"
S="${WORKDIR}/ghidra-Ghidra_${PV}_build"
src_unpack() {
# https://github.com/NationalSecurityAgency/ghidra/blob/master/DevGuide.md
unpack ${A}
mkdir -p "${S}/.gradle/flatRepo" || die "(1) mkdir failed"
cd "${S}/.gradle"
unpack dex-tools-2.0.zip
cp dex2jar-2.0/lib/dex-*.jar ./flatRepo || die "(3) cp failed"
cp "${DISTDIR}/AXMLPrinter2.jar" ./flatRepo || die "(4) cp failed"
unpack hfsexplorer-0_21-bin.zip
cp lib/*.jar ./flatRepo || die "(5) cp failed"
mkdir -p "${WORKDIR}"/ghidra.bin/Ghidra/Features/GhidraServer/ || die "(6) mkdir failed"
cp "${DISTDIR}"/yajsw-stable-12.12.zip "${WORKDIR}"/ghidra.bin/Ghidra/Features/GhidraServer/ || die "(7) cp failed"
mkdir -p "${WORKDIR}"/ghidra.bin/GhidraBuild/EclipsePlugins/GhidraDev/buildDependencies/ || die "(8) mkdir failed"
cp "${DISTDIR}"/PyDev-6.3.1.zip "${WORKDIR}/ghidra.bin/GhidraBuild/EclipsePlugins/GhidraDev/buildDependencies/PyDev 6.3.1.zip" || die "(9) cp failed"
cp "${DISTDIR}"/cdt-8.6.0.zip "${WORKDIR}"/ghidra.bin/GhidraBuild/EclipsePlugins/GhidraDev/buildDependencies/ || die "(10) cp failed"
cd "${S}"
mv ../dependencies .
}
src_prepare() {
mkdir -p ".gradle/init.d" || die "(10) mkdir failed"
cp "${FILESDIR}"/repos.gradle .gradle/init.d || die "(11) cp failed"
sed -i "s|S_DIR|${S}|g" .gradle/init.d/repos.gradle || die "(12) sed failed"
#remove build date so we can unpack dist.zip later
sed -i "s|_\${rootProject.BUILD_DATE_SHORT}||g" gradle/root/distribution.gradle || die "(13) sed failed"
#9.1 workaround
ln -s ./.gradle/flatRepo ./flatRepo
eapply_user
}
src_compile() {
export _JAVA_OPTIONS="$_JAVA_OPTIONS -Duser.home=$HOME"
GRADLE="gradle-5.2.1 --gradle-user-home .gradle --console rich --no-daemon"
GRADLE="${GRADLE} --offline"
unset TERM
${GRADLE} prepDev -x check -x test || die
${GRADLE} buildGhidra -x check -x test --parallel || die
#build without eclipse plugin
# ${GRADLE} yajswDevUnpack -x check -x test || die
# ${GRADLE} buildNatives_linux64 -x check -x test || die
# ${GRADLE} sleighCompile -x check -x test || die
}
src_install() {
#it is easier to unpack existing archive
dodir /usr/share
unzip build/dist/ghidra_"${PV}"_DEV_linux64.zip -d "${ED}"/usr/share/ || die "unable to unpack dist zip"
mv "${ED}"/usr/share/ghidra_"${PV}"_DEV "${ED}"/usr/share/ghidra || die "mv failed"
#fixme: add doc flag
rm -r "${ED}"/usr/share/ghidra/docs/ || die "rm failed"
dosym "${EPREFIX}"/usr/share/ghidra/ghidraRun /usr/bin/ghidra
}

View file

@ -27,7 +27,7 @@ IUSE=""
RDEPEND="virtual/jre:11"
DEPEND="${RDEPEND}
virtual/jdk:11
dev-java/gradle-bin:5.2.1
dev-java/gradle-bin:6.3
sys-devel/bison
dev-java/jflex
app-arch/unzip"
@ -75,7 +75,7 @@ src_prepare() {
src_compile() {
export _JAVA_OPTIONS="$_JAVA_OPTIONS -Duser.home=$HOME"
GRADLE="gradle-5.2.1 --gradle-user-home .gradle --console rich --no-daemon"
GRADLE="gradle-6.3 --gradle-user-home .gradle --console rich --no-daemon"
GRADLE="${GRADLE} --offline"
unset TERM

View file

@ -1,2 +1,3 @@
DIST jd-gui-1.6.6.tar.gz 365813 BLAKE2B 8615221af81682a8f6f8143ef6b639842964a402fa6a703379d02aef993960891ed2fc1e49b7ac71ae9f556068c48a8cf75e67cf40ba82853239bd80a7b0720f SHA512 325491638a66ccffa51dd989a1f09711c47da8e356d05141d35368b3a9acdb8e6dfdc2a5f422c91c4c6d5f50d214901c64d8c23e625dfd9278b0555ce1aa9214
DIST jd-gui-dependencies-20191226.tar.gz 13715625 BLAKE2B fe557f8a487bbccdec3e70c4247c18fec7c4b55de20317813b503b7dd7db832f8a2af229716ac393cad95b513a0f2c5277e06aee31bc1930b7daad927bd17c01 SHA512 0f8af0e2001fb2f38ac2b5b241e9ff125594132f4849c601b8355b6be7636ee66496d14b67853e0719d4de0c0ca3e55ac5a6cc26c1175f9462636aa8f1dfc50f
DIST jd-gui-dependencies-20210516.tar.gz 27856232 BLAKE2B df4323e5d1d67b6071091814982c24893a92f3b000c428682548bec23d906e41a37945f21f575b31ff58b0903ed491ccde01f852bf9d1484a6021f8dbb4b5179 SHA512 67c5e117175232c5ecaafa9e732f281d910e473c2dc7364d35315c42fbeb0cc0e7900b9c4a19dc4dfae3233f9f337a3aa8407ffd96f0b46cfb509abd6bd7f084

View file

@ -0,0 +1,11 @@
--- build.gradle.orig 2021-05-16 10:06:26.634022412 +0800
+++ build.gradle 2021-05-16 10:13:31.084030796 +0800
@@ -9,7 +9,7 @@
}
}
dependencies {
- classpath 'com.netflix.nebula:gradle-ospackage-plugin:5.3.0' // RPM & DEB support
+ classpath 'com.netflix.nebula:gradle-ospackage-plugin:8.5.6' // RPM & DEB support
classpath 'edu.sc.seis.gradle:launch4j:2.4.4'
classpath 'net.sf.proguard:proguard-gradle:6.1.0'
}

View file

@ -0,0 +1,62 @@
# Copyright 1999-2021 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=7
inherit desktop java-pkg-2
DESCRIPTION="A standalone Java Decompiler GUI"
HOMEPAGE="http://jd.benow.ca/"
SRC_URI="https://github.com/java-decompiler/jd-gui/archive/v${PV}.tar.gz -> ${P}.tar.gz
https://dev.pentoo.ch/~blshkv/distfiles/${PN}-dependencies-20210516.tar.gz"
# run: pentoo/scripts/gradle_dependencies.py from "${S}" directory to generate dependencies
# tar cvzf ./${P}-dependencies.tar.gz ./dependencies/
#FIXME: gradle convert to publishToMavenLocal and mavenLocal()
LICENSE="GPL-3"
SLOT="0"
KEYWORDS="~amd64 ~x86"
IUSE=""
#java-pkg-2 sets java based on RDEPEND so the java slot in rdepend is used to build
RDEPEND="virtual/jre:11
!dev-util/jd-gui-bin"
DEPEND="${RDEPEND}
virtual/jdk:11
dev-java/gradle-bin:6.3"
src_prepare() {
eapply "${FILESDIR}"/1.5.2-build.patch
#https://github.com/java-decompiler/jd-gui/issues/361
eapply -p0 "${FILESDIR}"/build-gradle.patch
mkdir -p ".gradle/init.d"
cp "${FILESDIR}"/1.5.2-repos.gradle .gradle/init.d/repos.gradle || die "cp failed"
sed -i "s|WORK_DIR|${WORKDIR}|g" .gradle/init.d/repos.gradle || die "sed failed"
sed -i "s|WORK_DIR|${WORKDIR}|g" build.gradle || die "sed failed"
eapply_user
}
src_compile() {
GRADLE="gradle-6.3 --gradle-user-home .gradle --console rich --no-daemon"
GRADLE="${GRADLE} --offline"
unset TERM
${GRADLE} jar -x check -x test || die
}
src_install() {
insinto /usr/share/"${PN}"
doins "build/libs/${P}.jar"
doicon ./src/linux/resources/jd_icon_128.png
domenu ./src/linux/resources/jd-gui.desktop
newbin - ${PN} <<-EOF
#!/bin/sh
export _JAVA_OPTIONS='-Dawt.useSystemAAFontSettings=on'
java -jar /usr/share/${PN}/${P}.jar >/dev/null 2>&1 &
EOF
}