// -*- mode:doc; -*- // vim: set syntax=asciidoc: === Infrastructure for LuaRocks-based packages [[luarocks-package-tutorial]] ==== +luarocks-package+ tutorial First, let's see how to write a +.mk+ file for a LuaRocks-based package, with an example : ------------------------ 01: ################################################################################ 02: # 03: # luafoo 04: # 05: ################################################################################ 06: 07: LUAFOO_VERSION = 1.0.2-1 08: LUAFOO_DEPENDENCIES = foo 09: 10: LUAFOO_BUILD_OPTS += FOO_INCDIR=$(STAGING_DIR)/usr/include 11: LUAFOO_BUILD_OPTS += FOO_LIBDIR=$(STAGING_DIR)/usr/lib 12: LUAFOO_LICENSE = luaFoo license 13: LUAFOO_LICENSE_FILES = COPYING 14: 15: $(eval $(luarocks-package)) ------------------------ On line 7, we declare the version of the package (the same as in the rockspec, which is the concatenation of the upstream version and the rockspec revision, separated by a hyphen '-'). On line 8, we declare our dependencies against native libraries, so that they are built before the build process of our package starts. On lines 10-11, we tell Buildroot to pass custom options to LuaRocks when it is building the package. On lines 12-13, we specify the licensing terms for the package. Finally, on line 15, we invoke the +luarocks-package+ macro that generates all the Makefile rules that actually allows the package to be built. [[luarocks-package-reference]] ==== +luarocks-package+ reference LuaRocks is a deployment and management system for Lua modules, and supports various +build.type+: +builtin+, +make+ and +cmake+. In the context of Buildroot, the +luarocks-package+ infrastructure only supports the +builtin+ mode. LuaRocks packages that use the +make+ or +cmake+ build mechanisms should instead be packaged using the +generic-package+ and +cmake-package+ infrastructures in Buildroot, respectively. The main macro of the LuaRocks package infrastructure is +luarocks-package+: like +generic-package+ it works by defining a number of variables providing metadata information about the package, and then calling +luarocks-package+. It is worth mentioning that building LuaRocks packages for the host is not supported, so the macro +host-luarocks-package+ is not implemented. Just like the generic infrastructure, the LuaRocks infrastructure works by defining a number of variables before calling the +luarocks-package+ macro. First, all the package metadata information variables that exist in the generic infrastructure also exist in the LuaRocks infrastructure: +LUAFOO_VERSION+, +LUAFOO_SOURCE+, +LUAFOO_SITE+, +LUAFOO_DEPENDENCIES+, +LUAFOO_LICENSE+, +LUAFOO_LICENSE_FILES+. Two of them are populated by the LuaRocks infrastructure (for the +download+ step). If your package is not hosted on the LuaRocks mirror +$(BR2_LUAROCKS_MIRROR)+, you can override them: * +LUAFOO_SITE+, which defaults to +$(BR2_LUAROCKS_MIRROR)+ * +LUAFOO_SOURCE+, which defaults to +luafoo-$(LUAFOO_VERSION).src.rock+ A few additional variables, specific to the LuaRocks infrastructure, are also defined. They can be overridden in specific cases. * +LUAFOO_ROCKSPEC+, which defaults to +luafoo-$(LUAFOO_VERSION).rockspec+ * +LUAFOO_SUBDIR+, which defaults to +luafoo-$(LUAFOO_VERSION_WITHOUT_ROCKSPEC_REVISION)+ * +LUAFOO_BUILD_OPTS+ contains additional build options for the +luarocks build+ call.