OpenNMT / CTranslate2

Fast inference engine for Transformer models

Home Page:https://opennmt.net/CTranslate2

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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