mirror of
https://github.com/openbsd/ports.git
synced 2026-06-17 23:13:55 +02:00
55176e50be
* Sync to latest protobuf versions * Remove unneeded build depend on bison * Remove patches to test files since do-test is not functional
160 lines
5.6 KiB
Makefile
160 lines
5.6 KiB
Makefile
ONLY_FOR_ARCHS = amd64 aarch64
|
|
|
|
COMMENT = software reverse engineering (SRE) framework
|
|
|
|
VERSION = 12.0.4
|
|
GHIDRA_DATE = 20260210
|
|
|
|
GH_ACCOUNT = NationalSecurityAgency
|
|
GH_PROJECT = ghidra
|
|
GH_TAGNAME = Ghidra_${VERSION}_build
|
|
DISTNAME = ghidra-${VERSION}
|
|
|
|
CATEGORIES = security
|
|
|
|
MAINTAINER = Kurt Miller <kurt@openbsd.org>
|
|
|
|
HOMEPAGE = https://www.ghidra-sre.org/
|
|
|
|
# Apache v2
|
|
PERMIT_PACKAGE = Yes
|
|
|
|
WANTLIB += c m ${COMPILER_LIBCXX}
|
|
|
|
SITES.a = https://www.intricatesoftware.com/distfiles/
|
|
|
|
# sync with java/jna and devel/protobuf when updating VERSION
|
|
JNA_VER = 5.18.1
|
|
PROTOBUF_VER = 6.34.0
|
|
PROTOBUF_JAVA_VER = 4.34.0
|
|
PY_PROTOBUF_VER = 7.34.0
|
|
|
|
DISTFILES.a += ghidra-Ghidra_${VERSION}_build_dependencies${EXTRACT_SUFX}
|
|
|
|
MODULES = java lang/python
|
|
MODJAVA_VER = 21+
|
|
|
|
BUILD_DEPENDS = archivers/unzip \
|
|
devel/protobuf>=${PROTOBUF_VER} \
|
|
devel/protobuf-java>=${PROTOBUF_JAVA_VER} \
|
|
devel/py-pip \
|
|
java/gradle \
|
|
java/jna>=${JNA_VER} \
|
|
shells/bash
|
|
|
|
RUN_DEPENDS += devel/gdb \
|
|
devel/py-protobuf>=${PY_PROTOBUF_VER} \
|
|
java/javaPathHelper \
|
|
shells/bash \
|
|
sysutils/py-psutil
|
|
|
|
# Task :Docking:buildHelpFiles/GHelpBuilder.java writes log files
|
|
# under $HOME so point user.home inside ${WRKSRC}
|
|
MAKE_ENV += JDK_JAVA_OPTIONS="-Duser.home='${WRKSRC}/home'"
|
|
|
|
# assembleDistribution build failure, jgrapht-core-1.5.1 has UTF-8 characters in jar-file
|
|
MAKE_ENV += LC_CTYPE="en_US.UTF-8"
|
|
|
|
.if ${MACHINE_ARCH} == "amd64"
|
|
GHIDRA_ARCH = openbsd_x86_64
|
|
.else
|
|
GHIDRA_ARCH = openbsd_arm_64
|
|
.endif
|
|
|
|
NO_TEST = Yes
|
|
|
|
SUBST_VARS += GHIDRA_DATE GHIDRA_ARCH VERSION \
|
|
JNA_VER PROTOBUF_JAVA_VER
|
|
|
|
EXTENSIONS = BSimElasticPlugin GnuDisassembler Lisa \
|
|
MachineLearning SampleTablePlugin SleighDevTools \
|
|
SymbolicSummaryZ3 bundle_examples sample
|
|
|
|
post-extract:
|
|
@rm -rf ${WRKSRC}/Ghidra/Features/PyGhidra
|
|
@perl -pi -e 's,(application.version)=.*,\1=${VERSION},' \
|
|
${WRKSRC}/Ghidra/application.properties
|
|
@mkdir -p ${WRKSRC}/Ghidra/Framework/Pty/src/main/java/ghidra/pty/openbsd
|
|
@cd ${WRKSRC}/Ghidra/Framework/Pty/src/main/java/ghidra/pty/linux/ && \
|
|
for f in Linux* ; do \
|
|
cp $$f ../openbsd/OpenBSD$${f#Linux} ; done
|
|
@mkdir -p ${WRKSRC}/dependencies/flatRepo
|
|
@cp ${TRUEPREFIX}/share/java/classes/jna.jar \
|
|
${WRKSRC}/dependencies/flatRepo/jna-${JNA_VER}.jar
|
|
@cp ${TRUEPREFIX}/share/java/classes/jna-platform.jar \
|
|
${WRKSRC}/dependencies/flatRepo/jna-platform-${JNA_VER}.jar
|
|
@cp ${TRUEPREFIX}/share/java/classes/protobuf-java.jar \
|
|
${WRKSRC}/dependencies/flatRepo/protobuf-java-${PROTOBUF_JAVA_VER}.jar
|
|
|
|
pre-configure:
|
|
@${SUBST_CMD} ${WRKSRC}/gradle.properties \
|
|
${WRKSRC}/gradle/hasProtobuf.gradle \
|
|
${WRKSRC}/Ghidra/Framework/Generic/src/main/java/ghidra/framework/Platform.java \
|
|
${WRKSRC}/Ghidra/Framework/Pty/Module.manifest \
|
|
${WRKSRC}/Ghidra/Framework/Pty/build.gradle \
|
|
${WRKSRC}/Ghidra/Debug/ProposedUtils/Module.manifest \
|
|
${WRKSRC}/GhidraBuild/LaunchSupport/src/main/java/ghidra/launch/OpenBSDJavaFinder.java
|
|
|
|
# build-dependencies is a maintainer target intended to be run when upgrading
|
|
# to a new version of ghidra. The process is; bump the VERSION, sync jna and
|
|
# protobuf versions, comment out DISTFILES.a, make makesum and finish with
|
|
# make build-dependencies clean
|
|
#
|
|
# Note that build-dependencies is run as a regular user, with access to the
|
|
# network for downloading the build dependencies. It deletes everything under
|
|
# WRKSRC because of the permission changes.
|
|
|
|
# Adapted from the instructions here:
|
|
# https://github.com/NationalSecurityAgency/ghidra/blob/master/DevGuide.md#offline-development-environment
|
|
|
|
build-dependencies: configure
|
|
set -x; cd ${WRKSRC}; \
|
|
${_PBUILD} rm -rf dependencies; \
|
|
${_PBUILD} mkdir dependencies; \
|
|
${_PBUILD} chmod -R ug=rwX,o=rX .; \
|
|
umask 007; \
|
|
env HOME='/ghidra-writes_to_HOME' JAVA_HOME=${JAVA_HOME} \
|
|
gradle --no-daemon --stacktrace \
|
|
-g ${WRKSRC}/dependencies/gradle \
|
|
-I ${WRKSRC}/gradle/support/fetchDependencies.gradle; \
|
|
env HOME='/ghidra-writes_to_HOME' JAVA_HOME=${JAVA_HOME} \
|
|
gradle --no-daemon --stacktrace \
|
|
-g ${WRKSRC}/dependencies/gradle \
|
|
prepDev; \
|
|
rm -rf dependencies/downloads dependencies/PyGhidra; \
|
|
find dependencies -path '*/.tmp*' -o -name '*.log' -delete; \
|
|
find dependencies -path *protobuf-*/${PROTOBUF_JAVA_VER} -o \
|
|
-name net.java.dev.jna | xargs rm -rf; \
|
|
find dependencies -type d -a -perm 0700 -exec chmod g+rx {} \;
|
|
cd ${WRKDIR} && \
|
|
tar czf ~/ghidra-Ghidra_${VERSION}_build_dependencies.tar.gz \
|
|
ghidra-Ghidra_${VERSION}_build/dependencies
|
|
rm -rf ${WRKSRC}/*
|
|
@echo ~/ghidra-Ghidra_${VERSION}_build_dependencies.tar.gz has been created
|
|
|
|
do-build:
|
|
@cd ${WRKSRC} && ${SETENV} ${MAKE_ENV} gradle --no-daemon --stacktrace \
|
|
-g ${WRKSRC}/dependencies/gradle --offline buildGhidra
|
|
|
|
do-install:
|
|
${INSTALL_DATA_DIR} ${PREFIX}/share/java
|
|
unzip -d ${PREFIX}/share/java \
|
|
${WRKSRC}/build/dist/ghidra_${VERSION}_DEV_*_${GHIDRA_ARCH}.zip \
|
|
-x *.orig.port
|
|
mv ${PREFIX}/share/java/ghidra_${VERSION}_DEV ${PREFIX}/share/java/ghidra
|
|
find ${PREFIX}/share/java/ghidra -name *.whl -a -not -name ghidra* \
|
|
-delete
|
|
find ${PREFIX}/share/java/ghidra -name psutil-*.tar.gz -delete
|
|
.for name in ${EXTENSIONS}
|
|
cd ${PREFIX}/share/java/ghidra/Extensions/Ghidra/ && \
|
|
mv ghidra_${VERSION}_DEV_*_${name}.zip \
|
|
ghidra_${VERSION}_DEV_${GHIDRA_DATE}_${name}.zip
|
|
.endfor
|
|
${INSTALL_SCRIPT} ${WRKSRC}/Ghidra/RuntimeScripts/Linux/ghidraRun \
|
|
${PREFIX}/share/java/ghidra/ghidraRun
|
|
ln -s ${TRUEPREFIX}/share/java/ghidra/ghidraRun ${PREFIX}/bin/ghidraRun
|
|
${INSTALL_SCRIPT} ${WRKSRC}/Ghidra/RuntimeScripts/Linux/support/launch.sh \
|
|
${PREFIX}/share/java/ghidra/support/launch.sh
|
|
|
|
.include <bsd.port.mk>
|