On 1/5/19 8:38 AM, Tim Landscheidt wrote:
Hi, with Fedora 28's RPM 4.14.2.1, I was looking at http://rpm.org/user_doc/lua.html to mangle some strings. It took some experimentation to find that the actually working syntax is: | [tim@passepartout ~]$ rpm --eval '%{lua: local re = rex.newPOSIX("abc"); if re:match("abcdef") then print("Matched") else print("Not matched"); end}' | Matched | [tim@passepartout ~]$ rpm --eval '%{lua: local re = rex.newPOSIX("abc"); if re:match("acdef") then print("Matched") else print("Not matched"); end}' | Not matched | [tim@passepartout ~]$ However, taking http://math2.org/luasearch/rex.html as ref- erence, there does not seem to be a way to access more use- ful functions like rex.sub(), nor do PCRE regular expres- sions seem to be available ("attempt to call a nil value (field 'newPCRE')").
It's just never been built with PCRE support, probably to avoid adding an external dependency (in rpm you'll want to minimize those) The others are probably (much) newer additions, the rexlib embedded in rpm is rather antiquated, from 2003 or so.
Even more confusing, Lua's internal string module seems to provide most of what is needed (with a slightly different syntax): | [tim@passepartout ~]$ rpm --eval '%{lua: print(string.match("abcdef", "abc"));}' | abc | [tim@passepartout ~]$ So what is the status of and advantage to use the rex exten- sion over the internal string module? In Fedora's spec files, rex does not seem to be used once, but string quite a bit.
The status is that ... it's there. This is probably the first time I've ever seen anybody even ask anything about it. Maybe there was more of a difference back in the days of Lua 5.0, dunno.
- Panu - _______________________________________________ Rpm-list mailing list Rpm-list@xxxxxxxxxxxxx http://lists.rpm.org/mailman/listinfo/rpm-list