ghidra-11.1.2.ebuild

This commit is contained in:
Anton Bolshakov 2024-07-13 09:43:22 +08:00
parent 0efe94f7ae
commit d08ccdcc37
No known key found for this signature in database
GPG key ID: 32BDCED870788F04
2 changed files with 179 additions and 1 deletions

View file

@ -1,6 +1,6 @@
DIST AXMLPrinter2.jar 24552 BLAKE2B 3ff09da948c2962919927ad35f8d38a13391c763a83962f8fdce90ec4720430b00be891f68fc149f62180ddf5f5e818af4e6b6a153d1a55e871f181e930d2b7b SHA512 c1168ec913f1fbb0675915d4fd865ec9a8e8573f6c8aedcb6e68166f61f11aeaececc7548d54d78134843c0102c57d6350973f6d3027d0ffdae52a5c57a7f601
DIST Ghidra_11.1.1_build.tar.gz 70079258 BLAKE2B eae48bdb4ea1eb596ab614dd3b63e9eb94307076209feaa64aaaa47fc895302c1a0a5573fa698f8d2a240f259ce8fc2597530240b386c53043e0c67c7d15fdff SHA512 c76f28cedbae9e3f32f8d500e79301de0ffa87ef6d4853000622817f4a7981e151190c66232fb87509be7d1f116ac50cbab344f9dc4060e9e156b956f69971fc
DIST Ghidra_11.1_build.tar.gz 70068571 BLAKE2B 9e306569ae6ffb7fd4f28ffd3bb045bc4178020ba544989945d40c29522907db2168d5402979efd84fa2a83066e3790bb3bbfb50e8cf89b9678ca848381c2281 SHA512 a51eeb397aeaf4e117eed90101a0dee2451940e7e5045c15378543531c3f77b79fde871167810032735da559861ddc6db8cebb36b31f8aaf737d16aefc213ff6
DIST Ghidra_11.1.2_build.tar.gz 70080146 BLAKE2B 15427af59a06c4b9ddc14581a734b66d5d2bcb7ffab936f03b2d0dcf3af20b5c58fa6059e743c703037a2de9e1710b050d88fb60405d417a395c697f34a2dcc7 SHA512 8323cb574e33f18358091eabb9af4296cb833109d712aac4cbf5ba1a50d435fca1f450e15e96adfd1cdffc466d47c9a5e5590b631b9df39374ee05608632dd86
DIST PyDev-6.3.1.zip 24756333 BLAKE2B e9a942e0ff90b9eafbd1fa0df5429f2ff227ed140b7352a1003be04ffbc043e17bf19bd622d7fe9b958286a75ff4897c03088c1627ee62ea7b6e832752cb427e SHA512 411ed78d1057f5e9780e44169935fb8a0da17e97ce26e9a7a9fa9a251d4d3c1118e9b47dd9f7af03bde1f47180bde0d456039b65687f600026a148055311ecfa
DIST Pybag-2.2.10-py3-none-any.whl 297877 BLAKE2B 6563cfd657b4bed2a57217fd2fbac9a9bf4449f7dd9b3881bda7942d38b14390b2aca611d71811e98a3f1c78266cb66bcaff5229c46920935bec6a6a9642b200 SHA512 9a2582a6e7ec922b28abf2a7b5250161ef2da4ba2570b29435e626da8c98d8be17298fde7a374783599605224781feec6dc16bfca5d7eb0455bea49a51dfbeb7
DIST capstone-5.0.1-py3-none-win_amd64.whl 1272594 BLAKE2B 37bdd905b5c2a684c129de309d424dc3b408ebc2eabf8b609728f9547e94a29f8da18bc18a5a67e7f54bdc41bbe32f07d4c449c5ac6314e25003d18eeeb85ad1 SHA512 500baa5fc0f5b0adf22480f28d430ead8c8a85b3fe374131d61bf03b1bf960ac9192ea4cc739f62b8550f59f6d506cad80d24aba34d5d19a1ec10ea17be43572

View file

