Skip to content

build llvmlite from source failed on mac #856

Description

@dlee992

Hi, @esc . Today, I want to build llvmlite from source on my Mac laptop, but I failed...

Here is the process:

First, I use conda env create numbaenv, then I use conda install llvmdev as the llvmlite doc said.

(numbaenv) ➜  llvmlite (main) ✗)conda list
# packages in environment at /usr/local/anaconda3/envs/numbaenv:
#
# Name                    Version                   Build  Channel
blas                      1.0                         mkl
bzip2                     1.0.8                h1de35cc_0
c-ares                    1.18.1               hca72f7f_0
ca-certificates           2022.4.26            hecd8cb5_0
certifi                   2022.5.18.1      py38hecd8cb5_0
cffi                      1.15.0           py38hc55c11b_1
cfgv                      3.3.1                    pypi_0    pypi
clang                     12.0.0               hecd8cb5_2
clang-12                  12.0.0          default_hfcad0e5_2
cmake                     3.22.1               hbfa4a85_0
cudatoolkit               9.1                  hd1db75b_0    numba
distlib                   0.3.4                    pypi_0    pypi
expat                     2.4.4                he9d5cce_0
filelock                  3.7.1                    pypi_0    pypi
identify                  2.5.1                    pypi_0    pypi
importlib-metadata        4.11.3                   pypi_0    pypi
importlib_metadata        4.11.3               hd3eb1b0_0
intel-openmp              2021.4.0          hecd8cb5_3538
jinja2                    3.0.3              pyhd3eb1b0_0
krb5                      1.19.2               hcd88c3b_0
libclang-cpp12            12.0.0          default_hfcad0e5_2
libcurl                   7.82.0               h6dfd666_0
libcxx                    12.0.0               h2f01273_0
libedit                   3.1.20210910         hca72f7f_0
libev                     4.33                 h9ed2024_1
libffi                    3.3                  hb1e8313_2
libgfortran               3.0.1                h93005f0_2
libllvm12                 12.0.0               h9b2ccf5_3
libnghttp2                1.46.0               ha29bfda_0
libssh2                   1.10.0               h0a4fc7d_0
libuv                     1.40.0               haf1e3a3_0
llvmdev                   11.1.0               h01edc0c_4    numba
llvmlite                  0.39.0dev0              py38_63    numba/label/dev
lz4-c                     1.9.3                h23ab428_1
make                      4.2.1                h3efe00b_1
markupsafe                2.0.1            py38h9ed2024_0
mkl                       2021.4.0           hecd8cb5_637
mkl-service               2.4.0            py38h9ed2024_0
mkl_fft                   1.3.1            py38h4ab4a9b_0
mkl_random                1.2.2            py38hb2f4e1b_0
ncurses                   6.3                  hca72f7f_2
nodeenv                   1.6.0                    pypi_0    pypi
numba                     0.56.0.dev0+489.g63bb6c38b           dev_0    <develop>
numpy                     1.21.5           py38h2e5f0a9_1
numpy-base                1.21.5           py38h3b1a694_1
openssl                   1.1.1o               hca72f7f_0
pandas                    1.4.2                    pypi_0    pypi
pip                       21.2.4           py38hecd8cb5_0
platformdirs              2.5.2                    pypi_0    pypi
pre-commit                2.19.0                   pypi_0    pypi
pycparser                 2.21               pyhd3eb1b0_0
python                    3.8.13               hdfd78df_0
python-dateutil           2.8.2                    pypi_0    pypi
pytz                      2022.1                   pypi_0    pypi
pyyaml                    6.0                      pypi_0    pypi
readline                  8.1.2                hca72f7f_1
rhash                     1.4.1                hbcfaee0_1
scipy                     1.7.3            py38h8c7af03_0
setuptools                62.6.0                   pypi_0    pypi
six                       1.16.0             pyhd3eb1b0_1
sqlite                    3.38.3               h707629a_0
tk                        8.6.11               h3fd3227_1
toml                      0.10.2                   pypi_0    pypi
virtualenv                20.14.1                  pypi_0    pypi
wheel                     0.37.1             pyhd3eb1b0_0
xz                        5.2.5                hca72f7f_1
zipp                      3.8.0            py38hecd8cb5_0
zlib                      1.2.12               h4dc903c_2
zstd                      1.5.2                hcb37349_0

