<div dir="ltr"><br><br><div class="gmail_quote"><div dir="ltr">Le ven. 30 nov. 2018 à 11:38, Thomas Petazzoni <<a href="mailto:thomas.petazzoni@bootlin.com">thomas.petazzoni@bootlin.com</a>> a écrit :<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Currently, <a href="http://luarocks.mk" rel="noreferrer" target="_blank">luarocks.mk</a> generates a configuration file with hardcoded<br>
STAGING_DIR, TARGET_DIR, TARGET_CC, LUAROCKS_CFLAGS and TARGET_LDFLAGS<br>
values. This is not compatible with per-package folders, where the<br>
value of STAGING_DIR, TARGET_DIR, TARGET_CC and possibly<br>
TARGET_CFLAGS/TARGET_LDFLAGS may be different from one package to the<br>
other.<br>
<br>
Based on input from François Perrad, this commit:<br>
<br>
 - Changes the Luarocks configuration file to use os_getenv() for the<br>
   appropriate variables. Since the contents of this file is not<br>
   fixed, it is no longer generated by <a href="http://luarocks.mk" rel="noreferrer" target="_blank">luarocks.mk</a> using a series of<br>
   'echo' but simply concatenated with the rest of the Luarocks<br>
   configuration file.<br>
<br>
 - Adjusts LUAROCKS_RUNV_ENV so that the necessary environment<br>
   variables are now passed.<br>
<br>
Signed-off-by: Thomas Petazzoni <<a href="mailto:thomas.petazzoni@bootlin.com" target="_blank">thomas.petazzoni@bootlin.com</a>><br></blockquote><div><br></div><div>Acked-by: Francois Perrad <<a href="mailto:francois.perrad@gadz.org" target="_blank">francois.perrad@gadz.org</a>></div><div> <br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
---<br>
Changes since v2:<br>
 - Do not pass STAGING_DIR/TARGET_DIR in LUAROCKS_RUN_ENV, since they<br>
   are already exported globally in the environment. Suggested by<br>
   Arnout Vandecappelle.<br>
<br>
Changes since v1:<br>
 - Drop the luarocks patch exporting getenv() in the sandbox, as<br>
   François explained this is not needed.<br>
 - Define a getenv() function in luarocks-br-config that returns the<br>
   empty string when os_getenv() returns nothing so that luarocks can<br>
   still be called without all the environment variable defined, as<br>
   suggested by François.<br>
---<br>
 package/luarocks/luarocks-br-config.lua | 13 +++++++++++++<br>
 package/luarocks/<a href="http://luarocks.mk" rel="noreferrer" target="_blank">luarocks.mk</a>            | 19 ++++++-------------<br>
 2 files changed, 19 insertions(+), 13 deletions(-)<br>
 create mode 100644 package/luarocks/luarocks-br-config.lua<br>
<br>
diff --git a/package/luarocks/luarocks-br-config.lua b/package/luarocks/luarocks-br-config.lua<br>
new file mode 100644<br>
index 0000000000..32d71e1e21<br>
--- /dev/null<br>
+++ b/package/luarocks/luarocks-br-config.lua<br>
@@ -0,0 +1,13 @@<br>
+-- BR cross-compilation<br>
+local function getenv (name) return os_getenv(name) or '' end<br>
+variables.LUA_INCDIR = getenv('STAGING_DIR') .. [[/usr/include]]<br>
+variables.LUA_LIBDIR = getenv('STAGING_DIR') .. [[/usr/lib]]<br>
+variables.CC = getenv('TARGET_CC')<br>
+variables.LD = getenv('TARGET_CC')<br>
+variables.CFLAGS = getenv('TARGET_CFLAGS')<br>
+variables.LIBFLAG = [[-shared ]] .. getenv('TARGET_LDFLAGS')<br>
+external_deps_dirs = { getenv('STAGING_DIR') .. [[/usr]] }<br>
+gcc_rpath = false<br>
+rocks_trees = { getenv('TARGET_DIR') .. [[/usr]] }<br>
+wrap_bin_scripts = false<br>
+deps_mode = [[none]]<br>
diff --git a/package/luarocks/<a href="http://luarocks.mk" rel="noreferrer" target="_blank">luarocks.mk</a> b/package/luarocks/<a href="http://luarocks.mk" rel="noreferrer" target="_blank">luarocks.mk</a><br>
index cfef8f19b3..1b29a21406 100644<br>
--- a/package/luarocks/<a href="http://luarocks.mk" rel="noreferrer" target="_blank">luarocks.mk</a><br>
+++ b/package/luarocks/<a href="http://luarocks.mk" rel="noreferrer" target="_blank">luarocks.mk</a><br>
@@ -30,23 +30,16 @@ endef<br>
 define HOST_LUAROCKS_INSTALL_CMDS<br>
        rm -f $(LUAROCKS_CONFIG_FILE)<br>
        $(MAKE1) -C $(@D) install<br>
