luarocks-package: introduce PKG_NAME_UPSTREAM

Since we now require Lua package names to start with "lua", it is likely
that the Buildroot name is different from the upstream LuaRocks name.
Add a feature to the luarocks-package infra that makes it easier to
handle this situation: the package can explicitly specify the upstream
name in PKG_NAME_UPSTREAM, and that name will be used in PKG_ROCKSPEC,
PKG_SOURCE and PKG_SUBDIR.

Add an explanation of this feature to the manual. To make the example
relevant, it is changed to lua-foo, where the upstream name is plain
foo. To avoid confusion with the dependency on a native library, that
dependency is renamed to bar.

Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
This commit is contained in:
Arnout Vandecappelle 2017-02-23 18:00:40 +01:00 committed by Thomas Petazzoni
parent 0d4f519246
commit 75cf694bb0
2 changed files with 36 additions and 25 deletions

View File

@ -13,34 +13,40 @@ with an example :
------------------------ ------------------------
01: ################################################################################ 01: ################################################################################
02: # 02: #
03: # luafoo 03: # lua-foo
04: # 04: #
05: ################################################################################ 05: ################################################################################
06: 06:
07: LUAFOO_VERSION = 1.0.2-1 07: LUA_FOO_VERSION = 1.0.2-1
08: LUAFOO_DEPENDENCIES = foo 08: LUA_FOO_NAME_UPSTREAM = foo
09: 09: LUA_FOO_DEPENDENCIES = bar
10: LUAFOO_BUILD_OPTS += FOO_INCDIR=$(STAGING_DIR)/usr/include 10:
11: LUAFOO_BUILD_OPTS += FOO_LIBDIR=$(STAGING_DIR)/usr/lib 11: LUA_FOO_BUILD_OPTS += BAR_INCDIR=$(STAGING_DIR)/usr/include
12: LUAFOO_LICENSE = luaFoo license 12: LUA_FOO_BUILD_OPTS += BAR_LIBDIR=$(STAGING_DIR)/usr/lib
13: LUAFOO_LICENSE_FILES = $(LUAFOO_SUBDIR)/COPYING 13: LUA_FOO_LICENSE = luaFoo license
14: 14: LUA_FOO_LICENSE_FILES = $(LUA_FOO_SUBDIR)/COPYING
15: $(eval $(luarocks-package)) 15:
16: $(eval $(luarocks-package))
------------------------ ------------------------
On line 7, we declare the version of the package (the same as in the rockspec, 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, which is the concatenation of the upstream version and the rockspec revision,
separated by a hyphen '-'). separated by a hyphen '-').
On line 8, we declare our dependencies against native libraries, so that they On line 8, we declare that the package is called "foo" on LuaRocks. In
Buildroot, we give Lua-related packages a name that starts with "lua", so the
Buildroot name is different from the upstream name. +LUA_FOO_NAME_UPSTREAM+
makes the link between the two names.
On line 9, we declare our dependencies against native libraries, so that they
are built before the build process of our package starts. 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 On lines 11-12, we tell Buildroot to pass custom options to LuaRocks when it is
building the package. building the package.
On lines 12-13, we specify the licensing terms for the package. On lines 13-14, we specify the licensing terms for the package.
Finally, on line 15, we invoke the +luarocks-package+ Finally, on line 16, we invoke the +luarocks-package+
macro that generates all the Makefile rules that actually allows the macro that generates all the Makefile rules that actually allows the
package to be built. package to be built.
@ -67,24 +73,28 @@ macro.
First, all the package metadata information variables that exist in First, all the package metadata information variables that exist in
the generic infrastructure also exist in the LuaRocks infrastructure: the generic infrastructure also exist in the LuaRocks infrastructure:
+LUAFOO_VERSION+, +LUAFOO_SOURCE+, +LUAFOO_SITE+, +LUA_FOO_VERSION+, +LUA_FOO_SOURCE+, +LUA_FOO_SITE+,
+LUAFOO_DEPENDENCIES+, +LUAFOO_LICENSE+, +LUAFOO_LICENSE_FILES+. +LUA_FOO_DEPENDENCIES+, +LUA_FOO_LICENSE+, +LUA_FOO_LICENSE_FILES+.
Two of them are populated by the LuaRocks infrastructure (for the Two of them are populated by the LuaRocks infrastructure (for the
+download+ step). If your package is not hosted on the LuaRocks mirror +download+ step). If your package is not hosted on the LuaRocks mirror
+$(BR2_LUAROCKS_MIRROR)+, you can override them: +$(BR2_LUAROCKS_MIRROR)+, you can override them:
* +LUAFOO_SITE+, which defaults to +$(BR2_LUAROCKS_MIRROR)+ * +LUA_FOO_SITE+, which defaults to +$(BR2_LUAROCKS_MIRROR)+
* +LUAFOO_SOURCE+, which defaults to +luafoo-$(LUAFOO_VERSION).src.rock+ * +LUA_FOO_SOURCE+, which defaults to +$(LUA_FOO_NAME_UPSTREAM)-$(LUA_FOO_VERSION).src.rock+
A few additional variables, specific to the LuaRocks infrastructure, are A few additional variables, specific to the LuaRocks infrastructure, are
also defined. They can be overridden in specific cases. also defined. They can be overridden in specific cases.
* +LUAFOO_ROCKSPEC+, which defaults to +luafoo-$(LUAFOO_VERSION).rockspec+ * +LUA_FOO_NAME_UPSTREAM+, which defaults to +lua-foo+, i.e. the Buildroot
package name
* +LUAFOO_SUBDIR+, which defaults to * +LUA_FOO_ROCKSPEC+, which defaults to
+luafoo-$(LUAFOO_VERSION_WITHOUT_ROCKSPEC_REVISION)+ +$(LUA_FOO_NAME_UPSTREAM)-$(LUA_FOO_VERSION).rockspec+
* +LUAFOO_BUILD_OPTS+ contains additional build options for the * +LUA_FOO_SUBDIR+, which defaults to
+$(LUA_FOO_NAME_UPSTREAM)-$(LUA_FOO_VERSION_WITHOUT_ROCKSPEC_REVISION)+
* +LUA_FOO_BUILD_OPTS+ contains additional build options for the
+luarocks build+ call. +luarocks build+ call.

View File

@ -34,9 +34,10 @@
define inner-luarocks-package define inner-luarocks-package
$(2)_BUILD_OPTS ?= $(2)_BUILD_OPTS ?=
$(2)_SUBDIR ?= $(1)-$$(shell echo "$$($(2)_VERSION)" | sed -e "s/-[0-9]$$$$//") $(2)_NAME_UPSTREAM ?= $(1)
$(2)_ROCKSPEC ?= $(1)-$$($(2)_VERSION).rockspec $(2)_SUBDIR ?= $$($(2)_NAME_UPSTREAM)-$$(shell echo "$$($(2)_VERSION)" | sed -e "s/-[0-9]$$$$//")
$(2)_SOURCE ?= $(1)-$$($(2)_VERSION).src.rock $(2)_ROCKSPEC ?= $$($(2)_NAME_UPSTREAM)-$$($(2)_VERSION).rockspec
$(2)_SOURCE ?= $$($(2)_NAME_UPSTREAM)-$$($(2)_VERSION).src.rock
$(2)_SITE ?= $$(call qstrip,$$(BR2_LUAROCKS_MIRROR)) $(2)_SITE ?= $$(call qstrip,$$(BR2_LUAROCKS_MIRROR))
# Since we do not support host-luarocks-package, we know this is # Since we do not support host-luarocks-package, we know this is