@ -0,0 +1,178 @@
# 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="20240509"
RELEASE_VERSION=${PV}
DESCRIPTION="A software reverse engineering framework"
HOMEPAGE="https://ghidra-sre.org/"
FIDB_FILES="vs2012_x86.fidb vs2012_x64.fidb vs2015_x86.fidb vs2015_x64.fidb \
vs2017_x86.fidb vs2017_x64.fidb vs2019_x86.fidb vs2019_x64.fidb vsOlder_x86.fidb vsOlder_x64.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
https://downloads.sourceforge.net/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
https://downloads.sourceforge.net/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}/FunctionID/${FIDB}"
done
SRC_URI+=" https://files.pythonhosted.org/packages/8d/14/619e24a4c70df2901e1f4dbc50a6291eb63a759172558df326347dce1f0d/protobuf-3.20.3-py2.py3-none-any.whl
https://files.pythonhosted.org/packages/90/c7/6dc0a455d111f68ee43f27793971cf03fe29b6ef972042549db29eec39a2/psutil-5.9.8.tar.gz
https://files.pythonhosted.org/packages/c7/42/be1c7bbdd83e1bfb160c94b9cafd8e25efc7400346cf7ccdbdb452c467fa/setuptools-68.0.0-py3-none-any.whl
https://files.pythonhosted.org/packages/27/d6/003e593296a85fd6ed616ed962795b2f87709c3eee2bca4f6d0fe55c6d00/wheel-0.37.1-py2.py3-none-any.whl
https://files.pythonhosted.org/packages/2d/e0/f877c91e036fcaed2a827f80d6cbdf1d26cffc3333c9ebda31c55c45f050/Pybag-2.2.10-py3-none-any.whl
https://files.pythonhosted.org/packages/d0/dd/b28df50316ca193dd1275a4c47115a720796d9e1501c1888c4bfa5dc2260/capstone-5.0.1-py3-none-win_amd64.whl
https://files.pythonhosted.org/packages/50/8f/518a37381e55a8857a638afa86143efa5508434613541402d20611a1b322/comtypes-1.4.1-py3-none-any.whl
https://files.pythonhosted.org/packages/83/1c/25b79fc3ec99b19b0a0730cc47356f7e2959863bf9f3cd314332bddb4f68/pywin32-306-cp312-cp312-win_amd64.whl"
# 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
S="${WORKDIR}/ghidra-Ghidra_${PV}_build"
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
dev-python/pip"
BDEPEND=">=dev-java/gradle-bin-7.3:*"
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/
#copy whl
mkdir -p ./dependencies/{Debugger-rmi-trace,Debugger-agent-dbgeng} || die "failed to create Debugger dir"
cp "${DISTDIR}"/protobuf-3.20.3-py2.py3-none-any.whl ./dependencies/Debugger-rmi-trace/
cp "${DISTDIR}"/psutil-5.9.8.tar.gz ./dependencies/Debugger-rmi-trace/
cp "${DISTDIR}"/setuptools-68.0.0-py3-none-any.whl ./dependencies/Debugger-rmi-trace/
cp "${DISTDIR}"/wheel-0.37.1-py2.py3-none-any.whl ./dependencies/Debugger-rmi-trace/
cp "${DISTDIR}"/Pybag-2.2.10-py3-none-any.whl ./dependencies/Debugger-agent-dbgeng/
cp "${DISTDIR}"/capstone-5.0.1-py3-none-win_amd64.whl ./dependencies/Debugger-agent-dbgeng/
cp "${DISTDIR}"/comtypes-1.4.1-py3-none-any.whl ./dependencies/Debugger-agent-dbgeng/
cp "${DISTDIR}"/pywin32-306-cp312-cp312-win_amd64.whl ./dependencies/Debugger-agent-dbgeng/
}
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} assembleAll -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() {
# remove zip files which aren't needed at runtime
find build/dist/ghidra_${PV}_DEV/ -type f -name '*.zip' -exec rm -f {} +
#FIXME: add doc flag
rm -r build/dist/ghidra_${PV}_DEV/docs/ || die "rm failed"
insinto /usr/share/ghidra
doins -r build/dist/ghidra_${PV}_DEV/*
fperms +x /usr/share/ghidra/ghidraRun
fperms +x /usr/share/ghidra/support/launch.sh
fperms +x /usr/share/ghidra/GPL/DemanglerGnu/os/linux_x86_64/demangler_gnu_v2_41
fperms +x /usr/share/ghidra/Ghidra/Features/Decompiler/os/linux_x86_64/decompile
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"
}