From Fedora Project Wiki

< PackagingDrafts

Revision as of 14:49, 21 February 2012 by Salimma (talk | contribs) (Initial Lua packaging draft)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)


(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.


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 sure about RHEL 6 yet), 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, 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}


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.