emacs-tree-sitter / elisp-tree-sitter

Emacs Lisp bindings for tree-sitter
https://emacs-tree-sitter.github.io
MIT License
815 stars 73 forks source link

request to rebuild tsc-dyn.so with older Linux OS #267

Open emacs18 opened 5 months ago

emacs18 commented 5 months ago

This is a request to provide tsc-dyn.so that is built on older OS such as CentOS 7. The reason for this request follows.

elisp-tree-sitter fails to startup for me with this error:

Debugger entered--Lisp error: (module-open-failed ".../tsc/tsc-dyn.so" "/lib64/libc.so.6: version `GLIBC_2.18' not found (...")
  require(tsc-dyn nil :noerror)
  tsc-dyn--try-load()
  tsc-dyn-get-ensure("0.18.0")
  ...

The problem is that I use CentOS 7.3 which has libc.so version 2.17. Unfortunately tsc-dyn.so requires a newer libc.so, because it was apparently built on OS that is newer than CentOS 7. Specifically the problem is that tsc-dyn.so depends on __cxa_thread_atexit_im symbol with symbol version 2.18 as shown here.

$ readelf -a tsc-dyn.so | grep GLIBC_2.18
0000003f6948  001d00000006 R_X86_64_GLOB_DAT 0000000000000000 __cxa_thread_atexit_im@GLIBC_2.18 + 0
    29: 0000000000000000     0 FUNC    WEAK   DEFAULT  UND __cxa_thread_atexit_impl@GLIBC_2.18 (6)
  01c:   0 (*local*)       6 (GLIBC_2.18)    3 (GCC_3.0)       7 (GLIBC_2.3)
  0x00a0:   Name: GLIBC_2.18  Flags: none  Version: 6
$

This problematic file was apparently downloaded from https://github.com/emacs-tree-sitter/elisp-tree-sitter/releases/download/0.18.0/tsc-dyn.so.

If this file could be rebuilt on CenOS 7 or similarly older OS, then it would allow far more users to be able to use this package.