I’ve recently committed into the RPM CVS HEAD the internal support for Lua scripts.
Please, notice that this is experimental stuff.
Why embedding Lua in RPM?
- Many scripts execute simple operations which in an internal interpreter require no forking at all
- Internal scripts reduce or eliminate external dependencies related to script slots
- Internal scripts operate even under unfriendly situations like stripped chroots (anyone said installers?)
- Internal scripts in Lua are really fast
- Syntax errors in internal scripts are detected at package building time
How it works?
Just use -p <lua> in any script slot (%pre, %post, etc).
For example:
%pre -p <lua> print("Wow! It really works!")
What is accessible from Lua?
The standard Lua library, the posix module (basic system access, by Luiz Henrique de Figueiredo and Claudio Terra), and the rex module (regular expressions, by Reuben Thomas).
Macro support
Support for Lua macros was also introduced. It means that one can create custom content using Lua macros anywhere.
For example:
%{lua: print("Requires: hello-world > 1.0") }