:code.priv_dir doesn't work in escript


I have :code.priv_dir(:my_lib) working in iex but returning {:error, :bad_name} in escript.
Any idea ?


The escript documentation (at https://hexdocs.pm/mix/master/Mix.Tasks.Escript.Build.html) mentions that the priv directory is not supported. I’m not sure exactly what the limitation is I wish it just worked also.

I’ve worked around this by making sure I create a /priv directory with required libraries relative to the installed executable. That’s working well for my escript to be able to use the compiled esqlite3_nif.so library.

Thanks for the reply !

What do you mean ? I don’t get how I can use a library which uses :code.priv_dir(:lib_name).

Unfortunately you cannot. We solved this in projects like ExDoc and the Phoenix installer by embedding the files into the modules. Something like:

def contents, do: unquote(File.read!("priv/foo"))