Python error while building LLVM 11 ("Bye" plugin)

Hi,

I have an issue building LLVM 11, at some point I have this python error:

-- Looking for compression_encode_buffer in compression
-- Looking for compression_encode_buffer in compression - not found
-- Symbols (liblldb): exporting all symbols from the lldb namespace
-- Found Doxygen: /usr/bin/doxygen (found version "1.8.9.1") found components:  doxygen dot 
-- Found epydoc - /usr/bin/epydoc
-- Found dot - /usr/bin/dot
-- Registering Bye as a pass plugin (static build: OFF)
Traceback (most recent call last):
  File "<string>", line 22, in <module>
IndexError: list index out of range
-- Configuring incomplete, errors occurred!
See also "/tmp/aki/llvm-11.0.0/build/CMakeFiles/CMakeOutput.log".
See also "/tmp/aki/llvm-11.0.0/build/CMakeFiles/CMakeError.log".

I have no idea which python file triggered the error so I don’t know where to look.

Is there anything in the CMakeError.log / CMakeOutput.log?

Is there anything in the CMakeError.log / CMakeOutput.log?

I am not sure. I didn’t see anything related to python in both files.

I cannot upload those files so I pasted them here: https://termbin.com/8bu3

The next best thing I can suggest is to run cmake with --trace, can you try that?

Yes sure.

I uploaded the log file here: https://termbin.com/ypof

This isn’t the output of --trace I believe? Trace will print a very detailed output on your console.

Oh sorry, I was thinking --trace will also write in log files. I will save the output then, give me few minutes :smile:

Hmmm…I am still looking for a solution because the file size is 500+MB :frowning:

As the file if too big to be pasted somewhere I just grep the error and I could isolate it:

