Re: [NTG-context] problem with package.path
Hans Hagen wrote: On 7-5-2010 10:52, Taco Hoekwater wrote: Peter Münster wrote: On Thu, May 06 2010, Hans Hagen wrote: \startbuffer[test] bla = nil \stopbuffer \savebuffer[test][../mytest.lua] \starttext \startluacode package.path = "../?.lua;;" require("mytest") \stopluacode \stoptext dofile "../mytest.lua" Bad example... mytest.lua is a module, so it must be loaded with require: You cannot always replace 'require' with 'dofile', and for this reason it is important that package.path actually works as explained in the lua manual. (escrito had similar problems, and other external lua modules will run into it as well). well, package path is supported (as is cpath) so it's more a question of why that paths fails .. maybe we need to explicitly assume ";" instead of the platform separator (tests on my machine work ok as windows has ; as separator) you can test this with adding an explcit ";" to libpaths = file.split_path(_path_,";") in data-lua.lua For me on linux, this change should make it work (package.path indeed contains semicolons). However, require() is still broken: ! LuaTeX error /opt/tex/texmf-local/tex/context/base/l-file.lua:133: bad argument #1 to 'gsub' (string expected, got nil) stack traceback: [C]: in function 'gsub' /opt/tex/texmf-local/tex/context/base/l-file.lua:133: in function 'split_path' /opt/tex/texmf-local/tex/context/base/data-lua.lua:36: in function 'clibpaths' /opt/tex/texmf-local/tex/context/base/data-lua.lua:97: in function [C]: in function 'require' :2: in main chunk. }inserted text> ...equire('testmodule') -- fails \dodostartluacode ...d \directlua \zerocount {#1}} l.5 \stopluacode Test files are attached. The definition of package.libpaths I used: function package.libpaths() print (_path_, package.path) if not _path_ or package.path ~= _path_ then _path_ = package.path libpaths = file.split_path(_path_,';') print (table.serialize(libpaths)) end return libpaths end And it prints out: nil ./?.lua;/usr/local/share/lua/5.1/?.lua;/usr/local/share/lua/5.1/?/init.lua;/usr/local/lib/lua/5.1/?.lua;/usr/local/lib/lua/5.1/?/init.lua t={ "./?.lua", "/usr/local/share/lua/5.1/?.lua", "/usr/local/share/lua/5.1/?/init.lua", "/usr/local/lib/lua/5.1/?.lua", "/usr/local/lib/lua/5.1/?/init.lua", } But it looks like mkiv is not happy with the split path, as it goes on trying clibpaths(). Also, I ran into another problem: if the module has the same name as the base input file, package.libpaths is not called at all (initially the module was called 'tryme.lua'). Best wishes, Taco module 'testmodule' return {} tryme.tex Description: TeX document ___ If your question is of interest to others as well, please add an entry to the Wiki! maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context webpage : http://www.pragma-ade.nl / http://tex.aanhet.net archive : http://foundry.supelec.fr/projects/contextrev/ wiki : http://contextgarden.net ___
Re: [NTG-context] problem with package.path
On 7-5-2010 10:52, Taco Hoekwater wrote: Peter Münster wrote: On Thu, May 06 2010, Hans Hagen wrote: \startbuffer[test] bla = nil \stopbuffer \savebuffer[test][../mytest.lua] \starttext \startluacode package.path = "../?.lua;;" require("mytest") \stopluacode \stoptext dofile "../mytest.lua" Bad example... mytest.lua is a module, so it must be loaded with require: You cannot always replace 'require' with 'dofile', and for this reason it is important that package.path actually works as explained in the lua manual. (escrito had similar problems, and other external lua modules will run into it as well). well, package path is supported (as is cpath) so it's more a question of why that paths fails .. maybe we need to explicitly assume ";" instead of the platform separator (tests on my machine work ok as windows has ; as separator) you can test this with adding an explcit ";" to libpaths = file.split_path(_path_,";") in data-lua.lua Hans - Hans Hagen | PRAGMA ADE Ridderstraat 27 | 8061 GH Hasselt | The Netherlands tel: 038 477 53 69 | voip: 087 875 68 74 | www.pragma-ade.com | www.pragma-pod.nl - ___ If your question is of interest to others as well, please add an entry to the Wiki! maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context webpage : http://www.pragma-ade.nl / http://tex.aanhet.net archive : http://foundry.supelec.fr/projects/contextrev/ wiki : http://contextgarden.net ___
Re: [NTG-context] problem with package.path
Peter Münster wrote: On Thu, May 06 2010, Hans Hagen wrote: \startbuffer[test] bla = nil \stopbuffer \savebuffer[test][../mytest.lua] \starttext \startluacode package.path = "../?.lua;;" require("mytest") \stopluacode \stoptext dofile "../mytest.lua" Bad example... mytest.lua is a module, so it must be loaded with require: You cannot always replace 'require' with 'dofile', and for this reason it is important that package.path actually works as explained in the lua manual. (escrito had similar problems, and other external lua modules will run into it as well). Best wishes, Taco ___ If your question is of interest to others as well, please add an entry to the Wiki! maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context webpage : http://www.pragma-ade.nl / http://tex.aanhet.net archive : http://foundry.supelec.fr/projects/contextrev/ wiki : http://contextgarden.net ___
Re: [NTG-context] problem with package.path
On 7-5-2010 9:15, Peter Münster wrote: On Thu, May 06 2010, Hans Hagen wrote: \startbuffer[test] bla = nil \stopbuffer \savebuffer[test][../mytest.lua] \starttext \startluacode package.path = "../?.lua;;" require("mytest") \stopluacode \stoptext dofile "../mytest.lua" Bad example... mytest.lua is a module, so it must be loaded with require: \startbuffer[test] module(...) \stopbuffer \savebuffer[test][../mytest.lua] \starttext \startluacode package.path = "../?.lua;;" require("mytest") -- dofile("../mytest.lua") -- this does not work \stopluacode \stoptext package.append_libpath(...) - Hans Hagen | PRAGMA ADE Ridderstraat 27 | 8061 GH Hasselt | The Netherlands tel: 038 477 53 69 | voip: 087 875 68 74 | www.pragma-ade.com | www.pragma-pod.nl - ___ If your question is of interest to others as well, please add an entry to the Wiki! maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context webpage : http://www.pragma-ade.nl / http://tex.aanhet.net archive : http://foundry.supelec.fr/projects/contextrev/ wiki : http://contextgarden.net ___
Re: [NTG-context] problem with package.path
On Thu, May 06 2010, Hans Hagen wrote: >> \startbuffer[test] >> bla = nil >> \stopbuffer >> \savebuffer[test][../mytest.lua] >> \starttext >> \startluacode >> package.path = "../?.lua;;" >> require("mytest") >> \stopluacode >> \stoptext > > dofile "../mytest.lua" Bad example... mytest.lua is a module, so it must be loaded with require: \startbuffer[test] module(...) \stopbuffer \savebuffer[test][../mytest.lua] \starttext \startluacode package.path = "../?.lua;;" require("mytest") -- dofile("../mytest.lua") -- this does not work \stopluacode \stoptext Cheers, Peter -- Contact information: http://pmrb.free.fr/contact/ ___ If your question is of interest to others as well, please add an entry to the Wiki! maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context webpage : http://www.pragma-ade.nl / http://tex.aanhet.net archive : http://foundry.supelec.fr/projects/contextrev/ wiki : http://contextgarden.net ___
Re: [NTG-context] problem with package.path
On 4-5-2010 10:28, Peter Münster wrote: Hello, I need to include lua-modules from different directories, but package.path does not seem to work: \startbuffer[test] bla = nil \stopbuffer \savebuffer[test][../mytest.lua] \starttext \startluacode package.path = "../?.lua;;" require("mytest") \stopluacode \stoptext dofile "../mytest.lua" - Hans Hagen | PRAGMA ADE Ridderstraat 27 | 8061 GH Hasselt | The Netherlands tel: 038 477 53 69 | voip: 087 875 68 74 | www.pragma-ade.com | www.pragma-pod.nl - ___ If your question is of interest to others as well, please add an entry to the Wiki! maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context webpage : http://www.pragma-ade.nl / http://tex.aanhet.net archive : http://foundry.supelec.fr/projects/contextrev/ wiki : http://contextgarden.net ___
Re: [NTG-context] problem with package.path
On Tue, May 04 2010, Peter Münster wrote: > package.path = "../?.lua;;" Ok, I see, the paths must be separated by colons: package.path = "path1/?.lua:path2/?.lua" But it's not very comfortable, since some of my luafiles are processed by lua¹ *and* by context². ¹ To generate code. ² To generate documentation. But ok, shouldn't be a too big problem... ;) Cheers, Peter -- Contact information: http://pmrb.free.fr/contact/ ___ If your question is of interest to others as well, please add an entry to the Wiki! maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context webpage : http://www.pragma-ade.nl / http://tex.aanhet.net archive : http://foundry.supelec.fr/projects/contextrev/ wiki : http://contextgarden.net ___
[NTG-context] problem with package.path
Hello, I need to include lua-modules from different directories, but package.path does not seem to work: \startbuffer[test] bla = nil \stopbuffer \savebuffer[test][../mytest.lua] \starttext \startluacode package.path = "../?.lua;;" require("mytest") \stopluacode \stoptext Error message: ! LuaTeX error :3: module 'mytest' not found: TIA for any help! Cheer, Peter -- Contact information: http://pmrb.free.fr/contact/ ___ If your question is of interest to others as well, please add an entry to the Wiki! maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context webpage : http://www.pragma-ade.nl / http://tex.aanhet.net archive : http://foundry.supelec.fr/projects/contextrev/ wiki : http://contextgarden.net ___