Then I also cloned llvmlite source code, then I typed:

(numbaenv) ➜  llvmlite (main) ✗)LLVM_CONFIG=/usr/local/anaconda3/pkgs/llvmdev-11.1.0-h01edc0c_4/bin/llvm-config python setup.py build
/usr/local/anaconda3/envs/numbaenv/lib/python3.8/site-packages/setuptools/dist.py:516: UserWarning: Normalizing '0.39.0dev0+101.gbad554c' to '0.39.0.dev0+101.gbad554c'
  warnings.warn(tmpl.format(**locals()))
running build
got version from VCS {'version': '0.39.0dev0+101.gbad554c', 'full': 'bad554cfcbd3b81ab984108137c7d7830fb3f272'}
running build_ext
/usr/local/anaconda3/envs/numbaenv/bin/python /Users/ld/Code/llvmlite/ffi/build.py
LLVM version... 11.1.0

SVML detected
MACOSX_DEPLOYMENT_TARGET=10.9 clang++ -std=c++11 -stdlib=libc++ -dynamiclib -I/usr/local/anaconda3/pkgs/llvmdev-11.1.0-h01edc0c_4/include -std=c++14 -stdlib=libc++ -fno-exceptions -fno-rtti -D_DEBUG -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -fno-rtti -g -DHAVE_SVML assembly.cpp bitcode.cpp core.cpp initfini.cpp module.cpp value.cpp executionengine.cpp transforms.cpp passmanagers.cpp targets.cpp dylib.cpp linker.cpp object_file.cpp custom_passes.cpp -o libllvmlite.dylib  "-Wl,-exported_symbol,_LLVMPY_*" -L/usr/local/anaconda3/pkgs/llvmdev-11.1.0-h01edc0c_4/lib -Wl,-search_paths_first -Wl,-headerpad_max_install_names -lLLVMXRay -lLLVMWindowsManifest -lLLVMTableGen -lLLVMSymbolize -lLLVMDebugInfoPDB -lLLVMOrcJIT -lLLVMOrcError -lLLVMJITLink -lLLVMObjectYAML -lLLVMMCA -lLLVMLTO -lLLVMPasses -lLLVMCoroutines -lLLVMObjCARCOpts -lLLVMExtensions -lLLVMLineEditor -lLLVMLibDriver -lLLVMInterpreter -lLLVMFuzzMutate -lLLVMMCJIT -lLLVMExecutionEngine -lLLVMRuntimeDyld -lLLVMDWARFLinker -lLLVMDlltoolDriver -lLLVMOption -lLLVMDebugInfoGSYM -lLLVMCoverage -lLLVMWebAssemblyDisassembler -lLLVMWebAssemblyCodeGen -lLLVMWebAssemblyDesc -lLLVMWebAssemblyAsmParser -lLLVMWebAssemblyInfo -lLLVMRISCVDisassembler -lLLVMRISCVCodeGen -lLLVMRISCVAsmParser -lLLVMRISCVDesc -lLLVMRISCVUtils -lLLVMRISCVInfo -lLLVMXCoreDisassembler -lLLVMXCoreCodeGen -lLLVMXCoreDesc -lLLVMXCoreInfo -lLLVMX86Disassembler -lLLVMX86AsmParser -lLLVMX86CodeGen -lLLVMX86Desc -lLLVMX86Info -lLLVMSystemZDisassembler -lLLVMSystemZCodeGen -lLLVMSystemZAsmParser -lLLVMSystemZDesc -lLLVMSystemZInfo -lLLVMSparcDisassembler -lLLVMSparcCodeGen -lLLVMSparcAsmParser -lLLVMSparcDesc -lLLVMSparcInfo -lLLVMPowerPCDisassembler -lLLVMPowerPCCodeGen -lLLVMPowerPCAsmParser -lLLVMPowerPCDesc -lLLVMPowerPCInfo -lLLVMNVPTXCodeGen -lLLVMNVPTXDesc -lLLVMNVPTXInfo -lLLVMMSP430Disassembler -lLLVMMSP430CodeGen -lLLVMMSP430AsmParser -lLLVMMSP430Desc -lLLVMMSP430Info -lLLVMMipsDisassembler -lLLVMMipsCodeGen -lLLVMMipsAsmParser -lLLVMMipsDesc -lLLVMMipsInfo -lLLVMHexagonDisassembler -lLLVMHexagonCodeGen -lLLVMHexagonAsmParser -lLLVMHexagonDesc -lLLVMHexagonInfo -lLLVMBPFDisassembler -lLLVMBPFCodeGen -lLLVMBPFAsmParser -lLLVMBPFDesc -lLLVMBPFInfo -lLLVMARMDisassembler -lLLVMARMCodeGen -lLLVMARMAsmParser -lLLVMARMDesc -lLLVMARMUtils -lLLVMARMInfo -lLLVMAMDGPUDisassembler -lLLVMAMDGPUCodeGen -lLLVMMIRParser -lLLVMipo -lLLVMInstrumentation -lLLVMVectorize -lLLVMLinker -lLLVMIRReader -lLLVMAsmParser -lLLVMFrontendOpenMP -lLLVMAMDGPUAsmParser -lLLVMAMDGPUDesc -lLLVMAMDGPUUtils -lLLVMAMDGPUInfo -lLLVMAArch64Disassembler -lLLVMMCDisassembler -lLLVMAArch64CodeGen -lLLVMCFGuard -lLLVMGlobalISel -lLLVMSelectionDAG -lLLVMAsmPrinter -lLLVMDebugInfoDWARF -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMObject -lLLVMTextAPI -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMAArch64AsmParser -lLLVMMCParser -lLLVMAArch64Desc -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBinaryFormat -lLLVMAArch64Utils -lLLVMAArch64Info -lLLVMSupport -lLLVMDemangle -lz -lm
ld: unsupported tapi file type '!tapi-tbd' in YAML file '/Library/Developer/CommandLineTools/SDKs/MacOSX11.sdk/usr/lib/libm.tbd' for architecture x86_64
clang-13: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [Makefile.osx:16: all] Error 1
Traceback (most recent call last):
  File "/Users/ld/Code/llvmlite/ffi/build.py", line 226, in <module>
    main()
  File "/Users/ld/Code/llvmlite/ffi/build.py", line 220, in main
    main_posix('osx', '.dylib')
  File "/Users/ld/Code/llvmlite/ffi/build.py", line 208, in main_posix
    subprocess.check_call(['make', '-f', makefile] + makeopts)
  File "/usr/local/anaconda3/envs/numbaenv/lib/python3.8/subprocess.py", line 364, in check_call
    raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['make', '-f', 'Makefile.osx', '-j12']' returned non-zero exit status 2.
