ex_termbox
ex_termbox copied to clipboard
'mix compile' fails when using Python 3.11
macOS 14.2
$ elixir -v
Erlang/OTP 26 [erts-14.2] [source] [64-bit] [smp:16:16] [ds:16:16:10] [async-threads:1] [jit:ns]
Elixir 1.15.7 (compiled with Erlang/OTP 26)
$ python --version
Python 3.11.6
When running 'mix compile' on a new Elixir project including ratatouille (which depends on ex_termbox):
$ mix compile
==> ex_termbox
cd c_src/termbox && CFLAGS=-fPIC ./waf configure --prefix=. && ./waf
Waf: The wscript in '/Users/tomhead/projects/nrat/deps/ex_termbox/c_src/termbox' is unreadable
Traceback (most recent call last):
File "/Users/tomhead/projects/nrat/deps/ex_termbox/c_src/termbox/.waf3-2.0.14-e67604cd8962dbdaf7c93e0d7470ef5b/waflib/Scripting.py", line 102, in waf_entry_point
set_main_module(wscript)
File "/Users/tomhead/projects/nrat/deps/ex_termbox/c_src/termbox/.waf3-2.0.14-e67604cd8962dbdaf7c93e0d7470ef5b/waflib/Scripting.py", line 142, in set_main_module
Context.g_module=Context.load_module(file_path)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/tomhead/projects/nrat/deps/ex_termbox/c_src/termbox/.waf3-2.0.14-e67604cd8962dbdaf7c93e0d7470ef5b/waflib/Context.py", line 349, in load_module
code=Utils.readf(path,m='rU',encoding=encoding)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/tomhead/projects/nrat/deps/ex_termbox/c_src/termbox/.waf3-2.0.14-e67604cd8962dbdaf7c93e0d7470ef5b/waflib/Utils.py", line 146, in readf
with open(fname,m)as f:
^^^^^^^^^^^^^
ValueError: invalid mode: 'rUb'
make: *** [c_src/termbox/build/src/libtermbox.a] Error 2
Downgrading Python to 3.10 allows 'mix compile' to complete successfully.
I think this is related to the following issue, which mentions that support for the deprecated 'U' flag was removed in v3.11: