On Mon, Jun 17, 2019 at 08:10:45PM -0600, Anthony J. Bentley wrote: > Lawrence Teo writes: > > Here is an updated diff now that Gradle has been imported. > > It doesn't build for me.
Hi Anthony, Thanks for testing! I checked your build log and found that the Ghidra build process tries to fetch dependent files on demand while building. I was able to replicate your build failure when I tried building the port as _pbuild. 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? Thank you, 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 01:40:09 -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 01:40:09 -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 01:40:09 -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 01:40:09 -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 01:40:09 -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 01:40:09 -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 01:40:09 -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 01:40:09 -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 01:40:09 -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 01:40:09 -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 01:40:09 -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 01:40:09 -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 01:40:09 -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", "/usr/ports/pobj/ghidra-9.0.4/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 01:40:09 -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 01:40:09 -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 01:40:09 -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 01:40:09 -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 01:40:09 -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 01:40:09 -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 01:40:09 -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 01:40:09 -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