ex_termbox icon indicating copy to clipboard operation
ex_termbox copied to clipboard

'mix compile' fails when using Python 3.11

Open zetetic opened this issue 8 months ago • 3 comments

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:

open(): remove 'U' mode, deprecated since Python 3.3 #81511

zetetic avatar Dec 17 '23 01:12 zetetic