Clang unusual switches wrongly hardcoded in resulting setup.py
Manamama opened this issue · comments
After compiling manually (cmake and make with many switches and changes to CmakeList.txt file), Python kvetches that:
clang++: error: unknown argument: '-fno-openmp-implicit-rpath' clang++: error: unknown argument: '-fno-openmp-implicit-rpath' error: command '/data/data/com.termux/files/usr/bin/clang++' failed with exit code 1 error: subprocess-exited-with-error
amd:
clang++: error: unknown argument: '-fno-openmp-implicit-rpath'
Grep shows it hardcoded:
~/.../CTranslate2/python $ grep visibility . -r ./setup.py:cflags = ["-std=c++17", "-fvisibility=hidden"]
...
~/.../CTranslate2/python $ grep rpath . -r ./setup.py: ldflags.append("-Wl,-rpath,/usr/local/lib") ~/.../CTranslate2/python $
so we must trim it to:
./setup.py:cflags = ["-std=c++17"]
etc.
-> Do change.
With fixes:
~/.../CTranslate2/python $ pip install -v . Using pip 24.0 from /data/data/com.termux/files/usr/lib/python3.11/site-packages/pip (python 3.11)
...
clang -DNDEBUG -g -fwrapv -O3 -Wall -fstack-protector-strong -O3 -fstack-protector-strong -O3 -fuse-ld=lld -pthread -g -march=armv8-a -mtune=cortex-a53 -Wall -Wextra -fPIC -I/data/data/com.termux/files/usr/lib/python3.11/site-packages/pybind11/include -I/data/data/com.termux/files/usr/include/python3.11 -c cpp/mpi.cc -o build/temp.linux-aarch64-cpython-311/cpp/mpi.o -std=c++17
...
etc and installs.
My box:
Compiler:
- GCC Version: ndk-sysroot/tur-packages, (26b-3).
- g++ (symbolic link to clang-18), clang version 18.1.5
Target: aarch64-unknown-linux-android24
Thread model: posix
InstalledDir: /data/data/com.termux/files/usr/bin - Make version:
GNU Make 4.4.1
Built for aarch64-unknown-linux-android - Abseil C++ library: 20240116.2 for the AArch64
Python Environment:
- Python Version: 3.11.9
- pip Version: 24.0
- Cython Version: 3.0.10
- setuptools Version: 69.5.1
- PyTorch Version: 2.1.2 *
- numpy Version: 1.26.4 *
Not sure what your problem is and how to reproduce this. Please explain more clearly.
(On mobile, so pithy.) As I have found the same error: -fno-openmp-implicit-rpath
in also another package, I have spent half an hour since then asking Ms Perplexity AI about root cause. In short, quoth she:
The clang 17.0.2 in NDK supports fopenmp-implicit-rpath option but clang 18.1.5 in termux-packages does not support that, so (here a Python script to change smth in pychache follows, which works for all such cases).
In very short: it may be specific to that config above, and yet removing this (hard-coded) switch may help all.
Seemingly solved since by Python upgrade itself, see: termux/termux-packages#20714