%global debug_package %{nil} %global gradle_ver 9.5.0 %global dex_ver 2.1 %global yajsw_ver 13.18 %global pydev_ver 9.3.0 %global cdt_ver 8.6.0 %global cdt_short_ver 8.6 %global sarif_ver 2.1 %global z3_ver 4.13.0 %global z3_glibc 2.31 %global ghidra_dir ghidra-Ghidra_%{version}_build %global dep_dir %{ghidra_dir}/dependencies %global flat_repo_dir %{dep_dir}/flatRepo %global fid_dir %{dep_dir}/fidb %global jre_ver 25 Name: ghidra Version: 12.1.2 %global short_version %{version} Release: 1%{?dist} Summary: ghidra - Software reverse engineering (SRE) suite of tools License: Apache 2.0 URL: https://ghidra-sre.org/ Source0: https://github.com/NationalSecurityAgency/ghidra/archive/Ghidra_%{version}_build.tar.gz Source1: https://downloads.gradle.org/distributions/gradle-%{gradle_ver}-bin.zip Source2: https://github.com/pxb1988/dex2jar/releases/download/v%{dex_ver}/dex2jar-%{dex_ver}.zip Source3: https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/android4me/AXMLPrinter2.jar Source4: https://sourceforge.net/projects/yajsw/files/yajsw/yajsw-stable-%{yajsw_ver}/yajsw-stable-%{yajsw_ver}.zip Source5: https://sourceforge.net/projects/pydev/files/pydev/PyDev%20%{pydev_ver}/PyDev%20%{pydev_ver}.zip#/PyDev-%{pydev_ver}.zip Source6: https://archive.eclipse.org/tools/cdt/releases/%{cdt_short_ver}/cdt-%{cdt_ver}.zip Source7: https://github.com/NationalSecurityAgency/ghidra-data/raw/Ghidra_%{version}/lib/java-sarif-%{sarif_ver}-modified.jar Source8: https://github.com/NationalSecurityAgency/ghidra-data/raw/Ghidra_%{version}/Debugger/dbgmodel.tlb#/dbgmodel_%{version}.tlb Source9: https://github.com/Z3Prover/z3/releases/download/z3-%{z3_ver}/z3-%{z3_ver}-x64-glibc-%{z3_glibc}.zip Source10: ghidra.desktop Source11: ffxivclientstructs-dependencies.tar.gz Source12: ghidra.png Requires: (java-%{jre_ver}-openjdk or temurin-21-jdk) BuildRequires: java-%{jre_ver}-openjdk-devel BuildRequires: java-%{jre_ver}-openjdk-headless BuildRequires: gcc gcc-c++ BuildRequires: bison flex BuildRequires: desktop-file-utils BuildRequires: python3-pip BuildRequires: python3-devel BuildRequires: python-wheel0.37-wheel BuildRequires: python-setuptools-wheel %description Ghidra is a software reverse engineering (SRE) framework developed by NSA's Research Directorate for NSA's cybersecurity mission. It helps analyze malicious code and malware like viruses, and can give cybersecurity professionals a better understanding of potential vulnerabilities in their networks and systems. %package server Summary: Ghidra Server Requires: %{name}%{?_isa} = %{version} %description server Ghidra Server %package docs Summary: Ghidra Documentation Requires: %{name}%{?_isa} = %{version} %description docs Ghidra Documentation %prep %setup -q -c %{name}-%{version} -a 1 -a 2 -a 5 -a 9 mkdir -p %{dep_dir}/{GhidraDev,GhidraServer,Debugger-agent-dbgeng} %{flat_repo_dir} %{fid_dir} mkdir -p %{dep_dir}/SymbolicSummaryZ3/os/linux_x86_64 cp dex-tools-%{dex_ver}/lib/dex-*.jar %{flat_repo_dir} cp "%{SOURCE3}" "%{flat_repo_dir}" cp "%{SOURCE4}" "%{dep_dir}/GhidraServer" cp "%{SOURCE5}" "%{dep_dir}/GhidraDev" cp "%{SOURCE6}" "%{dep_dir}/GhidraDev" cp "%{SOURCE7}" "%{flat_repo_dir}" cp "%{SOURCE8}" "%{dep_dir}/Debugger-agent-dbgeng/dbgmodel.tlb" cp z3-%{z3_ver}-x64-glibc-%{z3_glibc}/bin/*.jar "%{flat_repo_dir}" cp z3-%{z3_ver}-x64-glibc-%{z3_glibc}/bin/libz3*.so "%{dep_dir}/SymbolicSummaryZ3/os/linux_x86_64" mkdir -p "%{dep_dir}/Debugger-rmi-trace" cp %{python_wheel_dir}/setuptools-*-py3-none-any.whl "%{dep_dir}/Debugger-rmi-trace" cp %{python_wheel_dir}/wheel-*-none-any.whl "%{dep_dir}/Debugger-rmi-trace" %build cd %{ghidra_dir} JAVA_HOME=%{_jvmdir}/jre-%{jre_ver}-openjdk \ ../gradle-%{gradle_ver}/bin/gradle --no-daemon \ buildGhidra \ -x buildPyPackage %install mkdir -p %{buildroot}/%{_libdir}/%{name}/ %{buildroot}/%{_bindir}/ unzip %{ghidra_dir}/build/dist/ghidra_%{short_version}_DEV_%{lua: print(os.date("%Y%m%d"))}_linux*.zip cp -r ghidra_%{short_version}_DEV/* %{buildroot}/%{_libdir}/%{name} ln -s %{_libdir}/%{name}/ghidraRun %{buildroot}/%{_bindir}/%{name} ln -s %{_libdir}/%{name}/pyghidraRun %{buildroot}/%{_bindir}/pyghidraRun ln -s %{_libdir}/%{name}/server/ghidraSvr %{buildroot}/%{_bindir}/%{name}-server ln -s %{_libdir}/%{name}/server/svrAdmin %{buildroot}/%{_bindir}/%{name}-server-admin ln -s %{_libdir}/%{name}/server/svrInstall %{buildroot}/%{_bindir}/%{name}-server-install ln -s %{_libdir}/%{name}/server/svrUninstall %{buildroot}/%{_bindir}/%{name}-server-uninstall mkdir -p %{buildroot}/%{_datadir}/icons/hicolor/scalable/apps/ install -p -m 0644 %{ghidra_dir}/Ghidra/RuntimeScripts/Windows/support/ghidra.ico %{buildroot}/%{_datadir}/icons/hicolor/scalable/apps/ install -p -m 0644 %{SOURCE12} %{buildroot}/%{_datadir}/icons/hicolor/scalable/apps/ desktop-file-install --dir=%{buildroot}%{_datadir}/applications %{SOURCE10} # extract dependencies needed for FFXIVClientStructs mkdir -p %{buildroot}/%{_libdir}/%{name}/Ghidra/Features/Jython/lib/Lib/site-packages tar -xf %{SOURCE11} -C %{buildroot}/%{_libdir}/%{name}/Ghidra/Features/Jython/lib/Lib/site-packages %files %{_bindir}/%{name} %{_bindir}/pyghidraRun %dir %{_libdir}/%{name} %{_libdir}/%{name}/ghidraRun %{_libdir}/%{name}/LICENSE %{_libdir}/%{name}/Extensions/ %{_libdir}/%{name}/Ghidra/ %{_libdir}/%{name}/GPL/ %{_libdir}/%{name}/licenses/ %{_libdir}/%{name}/support/ %{_libdir}/%{name}/bom.json %{_datadir}/applications/ghidra.desktop %{_datadir}/icons/hicolor/scalable/apps/ghidra.ico %{_datadir}/icons/hicolor/scalable/apps/ghidra.png %license %{ghidra_dir}/LICENSE %files server %{_bindir}/%{name}-server %{_bindir}/%{name}-server-admin %{_bindir}/%{name}-server-install %{_bindir}/%{name}-server-uninstall %{_libdir}/%{name}/server/ %files docs %{_libdir}/%{name}/docs/ %{_libdir}/%{name}/GettingStarted.html %{_libdir}/%{name}/GettingStarted.md %{_libdir}/%{name}/docker/Dockerfile %{_libdir}/%{name}/docker/Dockerfile.dockerignore %{_libdir}/%{name}/docker/README.md %{_libdir}/%{name}/docker/README.html %{_libdir}/%{name}/docker/build-docker-image.sh %{_libdir}/%{name}/docker/entrypoint.sh %changelog %autochangelog