Build and pack native components so that Ghidra can decompile programs on

OpenBSD.  This is based on a pull request from Jeremy O'Brien at
https://github.com/NationalSecurityAgency/ghidra/pull/490 and the Ghidra
build guide at
https://github.com/NationalSecurityAgency/ghidra/blob/master/DevGuide.md .

In addition, I have made these changes to make Ghidra work better as an OpenBSD
port:

1. I removed the explicit check for Gradle 5.0 because I was able to build
   Ghidra with latest versions of Gradle.  At the time of commit, our
   java/gradle port is 5.5.1 which is the latest version of Gradle.

2. By default, the Ghidra build process tries to fetch dependent files on demand
   while building.  This will cause the build to fail if the port is built using
   the _pbuild user.  To fix this, I made the port fetch all the dependent .jar
   files prior to building.  I also used gradle's --offline flag which
   explicitly tells gradle to "Execute the build without accessing network
   resources".

3. To prevent the build process from touching $HOME, I made gradle use
   ${WRKDIR}/gradle as its home and also modified GHelpBuilder.java
   (the program that builds help files during build) to log to ${WRKDIR}
   instead of $HOME/.ghidra.

4. One of the Gradle scripts (ip.gradle) scans the Ghidra source tree so
   I had to explicitly tell it to exclude *.orig and *.beforesubst.

help from bentley@ and Jeremy O'Brien
ok bentley@ rpointel@ (maintainer)
This commit is contained in:
lteo 2019-07-23 02:09:20 +00:00
parent f31adb89db
commit e6545fccae
21 changed files with 548 additions and 76 deletions

View File

