2014-01-11 23:42:07 +08:00
|
|
|
################################################################################
|
|
|
|
# LuaRocks package infrastructure
|
|
|
|
# see http://luarocks.org/
|
|
|
|
#
|
|
|
|
# This file implements an infrastructure that eases development of
|
|
|
|
# package .mk files for LuaRocks packages.
|
|
|
|
# LuaRocks supports various build.type : builtin, make, cmake.
|
|
|
|
# This luarocks infrastructure supports only the builtin mode,
|
|
|
|
# the make & cmake modes could be directly handled by generic & cmake infrastructure.
|
|
|
|
#
|
|
|
|
# See the Buildroot documentation for details on the usage of this
|
|
|
|
# infrastructure
|
|
|
|
#
|
|
|
|
# In terms of implementation, this LuaRocks infrastructure requires
|
2014-07-25 02:07:02 +08:00
|
|
|
# the .mk file to only specify metadata information about the
|
2014-01-11 23:42:07 +08:00
|
|
|
# package: name, version, etc.
|
|
|
|
#
|
|
|
|
################################################################################
|
|
|
|
|
2020-03-22 16:07:03 +08:00
|
|
|
LUAROCKS_RUN_CMD = $(HOST_DIR)/bin/luarocks
|
|
|
|
LUAROCKS_CFLAGS = $(TARGET_CFLAGS) -fPIC
|
2020-03-22 16:07:04 +08:00
|
|
|
HOST_LUAROCKS_CFLAGS = $(HOST_CFLAGS) -fPIC
|
2020-03-22 16:07:03 +08:00
|
|
|
ifeq ($(BR2_PACKAGE_LUA_5_3),y)
|
|
|
|
LUAROCKS_CFLAGS += -DLUA_COMPAT_5_2
|
2020-03-22 16:07:04 +08:00
|
|
|
HOST_LUAROCKS_CFLAGS += -DLUA_COMPAT_5_2
|
2020-07-28 21:21:40 +08:00
|
|
|
else ifeq ($(BR2_PACKAGE_LUA_5_4),y)
|
|
|
|
LUAROCKS_CFLAGS += -DLUA_COMPAT_5_3
|
|
|
|
HOST_LUAROCKS_CFLAGS += -DLUA_COMPAT_5_3
|
2020-03-22 16:07:03 +08:00
|
|
|
endif
|
|
|
|
|
2014-01-11 23:42:07 +08:00
|
|
|
################################################################################
|
|
|
|
# inner-luarocks-package -- defines how the configuration, compilation and
|
|
|
|
# installation of a LuaRocks package should be done, implements a few hooks to
|
|
|
|
# tune the build process and calls the generic package infrastructure to
|
|
|
|
# generate the necessary make targets
|
|
|
|
#
|
|
|
|
# argument 1 is the lowercase package name
|
2014-07-25 02:57:41 +08:00
|
|
|
# argument 2 is the uppercase package name, including a HOST_ prefix
|
2014-01-11 23:42:07 +08:00
|
|
|
# for host packages
|
|
|
|
# argument 3 is the uppercase package name, without the HOST_ prefix
|
|
|
|
# for host packages
|
2014-02-05 17:44:03 +08:00
|
|
|
# argument 4 is the type (target or host)
|
2014-01-11 23:42:07 +08:00
|
|
|
################################################################################
|
|
|
|
|
|
|
|
define inner-luarocks-package
|
|
|
|
|
2020-03-22 16:07:04 +08:00
|
|
|
ifndef $(2)_NAME_UPSTREAM
|
|
|
|
ifdef $(3)_NAME_UPSTREAM
|
|
|
|
$(2)_NAME_UPSTREAM = $($(3)_NAME_UPSTREAM)
|
|
|
|
else
|
|
|
|
$(2)_NAME_UPSTREAM ?= $(1)
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
|
|
|
|
ifndef $(2)_SUBDIR
|
|
|
|
ifdef $(3)_SUBDIR
|
|
|
|
$(2)_SUBDIR = $($(3)_SUBDIR)
|
|
|
|
else
|
|
|
|
$(2)_SUBDIR ?= $$($(3)_NAME_UPSTREAM)-$$(shell echo "$$($(3)_VERSION)" | sed -e "s/-[0-9]$$$$//")
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
|
|
|
|
ifndef $(2)_ROCKSPEC
|
|
|
|
ifdef $(3)_ROCKSPEC
|
|
|
|
$(2)_ROCKSPEC = $($(3)_ROCKSPEC)
|
|
|
|
else
|
|
|
|
$(2)_ROCKSPEC ?= $$(call LOWERCASE,$$($(3)_NAME_UPSTREAM))-$$($(3)_VERSION).rockspec
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
|
|
|
|
ifndef $(2)_SOURCE
|
|
|
|
ifdef $(3)_SOURCE
|
|
|
|
$(2)_SOURCE = $($(3)_SOURCE)
|
|
|
|
else
|
|
|
|
$(2)_SOURCE ?= $$(call LOWERCASE,$$($(3)_NAME_UPSTREAM))-$$($(3)_VERSION).src.rock
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
|
|
|
|
ifndef $(2)_SITE
|
|
|
|
ifdef $(3)_SITE
|
|
|
|
$(2)_SITE = $($(3)_SITE)
|
|
|
|
else
|
|
|
|
$(2)_SITE ?= $$(call qstrip,$$(BR2_LUAROCKS_MIRROR))
|
|
|
|
endif
|
|
|
|
endif
|
2014-01-11 23:42:07 +08:00
|
|
|
|
2020-03-22 16:07:04 +08:00
|
|
|
ifeq ($(4),target)
|
|
|
|
$(2)_DEPENDENCIES += luainterpreter
|
|
|
|
endif
|
|
|
|
# host-luarocks implies host-luainterpreter
|
2018-11-16 21:53:00 +08:00
|
|
|
$(2)_EXTRACT_DEPENDENCIES += host-luarocks
|
2014-01-11 23:42:07 +08:00
|
|
|
|
|
|
|
#
|
luarocks-package: rework extraction
The luarocks package infra extracts the package directly under
$(BUILD_DIR), because the contents are always in a subdirectory name
<pkg>-<version>. However, this only works when the upstream package name
is the same as the Buildroot package name.
Instead, we can rely on the fixed structure of a .src.rock: it always
contains the source subdirectory in a directory called foo, where foo
is the basename of the .src.rock file. Therefore, we can extract into
a subdirectory of $($(PKG)_DIR), then move its contents up two
directory levels.
Note, we can't extract directly into $($(PKG)_DIR) because it's
possible that $($(PKG)_SUBDIR) == <pkg>-<version>. In that case, we
would try to move the directory unto itself and get "Directory not
empty". This is the case e.g. for the lpty package.
Two alternatives were considered but are more complicated:
- instead of using wildcards for the move, we could have used
<.src.rock basename>/$($(PKG)_SUBDIR);
- instead of extracting with luarocks, we could use unzip to extract
(the .src.rock is a ZIP file), but then we also have to move the
.rockspec into the subdir. In addition, sometimes the ZIP file
contains a tarball instead of the extracted source.
Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2017-02-24 01:00:38 +08:00
|
|
|
# Extract step. Extract into a temporary dir and move the relevant part to the
|
|
|
|
# source dir.
|
2014-01-11 23:42:07 +08:00
|
|
|
#
|
|
|
|
ifndef $(2)_EXTRACT_CMDS
|
|
|
|
define $(2)_EXTRACT_CMDS
|
luarocks-package: rework extraction
The luarocks package infra extracts the package directly under
$(BUILD_DIR), because the contents are always in a subdirectory name
<pkg>-<version>. However, this only works when the upstream package name
is the same as the Buildroot package name.
Instead, we can rely on the fixed structure of a .src.rock: it always
contains the source subdirectory in a directory called foo, where foo
is the basename of the .src.rock file. Therefore, we can extract into
a subdirectory of $($(PKG)_DIR), then move its contents up two
directory levels.
Note, we can't extract directly into $($(PKG)_DIR) because it's
possible that $($(PKG)_SUBDIR) == <pkg>-<version>. In that case, we
would try to move the directory unto itself and get "Directory not
empty". This is the case e.g. for the lpty package.
Two alternatives were considered but are more complicated:
- instead of using wildcards for the move, we could have used
<.src.rock basename>/$($(PKG)_SUBDIR);
- instead of extracting with luarocks, we could use unzip to extract
(the .src.rock is a ZIP file), but then we also have to move the
.rockspec into the subdir. In addition, sometimes the ZIP file
contains a tarball instead of the extracted source.
Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2017-02-24 01:00:38 +08:00
|
|
|
mkdir -p $$($(2)_DIR)/luarocks-extract
|
|
|
|
cd $$($(2)_DIR)/luarocks-extract && \
|
2020-03-22 16:07:03 +08:00
|
|
|
$$(LUAROCKS_RUN_CMD) unpack --force $$($(2)_DL_DIR)/$$($(2)_SOURCE)
|
luarocks-package: rework extraction
The luarocks package infra extracts the package directly under
$(BUILD_DIR), because the contents are always in a subdirectory name
<pkg>-<version>. However, this only works when the upstream package name
is the same as the Buildroot package name.
Instead, we can rely on the fixed structure of a .src.rock: it always
contains the source subdirectory in a directory called foo, where foo
is the basename of the .src.rock file. Therefore, we can extract into
a subdirectory of $($(PKG)_DIR), then move its contents up two
directory levels.
Note, we can't extract directly into $($(PKG)_DIR) because it's
possible that $($(PKG)_SUBDIR) == <pkg>-<version>. In that case, we
would try to move the directory unto itself and get "Directory not
empty". This is the case e.g. for the lpty package.
Two alternatives were considered but are more complicated:
- instead of using wildcards for the move, we could have used
<.src.rock basename>/$($(PKG)_SUBDIR);
- instead of extracting with luarocks, we could use unzip to extract
(the .src.rock is a ZIP file), but then we also have to move the
.rockspec into the subdir. In addition, sometimes the ZIP file
contains a tarball instead of the extracted source.
Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2017-02-24 01:00:38 +08:00
|
|
|
mv $$($(2)_DIR)/luarocks-extract/*/* $$($(2)_DIR)
|
2014-01-11 23:42:07 +08:00
|
|
|
endef
|
|
|
|
endif
|
|
|
|
|
|
|
|
#
|
|
|
|
# Build/install step.
|
|
|
|
#
|
|
|
|
ifndef $(2)_INSTALL_TARGET_CMDS
|
|
|
|
define $(2)_INSTALL_TARGET_CMDS
|
2020-03-22 16:07:03 +08:00
|
|
|
cd $$($(2)_SRCDIR) && \
|
2020-04-12 20:00:43 +08:00
|
|
|
LUAROCKS_CONFIG=$$(LUAROCKS_CONFIG_FILE) \
|
2020-03-22 16:07:03 +08:00
|
|
|
$$(LUAROCKS_RUN_CMD) make --keep --deps-mode none \
|
|
|
|
--tree "$$(TARGET_DIR)/usr" \
|
2020-09-28 23:43:49 +08:00
|
|
|
DEPS_DIR="$$(STAGING_DIR)/usr" \
|
2020-03-22 16:07:03 +08:00
|
|
|
LUA_INCDIR="$$(STAGING_DIR)/usr/include" \
|
|
|
|
LUA_LIBDIR="$$(STAGING_DIR)/usr/lib" \
|
|
|
|
CC=$$(TARGET_CC) \
|
|
|
|
LD=$$(TARGET_CC) \
|
|
|
|
CFLAGS="$$(LUAROCKS_CFLAGS)" \
|
|
|
|
LIBFLAG="-shared $$(TARGET_LDFLAGS)" \
|
|
|
|
$$($(2)_BUILD_OPTS) $$($(2)_ROCKSPEC)
|
2014-01-11 23:42:07 +08:00
|
|
|
endef
|
|
|
|
endif
|
|
|
|
|
2020-03-22 16:07:04 +08:00
|
|
|
ifndef $(2)_INSTALL_CMDS
|
|
|
|
define $(2)_INSTALL_CMDS
|
|
|
|
cd $$($(2)_SRCDIR) && \
|
|
|
|
LUAROCKS_CONFIG=$$(HOST_LUAROCKS_CONFIG_FILE) \
|
|
|
|
$$(LUAROCKS_RUN_CMD) make --keep --deps-mode none \
|
2020-09-28 23:43:49 +08:00
|
|
|
DEPS_DIR="$$(HOST_DIR)" \
|
2020-03-22 16:07:04 +08:00
|
|
|
CFLAGS="$$(HOST_LUAROCKS_CFLAGS)" \
|
|
|
|
LIBFLAG="-shared $$(HOST_LDFLAGS)" \
|
|
|
|
$$($(2)_BUILD_OPTS) $$($(2)_ROCKSPEC)
|
|
|
|
endef
|
|
|
|
endif
|
|
|
|
|
2014-01-11 23:42:07 +08:00
|
|
|
# Call the generic package infrastructure to generate the necessary
|
|
|
|
# make targets
|
2014-02-05 17:44:03 +08:00
|
|
|
$(call inner-generic-package,$(1),$(2),$(3),$(4))
|
2014-01-11 23:42:07 +08:00
|
|
|
|
2018-12-19 16:17:07 +08:00
|
|
|
# Upgrade helper
|
|
|
|
$(1)-upgrade: host-luarocks
|
|
|
|
$$(LUAROCKS_RUN_CMD) buildroot $$($(2)_NAME_UPSTREAM) $(1)
|
|
|
|
|
|
|
|
.PHONY: $(1)-upgrade
|
|
|
|
|
2014-01-11 23:42:07 +08:00
|
|
|
endef
|
|
|
|
|
|
|
|
################################################################################
|
|
|
|
# luarocks-package -- the target generator macro for LuaRocks packages
|
|
|
|
################################################################################
|
|
|
|
|
2014-02-05 17:44:03 +08:00
|
|
|
luarocks-package = $(call inner-luarocks-package,$(pkgname),$(call UPPERCASE,$(pkgname)),$(call UPPERCASE,$(pkgname)),target)
|
2020-03-22 16:07:04 +08:00
|
|
|
host-luarocks-package = $(call inner-luarocks-package,host-$(pkgname),$(call UPPERCASE,host-$(pkgname)),$(call UPPERCASE,$(pkgname)),host)
|