ghidra-11.0.1.ebuild

This commit is contained in:
Anton Bolshakov 2024-01-31 11:53:03 +08:00
parent 3b76a29606
commit eed9cc35f4
No known key found for this signature in database
GPG key ID: 32BDCED870788F04
4 changed files with 167 additions and 26 deletions

View file

@ -1,5 +1,6 @@
DIST AXMLPrinter2.jar 24552 BLAKE2B 3ff09da948c2962919927ad35f8d38a13391c763a83962f8fdce90ec4720430b00be891f68fc149f62180ddf5f5e818af4e6b6a153d1a55e871f181e930d2b7b SHA512 c1168ec913f1fbb0675915d4fd865ec9a8e8573f6c8aedcb6e68166f61f11aeaececc7548d54d78134843c0102c57d6350973f6d3027d0ffdae52a5c57a7f601
DIST Ghidra_10.4_build.tar.gz 66823563 BLAKE2B 233b58e631a6cbb8e74af3d7fec484453b4310cabc156342272bbce190bd87693476386178a4e41ced29d5d4f0e471e8f6bf2bf46504b9f7039e5bbb0cb788d3 SHA512 e7327b652ddb9dcb9025ef6db46d60e853bcc155cb493cf5dfd941a2c468e55a1be7d8aa5c4b2199a39e09653e69eba0a80347596f32de0440edf75cbea17cbc
DIST Ghidra_11.0.1_build.tar.gz 68982290 BLAKE2B 17ea6319e3c90a65e4278688b0ba82b2a572e05b5d1b0ba748344053a6e35b865bf2b96ddda2dcef28e5a67fdb07e4bd370c564490c031e43ec242380850503f SHA512 14a555c8bc6b66c02a92192f20abda1c8c82119894529bd7d14d40ae0bf22449d3a608102f641d282528ee070d069395092e02a3029468cfdcea7a9b6dbd5223
DIST Ghidra_11.0_build.tar.gz 68972324 BLAKE2B 9f15127997ddaf2f5de9fbef195b23b5db7916f278289aa21934635d0955910bf75f1b130954c641941089d005fbceb175ef40e1013a60684cc3e173e83c6a76 SHA512 9c6ad91a71ea49ce90bff422f45d2ad076898d618614b7aded6dfabf8660ccf05fc6579e4f41d50e49ea6c1dc88c03260ff63210d411e405f88aa78bb2cce29b
DIST PyDev-6.3.1.zip 24756333 BLAKE2B e9a942e0ff90b9eafbd1fa0df5429f2ff227ed140b7352a1003be04ffbc043e17bf19bd622d7fe9b958286a75ff4897c03088c1627ee62ea7b6e832752cb427e SHA512 411ed78d1057f5e9780e44169935fb8a0da17e97ce26e9a7a9fa9a251d4d3c1118e9b47dd9f7af03bde1f47180bde0d456039b65687f600026a148055311ecfa
DIST cdt-8.6.0.zip 76639241 BLAKE2B 32c724b1f6ff43132f09c544bac8b35ed3f4f5866c844810abba3a52f82a3585ae7a57430fcf5603afecbeec1f46461a831339e442ca628b77f78c319bd9fc26 SHA512 2b8bb498146aa29995e807c5b4e9d5dab0f6afe89a5ce256978b7b2c478677a0cb5a0f15913a32bd99cb7b4bb31230521f70b9c26cdef1cb983dfcea599737c0
@ -9,14 +10,5 @@ DIST ghidra-dependencies-20231223.tar.gz 97496437 BLAKE2B dbe1480bbc72872f930f15
DIST hfsexplorer-0_21-bin.zip 1473278 BLAKE2B e9d2a3fae4da8046a17ce5e6828b4d1ff27da6384aac4be3864fe2c16f83bb95cb728eaeec9a42c3e1febaef98ba9357bfc3744b4950deb4b783d36e723d6cc0 SHA512 b85b4316115695acc78cc7c675c673058c05a238451562be0c6a48b2d11a28e5645a42cb62cdf063be015369df26201dfab6cf2e60f39e6468d1d53b23f94415
DIST java-sarif-2.1-modified.jar 227352 BLAKE2B d768865f09f2aa4ec6b965347df13d7e1bcda38e2401cdcdad7eaabd68dba901e29525c1632b8d4ea3529ed894193abe09a38293f21d3155bba4c55b7c90ed8e SHA512 04d1f895f87a8f0a653ee5c2b18ed0b6d158f1b7de4e16de2e50ed5a3087b1e83ca01f6c4c8c53d1788942e29d2f41528c910f224c41e27098cb5c2838a8ddf3
DIST postgresql-15.3.tar.gz 29946539 BLAKE2B 9a58bab8ddcda552ebd2f6915f37161724c1ccd5e47670f80bce0818a826b7a7a06901d7e5c006ec3f5236af973c670a5352958e7aa33ee5d36e17acecf1cd40 SHA512 d659b96320fe884a3885bbf50d49a7def2b037e735fe2ee07fd1ccd81dd1a277f380756cb15535aba058bbddb64e22896ed3350b9c5a2757b2bf3b23583273f8
DIST vs2012_x64.fidb 7056034 BLAKE2B 36be5c0b185c21d22dbde7d10eb83e2480eeaca049f0f4850f4b5ac2fd70ff722e5d838e2e7127c4422629e4e12756bae03811c0b05b5694748f9c3355bd015a SHA512 44a7c9edabc93e4f64eb301b98554de0e62314cbec3c8f6ee4fb7c432dcc1288dccdd79a47fd35c846426d7cd3dbdbfcbacf8832d148340b80cfd7f03239a92a
DIST vs2012_x86.fidb 7720975 BLAKE2B cdb488e12658f3ad8d38f5223deee590d0e667afd4c6f188578b6b77182ef0b8a35dbb7f7eb94a4e2c18756e117cf378589d0c9dacae05329b0ee97c4a96bc4c SHA512 7d4e5bfbbc481db067acb44e1f41bfdb0d3cc566b80916d6d73e9c374d394a577a62df1cb86e97e1ea0612f363339534013069b57d614530ff60bf093b85d4e2
DIST vs2015_x64.fidb 7837258 BLAKE2B deffa9a148ddde4e189de859f8cd514c4058789902d51d5aa509419e593a040c9853f868e3eaa50ac961cdf96cafb51beb781b6647f07da9a2629a22d51e59dc SHA512 d4fa8e7d458c1a46ab57e8526f36a54222e2299533c10a20f489ec3916a4ea359118bbadd0a18163c54f402a3e3ea668648ab481b1bd842b30ef7501fd1bdf2c
DIST vs2015_x86.fidb 8559253 BLAKE2B 4b9316d86ec2fee6698e20ca1855a6a7d2e6ba0b50d6f81ee19707d43e08f25d7e7f50f8dedce3e2c5f9aa0d209ba0eaaefdf20a84f7e432c028e6cb87bf6b81 SHA512 d441a8467291e6afecef782669e8951e138aeba641329c10cf6b23437b41dcddc6cde9b14db921233847ec6d202e8a1c6b4b4aa4a2378ed3fae58d7a05110e7c
DIST vs2017_x64.fidb 3849100 BLAKE2B 29ddadde0851cbeabaebdc5465acdc52f6477f0717d1b6077937d0237af8d324721ac2b10443260018e7c22e1ec9f34d96a184a621f06c9222a840277aa5e991 SHA512 f040ec2335a9744783120d62815677bd31c85375506aef4301ba2c2c83940d5bab60a147226a94b7939daffab8431f7ba80f2fd03721a3417de338f9b03a46a1
DIST vs2017_x86.fidb 4365978 BLAKE2B 79ca14b33a006bc7e9977fdd06f03cade2ba1ceca8127c5cbba2b3911d3b5e5e69663b8e0c6ab5e71d9b72ce4974e7dfe5d5bcff3c91825b7b960fe26d556efe SHA512 13c52cfb2a842d3cd4a3aeeb16e172b5f4c2d9297cf9c4aec5560e1f0584b15982988100b8d7a707604958d29ba732ae47d9b536a07bb0c32f5704bb98d9989c
DIST vs2019_x64.fidb 5661013 BLAKE2B b0f741b704c9cda31a713b4e914cff26578d6c9c37fd359a6a8a4aef3ce66d93e62530d91adde2b50470ab8e03db89deed588d811a348589fbce52bbd3939e31 SHA512 fd2b96da4b21633752146fce4db5d57b6a27ad82d99ae660e2ac67393fe2f986645c10d6d44bd49ada21f797bbc05e40143c887ccf92933a6b69efd6e69288a8
DIST vs2019_x86.fidb 6207537 BLAKE2B f8c079c86b46aca19e62948f80463828117400798959bab33897dd4f4bd09ca35e8477d5390c35ec9859b03bc504cd7d884e011ca036d37fd3b71fb9049a8022 SHA512 8854d17447406e46405beef3594b7636f3bf4ac937f36eecedbe68d8b413299de44ef22ab5a5fb2d066c018d8c8d7e3a1f5bb2c2066a3173f21893ce54bc8c03
DIST vsOlder_x64.fidb 11155547 BLAKE2B 85854961194ea57bba7f8ed88206074c9d752dd0277377358e38cfa6d2973b73431d73f76564a379d740f74da4c7cca1aa5e48f58c428f97d253192a44dcad22 SHA512 f1f0e47fed785ada2384146b5738e25987c6131141b1b4b10815bf85575d839f116ecfe2866228d0cf8b12fd594ff24a75d802edc5649bc42bf4646960f45c39
DIST vsOlder_x86.fidb 17099444 BLAKE2B 2e2e65e2f3e32330453ddbb588ad19989c7212903b059194fc0bd4e4b62c5ec48b5e861c8057d82987a6e298b76ec63d5d266ecf5cef81c9c239b9ab0dfe4d68 SHA512 85f0d334b66a97252391aebf8f2497725a92b93b8c789a0b8cec1b41cd7f649703f8fa3a799c472607e5a0551c31594cfe2936ea6259c3e41eee1e64b8c32297
DIST yajsw-stable-13.09.zip 28128407 BLAKE2B 3be1e28c9399a40f7bb6644c3b6e6bb2653d0192c0c65529fdcb5d0feaca99e49485503a8c06e2e7196bd80445cb98359aefbb87d6af19dbde43c3e290360f96 SHA512 d8682b57ce7577374a17113e1ace77393397e405e6450e3f7637ed1f0f42bc7170b378f775a4ba3c458b202ef35f95b35317cce45659b8a3b25aaa59e8393aa4

