ntg-context - mailing list for ConTeXt users
 help / color / mirror / Atom feed
* problem with package.path
@ 2010-05-04  8:28 Peter Münster
  2010-05-04  9:20 ` Peter Münster
  2010-05-06 20:12 ` Hans Hagen
  0 siblings, 2 replies; 8+ messages in thread
From: Peter Münster @ 2010-05-04  8:28 UTC (permalink / raw)
  To: ConTeXt list

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 <main ctx instance>: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
___________________________________________________________________________________


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: problem with package.path
  2010-05-04  8:28 problem with package.path Peter Münster
@ 2010-05-04  9:20 ` Peter Münster
  2010-05-06 20:12 ` Hans Hagen
  1 sibling, 0 replies; 8+ messages in thread
From: Peter Münster @ 2010-05-04  9:20 UTC (permalink / raw)
  To: ConTeXt list

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
___________________________________________________________________________________

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: problem with package.path
  2010-05-04  8:28 problem with package.path Peter Münster
  2010-05-04  9:20 ` Peter Münster
@ 2010-05-06 20:12 ` Hans Hagen
  2010-05-07  7:15   ` Peter Münster
  1 sibling, 1 reply; 8+ messages in thread
From: Hans Hagen @ 2010-05-06 20:12 UTC (permalink / raw)
  To: ConTeXt list

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
___________________________________________________________________________________


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: problem with package.path
  2010-05-06 20:12 ` Hans Hagen
@ 2010-05-07  7:15   ` Peter Münster
  2010-05-07  7:31     ` Hans Hagen
  2010-05-07  8:52     ` Taco Hoekwater
  0 siblings, 2 replies; 8+ messages in thread
From: Peter Münster @ 2010-05-07  7:15 UTC (permalink / raw)
  To: mailing list for ConTeXt users

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
___________________________________________________________________________________


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: problem with package.path
  2010-05-07  7:15   ` Peter Münster
@ 2010-05-07  7:31     ` Hans Hagen
  2010-05-07  8:52     ` Taco Hoekwater
  1 sibling, 0 replies; 8+ messages in thread
From: Hans Hagen @ 2010-05-07  7:31 UTC (permalink / raw)
  To: mailing list for ConTeXt users

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
___________________________________________________________________________________


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: problem with package.path
  2010-05-07  7:15   ` Peter Münster
  2010-05-07  7:31     ` Hans Hagen
@ 2010-05-07  8:52     ` Taco Hoekwater
  2010-05-07  9:12       ` Hans Hagen
  1 sibling, 1 reply; 8+ messages in thread
From: Taco Hoekwater @ 2010-05-07  8:52 UTC (permalink / raw)
  To: mailing list for ConTeXt users

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
___________________________________________________________________________________


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: problem with package.path
  2010-05-07  8:52     ` Taco Hoekwater
@ 2010-05-07  9:12       ` Hans Hagen
  2010-05-08  6:35         ` Taco Hoekwater
  0 siblings, 1 reply; 8+ messages in thread
From: Hans Hagen @ 2010-05-07  9:12 UTC (permalink / raw)
  To: mailing list for ConTeXt users; +Cc: Taco Hoekwater

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
___________________________________________________________________________________


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: problem with package.path
  2010-05-07  9:12       ` Hans Hagen
@ 2010-05-08  6:35         ` Taco Hoekwater
  0 siblings, 0 replies; 8+ messages in thread
From: Taco Hoekwater @ 2010-05-08  6:35 UTC (permalink / raw)
  To: Hans Hagen; +Cc: mailing list for ConTeXt users

[-- Attachment #1: Type: text/plain, Size: 2983 bytes --]

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 </opt/tex/texmf-local/tex/context/base/data-lua.lua:79>
         [C]: in function 'require'
         <main ctx instance>: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



[-- Attachment #2: testmodule.lua --]
[-- Type: text/plain, Size: 32 bytes --]

module 'testmodule'

return {}


[-- Attachment #3: tryme.tex --]
[-- Type: application/x-tex, Size: 95 bytes --]

[-- Attachment #4: Type: text/plain, Size: 486 bytes --]

___________________________________________________________________________________
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
___________________________________________________________________________________

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2010-05-08  6:35 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-05-04  8:28 problem with package.path Peter Münster
2010-05-04  9:20 ` Peter Münster
2010-05-06 20:12 ` Hans Hagen
2010-05-07  7:15   ` Peter Münster
2010-05-07  7:31     ` Hans Hagen
2010-05-07  8:52     ` Taco Hoekwater
2010-05-07  9:12       ` Hans Hagen
2010-05-08  6:35         ` Taco Hoekwater

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).