@ -1,4 +1,4 @@
# $OpenBSD: Makefile,v 1.4 2019/07/12 20:49:02 sthen Exp $
# $OpenBSD: Makefile,v 1.5 2019/07/23 02:09:20 lteo Exp $
# bundled jython has amd64 components for OpenBSD
ONLY_FOR_ARCHS = amd64
@ -6,9 +6,13 @@ ONLY_FOR_ARCHS = amd64
COMMENT = software reverse engineering (SRE) framework
VERSION = 9.0.4
REVISION = 0
DISTNAME = ghidra_9.0.4_PUBLIC_20190516
PKGNAME = ghidra-${VERSION}
GHIDRA_DATE = 20190516
REVISION = 1
GH_ACCOUNT = NationalSecurityAgency
GH_PROJECT = ghidra
GH_TAGNAME = Ghidra_${VERSION}_build
DISTNAME = ghidra-${VERSION}
CATEGORIES = security
@ -19,30 +23,113 @@ MAINTAINER = Remi Pointel <rpointel@openbsd.org>
# Apache v2
PERMIT_PACKAGE = Yes
MASTER_SITES = ${HOMEPAGE}
WANTLIB += c m stdc++
MASTER_SITES0 = ${HOMEPAGE}
MASTER_SITES1 = https://sourceforge.net/projects/yajsw/files/yajsw/yajsw-stable-${YAJSW_VER}/
MASTER_SITES2 = https://repo.maven.apache.org/maven2/
EXTRACT_SUFX = .zip
ST4_VER = 4.1
HAMCREST_VER = 1.3
JAVACC_VER = 5.0
JMOCKIT_VER = 1.44
JSON_SIMPLE_VER = 1.1.1
JUNIT_VER = 4.12
YAJSW_VER = 12.12
JAR_DISTFILES += ST4{org/antlr/ST4/${ST4_VER}/ST4}-${ST4_VER}.jar
JAR_DISTFILES += hamcrest{org/hamcrest/hamcrest-all/${HAMCREST_VER}/hamcrest}-all-${HAMCREST_VER}.jar
JAR_DISTFILES += javacc{net/java/dev/javacc/javacc/${JAVACC_VER}/javacc}-${JAVACC_VER}.jar
JAR_DISTFILES += jmockit{org/jmockit/jmockit/${JMOCKIT_VER}/jmockit}-${JMOCKIT_VER}.jar
JAR_DISTFILES += json-simple{com/googlecode/json-simple/json-simple/${JSON_SIMPLE_VER}/json-simple}-${JSON_SIMPLE_VER}.jar
JAR_DISTFILES += junit{junit/junit/${JUNIT_VER}/junit}-${JUNIT_VER}.jar
DISTFILES = ${DISTNAME}.tar.gz
DISTFILES += ghidra_${VERSION}_PUBLIC_${GHIDRA_DATE}${EXTRACT_SUFX}:0
DISTFILES += yajsw-stable-${YAJSW_VER}${EXTRACT_SUFX}:1
DISTFILES += ${JAR_DISTFILES:C/$/:2/}
EXTRACT_ONLY = ${DISTNAME}.tar.gz
MODULES = java
MODJAVA_VER = 11+
BUILD_DEPENDS = archivers/unzip \
devel/bison \
java/gradle \
shells/bash
RUN_DEPENDS = shells/bash \
java/javaPathHelper
NO_BUILD = Yes
NO_TEST = Yes
WRKDIST = ${WRKDIR}/${PKGNAME:S/-/_/}
SUBST_VARS += GHIDRA_DATE VERSION WRKDIR
JAR_DIRS += Features-FileFormats
JAR_DIRS += Features-Python
JAR_DIRS += Framework-Docking
JAR_DIRS += Framework-FileSystem
JAR_DIRS += Framework-Generic
JAR_DIRS += Framework-Graph
JAR_DIRS += Framework-Project
JAR_DIRS += Framework-SoftwareModeling
post-extract:
@perl -pi -e 's,#!/bin/bash,#!${LOCALBASE}/bin/bash,' \
${WRKSRC}/ghidraRun
${WRKSRC}/Ghidra/RuntimeScripts/Linux/ghidraRun
@perl -pi -e 's,#!/bin/bash,#!${LOCALBASE}/bin/bash,' \
${WRKSRC}/support/launch.sh
${WRKSRC}/Ghidra/RuntimeScripts/Linux/support/launch.sh
@perl -pi -e 's,#!/bin/bash,#!${LOCALBASE}/bin/bash,' \
${WRKSRC}/Ghidra/RuntimeScripts/Linux/support/launch.sh
@perl -pi -e 's,(application.version)=.*,\1=${VERSION},' \
${WRKSRC}/Ghidra/application.properties
# Steps derived from:
# https://github.com/NationalSecurityAgency/ghidra/blob/master/DevGuide.md
pre-build:
cp ${FILESDIR}/repos.gradle ${WRKDIR}
${SUBST_CMD} ${WRKDIR}/repos.gradle \
${WRKSRC}/Ghidra/Framework/Help/src/main/java/help/GHelpBuilder.java
mkdir ${WRKDIR}/{flatRepo,gradle,home}
.for dir in ${JAR_DIRS}
unzip -j ${DISTDIR}/ghidra_${VERSION}_PUBLIC_${GHIDRA_DATE}.zip \
-d ${WRKDIR}/flatRepo \
ghidra_${VERSION}/Ghidra/${dir:C/-.*$//}/${dir:C/^.*-//}/lib/*.jar \
-x ghidra_${VERSION}/Ghidra/${dir:C/-.*$//}/${dir:C/^.*-//}/lib/${dir:C/^.*-//}.jar
.endfor
.for name in csframework hfsx_dmglib hfsx iharder-base64
cp ${WRKSRC}/GPL/DMG/data/lib/catacombae_${name}.jar \
${WRKDIR}/flatRepo/${name}.jar
.endfor
.for jar_file in ${JAR_DISTFILES:C/{.*}//}
cp ${DISTDIR}/${jar_file} ${WRKDIR}/flatRepo
.endfor
mkdir -p ${WRKDIR}/ghidra.bin/Ghidra/Features/GhidraServer
cp ${DISTDIR}/yajsw-stable-${YAJSW_VER}.zip \
${WRKDIR}/ghidra.bin/Ghidra/Features/GhidraServer
cd ${WRKSRC} && ${SETENV} ${MAKE_ENV} gradle -g ${WRKDIR}/gradle \
--no-daemon --offline -I ${WRKDIR}/repos.gradle yajswDevUnpack
do-build:
cd ${WRKSRC} && ${SETENV} ${MAKE_ENV} gradle -g ${WRKDIR}/gradle \
--no-daemon --offline -I ${WRKDIR}/repos.gradle buildGhidra
do-install:
${INSTALL_DATA_DIR} ${PREFIX}/share/java/ghidra
cp -r ${WRKSRC}/* ${PREFIX}/share/java/ghidra/
${INSTALL_DATA_DIR} ${PREFIX}/share/java
unzip -d ${PREFIX}/share/java \
${WRKSRC}/build/dist/ghidra_${VERSION}_PUBLIC_*_openbsd64.zip
mv ${PREFIX}/share/java/ghidra_${VERSION} ${PREFIX}/share/java/ghidra
mv ${PREFIX}/share/java/ghidra/Extensions/Ghidra/ghidra_${VERSION}_PUBLIC_*_SampleTablePlugin.zip \
${PREFIX}/share/java/ghidra/Extensions/Ghidra/ghidra_${VERSION}_PUBLIC_${GHIDRA_DATE}_SampleTablePlugin.zip
mv ${PREFIX}/share/java/ghidra/Extensions/Ghidra/ghidra_${VERSION}_PUBLIC_*_sample.zip \
${PREFIX}/share/java/ghidra/Extensions/Ghidra/ghidra_${VERSION}_PUBLIC_${GHIDRA_DATE}_sample.zip
${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>

View File

@ -1,2 +1,18 @@
SHA256 (ST4-4.1.jar) = ixzK7Z7cVc0lXZwZxNjaR1bZtvy0NWcSkrQ0cLFtddg=
SHA256 (ghidra-9.0.4.tar.gz) = 4kWT+0zz4dG3qN/q6F7fup/Z1EazYMel0S6WQEOHNeM=
SHA256 (ghidra_9.0.4_PUBLIC_20190516.zip) = pQ0M1HXZN3MygR7q5m6Uvcnn2I5YR3xSfpxreMrsGL8=
SHA256 (hamcrest-all-1.3.jar) = SHdnBimrlvNPX5CrKDEl/Nmst+aD5mMZpovm6yzKYN4=
SHA256 (javacc-5.0.jar) = cRExYbyM9mQVFVQcKBgCi4fHjsLo/6p1MXaG7giWe4k=
SHA256 (jmockit-1.44.jar) = GXSZN1EzMkhCbdusNwpgSUTt9mXBPUakxelz5N2PqUo=
SHA256 (json-simple-1.1.1.jar) = TmlpaJK4i0HFXUmrL9zCHurZK/VKzFiMAFBZbDt1GZw=
SHA256 (junit-4.12.jar) = WXIfCAXiI9hLkGd4h9n/Vn3FNNfFAsqQPAwrF/BcEWo=
SHA256 (yajsw-stable-12.12.zip) = E5j8sek6uxmZLE+gbX/ldYqrtMRXgdfvMGxvV8p6cyE=
SIZE (ST4-4.1.jar) = 253043
SIZE (ghidra-9.0.4.tar.gz) = 59223815
SIZE (ghidra_9.0.4_PUBLIC_20190516.zip) = 298503610
SIZE (hamcrest-all-1.3.jar) = 306578
SIZE (javacc-5.0.jar) = 298569
SIZE (jmockit-1.44.jar) = 757982
SIZE (json-simple-1.1.1.jar) = 23931
SIZE (junit-4.12.jar) = 314932
SIZE (yajsw-stable-12.12.zip) = 25051676

View File

@ -0,0 +1,7 @@
allprojects {
repositories {
mavenCentral()
jcenter()
flatDir name:'flat', dirs:["${WRKDIR}/flatRepo"]
}
}

View File

@ -0,0 +1,16 @@
$OpenBSD: patch-GPL_CabExtract_build_gradle,v 1.1 2019/07/23 02:09:20 lteo Exp $
From https://github.com/NationalSecurityAgency/ghidra/pull/490
Index: GPL/CabExtract/build.gradle
--- GPL/CabExtract/build.gradle.orig
+++ GPL/CabExtract/build.gradle
@@ -40,7 +40,7 @@ project.ext.cabextract = "cabextract-1.6"
*
* The cabextract tool requires that its 'configure' script is called before make.
*********************************************************************************/
-['linux64', 'osx64'].each { platform ->
+['linux64', 'osx64', 'openbsd64'].each { platform ->
def configureName = "${platform}CabExtractConfigure"
def makeName = "${platform}CabExtractMake" // native Make task found automatically

View File

@ -0,0 +1,14 @@
$OpenBSD: patch-GPL_DemanglerGnu_Module_manifest,v 1.1 2019/07/23 02:09:20 lteo Exp $
From https://github.com/NationalSecurityAgency/ghidra/pull/490
Index: GPL/DemanglerGnu/Module.manifest
--- GPL/DemanglerGnu/Module.manifest.orig
+++ GPL/DemanglerGnu/Module.manifest
@@ -1,3 +1,4 @@
MODULE FILE LICENSE: os/linux64/demangler_gnu GPL 3
MODULE FILE LICENSE: os/osx64/demangler_gnu GPL 3
-MODULE FILE LICENSE: os/win64/demangler_gnu.exe GPL 3
\ No newline at end of file
+MODULE FILE LICENSE: os/openbsd64/demangler_gnu GPL 3
+MODULE FILE LICENSE: os/win64/demangler_gnu.exe GPL 3

View File

@ -0,0 +1,26 @@
$OpenBSD: patch-GPL_DemanglerGnu_build_gradle,v 1.1 2019/07/23 02:09:20 lteo Exp $
From https://github.com/NationalSecurityAgency/ghidra/pull/490
Index: GPL/DemanglerGnu/build.gradle
--- GPL/DemanglerGnu/build.gradle.orig
+++ GPL/DemanglerGnu/build.gradle
@@ -24,6 +24,10 @@ model {
architecture 'x86_64'
operatingSystem 'osx'
}
+ openbsd64 {
+ architecture 'x86_64'
+ operatingSystem 'openbsd'
+ }
}
}
@@ -64,6 +68,7 @@ model {
targetPlatform "win64"
targetPlatform "linux64"
targetPlatform "osx64"
+ targetPlatform "openbsd64"
sources {
c {
source {

View File

@ -0,0 +1,18 @@
$OpenBSD: patch-GPL_nativeBuildProperties_gradle,v 1.1 2019/07/23 02:09:20 lteo Exp $
Adapted from https://github.com/NationalSecurityAgency/ghidra/pull/490
Index: GPL/nativeBuildProperties.gradle
--- GPL/nativeBuildProperties.gradle.orig
+++ GPL/nativeBuildProperties.gradle
@@ -75,6 +75,10 @@ model {
architecture 'x86_64'
operatingSystem 'osx'
}
+ openbsd64 {
+ architecture 'x86_64'
+ operatingSystem 'openbsd'
+ }
}
}

View File

@ -0,0 +1,50 @@
$OpenBSD: patch-Ghidra_Features_Decompiler_build_gradle,v 1.1 2019/07/23 02:09:20 lteo Exp $
From https://github.com/NationalSecurityAgency/ghidra/pull/490
Index: Ghidra/Features/Decompiler/build.gradle
--- Ghidra/Features/Decompiler/build.gradle.orig
+++ Ghidra/Features/Decompiler/build.gradle
@@ -74,9 +74,9 @@ def buildDir = "../../../build"
task buildDecompilerDocumentationPdfs(type: Exec) {
// Check the OS before enabling task.
- if (!(org.gradle.internal.os.OperatingSystem.current().isLinux()
- || org.gradle.internal.os.OperatingSystem.current().isMacOsX())) {
- println "The '$it.name' task only works on Linux or Mac Os X and is therefore disabled."
+ String osName = System.getProperty("os.name")
+ if (!(isLinux(osName) || isMac(osName) || isOpenBSD(osName))) {
+ println "The '$it.name' task only works on Linux, Mac OS X, or OpenBSD and is therefore disabled."
it.enabled = false
}
@@ -206,10 +206,10 @@ task buildDecompilerDocumentationHtml(type: Exec) {
// Check the OS before executing command.
doFirst {
- if ( !(org.gradle.internal.os.OperatingSystem.current().isLinux()
- || org.gradle.internal.os.OperatingSystem.current().isMacOsX())) {
+ String osName = System.getProperty("os.name")
+ if ( !(isLinux(osName) || isMac(osName) || isOpenBSD(osName)) ) {
throw new TaskExecutionException( it,
- new Exception( "The '$it.name' task only works on Linux or Mac Os X" ))
+ new Exception( "The '$it.name' task only works on Linux, Mac OS X, or OpenBSD" ))
}
}
@@ -245,6 +245,7 @@ model {
targetPlatform "win64"
targetPlatform "linux64"
targetPlatform "osx64"
+ targetPlatform "openbsd64"
sources {
cpp {
source {
@@ -342,6 +343,7 @@ model {
targetPlatform "win64"
targetPlatform "linux64"
targetPlatform "osx64"
+ targetPlatform "openbsd64"
sources {
cpp {
source {

View File

@ -0,0 +1,21 @@
$OpenBSD: patch-Ghidra_Features_Decompiler_src_decompile_cpp_Makefile,v 1.1 2019/07/23 02:09:20 lteo Exp $
From https://github.com/NationalSecurityAgency/ghidra/pull/490
Index: Ghidra/Features/Decompiler/src/decompile/cpp/Makefile
--- Ghidra/Features/Decompiler/src/decompile/cpp/Makefile.orig
+++ Ghidra/Features/Decompiler/src/decompile/cpp/Makefile
@@ -33,6 +33,13 @@ ifeq ($(OS),Darwin)
OSDIR=osx64
endif
+ifeq ($(OS),OpenBSD)
+ifeq ($(ARCH),x86_64)
+ ARCH_TYPE=-m64
+ OSDIR=openbsd64
+endif
+endif
+
CC=gcc
CXX=g++

View File

@ -0,0 +1,17 @@
$OpenBSD: patch-Ghidra_Features_Decompiler_src_decompile_cpp_types_h,v 1.1 2019/07/23 02:09:20 lteo Exp $
From https://github.com/NationalSecurityAgency/ghidra/pull/490
Index: Ghidra/Features/Decompiler/src/decompile/cpp/types.h
--- Ghidra/Features/Decompiler/src/decompile/cpp/types.h.orig
+++ Ghidra/Features/Decompiler/src/decompile/cpp/types.h
@@ -86,7 +86,8 @@ typedef char int1;
typedef uint4 uintp;
#endif
-#if defined (__linux__) && defined (__x86_64__)
+#if defined (__linux__) && defined (__x86_64__) || \
+ (defined (__OpenBSD__) && defined (__x86_64__))
#define HOST_ENDIAN 0
typedef unsigned int uintm;
typedef int intm;

View File

@ -0,0 +1,21 @@
$OpenBSD: patch-Ghidra_Features_FunctionID_build_gradle,v 1.1 2019/07/23 02:09:20 lteo Exp $
From https://github.com/NationalSecurityAgency/ghidra/pull/490
Index: Ghidra/Features/FunctionID/build.gradle
--- Ghidra/Features/FunctionID/build.gradle.orig
+++ Ghidra/Features/FunctionID/build.gradle
@@ -93,10 +93,10 @@ task buildFidDocumentationPdf(type: Exec) {
// Check the OS before executing command.
doFirst {
- if ( !(org.gradle.internal.os.OperatingSystem.current().isLinux()
- || org.gradle.internal.os.OperatingSystem.current().isMacOsX())) {
+ String osName = System.getProperty("os.name")
+ if ( !(isLinux(osName) || isMac(osName) || isOpenBSD(osName))) {
throw new TaskExecutionException( it,
- new Exception( "The '$it.name' task only works on Linux or Mac Os X" ))
+ new Exception( "The '$it.name' task only works on Linux, Mac OS X, or OpenBSD" ))
}
}

View File

@ -0,0 +1,43 @@
$OpenBSD: patch-Ghidra_Framework_Generic_src_main_java_ghidra_framework_Platform_java,v 1.1 2019/07/23 02:09:20 lteo Exp $
From https://github.com/NationalSecurityAgency/ghidra/pull/490
Index: Ghidra/Framework/Generic/src/main/java/ghidra/framework/Platform.java
--- Ghidra/Framework/Generic/src/main/java/ghidra/framework/Platform.java.orig
+++ Ghidra/Framework/Generic/src/main/java/ghidra/framework/Platform.java
@@ -71,6 +71,21 @@ public enum Platform {
MAC_UNKNOWN(OperatingSystem.MAC_OS_X, Architecture.UNKNOWN, "osx64", ".dylib", ""),
/**
+ * Identifies an OpenBSD OS for the Intel x86 32-bit platform.
+ */
+ OPENBSD(OperatingSystem.OPENBSD, Architecture.X86, "openbsd32", ".so", ""),
+
+ /**
+ * Identifies an OpenBSD OS for the Intel x86 64-bit platform.
+ */
+ OPENBSD_64(OperatingSystem.OPENBSD, Architecture.X86_64, "openbsd64", ".so", ""),
+
+ /**
+ * Identifies an OpenBSD OS, the architecture for which we do not know or have not encountered
+ */
+ OPENBSD_UNKNOWN(OperatingSystem.OPENBSD, Architecture.UNKNOWN, "openbsd32", ".so", ""),
+
+ /**
* Identifies an unsupported OS.
*/
UNSUPPORTED(OperatingSystem.UNSUPPORTED, Architecture.UNKNOWN, null, null, "");
@@ -140,6 +155,13 @@ public enum Platform {
if (operatingSystem == OperatingSystem.LINUX) {
paths.add("/bin");
paths.add("/lib");
+ paths.add("/usr/bin");
+ paths.add("/usr/lib");
+ paths.add("/usr/X11R6/bin");
+ paths.add("/usr/X11R6/lib");
+ }
+ else if (operatingSystem == OperatingSystem.OPENBSD) {
+ paths.add("/bin");
paths.add("/usr/bin");
paths.add("/usr/lib");
paths.add("/usr/X11R6/bin");

View File

@ -0,0 +1,24 @@
$OpenBSD: patch-Ghidra_Framework_Help_src_main_java_help_GHelpBuilder_java,v 1.1 2019/07/23 02:09:20 lteo Exp $
GHelpBuilder.java builds the Ghidra help files during build and it logs to
$HOME/.ghidra/.ghidra-${VERSION}/application.log. The GhidraApplicationLayout()
constructor calls ApplicationUtilities.getDefaultUserSettingsDir() which in turn
uses System.getproperty("user.home") to form the above path to application.log.
To prevent $HOME from being touched during build, this patch changes user.home
to ${WRKDIR}/home before the GhidraApplicationLayout() constructor is called so
that logging goes to ${WRKDIR}/home/.ghidra/.ghidra-${VERSION}/application.log
instead.
Index: Ghidra/Framework/Help/src/main/java/help/GHelpBuilder.java
--- Ghidra/Framework/Help/src/main/java/help/GHelpBuilder.java.orig
+++ Ghidra/Framework/Help/src/main/java/help/GHelpBuilder.java
@@ -68,6 +68,8 @@ public class GHelpBuilder {
builder.exitOnError = true;
ApplicationConfiguration config = new ApplicationConfiguration();
+
+ System.setProperty("user.home", "${WRKDIR}/home");
Application.initializeApplication(new GhidraApplicationLayout(), config);
builder.build(args);

View File

@ -0,0 +1,19 @@
$OpenBSD: patch-Ghidra_Framework_SoftwareModeling_Module_manifest,v 1.1 2019/07/23 02:09:20 lteo Exp $
This patch prevents this error:
* Where:
Script '/usr/ports/pobj/ghidra-9.0.4/ghidra-Ghidra_9.0.4_build/gradleScripts/ip.gradle' line: 96
* What went wrong:
Execution failed for task ':SoftwareModeling:ip'.
> No License specified for external library: lib/ST4-4.1.jar in module /usr/ports/pobj/ghidra-9.0.4/ghidra-Ghidra_9.0.4_build/Ghidra/Framework/SoftwareModeling. Expression: map.containsKey(relativePath)
Index: Ghidra/Framework/SoftwareModeling/Module.manifest
--- Ghidra/Framework/SoftwareModeling/Module.manifest.orig
+++ Ghidra/Framework/SoftwareModeling/Module.manifest
@@ -4,3 +4,4 @@ MODULE FILE LICENSE: lib/msv-20050913.jar BSD
MODULE FILE LICENSE: lib/xsdlib-20050913.jar BSD
MODULE FILE LICENSE: lib/antlr-runtime-3.5.2.jar BSD
MODULE FILE LICENSE: lib/antlr-3.5.2.jar BSD
+MODULE FILE LICENSE: lib/ST4-4.1.jar BSD

View File

@ -0,0 +1,25 @@
$OpenBSD: patch-Ghidra_Framework_SoftwareModeling_build_gradle,v 1.1 2019/07/23 02:09:20 lteo Exp $
This patch prevents these errors:
Execution failed for task ':SoftwareModeling:generateGrammarSource'.
> Failed to run Gradle ANTLR Worker
> org/antlr/runtime/RecognitionException
Execution failed for task ':SoftwareModeling:generateGrammarSource'.
> Failed to run Gradle ANTLR Worker
> org/stringtemplate/v4/STGroup
Index: Ghidra/Framework/SoftwareModeling/build.gradle
--- Ghidra/Framework/SoftwareModeling/build.gradle.orig
+++ Ghidra/Framework/SoftwareModeling/build.gradle
@@ -21,6 +21,9 @@ dependencies {
// Must specify the specific antlr implementation to use or it will default to trying to find
// version 2.7.7 (which we don't have)
antlr "org.antlr:antlr:3.5.2"
+ antlr "org.antlr:antlr-runtime:3.5.2"
+ antlr group: "org.antlr", name: "ST4", version: "4.1"
+
}
// Define classpath needed to execute sleigh compiler during development

View File

@ -0,0 +1,15 @@
$OpenBSD: patch-Ghidra_Framework_Utility_src_main_java_ghidra_framework_OperatingSystem_java,v 1.1 2019/07/23 02:09:20 lteo Exp $
From https://github.com/NationalSecurityAgency/ghidra/pull/490
Index: Ghidra/Framework/Utility/src/main/java/ghidra/framework/OperatingSystem.java
--- Ghidra/Framework/Utility/src/main/java/ghidra/framework/OperatingSystem.java.orig
+++ Ghidra/Framework/Utility/src/main/java/ghidra/framework/OperatingSystem.java
@@ -20,6 +20,7 @@ public enum OperatingSystem {
WINDOWS("Windows"),
LINUX("Linux"),
MAC_OS_X("Mac OS X"),
+ OPENBSD("OpenBSD"),
UNSUPPORTED("Unsupported Operating System");
/**

View File

@ -1,8 +1,8 @@
$OpenBSD: patch-support_launch_sh,v 1.1.1.1 2019/05/14 07:01:32 rpointel Exp $
$OpenBSD: patch-Ghidra_RuntimeScripts_Linux_support_launch_sh,v 1.1 2019/07/23 02:09:20 lteo Exp $
Index: support/launch.sh
--- support/launch.sh.orig
+++ support/launch.sh
Index: Ghidra/RuntimeScripts/Linux/support/launch.sh
--- Ghidra/RuntimeScripts/Linux/support/launch.sh.orig
+++ Ghidra/RuntimeScripts/Linux/support/launch.sh
@@ -89,13 +89,13 @@ else
fi

View File

@ -0,0 +1,66 @@
$OpenBSD: patch-build_gradle,v 1.1 2019/07/23 02:09:20 lteo Exp $
From https://github.com/NationalSecurityAgency/ghidra/pull/490
Also disable the Gradle check because we are using a later version of Gradle to
build Ghidra.
Index: build.gradle
--- build.gradle.orig
+++ build.gradle
@@ -4,13 +4,6 @@ apply from: "gradleScripts/eclipseLauncher.gradle"
/***************************************************************************************
- * Make sure the correct version of gradle is being used
- ***************************************************************************************/
-if (gradle.gradleVersion != "5.0") {
- throw new GradleException("Requires Gradle 5.0, but was run with $gradle.gradleVersion")
-}
-
-/***************************************************************************************
* Define the location of JAVA_HOME
***************************************************************************************/
if (System.env.JAVA_HOME) {
@@ -58,7 +51,7 @@ apply from: "gradleScripts/setupJacoco.gradle" // Has
* project.OS_NAMES.each {...}
****************************************************************************/
-project.ext.set("OS_NAMES", ["osx64", "win32", "win64", "linux64"])
+project.ext.set("OS_NAMES", ["osx64", "win32", "win64", "linux64", "openbsd64"])
/*********************************************************************************
* Imports
@@ -120,7 +113,20 @@ def isMac(String platformName) {
}
}
+/*********************************************************************************
+ * Returns true if the platform is an OpenBSD machine
+ *********************************************************************************/
+def isOpenBSD(String platformName) {
+ if (platformName.toLowerCase().startsWith("openbsd")) {
+ return true
+ }
+ else {
+ return false
+ }
+}
+
+
/*********************************************************************************
* Returns true if the platform is a Windows machine.
*********************************************************************************/
@@ -278,6 +284,11 @@ String getCurrentPlatformName() {
else if (osName.startsWith("Mac OS X")) {
if (isX86_64) {
return 'osx64'
+ }
+ }
+ else if (osName.startsWith("OpenBSD")) {
+ if (isX86_64) {
+ return 'openbsd64'
}
}
throw new GradleException("Unrecognized current platform -> osName = $osName, archName = $archName")

View File

@ -0,0 +1,15 @@
$OpenBSD: patch-gradleScripts_distribution_gradle,v 1.1 2019/07/23 02:09:20 lteo Exp $
From https://github.com/NationalSecurityAgency/ghidra/pull/490
Index: gradleScripts/distribution.gradle
--- gradleScripts/distribution.gradle.orig
+++ gradleScripts/distribution.gradle
@@ -987,6 +987,7 @@ task createMultiPlatformInstallationZip(type: Zip) { t
dependsOn ":assemblewin64"
dependsOn ":assemblelinux64"
dependsOn ":assembleosx64"
+ dependsOn ":assembleopenbsd64"
dependsOn ":assembleSourceCommon"
addDecompilerPdfsToZip(t)

View File

@ -0,0 +1,25 @@
$OpenBSD: patch-gradleScripts_ip_gradle,v 1.1 2019/07/23 02:09:20 lteo Exp $
Explicitly exclude *.orig and *.beforesubst files left behind by our patch to
prevent getIpForModule() from breaking like this:
* Where:
Script '/usr/ports/pobj/ghidra-9.0.4/ghidra-Ghidra_9.0.4_build/gradleScripts/ip.gradle' line: 131
* What went wrong:
Execution failed for task ':CabExtract:ip'.
> No IP found for /usr/ports/pobj/ghidra-9.0.4/ghidra-Ghidra_9.0.4_build/GPL/CabExtract/build.gradle.orig in module: /usr/ports/pobj/ghidra-9.0.4/ghidra-Ghidra_9.0.4_build
/GPL/CabExtract. Expression: (ip != null). Values: ip = null
Index: gradleScripts/ip.gradle
--- gradleScripts/ip.gradle.orig
+++ gradleScripts/ip.gradle
@@ -125,6 +125,8 @@ def Map<String, List<String>> getIpForModule(Project p
exclude "**/.settings/**"
exclude "**/.vs/**"
exclude "**/*.vcxproj.user"
+ exclude "**/*.orig"
+ exclude "**/*.beforesubst"
}
tree.each { file ->
String ip = getIp(p.projectDir, file)

View File

@ -1,11 +1,10 @@
@comment $OpenBSD: PLIST,v 1.2 2019/05/26 02:07:44 lteo Exp $
@comment $OpenBSD: PLIST,v 1.3 2019/07/23 02:09:20 lteo Exp $
bin/ghidraRun
share/java/
share/java/ghidra/
share/java/ghidra/Extensions/
share/java/ghidra/Extensions/Eclipse/
share/java/ghidra/Extensions/Eclipse/GhidraDev/
share/java/ghidra/Extensions/Eclipse/GhidraDev/GhidraDev-2.0.1.zip
share/java/ghidra/Extensions/Eclipse/GhidraDev/GhidraDev_README.html
share/java/ghidra/Extensions/Ghidra/
share/java/ghidra/Extensions/Ghidra/Skeleton/
@ -57,8 +56,8 @@ share/java/ghidra/Extensions/Ghidra/Skeleton/src/main/resources/images/README.tx
share/java/ghidra/Extensions/Ghidra/Skeleton/src/test/
share/java/ghidra/Extensions/Ghidra/Skeleton/src/test/java/
share/java/ghidra/Extensions/Ghidra/Skeleton/src/test/java/README.test.txt
share/java/ghidra/Extensions/Ghidra/ghidra_9.0.4_PUBLIC_20190516_SampleTablePlugin.zip
share/java/ghidra/Extensions/Ghidra/ghidra_9.0.4_PUBLIC_20190516_sample.zip
share/java/ghidra/Extensions/Ghidra/ghidra_${VERSION}_PUBLIC_${GHIDRA_DATE}_SampleTablePlugin.zip
share/java/ghidra/Extensions/Ghidra/ghidra_${VERSION}_PUBLIC_${GHIDRA_DATE}_sample.zip
share/java/ghidra/Extensions/IDAPro/
share/java/ghidra/Extensions/IDAPro/Python/
share/java/ghidra/Extensions/IDAPro/Python/6xx/
@ -156,12 +155,8 @@ share/java/ghidra/GPL/DemanglerGnu/LICENSE.txt
share/java/ghidra/GPL/DemanglerGnu/Module.manifest
share/java/ghidra/GPL/DemanglerGnu/build.gradle
share/java/ghidra/GPL/DemanglerGnu/os/
share/java/ghidra/GPL/DemanglerGnu/os/linux64/
share/java/ghidra/GPL/DemanglerGnu/os/linux64/demangler_gnu
share/java/ghidra/GPL/DemanglerGnu/os/osx64/
share/java/ghidra/GPL/DemanglerGnu/os/osx64/demangler_gnu
share/java/ghidra/GPL/DemanglerGnu/os/win64/
share/java/ghidra/GPL/DemanglerGnu/os/win64/demangler_gnu.exe
share/java/ghidra/GPL/DemanglerGnu/os/openbsd64/
@bin share/java/ghidra/GPL/DemanglerGnu/os/openbsd64/demangler_gnu
share/java/ghidra/GPL/DemanglerGnu/src/
share/java/ghidra/GPL/DemanglerGnu/src/demangler_gnu/
share/java/ghidra/GPL/DemanglerGnu/src/demangler_gnu/README.txt
@ -535,15 +530,9 @@ share/java/ghidra/Ghidra/Features/Decompiler/lib/
share/java/ghidra/Ghidra/Features/Decompiler/lib/Decompiler-src.zip
share/java/ghidra/Ghidra/Features/Decompiler/lib/Decompiler.jar
share/java/ghidra/Ghidra/Features/Decompiler/os/
share/java/ghidra/Ghidra/Features/Decompiler/os/linux64/
share/java/ghidra/Ghidra/Features/Decompiler/os/linux64/decompile
share/java/ghidra/Ghidra/Features/Decompiler/os/linux64/sleigh
share/java/ghidra/Ghidra/Features/Decompiler/os/osx64/
share/java/ghidra/Ghidra/Features/Decompiler/os/osx64/decompile
share/java/ghidra/Ghidra/Features/Decompiler/os/osx64/sleigh
share/java/ghidra/Ghidra/Features/Decompiler/os/win64/
share/java/ghidra/Ghidra/Features/Decompiler/os/win64/decompile.exe
share/java/ghidra/Ghidra/Features/Decompiler/os/win64/sleigh.exe
share/java/ghidra/Ghidra/Features/Decompiler/os/openbsd64/
@bin share/java/ghidra/Ghidra/Features/Decompiler/os/openbsd64/decompile
@bin share/java/ghidra/Ghidra/Features/Decompiler/os/openbsd64/sleigh
share/java/ghidra/Ghidra/Features/DecompilerDependent/
share/java/ghidra/Ghidra/Features/DecompilerDependent/LICENSE.txt
share/java/ghidra/Ghidra/Features/DecompilerDependent/Module.manifest
@ -610,18 +599,6 @@ share/java/ghidra/Ghidra/Features/FunctionID/data/
share/java/ghidra/Ghidra/Features/FunctionID/data/building_fid.txt
share/java/ghidra/Ghidra/Features/FunctionID/data/common_symbols_win32.txt
share/java/ghidra/Ghidra/Features/FunctionID/data/common_symbols_win64.txt
share/java/ghidra/Ghidra/Features/FunctionID/data/vs1998_x86.fidbf
share/java/ghidra/Ghidra/Features/FunctionID/data/vs2003_x86.fidbf
share/java/ghidra/Ghidra/Features/FunctionID/data/vs2005_x64.fidbf
share/java/ghidra/Ghidra/Features/FunctionID/data/vs2005_x86.fidbf
share/java/ghidra/Ghidra/Features/FunctionID/data/vs2008_x64.fidbf
share/java/ghidra/Ghidra/Features/FunctionID/data/vs2008_x86.fidbf
share/java/ghidra/Ghidra/Features/FunctionID/data/vs2010_x64.fidbf
share/java/ghidra/Ghidra/Features/FunctionID/data/vs2010_x86.fidbf
share/java/ghidra/Ghidra/Features/FunctionID/data/vs2012_x64.fidbf
share/java/ghidra/Ghidra/Features/FunctionID/data/vs2012_x86.fidbf
share/java/ghidra/Ghidra/Features/FunctionID/data/vs2015_x64.fidbf
share/java/ghidra/Ghidra/Features/FunctionID/data/vs2015_x86.fidbf
share/java/ghidra/Ghidra/Features/FunctionID/ghidra_scripts/
share/java/ghidra/Ghidra/Features/FunctionID/ghidra_scripts/CollectFailedRelocations.java
share/java/ghidra/Ghidra/Features/FunctionID/ghidra_scripts/CreateMultipleLibraries.java
@ -769,9 +746,6 @@ share/java/ghidra/Ghidra/Features/PDB/Module.manifest
share/java/ghidra/Ghidra/Features/PDB/lib/
share/java/ghidra/Ghidra/Features/PDB/lib/PDB-src.zip
share/java/ghidra/Ghidra/Features/PDB/lib/PDB.jar
share/java/ghidra/Ghidra/Features/PDB/os/
share/java/ghidra/Ghidra/Features/PDB/os/win64/
share/java/ghidra/Ghidra/Features/PDB/os/win64/pdb.exe
share/java/ghidra/Ghidra/Features/PDB/src/
share/java/ghidra/Ghidra/Features/PDB/src/pdb/
share/java/ghidra/Ghidra/Features/PDB/src/pdb/README.txt
@ -3290,7 +3264,6 @@ share/java/ghidra/docs/languages/index.html
share/java/ghidra/docs/languages/manual_index.txt
share/java/ghidra/docs/languages/versioning.html
share/java/ghidra/ghidraRun
share/java/ghidra/ghidraRun.bat
share/java/ghidra/licenses/
share/java/ghidra/licenses/Apache_License_2.0.txt
share/java/ghidra/licenses/BSD.txt
@ -3311,39 +3284,13 @@ share/java/ghidra/licenses/Oxygen_Icons_-_LGPL_3.0.txt
share/java/ghidra/licenses/Public_Domain.txt
share/java/ghidra/licenses/Tango_Icons_-_Public_Domain.txt
share/java/ghidra/server/
share/java/ghidra/server/ghidraSvr
share/java/ghidra/server/ghidraSvr.bat
share/java/ghidra/server/server.conf
share/java/ghidra/server/svrAdmin
share/java/ghidra/server/svrAdmin.bat
share/java/ghidra/server/svrInstall
share/java/ghidra/server/svrInstall.bat
share/java/ghidra/server/svrREADME.html
share/java/ghidra/server/svrUninstall
share/java/ghidra/server/svrUninstall.bat
share/java/ghidra/support/
share/java/ghidra/support/LaunchSupport.jar
share/java/ghidra/support/README_createPdbXmlFiles.txt
share/java/ghidra/support/analyzeHeadless
share/java/ghidra/support/analyzeHeadless.bat
share/java/ghidra/support/analyzeHeadlessREADME.html
share/java/ghidra/support/buildExtension.gradle
share/java/ghidra/support/buildGhidraJar
share/java/ghidra/support/buildGhidraJar.bat
share/java/ghidra/support/buildGhidraJarREADME.txt
share/java/ghidra/support/convertStorage
share/java/ghidra/support/convertStorage.bat
share/java/ghidra/support/createPdbXmlFiles.bat
share/java/ghidra/support/debug.log4j.xml
share/java/ghidra/support/dumpGhidraThreads
share/java/ghidra/support/dumpGhidraThreads.bat
share/java/ghidra/support/ghidra.ico
share/java/ghidra/support/ghidraDebug
share/java/ghidra/support/ghidraDebug.bat
share/java/ghidra/support/launch.bat
share/java/ghidra/support/launch.properties
share/java/ghidra/support/launch.sh
share/java/ghidra/support/pythonRun
share/java/ghidra/support/pythonRun.bat
share/java/ghidra/support/sleigh
share/java/ghidra/support/sleigh.bat