error: command '/usr/local/anaconda3/envs/numbaenv/bin/python' failed with exit code 1

I think the important info is I pointed out the LLVM_CONFIG path to conda installed version, but when llvmlite begins to build, it uses clang-13 not clang-11.1.0. In fact, I check the path /usr/local/anaconda3/pkgs/llvmdev-11.1.0-h01edc0c_4/bin, llvmdev package doesn't contain clang binary in the bin folder.

(numbaenv) ➜  llvmlite (main) ✗)clang++ -v
Homebrew clang version 13.0.0
Target: x86_64-apple-darwin21.5.0
Thread model: posix
InstalledDir: /usr/local/opt/llvm/bin

And my cmake is also installed using conda:

(numbaenv) ➜  llvmlite (main) ✗)conda list make
# packages in environment at /usr/local/anaconda3/envs/numbaenv:
#
# Name                    Version                   Build  Channel
cmake                     3.22.1               hbfa4a85_0
make                      4.2.1                h3efe00b_1

I guess I need to brew install llvm@11 to get clang-11 and use it to build llvmlite? PS, I didn't change llvmlite source code at all, the shown in the terminal is because I use pycharm and it generated the .idea folder.
Many thanks in advance!

Metadata

Metadata

Assignees

No one assigned

    Labels

    needtriageNeeds to be triaged further

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions