On Tue, Aug 27, 2019 at 10:52:52AM -0000, Christian Weisgerber wrote: > On 2019-08-21, Stuart Henderson <s...@spacehopper.org> wrote: > > >> > * If you build ghidra on a system where gcc/g++/libstdc++ are > >> > available, it does indeed link something against libstdc++ and > >> > port-lib-depends-check indicates WANTLIB+=stdc++. > >> > > >> > * If you build ghidra on a system where gcc/g++/libstdc++ are NOT > >> > available, it still builds fine, something is linked against > >> > libc++/libc++abi/pthread and port-lib-depends-check consequently > >> > indicates WANTLIB+=${COMPILER_LIBCXX}. > > > > Is this enough? Untested beyond "does it create the right symlink". > > > > --- Makefile 12 Jul 2019 20:49:02 -0000 1.4 > > +++ Makefile 21 Aug 2019 08:21:22 -0000 > > @@ -39,6 +39,7 @@ post-extract: > > ${WRKSRC}/ghidraRun > > @perl -pi -e 's,#!/bin/bash,#!${LOCALBASE}/bin/bash,' \ > > ${WRKSRC}/support/launch.sh > > + ln -s c++ ${WRKDIR}/bin/g++ > > This actually breaks the build: > > > Task :Decompiler:compileDecompileOpenbsd64ExecutableDecompileCpp FAILED > > FAILURE: Build failed with an exception. > > * What went wrong: > Execution failed for task > ':Decompiler:compileDecompileOpenbsd64ExecutableDecompileCpp'. > > java.lang.NullPointerException (no error message)
I have been testing and tinkering as well but haven't gotten very far. Using sthen's diff and passing --stacktrace to gradle I got this output: FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':Decompiler:compileDecompileOpenbsd64ExecutableDecompileCpp'. > java.lang.NullPointerException (no error message) * Try: Run with --info or --debug option to get more log output. Run with --scan to get full insights. * Exception is: org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':Decompiler:compileDecompileOpenbsd64ExecutableDecompileCpp'. at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:38) at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.executeTask(EventFiringTaskExecuter.java:77) at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:55) at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:52) at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:416) at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:406) at org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:165) at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:250) at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:158) at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:102) at org.gradle.internal.operations.DelegatingBuildOperationExecutor.call(DelegatingBuildOperationExecutor.java:36) at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:52) at org.gradle.execution.plan.LocalTaskNodeExecutor.execute(LocalTaskNodeExecutor.java:43) at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:355) at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:343) at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:336) at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:322) at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker$1.execute(DefaultPlanExecutor.java:134) at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker$1.execute(DefaultPlanExecutor.java:129) at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.execute(DefaultPlanExecutor.java:202) at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.executeNextNode(DefaultPlanExecutor.java:193) at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.run(DefaultPlanExecutor.java:129) at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64) at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48) at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56) Caused by: java.lang.NullPointerException at org.gradle.nativeplatform.toolchain.internal.gcc.GccPlatformToolProvider.versionAwareCompiler(GccPlatformToolProvider.java:119) at org.gradle.nativeplatform.toolchain.internal.gcc.GccPlatformToolProvider.createCppCompiler(GccPlatformToolProvider.java:104) at org.gradle.nativeplatform.toolchain.internal.AbstractPlatformToolProvider.newCompiler(AbstractPlatformToolProvider.java:119) at org.gradle.language.nativeplatform.tasks.AbstractNativeSourceCompileTask.getCompilerVersion(AbstractNativeSourceCompileTask.java:98) at org.gradle.language.cpp.tasks.CppCompile_Decorated.getCompilerVersion(Unknown Source) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at org.gradle.api.internal.tasks.properties.bean.AbstractNestedRuntimeBeanNode$BeanPropertyValue$1$1.create(AbstractNestedRuntimeBeanNode.java:80) at org.gradle.util.SingleMessageLogger.whileDisabled(SingleMessageLogger.java:467) at org.gradle.api.internal.tasks.properties.bean.AbstractNestedRuntimeBeanNode$BeanPropertyValue$1.get(AbstractNestedRuntimeBeanNode.java:76) at com.google.common.base.Suppliers$NonSerializableMemoizingSupplier.get(Suppliers.java:167) at org.gradle.api.internal.tasks.properties.bean.AbstractNestedRuntimeBeanNode$BeanPropertyValue.call(AbstractNestedRuntimeBeanNode.java:148) at org.gradle.api.internal.tasks.properties.annotations.NestedBeanAnnotationHandler.visitPropertyValue(NestedBeanAnnotationHandler.java:64) at org.gradle.api.internal.tasks.properties.bean.AbstractNestedRuntimeBeanNode.visitProperties(AbstractNestedRuntimeBeanNode.java:59) at org.gradle.api.internal.tasks.properties.bean.RootRuntimeBeanNode.visitNode(RootRuntimeBeanNode.java:32) at org.gradle.api.internal.tasks.properties.DefaultPropertyWalker.visitProperties(DefaultPropertyWalker.java:41) at org.gradle.api.internal.tasks.TaskPropertyUtils.visitProperties(TaskPropertyUtils.java:42) at org.gradle.api.internal.tasks.properties.DefaultTaskProperties.resolve(DefaultTaskProperties.java:63) at org.gradle.api.internal.tasks.execution.ResolveTaskExecutionModeExecuter.execute(ResolveTaskExecutionModeExecuter.java:65) at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:57) at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:56) at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:36) ... 24 more * Get more help at https://help.gradle.org BUILD FAILED in 15m 51s That looks like something related to Gradle, so I did some digging in the *.gradle files in the Ghidra source tree. I believe the file that needs to be fixed is ghidra-9.0.4/ghidra-Ghidra_9.0.4_build/GPL/nativeBuildProperties.gradle but I haven't figured out exactly how yet. Some seemingly-related resources I've been looking at are: https://discuss.gradle.org/t/having-gradle-compile-with-g-and-not-gcc/8625 https://docs.gradle.org/current/dsl/org.gradle.nativeplatform.NativeExecutableBinarySpec.html I tried the attached diff but it failed with a java.lang.NullPointerException as well where the stack trace looks similar to the one above. I'll keep trying. Index: Makefile =================================================================== RCS file: /cvs/ports/security/ghidra/Makefile,v retrieving revision 1.6 diff -u -p -r1.6 Makefile --- Makefile 23 Jul 2019 02:52:58 -0000 1.6 +++ Makefile 29 Aug 2019 01:32:19 -0000 @@ -7,7 +7,7 @@ COMMENT = software reverse engineering ( VERSION = 9.0.4 GHIDRA_DATE = 20190516 -REVISION = 2 +REVISION = 3 GH_ACCOUNT = NationalSecurityAgency GH_PROJECT = ghidra @@ -113,11 +113,13 @@ pre-build: 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 + --no-daemon --offline --stacktrace -I ${WRKDIR}/repos.gradle \ + yajswDevUnpack do-build: cd ${WRKSRC} && ${SETENV} ${MAKE_ENV} gradle -g ${WRKDIR}/gradle \ - --no-daemon --offline -I ${WRKDIR}/repos.gradle buildGhidra + --no-daemon --offline --stacktrace -I ${WRKDIR}/repos.gradle \ + buildGhidra do-install: ${INSTALL_DATA_DIR} ${PREFIX}/share/java Index: patches/patch-GPL_nativeBuildProperties_gradle =================================================================== RCS file: /cvs/ports/security/ghidra/patches/patch-GPL_nativeBuildProperties_gradle,v retrieving revision 1.1 diff -u -p -r1.1 patch-GPL_nativeBuildProperties_gradle --- patches/patch-GPL_nativeBuildProperties_gradle 23 Jul 2019 02:09:20 -0000 1.1 +++ patches/patch-GPL_nativeBuildProperties_gradle 29 Aug 2019 01:05:06 -0000 @@ -5,7 +5,7 @@ Adapted from https://github.com/National Index: GPL/nativeBuildProperties.gradle --- GPL/nativeBuildProperties.gradle.orig +++ GPL/nativeBuildProperties.gradle -@@ -75,6 +75,10 @@ model { +@@ -75,7 +75,19 @@ model { architecture 'x86_64' operatingSystem 'osx' } @@ -14,5 +14,14 @@ Index: GPL/nativeBuildProperties.gradle + operatingSystem 'openbsd' + } } ++ ++ toolChains { ++ gcc(Gcc) { ++ eachPlatform { tools -> ++ tools.cppCompiler.executable = "c++" ++ } ++ } ++ } } + /*******************************************************************************************