ocaml / opam-repository

Main public package repository for opam, the source package manager of OCaml.
https://opam.ocaml.org
Creative Commons Zero v1.0 Universal
518 stars 1.13k forks source link

llvm package not working on mac with homebrew llvm #8987

Closed nojb closed 7 years ago

nojb commented 7 years ago

I installed llvm 4.0.0 using homebrew and installed the opam llvm package successfully.

However, when trying to compile a program using ocamlbuild+ocamlfind the linking phase fails with:

ocamlbuild -classic-display -use-ocamlfind src/main.native
ocamlfind ocamlopt -linkpkg -g -package llvm -package llvm.bitwriter -I src src/error.cmx src/irep.cmx src/tabs.cmx src/compile.cmx src/parser.cmx src/lexer.cmx src/main.cmx -o src/main.native
+ ocamlfind ocamlopt -linkpkg -g -package llvm -package llvm.bitwriter -I src src/error.cmx src/irep.cmx src/tabs.cmx src/compile.cmx src/parser.cmx src/lexer.cmx src/main.cmx -o src/main.native
ld: library not found for -lLLVM-4.0
clang: error: linker command failed with exit code 1 (use -v to see invocation)
File "caml_startup", line 1:
Error: Error during linking
Command exited with code 2.
make: *** [src/main.native] Error 10

You can reproduce by cloning https://github.com/nojb/llvm-tiger and typing make.

Any ideas ?

/cc @jpdeplaix

kit-ty-kate commented 7 years ago

