kub12

ghidra

Nov 18th, 2019
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.67 KB | None | 0 0
  1. # Copyright 1999-2019 Gentoo Authors
  2. # Distributed under the terms of the GNU General Public License v2
  3.  
  4. EAPI=7
  5.  
  6. DESCRIPTION="A software reverse engineering framework"
  7. HOMEPAGE="https://www.nsa.gov/ghidra"
  8. SRC_URI="https://github.com/NationalSecurityAgency/${PN}/archive/Ghidra_${PV}_build.tar.gz
  9. https://github.com/pxb1988/dex2jar/releases/download/2.0/dex-tools-2.0.zip
  10. https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/android4me/AXMLPrinter2.jar
  11. https://sourceforge.net/projects/catacombae/files/HFSExplorer/0.21/hfsexplorer-0_21-bin.zip
  12. mirror://sourceforge/yajsw/yajsw/yajsw-stable-12.12.zip
  13. https://dev.pentoo.ch/~blshkv/distfiles/${P}-gradle-dependencies.tar.gz"
  14. # run: pentoo/scripts/gradle_dependencies.py from "${S}" directory to generate dependencies
  15. # tar cvzf ./ghidra-9.0.4-gradle-dependencies.tar.gz -C /var/tmp/portage/dev-util/ghidra-9.0.4/work ghidra-Ghidra_9.0.4_build/dependencies/
  16.  
  17. LICENSE="Apache-2.0"
  18. SLOT="0"
  19. KEYWORDS="~amd64"
  20. IUSE=""
  21.  
  22. RDEPEND=">=virtual/jre-1.8"
  23.  
  24. # I changed >=virtual/jdk-11 to >=dev-java/openjdk-11.0.0.
  25. DEPEND="${RDEPEND}
  26. >=dev-java/openjdk-11.0.0
  27. dev-java/gradle-bin:5.2.1
  28. sys-devel/bison
  29. dev-java/jflex
  30. app-arch/unzip"
  31.  
  32. S="${WORKDIR}/ghidra-Ghidra_${PV}_build"
  33.  
  34. src_unpack() {
  35. # https://github.com/NationalSecurityAgency/ghidra/blob/master/DevGuide.md
  36. unpack ${A}
  37. mkdir -p "${S}/.gradle/flatRepo" || die "(1) mkdir failed"
  38. cd "${S}/.gradle"
  39.  
  40. unpack dex-tools-2.0.zip
  41. cp dex2jar-2.0/lib/dex-*.jar ./flatRepo || die "(3) cp failed"
  42.  
  43. cp "${DISTDIR}/AXMLPrinter2.jar" ./flatRepo || die "(4) cp failed"
  44.  
  45. unpack hfsexplorer-0_21-bin.zip
  46. cp lib/*.jar ./flatRepo || die "(5) cp failed"
  47.  
  48. mkdir -p "${WORKDIR}"/ghidra.bin/Ghidra/Features/GhidraServer/ || die "(6) mkdir failed"
  49. cp "${DISTDIR}"/yajsw-stable-12.12.zip "${WORKDIR}"/ghidra.bin/Ghidra/Features/GhidraServer/ || die "(7) cp failed"
  50. cd "${S}"
  51. }
  52. src_prepare() {
  53. sed -i 's|gradle.gradleVersion != "5.0"|gradle.gradleVersion <= "5.0"|g' build.gradle || die "(9) sed failed"
  54. mkdir -p ".gradle/init.d" || die "(10) mkdir failed"
  55. cp "${FILESDIR}"/repos.gradle .gradle/init.d || die "(11) cp failed"
  56. sed -i "s|S_DIR|${S}|g" .gradle/init.d/repos.gradle || die "(12) sed failed"
  57. #remove build date so we can unpack dist.zip later
  58. sed -i "s|_\${rootProject.BUILD_DATE_SHORT}||g" gradle/root/distribution.gradle || die "(13) sed failed"
  59.  
  60. # Custom Test to check if jdk-11 is indeed used. Breaks here as it finds jdk 1.8 (system-vm)
  61. if [[ -z "$(java -version | grep 'openjdk version "11')" ]]; then
  62. eerror "OpenJDK 11 is not installed or not set as primary instance. Please add package.env entry,"
  63. eerror "linking this ebuild to openjdk-11"
  64. die
  65. fi
  66.  
  67. #9.1 workaround
  68. ln -s ./.gradle/flatRepo ./flatRepo
  69.  
  70. eapply_user
  71. }
  72.  
  73. src_compile() {
  74. export _JAVA_OPTIONS="$_JAVA_OPTIONS -Duser.home=$HOME"
  75.  
  76. GRADLE="gradle-5.2.1 --gradle-user-home .gradle --console rich --no-daemon"
  77. GRADLE="${GRADLE} --offline"
  78.  
  79. unset TERM
  80. ${GRADLE} yajswDevUnpack -x check -x test || die
  81. ${GRADLE} buildGhidra -x check -x test || die
  82. }
  83.  
  84. src_install() {
  85. #it is easier to unpack existing archive
  86. dodir /usr/share
  87. unzip build/dist/ghidra_9.1_DEV_linux64.zip -d "${ED}"/usr/share/ || die "unable to unpack dist zip"
  88. mv "${ED}"/usr/share/ghidra_9.1_DEV "${ED}"/usr/share/ghidra || die "mv failed"
  89.  
  90. #fixme: add doc flag
  91. rm -r "${ED}"/usr/share/ghidra/docs/ || die "rm failed"
  92. dosym "${EPREFIX}"/usr/share/ghidra/ghidraRun /usr/bin/ghidra
Add Comment
Please, Sign In to add comment