| // -*- 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. |