-       echo "-- BR cross-compilation"                                  >> $(LUAROCKS_CONFIG_FILE)<br>
-       echo "variables.LUA_INCDIR = [[$(STAGING_DIR)/usr/include]]"    >> $(LUAROCKS_CONFIG_FILE)<br>
-       echo "variables.LUA_LIBDIR = [[$(STAGING_DIR)/usr/lib]]"        >> $(LUAROCKS_CONFIG_FILE)<br>
-       echo "variables.CC = [[$(TARGET_CC)]]"                          >> $(LUAROCKS_CONFIG_FILE)<br>
-       echo "variables.LD = [[$(TARGET_CC)]]"                          >> $(LUAROCKS_CONFIG_FILE)<br>
-       echo "variables.CFLAGS = [[$(LUAROCKS_CFLAGS)]]"                >> $(LUAROCKS_CONFIG_FILE)<br>
-       echo "variables.LIBFLAG = [[-shared $(TARGET_LDFLAGS)]]"        >> $(LUAROCKS_CONFIG_FILE)<br>
-       echo "external_deps_dirs = { [[$(STAGING_DIR)/usr]] }"          >> $(LUAROCKS_CONFIG_FILE)<br>
-       echo "gcc_rpath = false"                                        >> $(LUAROCKS_CONFIG_FILE)<br>
-       echo "rocks_trees = { [[$(TARGET_DIR)/usr]] }"                  >> $(LUAROCKS_CONFIG_FILE)<br>
-       echo "wrap_bin_scripts = false"                                 >> $(LUAROCKS_CONFIG_FILE)<br>
-       echo "deps_mode = [[none]]"                                     >> $(LUAROCKS_CONFIG_FILE)<br>
+       cat $(HOST_LUAROCKS_PKGDIR)/luarocks-br-config.lua >> $(LUAROCKS_CONFIG_FILE)<br>
 endef<br>
<br>
 $(eval $(host-generic-package))<br>
<br>
-LUAROCKS_RUN_ENV = LUA_PATH="$(HOST_DIR)/share/lua/$(LUAINTERPRETER_ABIVER)/?.lua"<br>
+LUAROCKS_RUN_ENV = \<br>
+       LUA_PATH="$(HOST_DIR)/share/lua/$(LUAINTERPRETER_ABIVER)/?.lua" \<br>
+       TARGET_CC="$(TARGET_CC)" \<br>
+       TARGET_CFLAGS="$(LUAROCKS_CFLAGS)" \<br>
+       TARGET_LDFLAGS="$(TARGET_LDFLAGS)"<br>
 LUAROCKS_RUN_CMD = $(LUA_RUN) $(HOST_DIR)/bin/luarocks<br>
<br>
 define LUAROCKS_FINALIZE_TARGET<br>
-- <br>
2.19.2<br>
<br>
</blockquote></div></div>