aports/testing/ghidra/APKBUILD
2024-10-31 13:31:58 +00:00

102 lines
3 KiB
Text

# Maintainer: Marian Buschsieweke <marian.buschsieweke@posteo.net>
# Contributor: Marian Buschsieweke <marian.buschsieweke@posteo.net>
pkgname=ghidra
pkgver=11.2
pkgrel=0
pkgdesc="A Cross Platform and Open Source Electronics Design Automation Suite"
url="https://ghidra-sre.org/"
# only x86_64 and aarch64 support provided by upstream
# aarch64: jdk segfaults
arch="x86_64"
license="Apache-2.0"
makedepends="
bash
gradle
protoc
python3
py3-pip
unzip
"
# Note: Ghidra refuses to launch with only JRE installed, so
# please do not move JDK to makedepends
depends="
openjdk21-jdk
wmname
"
subpackages="
$pkgname-tutorials
$pkgname-doc
"
source="
https://github.com/NationalSecurityAgency/ghidra/archive/refs/tags/Ghidra_${pkgver}_build.tar.gz
use-system-protoc.patch
ghidra.sh
ghidra.desktop
"
options="net !check"
builddir="$srcdir/ghidra-Ghidra_${pkgver}_build"
patch_args="-p1 --no-backup-if-mismatch"
build() {
export GRADLE_USER_HOME="$srcdir"/.gradle
gradle --parallel -I gradle/support/fetchDependencies.gradle
gradle --parallel buildGhidra
}
package() {
# impedance matching between different arch naming conventions:
local arch
case "$CARCH" in
aarch64)
arch="arm_64"
;;
*)
arch="$CARCH"
;;
esac
install -d "$pkgdir"/usr/share "$pkgdir"/usr/bin
unzip \
-u "build/dist/ghidra_${pkgver}_DEV_$(date +"%Y%m%d")_linux_$arch.zip" \
-d "$pkgdir"/usr/share
mv "$pkgdir"/usr/share/ghidra_${pkgver}_DEV "$pkgdir"/usr/share/ghidra
# remove precompiled 7zip native libs for x86_64 Mac, Windows, and glibc
# Linux. Ghidra is falling back to using a java implementation on musl
# anyway.
rm -rf "$pkgdir"/usr/share/ghidra/Ghidra/Features/FileFormats/data/sevenzipnativelibs
install -Dm755 "$srcdir"/ghidra.sh "$pkgdir"/usr/bin/ghidra
ln -s /usr/share/ghidra/support/analyzeHeadless "$pkgdir"/usr/bin/ghidra-headless
install -Dm644 \
Ghidra/Framework/Gui/src/main/resources/images/GhidraIcon64.png \
"$pkgdir"/usr/share/icons/hicolor/64x64/apps/$pkgname.png
install -Dm 644 $srcdir/ghidra.desktop -t $pkgdir/usr/share/applications
}
tutorials() {
pkgdesc="Ghidra tutorial files"
# dependency dump:
# openjdk17-jdk
# wmname
# so:libgcc_s.so.1
# so:libstdc++.so.6
# the tutorials subpackage contains exmaples linked against glibc
# which are ment to be decompiled by ghidra
options="!strip !tracedeps"
amove usr/share/ghidra/docs/GhidraClass
}
doc() {
default_doc
amove usr/share/ghidra/docs
}
sha512sums="
f351dde015c065bb7d8bf5268c4d202f86523ad6135ad6a0e8a44526d0e9686ad5e547b843d23e44193d65312506b04ba4e9e4496593bbbb841565da9f5382c2 Ghidra_11.2_build.tar.gz
715b7ba8025bf4bf65d668dfcb7234524d7b1032007442406804fa311c4b8de33e6f4a92920d9e2e099b7949d45856764129dfe3c3d7a5e4126c03b37ef27758 use-system-protoc.patch
b075d5ac821bf4ed052acada45b882876a5493ab03cfa4d0537c4c5f27b666aa2b37de9ff561313b025f9d16b06b9ad17d59287ecf205c02798dbca2bc04925f ghidra.sh
a85b8b3276e2ff4ed8bda6470c15d02711ebaa48463c775cd2a36549fad738e9fe073dab80f8c57646490ffc959cdc27e9d25b1dc2a5810b0ddb249b5dc99a9b ghidra.desktop
"