View file

@ -1,7 +1,7 @@
# Copyright 1999-2023 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=7
EAPI=8
inherit java-pkg-2 desktop
GRADLE_DEP_VER="20230512"
@ -26,7 +26,6 @@ SRC_URI="https://github.com/NationalSecurityAgency/${PN}/archive/Ghidra_${PV}_bu
LICENSE="Apache-2.0"
SLOT="0"
KEYWORDS="amd64"
IUSE=""
#FIXME:
# * QA Notice: Files built without respecting CFLAGS have been detected
@ -131,7 +130,7 @@ src_install() {
#fixme: add doc flag
rm -r "${ED}"/usr/share/ghidra/docs/ || die "rm failed"
dosym "${EPREFIX}"/usr/share/ghidra/ghidraRun /usr/bin/ghidra
dosym -r /usr/share/ghidra/ghidraRun /usr/bin/ghidra
# icon
doicon GhidraDocs/GhidraClass/Beginner/Images/GhidraLogo64.png

View file

@ -0,0 +1,155 @@
# Copyright 1999-2024 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
inherit java-pkg-2 desktop
GRADLE_DEP_VER="20231223"
RELEASE_VERSION=${PV}
DESCRIPTION="A software reverse engineering framework"
HOMEPAGE="https://ghidra-sre.org/"
FIDB_FILES="vs2012_x64.fidb vs2015_x64.fidb vs2017_x64.fidb vs2019_x64.fidb vsOlder_x64.fidb \
vs2012_x86.fidb vs2015_x86.fidb vs2017_x86.fidb vs2019_x86.fidb vsOlder_x86.fidb"
# ./gradle/support/fetchDependencies.gradle
SRC_URI="https://github.com/NationalSecurityAgency/${PN}/archive/Ghidra_${PV}_build.tar.gz
https://dev.pentoo.ch/~blshkv/distfiles/${PN}-dependencies-${GRADLE_DEP_VER}.tar.gz
https://github.com/pxb1988/dex2jar/releases/download/v2.1/dex2jar-2.1.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-13.09.zip
https://ftp.postgresql.org/pub/source/v15.3/postgresql-15.3.tar.gz
https://archive.eclipse.org/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://github.com/NationalSecurityAgency/ghidra-data/raw/Ghidra_${RELEASE_VERSION}/lib/java-sarif-2.1-modified.jar
"
for FIDB in ${FIDB_FILES}; do
SRC_URI+="https://github.com/NationalSecurityAgency/ghidra-data/raw/Ghidra_${RELEASE_VERSION}/${FIDB}"
done
# run: "pentoo/scripts/gradle_dependencies.py buildGhidra" from "${S}" directory to generate dependencies
# https://www.eclipse.org/downloads/download.php?r=1&protocol=https&file=/tools/cdt/releases/8.6/cdt-8.6.0.zip
# https://sourceforge.net/projects/yajsw/files/yajsw/yajsw-stable-13.05/yajsw-stable-13.05.zip/download
LICENSE="Apache-2.0"
SLOT="0"
KEYWORDS="amd64"
#FIXME:
# * QA Notice: Files built without respecting CFLAGS have been detected
# * QA Notice: Files built without respecting LDFLAGS have been detected
# * Please include the following list of files in your report:
# * /usr/share/ghidra/GPL/DemanglerGnu/os/linux_x86_64/demangler_gnu_v2_24
# * /usr/share/ghidra/GPL/DemanglerGnu/os/linux_x86_64/demangler_gnu_v2_33_1
# * /usr/share/ghidra/Ghidra/Features/Decompiler/os/linux_x86_64/decompile
# * /usr/share/ghidra/Ghidra/Features/Decompiler/os/linux_x86_64/sleigh
# * /usr/share/ghidra/Ghidra/Features/FileFormats/data/sevenzipnativelibs/Linux-amd64/lib7-Zip-JBinding.so
#java-pkg-2 sets java based on RDEPEND so the java slot in rdepend is used to build
RDEPEND="virtual/jre:17"
DEPEND="${RDEPEND}
virtual/jdk:17
sys-devel/bison
dev-java/jflex
app-arch/unzip"
BDEPEND=">=dev-java/gradle-bin-7.3:*"
S="${WORKDIR}/ghidra-Ghidra_${PV}_build"
check_gradle_binary() {
gradle_link_target=$(readlink -n /usr/bin/gradle)
currentver="${gradle_link_target/gradle-bin-/}"
requiredver="7.3"
einfo "Gradle version ${currentver} currently set."
if [ "$(printf '%s\n' "$requiredver" "$currentver" | sort -V | head -n1)" = "$requiredver" ]; then
einfo "Gradle version ${currentver} is >= ${requiredver}, proceeding with build..."
else
eerror "Gradle version ${requiredver} or higher must be eselected before building ${PN}."
die "Please run 'eselect gradle set gradle-bin-XX' when XX is a version of gradle higher than ${requiredver}"
fi
}
src_unpack() {
# https://github.com/NationalSecurityAgency/ghidra/blob/master/DevGuide.md
# alternative:
# gradle -I gradle/support/fetchDependencies.gradle init
# gradle -g dependencies/gradle prepdev
# build: gradle -g dependencies/gradle buildGhidra
unpack ${A}
mkdir -p "${S}/.gradle/flatRepo" || die "(1) mkdir failed"
cd "${S}/.gradle"
unpack dex2jar-2.1.zip
cp dex-tools-2.1/lib/dex-*.jar ./flatRepo || die "(2) cp failed"
cp "${DISTDIR}/AXMLPrinter2.jar" ./flatRepo || die "(3) cp failed"
cp "${DISTDIR}/java-sarif-2.1-modified.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-13.09.zip "${WORKDIR}"/ghidra.bin/Ghidra/Features/GhidraServer/ || die "(7) cp failed"
PLUGIN_DEP_PATH="ghidra.bin/GhidraBuild/EclipsePlugins/GhidraDev/buildDependencies"
mkdir -p "${WORKDIR}/${PLUGIN_DEP_PATH}/" || die "(8) mkdir failed"
cp "${DISTDIR}"/PyDev-6.3.1.zip "${WORKDIR}/${PLUGIN_DEP_PATH}/PyDev 6.3.1.zip" || die "(9) cp failed"
cp "${DISTDIR}"/cdt-8.6.0.zip "${WORKDIR}/${PLUGIN_DEP_PATH}/" || die "(10) cp failed"
cp "${DISTDIR}"/postgresql-15.3.tar.gz "${WORKDIR}/${PLUGIN_DEP_PATH}/" || die "(10) cp failed"
cd "${S}"
mv ../dependencies .
mkdir ./dependencies/fidb || die "failed to create fidb dir"
cp "${DISTDIR}/${FIDB_FILES}" ./dependencies/fidb/
}
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"
#10.0 workaround
ln -s ../.gradle/flatRepo ./dependencies/flatRepo
eapply_user
}
src_compile() {
check_gradle_binary
export _JAVA_OPTIONS="$_JAVA_OPTIONS -Duser.home=$HOME -Djava.io.tmpdir=${T}"
GRADLE="gradle --gradle-user-home .gradle --console rich --no-daemon"
GRADLE="${GRADLE} --offline --parallel --max-workers $(nproc)"
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() {
#FIXME: it is easier to unpack existing archive for now
dodir /usr/share
unzip build/dist/ghidra_"${PV}"_DEV_linux_x86_64.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"
# remove zip files which aren't needed at runtime
find "${ED}"/usr/share/ghidra -type f -name '*.zip' -exec rm -f {} +
#fixme: add doc flag
rm -r "${ED}"/usr/share/ghidra/docs/ || die "rm failed"
dosym -r /usr/share/ghidra/ghidraRun /usr/bin/ghidra
# icon
doicon GhidraDocs/GhidraClass/Beginner/Images/GhidraLogo64.png
# desktop entry
make_desktop_entry ${PN} "Ghidra" /usr/share/pixmaps/GhidraLogo64.png "Utility"
}

View file

@ -10,6 +10,9 @@ RELEASE_VERSION=${PV}
DESCRIPTION="A software reverse engineering framework"
HOMEPAGE="https://ghidra-sre.org/"
FIDB_FILES="vs2012_x64.fidb vs2015_x64.fidb vs2017_x64.fidb vs2019_x64.fidb vsOlder_x64.fidb \
vs2012_x86.fidb vs2015_x86.fidb vs2017_x86.fidb vs2019_x86.fidb vsOlder_x86.fidb"
# ./gradle/support/fetchDependencies.gradle
SRC_URI="https://github.com/NationalSecurityAgency/${PN}/archive/Ghidra_${PV}_build.tar.gz
https://dev.pentoo.ch/~blshkv/distfiles/${PN}-dependencies-${GRADLE_DEP_VER}.tar.gz
@ -21,18 +24,11 @@ SRC_URI="https://github.com/NationalSecurityAgency/${PN}/archive/Ghidra_${PV}_bu
https://archive.eclipse.org/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://github.com/NationalSecurityAgency/ghidra-data/raw/Ghidra_${RELEASE_VERSION}/lib/java-sarif-2.1-modified.jar
https://github.com/NationalSecurityAgency/ghidra-data/raw/Ghidra_${RELEASE_VERSION}/FunctionID/vs2012_x64.fidb
https://github.com/NationalSecurityAgency/ghidra-data/raw/Ghidra_${RELEASE_VERSION}/FunctionID/vs2012_x86.fidb
https://github.com/NationalSecurityAgency/ghidra-data/raw/Ghidra_${RELEASE_VERSION}/FunctionID/vs2015_x64.fidb
https://github.com/NationalSecurityAgency/ghidra-data/raw/Ghidra_${RELEASE_VERSION}/FunctionID/vs2015_x86.fidb
https://github.com/NationalSecurityAgency/ghidra-data/raw/Ghidra_${RELEASE_VERSION}/FunctionID/vs2017_x64.fidb
https://github.com/NationalSecurityAgency/ghidra-data/raw/Ghidra_${RELEASE_VERSION}/FunctionID/vs2017_x86.fidb
https://github.com/NationalSecurityAgency/ghidra-data/raw/Ghidra_${RELEASE_VERSION}/FunctionID/vs2019_x64.fidb
https://github.com/NationalSecurityAgency/ghidra-data/raw/Ghidra_${RELEASE_VERSION}/FunctionID/vs2019_x86.fidb
https://github.com/NationalSecurityAgency/ghidra-data/raw/Ghidra_${RELEASE_VERSION}/FunctionID/vsOlder_x64.fidb
https://github.com/NationalSecurityAgency/ghidra-data/raw/Ghidra_${RELEASE_VERSION}/FunctionID/vsOlder_x86.fidb
"
for FIDB in ${FIDB_FILES}; do
SRC_URI+="https://github.com/NationalSecurityAgency/ghidra-data/raw/Ghidra_${RELEASE_VERSION}/${FIDB}"
done
# run: "pentoo/scripts/gradle_dependencies.py buildGhidra" from "${S}" directory to generate dependencies
# https://www.eclipse.org/downloads/download.php?r=1&protocol=https&file=/tools/cdt/releases/8.6/cdt-8.6.0.zip
@ -41,7 +37,6 @@ SRC_URI="https://github.com/NationalSecurityAgency/${PN}/archive/Ghidra_${PV}_bu
LICENSE="Apache-2.0"
SLOT="0"
KEYWORDS="amd64"
IUSE=""
#FIXME:
# * QA Notice: Files built without respecting CFLAGS have been detected
@ -109,7 +104,7 @@ src_unpack() {
mv ../dependencies .
mkdir ./dependencies/fidb || die "failed to create fidb dir"
cp "${DISTDIR}"/*.fidb ./dependencies/fidb/
cp "${DISTDIR}/${FIDB_FILES}" ./dependencies/fidb/
}
src_prepare() {
@ -151,7 +146,7 @@ src_install() {
#fixme: add doc flag
rm -r "${ED}"/usr/share/ghidra/docs/ || die "rm failed"
dosym "${EPREFIX}"/usr/share/ghidra/ghidraRun /usr/bin/ghidra
dosym -r /usr/share/ghidra/ghidraRun /usr/bin/ghidra
# icon
doicon GhidraDocs/GhidraClass/Beginner/Images/GhidraLogo64.png