/tmp/aki/llvm-11.0.0/cmake/modules/CMakeLists.txt(93):  file(COPY . DESTINATION ${llvm_cmake_builddir} FILES_MATCHING PATTERN *.cmake PATTERN .svn EXCLUDE PATTERN CMakeFiles EXCLUDE )
/tmp/aki/llvm-11.0.0/cmake/modules/CMakeLists.txt(101):  set(LLVM_CONFIG_CODE 
# Compute the installation prefix from this LLVMConfig.cmake file location.
get_filename_component(LLVM_INSTALL_PREFIX \"\${CMAKE_CURRENT_LIST_FILE}\" PATH) )
/tmp/aki/llvm-11.0.0/cmake/modules/CMakeLists.txt(106):  string(REGEX REPLACE / ; _count ${LLVM_INSTALL_PACKAGE_DIR} )
/tmp/aki/llvm-11.0.0/cmake/modules/CMakeLists.txt(107):  foreach(p ${_count} )
/tmp/aki/llvm-11.0.0/cmake/modules/CMakeLists.txt(108):  set(LLVM_CONFIG_CODE ${LLVM_CONFIG_CODE}
get_filename_component(LLVM_INSTALL_PREFIX \"\${LLVM_INSTALL_PREFIX}\" PATH) )
/tmp/aki/llvm-11.0.0/cmake/modules/CMakeLists.txt(108):  set(LLVM_CONFIG_CODE ${LLVM_CONFIG_CODE}
get_filename_component(LLVM_INSTALL_PREFIX \"\${LLVM_INSTALL_PREFIX}\" PATH) )
/tmp/aki/llvm-11.0.0/cmake/modules/CMakeLists.txt(108):  set(LLVM_CONFIG_CODE ${LLVM_CONFIG_CODE}
get_filename_component(LLVM_INSTALL_PREFIX \"\${LLVM_INSTALL_PREFIX}\" PATH) )
/tmp/aki/llvm-11.0.0/cmake/modules/CMakeLists.txt(111):  set(LLVM_CONFIG_INCLUDE_DIRS \${LLVM_INSTALL_PREFIX}/include )
/tmp/aki/llvm-11.0.0/cmake/modules/CMakeLists.txt(112):  set(LLVM_CONFIG_INCLUDE_DIR ${LLVM_CONFIG_INCLUDE_DIRS} )
/tmp/aki/llvm-11.0.0/cmake/modules/CMakeLists.txt(113):  set(LLVM_CONFIG_MAIN_INCLUDE_DIR ${LLVM_CONFIG_INCLUDE_DIRS} )
/tmp/aki/llvm-11.0.0/cmake/modules/CMakeLists.txt(114):  set(LLVM_CONFIG_LIBRARY_DIRS \${LLVM_INSTALL_PREFIX}/lib\${LLVM_LIBDIR_SUFFIX} )
/tmp/aki/llvm-11.0.0/cmake/modules/CMakeLists.txt(115):  set(LLVM_CONFIG_CMAKE_DIR \${LLVM_INSTALL_PREFIX}/${LLVM_INSTALL_PACKAGE_DIR} )
/tmp/aki/llvm-11.0.0/cmake/modules/CMakeLists.txt(116):  set(LLVM_CONFIG_BINARY_DIR \${LLVM_INSTALL_PREFIX} )
/tmp/aki/llvm-11.0.0/cmake/modules/CMakeLists.txt(117):  set(LLVM_CONFIG_TOOLS_BINARY_DIR \${LLVM_INSTALL_PREFIX}/bin )
/tmp/aki/llvm-11.0.0/cmake/modules/CMakeLists.txt(120):  if(LLVM_INSTALL_UTILS AND LLVM_BUILD_UTILS )
/tmp/aki/llvm-11.0.0/cmake/modules/CMakeLists.txt(124):  set(LLVM_CONFIG_EXPORTS_FILE \${LLVM_CMAKE_DIR}/LLVMExports.cmake )
/tmp/aki/llvm-11.0.0/cmake/modules/CMakeLists.txt(125):  set(LLVM_CONFIG_EXPORTS ${LLVM_EXPORTS} )
/tmp/aki/llvm-11.0.0/cmake/modules/CMakeLists.txt(126):  configure_file(LLVMConfig.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/LLVMConfig.cmake @ONLY )
/tmp/aki/llvm-11.0.0/cmake/modules/CMakeLists.txt(132):  configure_file(LLVMConfigVersion.cmake.in ${llvm_cmake_builddir}/LLVMConfigVersion.cmake @ONLY )
/tmp/aki/llvm-11.0.0/cmake/modules/CMakeLists.txt(137):  if(NOT LLVM_INSTALL_TOOLCHAIN_ONLY )
/tmp/aki/llvm-11.0.0/cmake/modules/CMakeLists.txt(138):  get_property(llvm_has_exports GLOBAL PROPERTY LLVM_HAS_EXPORTS )
/tmp/aki/llvm-11.0.0/cmake/modules/CMakeLists.txt(139):  if(llvm_has_exports )
/tmp/aki/llvm-11.0.0/cmake/modules/CMakeLists.txt(140):  install(EXPORT LLVMExports DESTINATION ${LLVM_INSTALL_PACKAGE_DIR} COMPONENT cmake-exports )
/tmp/aki/llvm-11.0.0/cmake/modules/CMakeLists.txt(144):  install(FILES ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/LLVMConfig.cmake ${llvm_cmake_builddir}/LLVMConfigVersion.cmake LLVM-Config.cmake DESTINATION ${LLVM_INSTALL_PACKAGE_DIR} COMPONENT cmake-exports )
/tmp/aki/llvm-11.0.0/cmake/modules/CMakeLists.txt(151):  install(DIRECTORY . DESTINATION ${LLVM_INSTALL_PACKAGE_DIR} COMPONENT cmake-exports FILES_MATCHING PATTERN *.cmake PATTERN .svn EXCLUDE PATTERN LLVMConfig.cmake EXCLUDE PATTERN LLVMConfigExtensions.cmake EXCLUDE PATTERN LLVMConfigVersion.cmake EXCLUDE PATTERN LLVM-Config.cmake EXCLUDE PATTERN GetHostTriple.cmake EXCLUDE )
/tmp/aki/llvm-11.0.0/cmake/modules/CMakeLists.txt(162):  if(NOT LLVM_ENABLE_IDE )
/tmp/aki/llvm-11.0.0/cmake/modules/CMakeLists.txt(164):  add_custom_target(cmake-exports )
/tmp/aki/llvm-11.0.0/cmake/modules/CMakeLists.txt(165):  add_llvm_install_targets(install-cmake-exports COMPONENT cmake-exports )
/tmp/aki/llvm-11.0.0/cmake/modules/AddLLVM.cmake(679):  cmake_parse_arguments(ARG  COMPONENT;PREFIX;SYMLINK DEPENDS ${ARGN} )
/tmp/aki/llvm-11.0.0/cmake/modules/AddLLVM.cmake(680):  if(ARG_COMPONENT )
/tmp/aki/llvm-11.0.0/cmake/modules/AddLLVM.cmake(681):  set(component_option -DCMAKE_INSTALL_COMPONENT="${ARG_COMPONENT}" )
/tmp/aki/llvm-11.0.0/cmake/modules/AddLLVM.cmake(683):  if(ARG_PREFIX )
/tmp/aki/llvm-11.0.0/cmake/modules/AddLLVM.cmake(687):  set(file_dependencies )
/tmp/aki/llvm-11.0.0/cmake/modules/AddLLVM.cmake(688):  set(target_dependencies )
/tmp/aki/llvm-11.0.0/cmake/modules/AddLLVM.cmake(689):  foreach(dependency ${ARG_DEPENDS} )
/tmp/aki/llvm-11.0.0/cmake/modules/AddLLVM.cmake(697):  add_custom_target(${target} DEPENDS ${file_dependencies} COMMAND ${CMAKE_COMMAND} ${component_option} ${prefix_option} -P ${CMAKE_BINARY_DIR}/cmake_install.cmake USES_TERMINAL )
/tmp/aki/llvm-11.0.0/cmake/modules/AddLLVM.cmake(704):  add_custom_target(${target}-stripped DEPENDS ${file_dependencies} COMMAND ${CMAKE_COMMAND} ${component_option} ${prefix_option} -DCMAKE_INSTALL_DO_STRIP=1 -P ${CMAKE_BINARY_DIR}/cmake_install.cmake USES_TERMINAL )
/tmp/aki/llvm-11.0.0/cmake/modules/AddLLVM.cmake(712):  if(target_dependencies )
/tmp/aki/llvm-11.0.0/cmake/modules/AddLLVM.cmake(717):  if(ARG_SYMLINK )
/tmp/aki/llvm-11.0.0/CMakeLists.txt(1105):  if(LLVM_INCLUDE_UTILS )
/tmp/aki/llvm-11.0.0/CMakeLists.txt(1106):  add_subdirectory(utils/llvm-lit )
/tmp/aki/llvm-11.0.0/utils/llvm-lit/CMakeLists.txt(1):  get_property(LLVM_LIT_CONFIG_FILES GLOBAL PROPERTY LLVM_LIT_CONFIG_FILES )
/tmp/aki/llvm-11.0.0/utils/llvm-lit/CMakeLists.txt(2):  list(LENGTH LLVM_LIT_CONFIG_FILES file_len )
/tmp/aki/llvm-11.0.0/utils/llvm-lit/CMakeLists.txt(3):  math(EXPR file_last ${file_len} - 1 )
/tmp/aki/llvm-11.0.0/utils/llvm-lit/CMakeLists.txt(5):  get_llvm_lit_path(LIT_BASE_DIR LIT_FILE_NAME )
/tmp/aki/llvm-11.0.0/cmake/modules/AddLLVM.cmake(1657):  cmake_parse_arguments(ARG ALLOW_EXTERNAL   ${ARGN} )
/tmp/aki/llvm-11.0.0/cmake/modules/AddLLVM.cmake(1659):  if(ARG_ALLOW_EXTERNAL )
/tmp/aki/llvm-11.0.0/cmake/modules/AddLLVM.cmake(1678):  set(lit_file_name llvm-lit )
/tmp/aki/llvm-11.0.0/cmake/modules/AddLLVM.cmake(1679):  if(CMAKE_HOST_WIN32 AND NOT CYGWIN )
/tmp/aki/llvm-11.0.0/cmake/modules/AddLLVM.cmake(1683):  set(${file_name} ${lit_file_name} PARENT_SCOPE )
/tmp/aki/llvm-11.0.0/cmake/modules/AddLLVM.cmake(1685):  get_property(LLVM_LIT_BASE_DIR GLOBAL PROPERTY LLVM_LIT_BASE_DIR )
/tmp/aki/llvm-11.0.0/cmake/modules/AddLLVM.cmake(1686):  if(NOT ${LLVM_LIT_BASE_DIR} STREQUAL  )
/tmp/aki/llvm-11.0.0/cmake/modules/AddLLVM.cmake(1691):  if(NOT ${LLVM_LIT_OUTPUT_DIR} STREQUAL  )
/tmp/aki/llvm-11.0.0/cmake/modules/AddLLVM.cmake(1693):  elseif(NOT ${LLVM_RUNTIME_OUTPUT_INTDIR} STREQUAL  )
/tmp/aki/llvm-11.0.0/cmake/modules/AddLLVM.cmake(1694):  set(LLVM_LIT_BASE_DIR ${LLVM_RUNTIME_OUTPUT_INTDIR} )
/tmp/aki/llvm-11.0.0/cmake/modules/AddLLVM.cmake(1701):  set_property(GLOBAL PROPERTY LLVM_LIT_BASE_DIR ${LLVM_LIT_BASE_DIR} )
/tmp/aki/llvm-11.0.0/cmake/modules/AddLLVM.cmake(1702):  set(${base_dir} ${LLVM_LIT_BASE_DIR} PARENT_SCOPE )
/tmp/aki/llvm-11.0.0/utils/llvm-lit/CMakeLists.txt(7):  set(LLVM_SOURCE_DIR ${LLVM_MAIN_SRC_DIR} )
/tmp/aki/llvm-11.0.0/utils/llvm-lit/CMakeLists.txt(12):  if(${CMAKE_CFG_INTDIR} STREQUAL . )
/tmp/aki/llvm-11.0.0/utils/llvm-lit/CMakeLists.txt(13):  make_paths_relative(LLVM_LIT_CONFIG_FILES ${LIT_BASE_DIR} ${LLVM_LIT_CONFIG_FILES} )
/tmp/aki/llvm-11.0.0/cmake/modules/AddLLVM.cmake(1497):  string(REPLACE ; \\; pathlist_escaped ${pathlist} )
/tmp/aki/llvm-11.0.0/cmake/modules/AddLLVM.cmake(1498):  execute_process(COMMAND ${Python3_EXECUTABLE} -c \n
import os, sys\n
base = sys.argv[1]
def haslink(p):\n
    if not p or p == os.path.dirname(p): return False\n
    return os.path.islink(p) or haslink(os.path.dirname(p))\n
def relpath(p):\n
    if not p: return ''\n
    if os.path.splitdrive(p)[0] != os.path.splitdrive(base)[0]: return p\n
    if haslink(p) or haslink(base): return p\n
    return os.path.relpath(p, base)\n
sys.stdout.write(';'.join(relpath(p) for p in sys.argv[2].split(';'))) ${basedir} ${pathlist_escaped} OUTPUT_VARIABLE pathlist_relative )
Traceback (most recent call last):
  File "<string>", line 22, in <module>
IndexError: list index out of range
/tmp/aki/llvm-11.0.0/cmake/modules/AddLLVM.cmake(1513):  set(${out_pathlist} ${pathlist_relative} PARENT_SCOPE )
/tmp/aki/llvm-11.0.0/utils/llvm-lit/CMakeLists.txt(15):  make_paths_relative(LLVM_SOURCE_DIR ${LIT_BASE_DIR} ${LLVM_SOURCE_DIR} )
/tmp/aki/llvm-11.0.0/cmake/modules/AddLLVM.cmake(1497):  string(REPLACE ; \\; pathlist_escaped ${pathlist} )
/tmp/aki/llvm-11.0.0/cmake/modules/AddLLVM.cmake(1498):  execute_process(COMMAND ${Python3_EXECUTABLE} -c \n
import os, sys\n
base = sys.argv[1]
def haslink(p):\n
    if not p or p == os.path.dirname(p): return False\n
    return os.path.islink(p) or haslink(os.path.dirname(p))\n
def relpath(p):\n
    if not p: return ''\n
    if os.path.splitdrive(p)[0] != os.path.splitdrive(base)[0]: return p\n
    if haslink(p) or haslink(base): return p\n
    return os.path.relpath(p, base)\n
sys.stdout.write(';'.join(relpath(p) for p in sys.argv[2].split(';'))) ${basedir} ${pathlist_escaped} OUTPUT_VARIABLE pathlist_relative )
/tmp/aki/llvm-11.0.0/cmake/modules/AddLLVM.cmake(1513):  set(${out_pathlist} ${pathlist_relative} PARENT_SCOPE )
/tmp/aki/llvm-11.0.0/utils/llvm-lit/CMakeLists.txt(19):  set(LLVM_LIT_CONFIG_MAP ${LLVM_LIT_PATH_FUNCTION}\n )
/tmp/aki/llvm-11.0.0/utils/llvm-lit/CMakeLists.txt(20):  if(${file_last} GREATER -1 )
/tmp/aki/llvm-11.0.0/utils/llvm-lit/CMakeLists.txt(30):  if(NOT ${CMAKE_CFG_INTDIR} STREQUAL . )
/tmp/aki/llvm-11.0.0/utils/llvm-lit/CMakeLists.txt(39):  else()
/tmp/aki/llvm-11.0.0/utils/llvm-lit/CMakeLists.txt(40):  set(BUILD_MODE . )
/tmp/aki/llvm-11.0.0/utils/llvm-lit/CMakeLists.txt(41):  configure_file(llvm-lit.in ${LIT_BASE_DIR}/${LIT_FILE_NAME} )
/tmp/aki/llvm-11.0.0/CMakeLists.txt(1109):  if(NOT LLVM_INSTALL_TOOLCHAIN_ONLY )
/tmp/aki/llvm-11.0.0/CMakeLists.txt(1110):  install(DIRECTORY include/llvm include/llvm-c DESTINATION include COMPONENT llvm-headers FILES_MATCHING PATTERN *.def PATTERN *.h PATTERN *.td PATTERN *.inc PATTERN LICENSE.TXT PATTERN .svn EXCLUDE )
/tmp/aki/llvm-11.0.0/CMakeLists.txt(1122):  install(DIRECTORY ${LLVM_INCLUDE_DIR}/llvm ${LLVM_INCLUDE_DIR}/llvm-c DESTINATION include COMPONENT llvm-headers FILES_MATCHING PATTERN *.def PATTERN *.h PATTERN *.gen PATTERN *.inc PATTERN CMakeFiles EXCLUDE PATTERN config.h EXCLUDE PATTERN .svn EXCLUDE )

So the offending code is in llvm-11.0.0/cmake/modules/AddLLVM.cmake file:

# Takes a list of path names in pathlist and a base directory, and returns
# a list of paths relative to the base directory in out_pathlist.
# Paths that are on a different drive than the basedir (on Windows) or that
# contain symlinks are returned absolute.
# Use with LLVM_LIT_PATH_FUNCTION below.
function(make_paths_relative out_pathlist basedir pathlist)
  # Passing ARG_PATH_VALUES as-is to execute_process() makes cmake strip
  # empty list entries. So escape the ;s in the list and do the splitting
  # ourselves. cmake has no relpath function, so use Python for that.
  string(REPLACE ";" "\\;" pathlist_escaped "${pathlist}")
  execute_process(COMMAND "${Python3_EXECUTABLE}" "-c" "\n
import os, sys\n
base = sys.argv[1]
def haslink(p):\n
    if not p or p == os.path.dirname(p): return False\n
    return os.path.islink(p) or haslink(os.path.dirname(p))\n
def relpath(p):\n
    if not p: return ''\n
    if os.path.splitdrive(p)[0] != os.path.splitdrive(base)[0]: return p\n
    if haslink(p) or haslink(base): return p\n
    return os.path.relpath(p, base)\n
sys.stdout.write(';'.join(relpath(p) for p in sys.argv[2].split(';')))"
    ${basedir}
    ${pathlist_escaped}
    OUTPUT_VARIABLE pathlist_relative)
  set(${out_pathlist} "${pathlist_relative}" PARENT_SCOPE)
endfunction()

Well I don’t know which parameters is used for this python script.