Re: git: 1f31e00e19f9 - main - flua: add fbsd module

From: Baptiste Daroussin <bapt_at_freebsd.org>
Date: Thu, 28 Sep 2023 16:10:38 UTC
On Thu, Sep 28, 2023 at 11:41:23AM -0400, Mark Johnston wrote:
> On Thu, Sep 28, 2023 at 05:27:52PM +0200, Baptiste Daroussin wrote:
> > On Thu, Sep 28, 2023 at 10:58:20AM -0400, Mark Johnston wrote:
> > > On Wed, Sep 27, 2023 at 02:00:54PM +0000, Baptiste Daroussin wrote:
> > > > The branch main has been updated by bapt:
> > > > 
> > > > URL: https://cgit.FreeBSD.org/src/commit/?id=1f31e00e19f9e24d4c891a24973e08a027c4f71c
> > > > 
> > > > commit 1f31e00e19f9e24d4c891a24973e08a027c4f71c
> > > > Author:     Baptiste Daroussin <bapt@FreeBSD.org>
> > > > AuthorDate: 2023-09-13 07:43:33 +0000
> > > > Commit:     Baptiste Daroussin <bapt@FreeBSD.org>
> > > > CommitDate: 2023-09-27 14:00:00 +0000
> > > > 
> > > >     flua: add fbsd module
> > > >     
> > > >     This module is bundled into flua, it only provides for now the exec
> > > >     function. The point of the function is to be able to execute a program
> > > >     without actually executing a shell.
> > > >     
> > > >     to use it:
> > > >     fbsd.exec({"id", "bapt"})
> > > 
> > > Hi Baptiste,
> > > 
> > > How is this different from posix.unistd.exec in the luaposix module?
> > > Wouldn't it be better to add this to the existing posix.unistd namespace
> > > in lposix.c?  exec does not seem FreeBSD-specific.
> > 
> > This is more like os.execure without the invocation of /bin/sh!
> 
> Right, different from os.execute, but almost identical to
> posix.unistd.exec: https://luaposix.github.io/luaposix/modules/posix.unistd.html#exec

not indentical this fbsd.exec will fork/exec while posix.unistd.exec, will just
exec.

yes if add to lposix.c fork() and exec() then we can replace fbsd.exec by a pure
lua version calling unistd.fork() and unistd.exec() is that is what you meant
by almost identical.
> 
> We have a subset of luaposix already, in libexec/flua/modules/lposix.c.
> So my question is, how about we extend that to provide "exec"?  "exec"
> is not FreeBSD-specific at all.  I am happy to write the patch.

I am fine if we extend lposix with fork and exec and remove my fbsd.exec.

I am happy to work on it as well.
> 
> > > I have a related question: this week I wrote some FreeBSD-specific lua
> > > modules wrapping some system calls like sysctl(2) and cap_enter(2).  How
> > > do we want to organize the flua namespace for such things?  Should we
> > > have a freebsd.sys namespace for system call wrappers?  I would then put
> > > bindings for FreeBSD libraries under freebsd.* or freebsd.lib.*, so we
> > > could have freebsd.lib.procstat, for example.
> > 
> > 
> > I am fine with a module named freebsd.lib.* I plan to add kenv, rcctl,
> > procctl so, (I scratched sysctl and cap_enter has you have them ;) )
> 
> So my proposal is, raw system call wrappers should live under
> freebsd.sys.*; some higher-level interfaces can be built on top,
> hopefully written in lua as much as possible.

I do like this proposal and it is better with that my ugly fbsd.* :)
> 
> Also, if we start adding more FreeBSD modules, I suspect it will be
> useful to maintain these modules of the tree.  I have some plain lua
> (not flua) programs for which I wrote FreeBSD modules, and they could be
> useful to others.  It'd also be useful to target multiple lua versions,
> at least 5.1 as well so that luajit can be used.  But that's a topic for
> later.

Best regards,
Bapt