dockerfiles icon indicating copy to clipboard operation
dockerfiles copied to clipboard

[lua] module 're' not found

Open gabyx opened this issue 3 years ago • 8 comments

Inside pandoc/latex:2.17-alpine I use https://github.com/pandoc/lua-filters/blob/master/include-files/include-files.lua

this gives the following error:

[INFO] Running filter /home/techmd/technical-markdown/tools/convert/filters/pandoc-include-files.lua
Error running filter /home/techmd/technical-markdown/tools/convert/filters/pandoc-include-files.lua:
module 're' not found:
        re is not one of pandoc's default packages
        no field package.preload['re']
        no file '/home/techmd/technical-markdown/tools/convert/filters/re'
        no file '/home/techmd/technical-markdown/tools/convert/filters/re.lua'
        no file ':/home/techmd/technical-markdown/tools/convert/filters/re'
        no file '/home/techmd/technical-markdown/tools/convert/filters/re.lua'
        no file '/usr/local/lib/lua/5.3/re.so'
        no file '/usr/local/lib/lua/5.3/loadall.so'
        no file '/usr/lib/lua/5.3/re.so'
        no file '/usr/lib/lua/5.3/loadall.so'
        no file './re.so'
        lpeg was configured to be excluded from the binary.
--------------------------------------------------------------

Is that a packaging error? Or is there a workaround? Is there a pandoc data-dir inside the image which is not searched above?

gabyx avatar Apr 05 '22 07:04 gabyx

Can you say a bit more about how you are using the image? Judging from the error message, there are some significant changes in the derived image. My guess is that the LUA_PATH variable has been changed.

tarleb avatar Apr 05 '22 09:04 tarleb

Ah ok, that is probably my error probably, despite that I actually add my paths

https://github.com/gabyx/TechnicalMarkdown/blob/feature/docker-image/build.gradle.kts#L207

gabyx avatar Apr 05 '22 10:04 gabyx

So far in my image: echo $LUA_PATH is empty. Actually this gradle setup works on native linux and macOS. Should the LUA_PATH variables point somewhere?

gabyx avatar Apr 05 '22 10:04 gabyx

I'd recommend against changing LUA_PATH in the image, as that will overwrite the default load path. If you do set it, then it's best to include the default package.path setting as well.

 % docker run --rm --entrypoint /usr/bin/lua5.3 pandoc/latex:2.17-alpine -e 'print(package.path)'
/usr/local/share/lua/5.3/?.lua;/usr/local/share/lua/5.3/?/init.lua;/usr/local/lib/lua/5.3/?.lua;/usr/local/lib/lua/5.3/?/init.lua;/usr/share/lua/5.3/?.lua;/usr/share/lua/5.3/?/init.lua;/usr/lib/lua/5.3/?.lua;/usr/lib/lua/5.3/?/init.lua;/usr/share/lua/common/?.lua;/usr/share/lua/common/?/init.lua;./?.lua;./?/init.lua

Or you could place an init.lua in your data-dir and update package.path in there.

tarleb avatar Apr 05 '22 10:04 tarleb

Ah thanks alot. I try this. I only need to add a few extra paths. Is there another better way, so init.lua will be read when pandoc starts its lua stuff, right?

gabyx avatar Apr 05 '22 10:04 gabyx

Right, init.lua is run each time pandoc starts up a new instance of the Lua interpreter (generally once for each filter file).

tarleb avatar Apr 05 '22 20:04 tarleb

@tarleb Do you know how to add paths in <current-init.lua-dir>/init.lua relative to the data-dir ?

package.path = package.path .. ";<current-init.lua-dir>/filters"

?

gabyx avatar Apr 06 '22 17:04 gabyx

Not sure. PANDOC_STATE.user_data_dir maybe?

tarleb avatar Apr 06 '22 20:04 tarleb