Opened 5 months ago

Last modified 5 months ago

#106 accepted defect

make: CMake does not set PYTHON_INTERP during libcxx configuration

Reported by: Lukáš Zaoral Owned by: Vladimír Štill
Priority: major Milestone: 4.4
Component: other Keywords:
Cc: kdudka@…, lzaoral@…

Description

Hi, as previously discussed in the comments 6-10 of issue #73, the make install target still fails to complete without some additional downstream patching. This issue occurs on Fedora, Manjaro, Ubuntu (and probably on other Linux distros too). Thanks.

Change History (2)

comment:1 Changed 5 months ago by Vladimír Štill

Owner: changed from mornfall to Vladimír Štill
Status: newaccepted

I was able to reproduce this on Archlinux, the problem occurs only in make install, apparently in the toolchain part of the install.

$ make install PREFIX=/tmp/divine JOBS=1                                                                                       
[1/648] Generating ../__generated_config                                                                                          
FAILED: dios/libcxx/__generated_config                                                                                            
cd /var/obj/xstill-divine-interp/toolchain/dios/libcxx/include && /tmp/interp/dios/libcxx/utils/cat_files.py /var/obj/xstill-divin|
e-interp/toolchain/dios/libcxx/__config_site /tmp/interp/dios/libcxx/include/__config -o /var/obj/xstill-divine-interp/toolchain/d
ios/libcxx/__generated_config                                                                                                     
/bin/sh: /tmp/interp/dios/libcxx/utils/cat_files.py: Permission denied
ninja: build stopped: subcommand failed.
make: *** [Makefile:164: toolchain-install] Error 1

comment:2 Changed 5 months ago by Lukáš Zaoral

This particular problem seems to be fixed in 4.4.2. However, it introduced another one in the final phase of toolchain installation. The gen_link_script.py script replaces libc++.so with a plaintext file containing instructions for linker, but CMake expects that this file is in an ELF format.

-- Installing: /opt/divine/lib/libc++.so.2
-- Set runtime path of "/opt/divine/lib/libc++.so.2.0" to "/opt/divine/lib"
-- Installing: /opt/divine/lib/libc++.so
CMake Error at dios/libcxx/src/cmake_install.cmake:83 (file):
  file RPATH_CHANGE could not write new RPATH:

    /opt/divine/lib

  to the file:

    /opt/divine/lib/libc++.so

  No valid ELF RPATH or RUNPATH entry exists in the file; File does not have
  a valid ELF identification.
Call Stack (most recent call first):
  dios/libcxx/cmake_install.cmake:51 (include)
  cmake_install.cmake:44 (include)


FAILED: CMakeFiles/install.util 
cd /builds/lzaoral/divine/_build.toolchain && /usr/bin/cmake -P cmake_install.cmake
ninja: build stopped: subcommand failed.
make: *** [Makefile:164: install] Error 1
Note: See TracTickets for help on using tickets.