From Fedora Project Wiki
(Initial Lua packaging draft)
 
(RHEL 6 lua doesn't provide virtual provide lua(abi))
Line 18: Line 18:
</pre>
</pre>


From Fedora 16 and onwards (not sure about RHEL 6 yet), the main <code>lua</code> package virtually provides <code>lua(abi) = %{luaver}</code>, so packages targeting this release and above can declare this runtime dependency:
From Fedora 16 and onwards (not RHEL 6!), the main <code>lua</code> package virtually provides <code>lua(abi) = %{luaver}</code>, so packages targeting this release and above can declare this runtime dependency:


<pre>
<pre>
Line 24: Line 24:
</pre>
</pre>


to target older releases, use the following instead. It's less safe (in that RPM will not complain if you install this package on a system with a higher Lua ABI version) but in practice our supported releases currently ship with Lua 5.1.x.
to target older releases (or RHEL 6), use the following instead. It's less safe (in that RPM will not complain if you install this package on a system with a higher Lua ABI version) but in practice our supported releases currently ship with Lua 5.1.x.


<pre>
<pre>

Revision as of 14:19, 2 March 2012

Naming

(This section should eventually be linked from Packaging:NamingGuidelines)

Lua add-on packages generally follow the naming scheme of lua-modulename -- e.g. lua-filesystem, lua-lpeg, lua-moonscript. If the module name makes it clear that it is an add-on for Lua, though, the module name itself is sufficient. e.g. lutok.

Use your judgement -- e.g. the second l in lua-lpeg already stands for Lua, but it might not be seen as unambiguous enough.


Macros

Define the following on top of your spec file:

%global luaver 5.1
# for compiled modules
%global lualibdir %{_libdir}/lua/%{luaver}
# for arch-independent modules
%global luapkgdir %{_datadir}/lua/%{luaver}

From Fedora 16 and onwards (not RHEL 6!), the main lua package virtually provides lua(abi) = %{luaver}, so packages targeting this release and above can declare this runtime dependency:

Requires: lua(abi) = %{luaver}

to target older releases (or RHEL 6), use the following instead. It's less safe (in that RPM will not complain if you install this package on a system with a higher Lua ABI version) but in practice our supported releases currently ship with Lua 5.1.x.

Requires: lua >= %{luaver}

Rocks

Upstream Lua developers increasingly use LuaRocks to distribute their modules. We are exploring providing better integration with LuaRocks in the future -- both in generating spec files from .rockspec specifications, and in shipping a luarocks package that can pick up existing RPM-installed Lua packages, but for the time being, you can use upstream rockspec specifications to guide your packaging work.