Could you give me the location of your LLVM library ? (what's in the directory ?) What do you get using this command ? "$(brew --cellar)"/llvm/${version}*/bin/llvm-config

nojb commented 7 years ago

Hi @jpdeplaix!

My llvm installation lives at /usr/local/Cellar/llvm/4.0.0/lib: its contents are:

BugpointPasses.dylib
LLVMHello.dylib
LLVMPolly.so
clang
cmake
libLLVMAArch64AsmParser.dylib
libLLVMAArch64AsmPrinter.dylib
libLLVMAArch64CodeGen.dylib
libLLVMAArch64Desc.dylib
libLLVMAArch64Disassembler.dylib
libLLVMAArch64Info.dylib
libLLVMAArch64Utils.dylib
libLLVMAMDGPUAsmParser.dylib
libLLVMAMDGPUAsmPrinter.dylib
libLLVMAMDGPUCodeGen.dylib
libLLVMAMDGPUDesc.dylib
libLLVMAMDGPUDisassembler.dylib
libLLVMAMDGPUInfo.dylib
libLLVMAMDGPUUtils.dylib
libLLVMARMAsmParser.dylib
libLLVMARMAsmPrinter.dylib
libLLVMARMCodeGen.dylib
libLLVMARMDesc.dylib
libLLVMARMDisassembler.dylib
libLLVMARMInfo.dylib
libLLVMAnalysis.dylib
libLLVMAsmParser.dylib
libLLVMAsmPrinter.dylib
libLLVMBPFAsmPrinter.dylib
libLLVMBPFCodeGen.dylib
libLLVMBPFDesc.dylib
libLLVMBPFDisassembler.dylib
libLLVMBPFInfo.dylib
libLLVMBitReader.dylib
libLLVMBitWriter.dylib
libLLVMCodeGen.dylib
libLLVMCore.dylib
libLLVMCoroutines.dylib
libLLVMCoverage.dylib
libLLVMDebugInfoCodeView.dylib
libLLVMDebugInfoDWARF.dylib
libLLVMDebugInfoMSF.dylib
libLLVMDebugInfoPDB.dylib
libLLVMDemangle.dylib
libLLVMExecutionEngine.dylib
libLLVMGlobalISel.dylib
libLLVMHexagonAsmParser.dylib
libLLVMHexagonCodeGen.dylib
libLLVMHexagonDesc.dylib
libLLVMHexagonDisassembler.dylib
libLLVMHexagonInfo.dylib
libLLVMIRReader.dylib
libLLVMInstCombine.dylib
libLLVMInstrumentation.dylib
libLLVMInterpreter.dylib
libLLVMLTO.dylib
libLLVMLanaiAsmParser.dylib
libLLVMLanaiCodeGen.dylib
libLLVMLanaiDesc.dylib
libLLVMLanaiDisassembler.dylib
libLLVMLanaiInfo.dylib
libLLVMLanaiInstPrinter.dylib
libLLVMLibDriver.dylib
libLLVMLineEditor.dylib
libLLVMLinker.dylib
libLLVMMC.dylib
libLLVMMCDisassembler.dylib
libLLVMMCJIT.dylib
libLLVMMCParser.dylib
libLLVMMIRParser.dylib
libLLVMMSP430AsmPrinter.dylib
libLLVMMSP430CodeGen.dylib
libLLVMMSP430Desc.dylib
libLLVMMSP430Info.dylib
libLLVMMipsAsmParser.dylib
libLLVMMipsAsmPrinter.dylib
libLLVMMipsCodeGen.dylib
libLLVMMipsDesc.dylib
libLLVMMipsDisassembler.dylib
libLLVMMipsInfo.dylib
libLLVMNVPTXAsmPrinter.dylib
libLLVMNVPTXCodeGen.dylib
libLLVMNVPTXDesc.dylib
libLLVMNVPTXInfo.dylib
libLLVMObjCARCOpts.dylib
libLLVMObject.dylib
libLLVMObjectYAML.dylib
libLLVMOption.dylib
libLLVMOrcJIT.dylib
libLLVMPasses.dylib
libLLVMPowerPCAsmParser.dylib
libLLVMPowerPCAsmPrinter.dylib
libLLVMPowerPCCodeGen.dylib
libLLVMPowerPCDesc.dylib
libLLVMPowerPCDisassembler.dylib
libLLVMPowerPCInfo.dylib
libLLVMProfileData.dylib
libLLVMRISCVCodeGen.dylib
libLLVMRISCVDesc.dylib
libLLVMRISCVInfo.dylib
libLLVMRuntimeDyld.dylib
libLLVMScalarOpts.dylib
libLLVMSelectionDAG.dylib
libLLVMSparcAsmParser.dylib
libLLVMSparcAsmPrinter.dylib
libLLVMSparcCodeGen.dylib
libLLVMSparcDesc.dylib
libLLVMSparcDisassembler.dylib
libLLVMSparcInfo.dylib
libLLVMSupport.dylib
libLLVMSymbolize.dylib
libLLVMSystemZAsmParser.dylib
libLLVMSystemZAsmPrinter.dylib
libLLVMSystemZCodeGen.dylib
libLLVMSystemZDesc.dylib
libLLVMSystemZDisassembler.dylib
libLLVMSystemZInfo.dylib
libLLVMTableGen.dylib
libLLVMTarget.dylib
libLLVMTransformUtils.dylib
libLLVMVectorize.dylib
libLLVMX86AsmParser.dylib
libLLVMX86AsmPrinter.dylib
libLLVMX86CodeGen.dylib
libLLVMX86Desc.dylib
libLLVMX86Disassembler.dylib
libLLVMX86Info.dylib
libLLVMX86Utils.dylib
libLLVMXCoreAsmPrinter.dylib
libLLVMXCoreCodeGen.dylib
libLLVMXCoreDesc.dylib
libLLVMXCoreDisassembler.dylib
libLLVMXCoreInfo.dylib
libLLVMXRay.dylib
libLLVMipo.dylib
libLTO.dylib
libPolly.dylib
libPollyISL.dylib
libPollyPPCG.dylib
libc++.1.0.dylib
libc++.1.dylib
libc++.a
libc++.dylib
libc++experimental.a
libclang.dylib
libclangARCMigrate.dylib
libclangAST.dylib
libclangASTMatchers.dylib
libclangAnalysis.dylib
libclangApplyReplacements.dylib
libclangBasic.dylib
libclangChangeNamespace.dylib
libclangCodeGen.dylib
libclangDriver.dylib
libclangDynamicASTMatchers.dylib
libclangEdit.dylib
libclangFormat.dylib
libclangFrontend.dylib
libclangFrontendTool.dylib
libclangIncludeFixer.dylib
libclangIncludeFixerPlugin.dylib
libclangIndex.dylib
libclangLex.dylib
libclangMove.dylib
libclangParse.dylib
libclangQuery.dylib
libclangRename.dylib
libclangReorderFields.dylib
libclangRewrite.dylib
libclangRewriteFrontend.dylib
libclangSema.dylib
libclangSerialization.dylib
libclangStaticAnalyzerCheckers.dylib
libclangStaticAnalyzerCore.dylib
libclangStaticAnalyzerFrontend.dylib
libclangTidy.dylib
libclangTidyBoostModule.dylib
libclangTidyCERTModule.dylib
libclangTidyCppCoreGuidelinesModule.dylib
libclangTidyGoogleModule.dylib
libclangTidyLLVMModule.dylib
libclangTidyMPIModule.dylib
libclangTidyMiscModule.dylib
libclangTidyModernizeModule.dylib
libclangTidyPerformanceModule.dylib
libclangTidyPlugin.dylib
libclangTidyReadabilityModule.dylib
libclangTidyUtils.dylib
libclangTooling.dylib
libclangToolingCore.dylib
libfindAllSymbols.dylib
libgomp.dylib
libiomp5.dylib
liblldCOFF.dylib
liblldConfig.dylib
liblldCore.dylib
liblldDriver.dylib
liblldELF.dylib
liblldMachO.dylib
liblldReaderWriter.dylib
liblldYAML.dylib
libomp.dylib
libunwind.1.0.dylib
libunwind.1.dylib
libunwind.a
libunwind.dylib
python2.7

The command $(brew --cellar)/llvm/4.0.0/bin/llvm-config --libs gives

-lLLVMLTO -lLLVMPasses -lLLVMObjCARCOpts -lLLVMMIRParser -lLLVMSymbolize -lLLVMDebugInfoPDB -lLLVMDebugInfoDWARF -lLLVMCoverage -lLLVMTableGen -lLLVMOrcJIT -lLLVMXCoreDisassembler -lLLVMXCoreCodeGen -lLLVMXCoreDesc -lLLVMXCoreInfo -lLLVMXCoreAsmPrinter -lLLVMSystemZDisassembler -lLLVMSystemZCodeGen -lLLVMSystemZAsmParser -lLLVMSystemZDesc -lLLVMSystemZInfo -lLLVMSystemZAsmPrinter -lLLVMSparcDisassembler -lLLVMSparcCodeGen -lLLVMSparcAsmParser -lLLVMSparcDesc -lLLVMSparcInfo -lLLVMSparcAsmPrinter -lLLVMRISCVDesc -lLLVMRISCVCodeGen -lLLVMRISCVInfo -lLLVMPowerPCDisassembler -lLLVMPowerPCCodeGen -lLLVMPowerPCAsmParser -lLLVMPowerPCDesc -lLLVMPowerPCInfo -lLLVMPowerPCAsmPrinter -lLLVMNVPTXCodeGen -lLLVMNVPTXDesc -lLLVMNVPTXInfo -lLLVMNVPTXAsmPrinter -lLLVMMSP430CodeGen -lLLVMMSP430Desc -lLLVMMSP430Info -lLLVMMSP430AsmPrinter -lLLVMMipsDisassembler -lLLVMMipsCodeGen -lLLVMMipsAsmParser -lLLVMMipsDesc -lLLVMMipsInfo -lLLVMMipsAsmPrinter -lLLVMLanaiDisassembler -lLLVMLanaiCodeGen -lLLVMLanaiAsmParser -lLLVMLanaiDesc -lLLVMLanaiInstPrinter -lLLVMLanaiInfo -lLLVMHexagonDisassembler -lLLVMHexagonCodeGen -lLLVMHexagonAsmParser -lLLVMHexagonDesc -lLLVMHexagonInfo -lLLVMBPFDisassembler -lLLVMBPFCodeGen -lLLVMBPFDesc -lLLVMBPFInfo -lLLVMBPFAsmPrinter -lLLVMARMDisassembler -lLLVMARMCodeGen -lLLVMARMAsmParser -lLLVMARMDesc -lLLVMARMInfo -lLLVMARMAsmPrinter -lLLVMAMDGPUDisassembler -lLLVMAMDGPUCodeGen -lLLVMAMDGPUAsmParser -lLLVMAMDGPUDesc -lLLVMAMDGPUInfo -lLLVMAMDGPUAsmPrinter -lLLVMAMDGPUUtils -lLLVMAArch64Disassembler -lLLVMAArch64CodeGen -lLLVMAArch64AsmParser -lLLVMAArch64Desc -lLLVMAArch64Info -lLLVMAArch64AsmPrinter -lLLVMAArch64Utils -lLLVMObjectYAML -lLLVMLibDriver -lLLVMOption -lLLVMX86Disassembler -lLLVMX86AsmParser -lLLVMX86CodeGen -lLLVMGlobalISel -lLLVMSelectionDAG -lLLVMAsmPrinter -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMX86Desc -lLLVMMCDisassembler -lLLVMX86Info -lLLVMX86AsmPrinter -lLLVMX86Utils -lLLVMMCJIT -lLLVMLineEditor -lLLVMInterpreter -lLLVMExecutionEngine -lLLVMRuntimeDyld -lLLVMCodeGen -lLLVMTarget -lLLVMCoroutines -lLLVMipo -lLLVMInstrumentation -lLLVMVectorize -lLLVMScalarOpts -lLLVMLinker -lLLVMIRReader -lLLVMAsmParser -lLLVMInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMObject -lLLVMMCParser -lLLVMMC -lLLVMBitReader -lLLVMProfileData -lLLVMCore -lLLVMSupport -lLLVMDemangle

(note that there is no -lLLVM-4.0)

Let me know if you want any other information. Thanks!

kit-ty-kate commented 7 years ago

Could you try using this repository as opam temporary repository ? https://github.com/jpdeplaix/opam-repository The last commit should fix this but I'm not sure :/

If it works I'll open the PR.

nojb commented 7 years ago

Sure; currently at work, will try it tonight and report back. Thanks for the quick reply!

nojb commented 7 years ago

I get:

$ opam install llvm.4.0.0
The following actions will be performed:
  ∗  install llvm 4.0.0

=-=- Gathering sources =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=  🐫 

=-=- Processing actions -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=  🐫 
[ERROR] The compilation of llvm failed at "bash -ex install.sh 4.0.0 /Users/nojb/.opam/4.04.0/lib".
Processing  1/1: [llvm: sh]
#=== ERROR while installing llvm.4.0.0 ========================================#
# opam-version 1.2.2
# os           darwin
# command      bash -ex install.sh 4.0.0 /Users/nojb/.opam/4.04.0/lib
# path         /Users/nojb/.opam/4.04.0/build/llvm.4.0.0
# compiler     4.04.0
# exit-code    1
# env-file     /Users/nojb/.opam/4.04.0/build/llvm.4.0.0/llvm-94937-ad8886.env
# stdout-file  /Users/nojb/.opam/4.04.0/build/llvm.4.0.0/llvm-94937-ad8886.out
# stderr-file  /Users/nojb/.opam/4.04.0/build/llvm.4.0.0/llvm-94937-ad8886.err
### stderr ###
# [...]
# llvm-config: error: missing: /usr/local/Cellar/llvm/4.0.0/lib/libLLVMTableGen.a
# llvm-config: error: missing: /usr/local/Cellar/llvm/4.0.0/lib/libLLVMCoverage.a
# llvm-config: error: missing: /usr/local/Cellar/llvm/4.0.0/lib/libLLVMDebugInfoDWARF.a
# llvm-config: error: missing: /usr/local/Cellar/llvm/4.0.0/lib/libLLVMDebugInfoPDB.a
# llvm-config: error: missing: /usr/local/Cellar/llvm/4.0.0/lib/libLLVMSymbolize.a
# llvm-config: error: missing: /usr/local/Cellar/llvm/4.0.0/lib/libLLVMMIRParser.a
# llvm-config: error: missing: /usr/local/Cellar/llvm/4.0.0/lib/libLLVMObjCARCOpts.a
# llvm-config: error: missing: /usr/local/Cellar/llvm/4.0.0/lib/libLLVMPasses.a
# llvm-config: error: missing: /usr/local/Cellar/llvm/4.0.0/lib/libLLVMLTO.a
# + llvm_libs=

=-=- Error report -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=  🐫 
The following actions failed
  ∗  install llvm 4.0.0
No changes have been performed

=-=- llvm.4.0.0 troobleshooting -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=  🐫 
=> This package relies on external (system) dependencies that may be missing. `opam depext llvm.4.0.0' may help you find the correct installation for your system.

Indeed, in my /usr/local/Cellar/llvm/4.0.0/lib directory there are only .dylib files, no .a files.

nojb commented 7 years ago

One can use $(brew --cellar)/llvm/4.0.0/bin/llvm-config --shared-mode to know if llvm was installed as shared libraries or static ones.

kit-ty-kate commented 7 years ago

ok, Can you try with the latest version of the above repository ? It should be good now.. hopefully.

nojb commented 7 years ago

OK, seems to go a little further this time:

#=== ERROR while installing llvm.4.0.0 ========================================#
# opam-version 1.2.2
# os           darwin
# command      bash -ex install.sh 4.0.0 /Users/nojb/.opam/4.04.0/lib
# path         /Users/nojb/.opam/4.04.0/build/llvm.4.0.0
# compiler     4.04.0
# exit-code    1
# env-file     /Users/nojb/.opam/4.04.0/build/llvm.4.0.0/llvm-8903-d2d111.env
# stdout-file  /Users/nojb/.opam/4.04.0/build/llvm.4.0.0/llvm-8903-d2d111.out
# stderr-file  /Users/nojb/.opam/4.04.0/build/llvm.4.0.0/llvm-8903-d2d111.err
### stdout ###
# [...]
# -- Installing: /Users/nojb/.opam/4.04.0/lib/llvm/llvm_vectorize.a
# -- Installing: /Users/nojb/.opam/4.04.0/lib/llvm/llvm_vectorize.cmi
# -- Installing: /Users/nojb/.opam/4.04.0/lib/llvm/llvm_vectorize.cmx
# -- Installing: /Users/nojb/.opam/4.04.0/lib/llvm/llvm_executionengine.mli
# -- Installing: /Users/nojb/.opam/4.04.0/lib/llvm/llvm_executionengine.cma
# -- Installing: /Users/nojb/.opam/4.04.0/lib/llvm/libllvm_executionengine.a
# -- Installing: /Users/nojb/.opam/4.04.0/lib/llvm/llvm_executionengine.cmxa
# -- Installing: /Users/nojb/.opam/4.04.0/lib/llvm/llvm_executionengine.a
# -- Installing: /Users/nojb/.opam/4.04.0/lib/llvm/llvm_executionengine.cmi
# -- Installing: /Users/nojb/.opam/4.04.0/lib/llvm/llvm_executionengine.cmx
### stderr ###
# [...]
# + cd ..
# + mkdir /Users/nojb/.opam/4.04.0/lib/llvm/dynamic
# + cp /Users/nojb/.opam/4.04.0/lib/llvm/libllvm.a /Users/nojb/.opam/4.04.0/lib/llvm/libllvm_AArch64.a /Users/nojb/.opam/4.04.0/lib/llvm/libllvm_AMDGPU.a /Users/nojb/.opam/4.04.0/lib/llvm/libllvm_ARM.a /Users/nojb/.opam/4.04.0/lib/llvm/libllvm_BPF.a /Users/nojb/.opam/4.04.0/lib/llvm/libllvm_Hexagon.a /Users/nojb/.opam/4.04.0/lib/llvm/libllvm_Lanai.a /Users/nojb/.opam/4.04.0/lib/llvm/libllvm_MSP430.a /Users/nojb/.opam/4.04.0/lib/llvm/libllvm_Mips.a /Users/nojb/.opam/4.04.0/lib/llvm/libllvm_NVPTX.a /Users/nojb/.opam/4.04.0/lib/llvm/libllvm_PowerPC.a /Users/nojb/.opam/4.04.0/lib/llvm/libllvm_RISCV.a /Users/nojb/.opam/4.04.0/lib/llvm/libllvm_Sparc.a /Users/nojb/.opam/4.04.0/lib/llvm/libllvm_SystemZ.a /Users/nojb/.opam/4.04.0/lib/llvm/libllvm_X86.a /Users/nojb/.opam/4.04.0/lib/llvm/libllvm_XCore.a /Users/nojb/.opam/4.04.0/lib/llvm/libllvm_all_backends.a /Users/nojb/.opam/4.04.0/lib/llvm/libllvm_analysis.a /Users/nojb/.opam/4.04.0/lib/llvm/libllvm_bitreader.a /Users/nojb/.opam/4.04.0/lib/llvm/libllvm_bitwriter.a /Users/nojb/.opam/4.04.0/lib/llvm/libllvm_executionengine.a /Users/nojb/.opam/4.04.0/lib/llvm/libllvm_ipo.a /Users/nojb/.opam/4.04.0/lib/llvm/libllvm_irreader.a /Users/nojb/.opam/4.04.0/lib/llvm/libllvm_linker.a /Users/nojb/.opam/4.04.0/lib/llvm/libllvm_passmgr_builder.a /Users/nojb/.opam/4.04.0/lib/llvm/libllvm_scalar_opts.a /Users/nojb/.opam/4.04.0/lib/llvm/libllvm_target.a /Users/nojb/.opam/4.04.0/lib/llvm/libllvm_transform_utils.a /Users/nojb/.opam/4.04.0/lib/llvm/libllvm_vectorize.a /Users/nojb/.opam/4.04.0/lib/llvm/llvm.a /Users/nojb/.opam/4.04.0/lib/llvm/llvm_AArch64.a /Users/nojb/.opam/4.04.0/lib/llvm/llvm_AMDGPU.a /Users/nojb/.opam/4.04.0/lib/llvm/llvm_ARM.a /Users/nojb/.opam/4.04.0/lib/llvm/llvm_BPF.a /Users/nojb/.opam/4.04.0/lib/llvm/llvm_Hexagon.a /Users/nojb/.opam/4.04.0/lib/llvm/llvm_Lanai.a /Users/nojb/.opam/4.04.0/lib/llvm/llvm_MSP430.a /Users/nojb/.opam/4.04.0/lib/llvm/llvm_Mips.a /Users/nojb/.opam/4.04.0/lib/llvm/llvm_NVPTX.a /Users/nojb/.opam/4.04.0/lib/llvm/llvm_PowerPC.a /Users/nojb/.opam/4.04.0/lib/llvm/llvm_RISCV.a /Users/nojb/.opam/4.04.0/lib/llvm/llvm_Sparc.a /Users/nojb/.opam/4.04.0/lib/llvm/llvm_SystemZ.a /Users/nojb/.opam/4.04.0/lib/llvm/llvm_X86.a /Users/nojb/.opam/4.04.0/lib/llvm/llvm_XCore.a /Users/nojb/.opam/4.04.0/lib/llvm/llvm_all_backends.a /Users/nojb/.opam/4.04.0/lib/llvm/llvm_analysis.a /Users/nojb/.opam/4.04.0/lib/llvm/llvm_bitreader.a /Users/nojb/.opam/4.04.0/lib/llvm/llvm_bitwriter.a /Users/nojb/.opam/4.04.0/lib/llvm/llvm_executionengine.a /Users/nojb/.opam/4.04.0/lib/llvm/llvm_ipo.a /Users/nojb/.opam/4.04.0/lib/llvm/llvm_irreader.a /Users/nojb/.opam/4.04.0/lib/llvm/llvm_linker.a /Users/nojb/.opam/4.04.0/lib/llvm/llvm_passmgr_builder.a /Users/nojb/.opam/4.04.0/lib/llvm/llvm_scalar_opts.a /Users/nojb/.opam/4.04.0/lib/llvm/llvm_target.a /Users/nojb/.opam/4.04.0/lib/llvm/llvm_transform_utils.a /Users/nojb/.opam/4.04.0/lib/llvm/llvm_vectorize.a /Users/nojb/.opam/4.04.0/lib/llvm/dynamic
# + mv /Users/nojb/.opam/4.04.0/lib/llvm/llvm.cma /Users/nojb/.opam/4.04.0/lib/llvm/llvm_AArch64.cma /Users/nojb/.opam/4.04.0/lib/llvm/llvm_AMDGPU.cma /Users/nojb/.opam/4.04.0/lib/llvm/llvm_ARM.cma /Users/nojb/.opam/4.04.0/lib/llvm/llvm_BPF.cma /Users/nojb/.opam/4.04.0/lib/llvm/llvm_Hexagon.cma /Users/nojb/.opam/4.04.0/lib/llvm/llvm_Lanai.cma /Users/nojb/.opam/4.04.0/lib/llvm/llvm_MSP430.cma /Users/nojb/.opam/4.04.0/lib/llvm/llvm_Mips.cma /Users/nojb/.opam/4.04.0/lib/llvm/llvm_NVPTX.cma /Users/nojb/.opam/4.04.0/lib/llvm/llvm_PowerPC.cma /Users/nojb/.opam/4.04.0/lib/llvm/llvm_RISCV.cma /Users/nojb/.opam/4.04.0/lib/llvm/llvm_Sparc.cma /Users/nojb/.opam/4.04.0/lib/llvm/llvm_SystemZ.cma /Users/nojb/.opam/4.04.0/lib/llvm/llvm_X86.cma /Users/nojb/.opam/4.04.0/lib/llvm/llvm_XCore.cma /Users/nojb/.opam/4.04.0/lib/llvm/llvm_all_backends.cma /Users/nojb/.opam/4.04.0/lib/llvm/llvm_analysis.cma /Users/nojb/.opam/4.04.0/lib/llvm/llvm_bitreader.cma /Users/nojb/.opam/4.04.0/lib/llvm/llvm_bitwriter.cma /Users/nojb/.opam/4.04.0/lib/llvm/llvm_executionengine.cma /Users/nojb/.opam/4.04.0/lib/llvm/llvm_ipo.cma /Users/nojb/.opam/4.04.0/lib/llvm/llvm_irreader.cma /Users/nojb/.opam/4.04.0/lib/llvm/llvm_linker.cma /Users/nojb/.opam/4.04.0/lib/llvm/llvm_passmgr_builder.cma /Users/nojb/.opam/4.04.0/lib/llvm/llvm_scalar_opts.cma /Users/nojb/.opam/4.04.0/lib/llvm/llvm_target.cma /Users/nojb/.opam/4.04.0/lib/llvm/llvm_transform_utils.cma /Users/nojb/.opam/4.04.0/lib/llvm/llvm_vectorize.cma /Users/nojb/.opam/4.04.0/lib/llvm/dynamic
# + mv /Users/nojb/.opam/4.04.0/lib/llvm/llvm.cmxa /Users/nojb/.opam/4.04.0/lib/llvm/llvm_AArch64.cmxa /Users/nojb/.opam/4.04.0/lib/llvm/llvm_AMDGPU.cmxa /Users/nojb/.opam/4.04.0/lib/llvm/llvm_ARM.cmxa /Users/nojb/.opam/4.04.0/lib/llvm/llvm_BPF.cmxa /Users/nojb/.opam/4.04.0/lib/llvm/llvm_Hexagon.cmxa /Users/nojb/.opam/4.04.0/lib/llvm/llvm_Lanai.cmxa /Users/nojb/.opam/4.04.0/lib/llvm/llvm_MSP430.cmxa /Users/nojb/.opam/4.04.0/lib/llvm/llvm_Mips.cmxa /Users/nojb/.opam/4.04.0/lib/llvm/llvm_NVPTX.cmxa /Users/nojb/.opam/4.04.0/lib/llvm/llvm_PowerPC.cmxa /Users/nojb/.opam/4.04.0/lib/llvm/llvm_RISCV.cmxa /Users/nojb/.opam/4.04.0/lib/llvm/llvm_Sparc.cmxa /Users/nojb/.opam/4.04.0/lib/llvm/llvm_SystemZ.cmxa /Users/nojb/.opam/4.04.0/lib/llvm/llvm_X86.cmxa /Users/nojb/.opam/4.04.0/lib/llvm/llvm_XCore.cmxa /Users/nojb/.opam/4.04.0/lib/llvm/llvm_all_backends.cmxa /Users/nojb/.opam/4.04.0/lib/llvm/llvm_analysis.cmxa /Users/nojb/.opam/4.04.0/lib/llvm/llvm_bitreader.cmxa /Users/nojb/.opam/4.04.0/lib/llvm/llvm_bitwriter.cmxa /Users/nojb/.opam/4.04.0/lib/llvm/llvm_executionengine.cmxa /Users/nojb/.opam/4.04.0/lib/llvm/llvm_ipo.cmxa /Users/nojb/.opam/4.04.0/lib/llvm/llvm_irreader.cmxa /Users/nojb/.opam/4.04.0/lib/llvm/llvm_linker.cmxa /Users/nojb/.opam/4.04.0/lib/llvm/llvm_passmgr_builder.cmxa /Users/nojb/.opam/4.04.0/lib/llvm/llvm_scalar_opts.cmxa /Users/nojb/.opam/4.04.0/lib/llvm/llvm_target.cmxa /Users/nojb/.opam/4.04.0/lib/llvm/llvm_transform_utils.cmxa /Users/nojb/.opam/4.04.0/lib/llvm/llvm_vectorize.cmxa /Users/nojb/.opam/4.04.0/lib/llvm/dynamic
# + rm -rf build
# + llvm_restore
# + cp AddOCaml.cmake.save cmake/modules/AddOCaml.cmake
# + sed -i.bak s,%%LINKAGE%%,dynamic, link-META.patch
# sed: link-META.patch: No such file or directory
kit-ty-kate commented 7 years ago

Oh come on.. :( My bad. I forgot a file to add. Is it working now ?

nojb commented 7 years ago

OK, opam install llvm.4.0.0 now succeeds. On the other hand, when trying to compile my program I get

+ ocamlfind ocamlopt -linkpkg -g -package llvm -package llvm.bitwriter -I src src/error.cmx src/irep.cmx src/tabs.cmx src/compile.cmx src/parser.cmx src/lexer.cmx src/main.cmx -o src/main.native
File "_none_", line 1:
Error: Cannot find file /Users/nojb/.opam/4.04.0/lib/llvm/llvm_bitwriter.cmxa
Command exited with code 2.

It seems that the .cmxa files are not being installed; these are the contents of the .opam/4.04.0/lib/llvm directory:

$ ls ~/.opam/4.04.0/lib/llvm
dynamic                   libllvm_SystemZ.a         libllvm_transform_utils.a llvm_ARM.a                llvm_Lanai.cmx            llvm_PowerPC.a            llvm_SystemZ.cmx          llvm_analysis.a           llvm_executionengine.cmx  llvm_passmgr_builder.a    llvm_transform_utils.cmx
libllvm.a                 libllvm_X86.a             libllvm_vectorize.a       llvm_ARM.cmi              llvm_Lanai.mli            llvm_PowerPC.cmi          llvm_SystemZ.mli          llvm_analysis.cmi         llvm_executionengine.mli  llvm_passmgr_builder.cmi  llvm_transform_utils.mli
libllvm_AArch64.a         libllvm_XCore.a           llvm.a                    llvm_ARM.cmx              llvm_MSP430.a             llvm_PowerPC.cmx          llvm_X86.a                llvm_analysis.cmx         llvm_ipo.a                llvm_passmgr_builder.cmx  llvm_vectorize.a
libllvm_AMDGPU.a          libllvm_all_backends.a    llvm.cmi                  llvm_ARM.mli              llvm_MSP430.cmi           llvm_PowerPC.mli          llvm_X86.cmi              llvm_analysis.mli         llvm_ipo.cmi              llvm_passmgr_builder.mli  llvm_vectorize.cmi
libllvm_ARM.a             libllvm_analysis.a        llvm.cmx                  llvm_BPF.a                llvm_MSP430.cmx           llvm_RISCV.a              llvm_X86.cmx              llvm_bitreader.a          llvm_ipo.cmx              llvm_scalar_opts.a        llvm_vectorize.cmx
libllvm_BPF.a             libllvm_bitreader.a       llvm.mli                  llvm_BPF.cmi              llvm_MSP430.mli           llvm_RISCV.cmi            llvm_X86.mli              llvm_bitreader.cmi        llvm_ipo.mli              llvm_scalar_opts.cmi      llvm_vectorize.mli
libllvm_Hexagon.a         libllvm_bitwriter.a       llvm_AArch64.a            llvm_BPF.cmx              llvm_Mips.a               llvm_RISCV.cmx            llvm_XCore.a              llvm_bitreader.cmx        llvm_irreader.a           llvm_scalar_opts.cmx      opam.config
libllvm_Lanai.a           libllvm_executionengine.a llvm_AArch64.cmi          llvm_BPF.mli              llvm_Mips.cmi             llvm_RISCV.mli            llvm_XCore.cmi            llvm_bitreader.mli        llvm_irreader.cmi         llvm_scalar_opts.mli
libllvm_MSP430.a          libllvm_ipo.a             llvm_AArch64.cmx          llvm_Hexagon.a            llvm_Mips.cmx             llvm_Sparc.a              llvm_XCore.cmx            llvm_bitwriter.a          llvm_irreader.cmx         llvm_target.a
libllvm_Mips.a            libllvm_irreader.a        llvm_AArch64.mli          llvm_Hexagon.cmi          llvm_Mips.mli             llvm_Sparc.cmi            llvm_XCore.mli            llvm_bitwriter.cmi        llvm_irreader.mli         llvm_target.cmi
libllvm_NVPTX.a           libllvm_linker.a          llvm_AMDGPU.a             llvm_Hexagon.cmx          llvm_NVPTX.a              llvm_Sparc.cmx            llvm_all_backends.a       llvm_bitwriter.cmx        llvm_linker.a             llvm_target.cmx
libllvm_PowerPC.a         libllvm_passmgr_builder.a llvm_AMDGPU.cmi           llvm_Hexagon.mli          llvm_NVPTX.cmi            llvm_Sparc.mli            llvm_all_backends.cmi     llvm_bitwriter.mli        llvm_linker.cmi           llvm_target.mli
libllvm_RISCV.a           libllvm_scalar_opts.a     llvm_AMDGPU.cmx           llvm_Lanai.a              llvm_NVPTX.cmx            llvm_SystemZ.a            llvm_all_backends.cmx     llvm_executionengine.a    llvm_linker.cmx           llvm_transform_utils.a
libllvm_Sparc.a           libllvm_target.a          llvm_AMDGPU.mli           llvm_Lanai.cmi            llvm_NVPTX.mli            llvm_SystemZ.cmi          llvm_all_backends.mli     llvm_executionengine.cmi  llvm_linker.mli           llvm_transform_utils.cmi
kit-ty-kate commented 7 years ago

My bad again :( Is it working now ?

nojb commented 7 years ago

Yes, it works!

THANKS!

kit-ty-kate commented 7 years ago

You're welcome :) I'm opening the PR

On Sat, Apr 29, 2017, 10:38 Nicolás Ojeda Bär notifications@github.com wrote:

Yes, it works!

THANKS!

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/ocaml/opam-repository/issues/8987#issuecomment-298155998, or mute the thread https://github.com/notifications/unsubscribe-auth/ACfaTWVjqwHwh0RJOjLxIULn-5-g2GxIks5r0vcGgaJpZM4M-nCx .