On Thu, Jun 20, 2019 at 04:22:28AM -0600, Anthony J. Bentley wrote: > Lawrence Teo writes: > > Here's an updated diff that makes 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". > > > > Could you please try this diff to see if it resolves your issue? > > Thanks. That issue seems to be resolved, but I'm seeing another build > failure: > > > Task :Base:buildHelp FAILED > Exception in thread "main" ghidra.util.exception.AssertException: Failed to > create user settings directory: > /usr/ports/pobj/ghidra-9.0.4/home/.ghidra/.ghidra-9.0.4 > at ghidra.framework.Application.initialize(Application.java:78) > at > ghidra.framework.Application.initializeApplication(Application.java:114) > at help.GHelpBuilder.main(GHelpBuilder.java:73) > > FAILURE: Build failed with an exception.
Oops! Sorry, that was a mistake on my part. I used SUBST_CMD to substitute WRKDIR in GHelpBuilder.java, and accidentally included the substituted value in my diff when I regenerated patches. I have fixed it in this latest diff. Could you please test if it works for you? Thanks, Lawrence
Index: Makefile =================================================================== RCS file: /cvs/ports/security/ghidra/Makefile,v retrieving revision 1.3 diff -u -p -r1.3 Makefile --- Makefile 11 Jun 2019 00:38:36 -0000 1.3 +++ Makefile 20 Jun 2019 23:15:33 -0000 @@ -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 @@ -17,32 +21,115 @@ HOMEPAGE = https://www.ghidra-sre.org/ MAINTAINER = Remi Pointel <rpoin...@openbsd.org> # Apache v2 -PERMIT_PACKAGE_CDROM = Yes +PERMIT_PACKAGE = Yes + +WANTLIB += c m stdc++ -MASTER_SITES = ${HOMEPAGE} +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}/Ghidra/RuntimeScripts/Linux/support/launch.sh @perl -pi -e 's,#!/bin/bash,#!${LOCALBASE}/bin/bash,' \ - ${WRKSRC}/support/launch.sh + ${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> Index: distinfo =================================================================== RCS file: /cvs/ports/security/ghidra/distinfo,v retrieving revision 1.2 diff -u -p -r1.2 distinfo --- distinfo 26 May 2019 02:07:44 -0000 1.2 +++ distinfo 20 Jun 2019 23:15:33 -0000 @@ -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 Index: files/repos.gradle =================================================================== RCS file: files/repos.gradle diff -N files/repos.gradle --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ files/repos.gradle 20 Jun 2019 23:15:33 -0000 @@ -0,0 +1,7 @@ +allprojects { + repositories { + mavenCentral() + jcenter() + flatDir name:'flat', dirs:["${WRKDIR}/flatRepo"] + } +} Index: patches/patch-GPL_CabExtract_build_gradle =================================================================== RCS file: patches/patch-GPL_CabExtract_build_gradle diff -N patches/patch-GPL_CabExtract_build_gradle --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ patches/patch-GPL_CabExtract_build_gradle 20 Jun 2019 23:15:33 -0000 @@ -0,0 +1,14 @@ +$OpenBSD$ + +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 Index: patches/patch-GPL_DemanglerGnu_Module_manifest =================================================================== RCS file: patches/patch-GPL_DemanglerGnu_Module_manifest diff -N patches/patch-GPL_DemanglerGnu_Module_manifest --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ patches/patch-GPL_DemanglerGnu_Module_manifest 20 Jun 2019 23:15:33 -0000 @@ -0,0 +1,12 @@ +$OpenBSD$ + +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 Index: patches/patch-GPL_DemanglerGnu_build_gradle =================================================================== RCS file: patches/patch-GPL_DemanglerGnu_build_gradle diff -N patches/patch-GPL_DemanglerGnu_build_gradle --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ patches/patch-GPL_DemanglerGnu_build_gradle 20 Jun 2019 23:15:33 -0000 @@ -0,0 +1,24 @@ +$OpenBSD$ + +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 { Index: patches/patch-GPL_nativeBuildProperties_gradle =================================================================== RCS file: patches/patch-GPL_nativeBuildProperties_gradle diff -N patches/patch-GPL_nativeBuildProperties_gradle --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ patches/patch-GPL_nativeBuildProperties_gradle 20 Jun 2019 23:15:33 -0000 @@ -0,0 +1,16 @@ +$OpenBSD$ + +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' ++ } + } + } + Index: patches/patch-Ghidra_Features_Decompiler_build_gradle =================================================================== RCS file: patches/patch-Ghidra_Features_Decompiler_build_gradle diff -N patches/patch-Ghidra_Features_Decompiler_build_gradle --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ patches/patch-Ghidra_Features_Decompiler_build_gradle 20 Jun 2019 23:15:33 -0000 @@ -0,0 +1,48 @@ +$OpenBSD$ + +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 { Index: patches/patch-Ghidra_Features_Decompiler_src_decompile_cpp_Makefile =================================================================== RCS file: patches/patch-Ghidra_Features_Decompiler_src_decompile_cpp_Makefile diff -N patches/patch-Ghidra_Features_Decompiler_src_decompile_cpp_Makefile --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ patches/patch-Ghidra_Features_Decompiler_src_decompile_cpp_Makefile 20 Jun 2019 23:15:33 -0000 @@ -0,0 +1,19 @@ +$OpenBSD$ + +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++ + Index: patches/patch-Ghidra_Features_Decompiler_src_decompile_cpp_types_h =================================================================== RCS file: patches/patch-Ghidra_Features_Decompiler_src_decompile_cpp_types_h diff -N patches/patch-Ghidra_Features_Decompiler_src_decompile_cpp_types_h --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ patches/patch-Ghidra_Features_Decompiler_src_decompile_cpp_types_h 20 Jun 2019 23:15:33 -0000 @@ -0,0 +1,15 @@ +$OpenBSD$ + +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; Index: patches/patch-Ghidra_Features_FunctionID_build_gradle =================================================================== RCS file: patches/patch-Ghidra_Features_FunctionID_build_gradle diff -N patches/patch-Ghidra_Features_FunctionID_build_gradle --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ patches/patch-Ghidra_Features_FunctionID_build_gradle 20 Jun 2019 23:15:33 -0000 @@ -0,0 +1,19 @@ +$OpenBSD$ + +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" )) + } + } + Index: patches/patch-Ghidra_Framework_Generic_src_main_java_ghidra_framework_Platform_java =================================================================== RCS file: patches/patch-Ghidra_Framework_Generic_src_main_java_ghidra_framework_Platform_java diff -N patches/patch-Ghidra_Framework_Generic_src_main_java_ghidra_framework_Platform_java --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ patches/patch-Ghidra_Framework_Generic_src_main_java_ghidra_framework_Platform_java 20 Jun 2019 23:15:33 -0000 @@ -0,0 +1,41 @@ +$OpenBSD$ + +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"); Index: patches/patch-Ghidra_Framework_Help_src_main_java_help_GHelpBuilder_java =================================================================== RCS file: patches/patch-Ghidra_Framework_Help_src_main_java_help_GHelpBuilder_java diff -N patches/patch-Ghidra_Framework_Help_src_main_java_help_GHelpBuilder_java --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ patches/patch-Ghidra_Framework_Help_src_main_java_help_GHelpBuilder_java 20 Jun 2019 23:15:33 -0000 @@ -0,0 +1,24 @@ +$OpenBSD$ + +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); Index: patches/patch-Ghidra_Framework_SoftwareModeling_Module_manifest =================================================================== RCS file: patches/patch-Ghidra_Framework_SoftwareModeling_Module_manifest diff -N patches/patch-Ghidra_Framework_SoftwareModeling_Module_manifest --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ patches/patch-Ghidra_Framework_SoftwareModeling_Module_manifest 20 Jun 2019 23:15:33 -0000 @@ -0,0 +1,19 @@ +$OpenBSD$ + +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 Index: patches/patch-Ghidra_Framework_SoftwareModeling_build_gradle =================================================================== RCS file: patches/patch-Ghidra_Framework_SoftwareModeling_build_gradle diff -N patches/patch-Ghidra_Framework_SoftwareModeling_build_gradle --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ patches/patch-Ghidra_Framework_SoftwareModeling_build_gradle 20 Jun 2019 23:15:33 -0000 @@ -0,0 +1,25 @@ +$OpenBSD$ + +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 Index: patches/patch-Ghidra_Framework_Utility_src_main_java_ghidra_framework_OperatingSystem_java =================================================================== RCS file: patches/patch-Ghidra_Framework_Utility_src_main_java_ghidra_framework_OperatingSystem_java diff -N patches/patch-Ghidra_Framework_Utility_src_main_java_ghidra_framework_OperatingSystem_java --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ patches/patch-Ghidra_Framework_Utility_src_main_java_ghidra_framework_OperatingSystem_java 20 Jun 2019 23:15:33 -0000 @@ -0,0 +1,13 @@ +$OpenBSD$ + +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"); + + /** Index: patches/patch-Ghidra_RuntimeScripts_Linux_support_launch_sh =================================================================== RCS file: patches/patch-Ghidra_RuntimeScripts_Linux_support_launch_sh diff -N patches/patch-Ghidra_RuntimeScripts_Linux_support_launch_sh --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ patches/patch-Ghidra_RuntimeScripts_Linux_support_launch_sh 20 Jun 2019 23:15:33 -0000 @@ -0,0 +1,30 @@ +$OpenBSD$ + +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 + + # Make sure some kind of java is on the path. It's required to run the LaunchSupport program. +-if ! [ -x "$(command -v java)" ] ; then ++if ! [ -x "$(javaPathHelper -c ghidra)" ] ; then + echo "Java runtime not found. Please refer to the Ghidra Installation Guide's Troubleshooting section." + exit 1 + fi + + # Get the JDK that will be used to launch Ghidra +-JAVA_HOME="$(java -cp "${LS_CPATH}" LaunchSupport "${INSTALL_DIR}" -jdk_home -save)" ++JAVA_HOME="$(javaPathHelper -h ghidra)" + if [ ! $? -eq 0 ]; then + # No JDK has been setup yet. Let the user choose one. + java -cp "${LS_CPATH}" LaunchSupport "${INSTALL_DIR}" -jdk_home -ask +@@ -111,7 +111,7 @@ fi + JAVA_CMD="${JAVA_HOME}/bin/java" + + # Get the configurable VM arguments from the launch properties +-VMARG_LIST+=" $(java -cp "${LS_CPATH}" LaunchSupport "${INSTALL_DIR}" -vmargs)" ++VMARG_LIST+=" $("${JAVA_CMD}" -cp "${LS_CPATH}" LaunchSupport "${INSTALL_DIR}" -vmargs)" + + # Add extra macOS VM arguments + if [ "$(uname -s)" = "Darwin" ]; then Index: patches/patch-build_gradle =================================================================== RCS file: patches/patch-build_gradle diff -N patches/patch-build_gradle --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ patches/patch-build_gradle 20 Jun 2019 23:15:33 -0000 @@ -0,0 +1,64 @@ +$OpenBSD$ + +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") Index: patches/patch-gradleScripts_distribution_gradle =================================================================== RCS file: patches/patch-gradleScripts_distribution_gradle diff -N patches/patch-gradleScripts_distribution_gradle --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ patches/patch-gradleScripts_distribution_gradle 20 Jun 2019 23:15:33 -0000 @@ -0,0 +1,13 @@ +$OpenBSD$ + +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) Index: patches/patch-gradleScripts_ip_gradle =================================================================== RCS file: patches/patch-gradleScripts_ip_gradle diff -N patches/patch-gradleScripts_ip_gradle --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ patches/patch-gradleScripts_ip_gradle 20 Jun 2019 23:15:33 -0000 @@ -0,0 +1,25 @@ +$OpenBSD$ + +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) Index: patches/patch-support_launch_sh =================================================================== RCS file: patches/patch-support_launch_sh diff -N patches/patch-support_launch_sh --- patches/patch-support_launch_sh 14 May 2019 07:01:32 -0000 1.1.1.1 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,30 +0,0 @@ -$OpenBSD: patch-support_launch_sh,v 1.1.1.1 2019/05/14 07:01:32 rpointel Exp $ - -Index: support/launch.sh ---- support/launch.sh.orig -+++ support/launch.sh -@@ -89,13 +89,13 @@ else - fi - - # Make sure some kind of java is on the path. It's required to run the LaunchSupport program. --if ! [ -x "$(command -v java)" ] ; then -+if ! [ -x "$(javaPathHelper -c ghidra)" ] ; then - echo "Java runtime not found. Please refer to the Ghidra Installation Guide's Troubleshooting section." - exit 1 - fi - - # Get the JDK that will be used to launch Ghidra --JAVA_HOME="$(java -cp "${LS_CPATH}" LaunchSupport "${INSTALL_DIR}" -jdk_home -save)" -+JAVA_HOME="$(javaPathHelper -h ghidra)" - if [ ! $? -eq 0 ]; then - # No JDK has been setup yet. Let the user choose one. - java -cp "${LS_CPATH}" LaunchSupport "${INSTALL_DIR}" -jdk_home -ask -@@ -111,7 +111,7 @@ fi - JAVA_CMD="${JAVA_HOME}/bin/java" - - # Get the configurable VM arguments from the launch properties --VMARG_LIST+=" $(java -cp "${LS_CPATH}" LaunchSupport "${INSTALL_DIR}" -vmargs)" -+VMARG_LIST+=" $("${JAVA_CMD}" -cp "${LS_CPATH}" LaunchSupport "${INSTALL_DIR}" -vmargs)" - - # Add extra macOS VM arguments - if [ "$(uname -s)" = "Darwin" ]; then Index: pkg/PLIST =================================================================== RCS file: /cvs/ports/security/ghidra/pkg/PLIST,v retrieving revision 1.2 diff -u -p -r1.2 PLIST --- pkg/PLIST 26 May 2019 02:07:44 -0000 1.2 +++ pkg/PLIST 20 Jun 2019 23:15:33 -0000 @@ -5,7 +5,6 @@ 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/Skel 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/LICEN 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/Decomp 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/Functi 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/Mo 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.h 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_ 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