|
From: | Daniel J Sebald |
Subject: | Re: java package and MacOS |
Date: | Tue, 27 Nov 2012 15:30:30 -0600 |
User-agent: | Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.24) Gecko/20111108 Fedora/3.1.16-1.fc14 Thunderbird/3.1.16 |
On 11/27/2012 02:58 PM, Ben Abbott wrote:
On Nov 25, 2012, at 6:27 PM, Ben Abbott wrote:On Nov 25, 2012, at 3:29 PM, Alexander Hansen wrote:On 11/25/12 12:37 PM, Ben Abbott wrote:Adding the Octave Forge java package to core Octave breaks building Octave on MacOS X. http://hg.savannah.gnu.org/hgweb/octave/rev/acf0addfc610 libtool: link: /opt/local/bin/g++-mp-4.5 -o dldfcn/.libs/__java__.so -bundle dldfcn/.libs/dldfcn___java___la-__java__.o -L/opt/local/lib ./.libs/liboctinterp.dylib -L/opt/local/libexec/llvm-3.1/lib -L/opt/local/lib/gcc45/gcc/x86_64-apple-darwin11/4.5.4 -L/opt/local/lib/gcc45/gcc/x86_64-apple-darwin11/4.5.4/../../.. -L/opt/local/lib/gcc45 /Users/bpabbott/Development/mercurial/default/sources/liboctave/.libs/liboctave.dylib -lfltk_gl -lfltk -lpthread /opt/local/lib/libhdf5.dylib /opt/local/lib/libfontconfig.dylib /opt/local/lib/libiconv.dylib /opt/local/lib/libfreetype.dylib -lz -lbz2 /opt/local/lib/libexpat.dylib /opt/local/lib/libX11.dylib /opt/local/lib/libxcb.dylib /opt/local/lib/libXau.dylib /opt/local/lib/libXdmcp.dylib -lLLVMAsmParser -lLLVMInstrumentation -lLLVMLinker -lLLVMArchive -lLLVMBitReader -lLLVMDebugInfo -lLLVMJIT -lLLVMipo -lLLVMVectorize -lLLVMBitWriter -lLLVMTableGen -lLLVMHexagonCodeGen -lLLVMHexagonAsmPrinter -lLLVMHexagonDesc -lLLVMHexagonInfo-lLLVMPTXCodeG en -lLLVMPTXDesc -lLLVMPTXInfo -lLLVMPTXAsmPrinter -lLLVMMBlazeDisassembler -lLLVMMBlazeAsmParser -lLLVMMBlazeCodeGen -lLLVMMBlazeDesc -lLLVMMBlazeInfo -lLLVMMBlazeAsmPrinter -lLLVMCppBackendCodeGen -lLLVMCppBackendInfo -lLLVMMSP430CodeGen -lLLVMMSP430Desc -lLLVMMSP430Info -lLLVMMSP430AsmPrinter -lLLVMXCoreCodeGen -lLLVMXCoreDesc -lLLVMXCoreInfo -lLLVMCellSPUCodeGen -lLLVMCellSPUDesc -lLLVMCellSPUInfo -lLLVMMipsDisassembler -lLLVMMipsAsmParser -lLLVMMipsCodeGen -lLLVMMipsDesc -lLLVMMipsInfo -lLLVMMipsAsmPrinter -lLLVMARMDisassembler -lLLVMARMAsmParser -lLLVMARMCodeGen -lLLVMARMDesc -lLLVMARMInfo -lLLVMARMAsmPrinter -lLLVMPowerPCCodeGen -lLLVMPowerPCDesc -lLLVMPowerPCAsmPrinter -lLLVMPowerPCInfo -lLLVMSparcCodeGen -lLLVMSparcDesc -lLLVMSparcInfo -lLLVMX86CodeGen -lLLVMSelectionDAG -lLLVMAsmPrinter -lLLVMX86AsmParser -lLLVMX86Disassembler -lLLVMX86Desc -lLLVMX86Info -lLLVMX86AsmPrinter -lLLVMX86Utils -lLLVMMCDisassembler -lLLVMMCParser -lLLVMInterpreter -lLLVMCodeGen -lLLVM
ScalarOpts
-l LLVMInstCombine -lLLVMTransformUtils -lLLVMipa -lLLVMAnalysis -lLLVMMCJIT -lLLVMRuntimeDyld -lLLVMExecutionEngine -lLLVMTarget -lLLVMMC -lLLVMObject -lLLVMCore -lLLVMSupport ../liboctave/.libs/liboctave.dylib -lstdc++ -lcholmod -lmetis -lumfpack -lsuitesparseconfig -lamd -lcamd -lcolamd -lccolamd -lcxsparse /opt/local/lib/libarpack.dylib -ltatlas -lqrupdate /opt/local/lib/libfftw3.dylib /opt/local/lib/libfftw3f.dylib -llapack -lcblas -lf77blas -latlas -lreadline -lncurses /opt/local/lib/libpcre.dylib -ldl /opt/local/lib/gcc45/libgfortran.dylib -lm -O0 -m64 -pthread -Wl,-dylib_file -Wl,/usr/fubar/lib/octave/3.7.0+/liboctave.1.dylib:/Users/bpabbott/Development/mercurial/default/sources/liboctave/.libs/liboctave.dylib -pthread -framework AGL -framework OpenGL -framework ApplicationServices -framework CocoaUndefined symbols for architecture x86_64: "_JNI_CreateJavaVM", referenced from: initialize_jvm() in dldfcn___java___la-__java__.o "_JNI_GetCreatedJavaVMs", referenced from: initialize_jvm() in dldfcn___java___la-__java__.o ld: symbol(s) not found for architecture x86_64 collect2: ld returned 1 exit status make[3]: *** [dldfcn/__java__.la] Error 1 make[2]: *** [all] Error 2 make[1]: *** [all-recursive] Error 1 make: *** [all] Error 2 Looking at config.log, I have the follow defined. #define JAVA_ARCH "" #define JAVA_HOME "" ac_cv_prog_JAVA=java ac_cv_prog_JAVAC=javac JAVA='java' JAVAC='javac' JAVA_CPPFLAGS='' JAVA_LIBS='' BenUnless I missed seeing it, I didn't notice anything referencing a Java library in that linker line, so that would indeed result in missing symbols. :-) What happens if you set JAVA_HOME before configuring, e.g. by export JAVA_HOME=`/usr/libexec/java_home` ?I haven't tried JAVA_HOME, but setting JAVA_LIBS allowed the build to complete. export JAVA_LIBS="-framework JavaVM" Maybe this should be set in configure.ac for MacOS? BenCarlo's change to configure.ac works for me. http://octave.1599824.n4.nabble.com/changeset-for-configuring-with-Java-on-OSX-tt4647251.html When I try "dlgtest(0)" I get ... Java JDK home directory does not exist. Please adapt java_home in dlgtest.m. Setting JAVA_HOME to that used during the build gives ... setenv JAVA_HOME "/System/Library/Frameworks/JavaVM.framework/Home" Now "dlgtest(0)" results in ... 0 ... STOP 1 ... listdlg tests 2 ... errordlg tests 3 ... warndlg tests 4 ... helpdlg tests 5 ... inputdlg tests 6 ... TeX code tests Run which test? [0]> Is this the expected result? Ben
Yes. When you run one of those tests there should be some dialog boxes appear on the screen if Java is working properly.
BTW, I've just altered dlgtest on my local copy so that it doesn't return if the JAVA_HOME variable isn't defined. Instead, it issues the current warning and continues on. When unsetting the JAVA_HOME variable with
export -n JAVA_HOMEthe Java demo seems to still work properly. I think this conditional can be removed. It isn't clear to me where/why JAVA_HOME definition is required. I'm guessing it is interior to Octave java support somewhere and dlgtest() is assuming something about its requirement, but I keep thinking Octave should just fall back on "java" and "javac" as set up by the shell if nothing else.
As an aside, the function "getenv" doesn't seem to make a distinction between an environment variable not being set and an environment variable set to nothing. Both those cases result in an empty string. Is it worth making a distinction here, either returning a different result or a new routine "isenv()"?
Dan
[Prev in Thread] | Current Thread | [Next in Thread] |