* [Buildroot] [PATCH next v3] package/luarocks: rework configuration file for per-package folders
@ 2018-11-30 10:38 Thomas Petazzoni
2018-12-01 8:39 ` François Perrad
2018-12-01 21:55 ` Thomas Petazzoni
0 siblings, 2 replies; 3+ messages in thread
From: Thomas Petazzoni @ 2018-11-30 10:38 UTC (permalink / raw)
To: buildroot
Currently, luarocks.mk generates a configuration file with hardcoded
STAGING_DIR, TARGET_DIR, TARGET_CC, LUAROCKS_CFLAGS and TARGET_LDFLAGS
values. This is not compatible with per-package folders, where the
value of STAGING_DIR, TARGET_DIR, TARGET_CC and possibly
TARGET_CFLAGS/TARGET_LDFLAGS may be different from one package to the
other.
Based on input from Fran?ois Perrad, this commit:
- Changes the Luarocks configuration file to use os_getenv() for the
appropriate variables. Since the contents of this file is not
fixed, it is no longer generated by luarocks.mk using a series of
'echo' but simply concatenated with the rest of the Luarocks
configuration file.
- Adjusts LUAROCKS_RUNV_ENV so that the necessary environment
variables are now passed.
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
---
Changes since v2:
- Do not pass STAGING_DIR/TARGET_DIR in LUAROCKS_RUN_ENV, since they
are already exported globally in the environment. Suggested by
Arnout Vandecappelle.
Changes since v1:
- Drop the luarocks patch exporting getenv() in the sandbox, as
Fran?ois explained this is not needed.
- Define a getenv() function in luarocks-br-config that returns the
empty string when os_getenv() returns nothing so that luarocks can
still be called without all the environment variable defined, as
suggested by Fran?ois.
---
package/luarocks/luarocks-br-config.lua | 13 +++++++++++++
package/luarocks/luarocks.mk | 19 ++++++-------------
2 files changed, 19 insertions(+), 13 deletions(-)
create mode 100644 package/luarocks/luarocks-br-config.lua
diff --git a/package/luarocks/luarocks-br-config.lua b/package/luarocks/luarocks-br-config.lua
new file mode 100644
index 0000000000..32d71e1e21
--- /dev/null
+++ b/package/luarocks/luarocks-br-config.lua
@@ -0,0 +1,13 @@
+-- BR cross-compilation
+local function getenv (name) return os_getenv(name) or '' end
+variables.LUA_INCDIR = getenv('STAGING_DIR') .. [[/usr/include]]
+variables.LUA_LIBDIR = getenv('STAGING_DIR') .. [[/usr/lib]]
+variables.CC = getenv('TARGET_CC')
+variables.LD = getenv('TARGET_CC')
+variables.CFLAGS = getenv('TARGET_CFLAGS')
+variables.LIBFLAG = [[-shared ]] .. getenv('TARGET_LDFLAGS')
+external_deps_dirs = { getenv('STAGING_DIR') .. [[/usr]] }
+gcc_rpath = false
+rocks_trees = { getenv('TARGET_DIR') .. [[/usr]] }
+wrap_bin_scripts = false
+deps_mode = [[none]]
diff --git a/package/luarocks/luarocks.mk b/package/luarocks/luarocks.mk
index cfef8f19b3..1b29a21406 100644
--- a/package/luarocks/luarocks.mk
+++ b/package/luarocks/luarocks.mk
@@ -30,23 +30,16 @@ endef
define HOST_LUAROCKS_INSTALL_CMDS
rm -f $(LUAROCKS_CONFIG_FILE)
$(MAKE1) -C $(@D) install
- echo "-- BR cross-compilation" >> $(LUAROCKS_CONFIG_FILE)
- echo "variables.LUA_INCDIR = [[$(STAGING_DIR)/usr/include]]" >> $(LUAROCKS_CONFIG_FILE)
- echo "variables.LUA_LIBDIR = [[$(STAGING_DIR)/usr/lib]]" >> $(LUAROCKS_CONFIG_FILE)
- echo "variables.CC = [[$(TARGET_CC)]]" >> $(LUAROCKS_CONFIG_FILE)
- echo "variables.LD = [[$(TARGET_CC)]]" >> $(LUAROCKS_CONFIG_FILE)
- echo "variables.CFLAGS = [[$(LUAROCKS_CFLAGS)]]" >> $(LUAROCKS_CONFIG_FILE)
- echo "variables.LIBFLAG = [[-shared $(TARGET_LDFLAGS)]]" >> $(LUAROCKS_CONFIG_FILE)
- echo "external_deps_dirs = { [[$(STAGING_DIR)/usr]] }" >> $(LUAROCKS_CONFIG_FILE)
- echo "gcc_rpath = false" >> $(LUAROCKS_CONFIG_FILE)
- echo "rocks_trees = { [[$(TARGET_DIR)/usr]] }" >> $(LUAROCKS_CONFIG_FILE)
- echo "wrap_bin_scripts = false" >> $(LUAROCKS_CONFIG_FILE)
- echo "deps_mode = [[none]]" >> $(LUAROCKS_CONFIG_FILE)
+ cat $(HOST_LUAROCKS_PKGDIR)/luarocks-br-config.lua >> $(LUAROCKS_CONFIG_FILE)
endef
$(eval $(host-generic-package))
-LUAROCKS_RUN_ENV = LUA_PATH="$(HOST_DIR)/share/lua/$(LUAINTERPRETER_ABIVER)/?.lua"
+LUAROCKS_RUN_ENV = \
+ LUA_PATH="$(HOST_DIR)/share/lua/$(LUAINTERPRETER_ABIVER)/?.lua" \
+ TARGET_CC="$(TARGET_CC)" \
+ TARGET_CFLAGS="$(LUAROCKS_CFLAGS)" \
+ TARGET_LDFLAGS="$(TARGET_LDFLAGS)"
LUAROCKS_RUN_CMD = $(LUA_RUN) $(HOST_DIR)/bin/luarocks
define LUAROCKS_FINALIZE_TARGET
--
2.19.2
^ permalink raw reply related [flat|nested] 3+ messages in thread
* [Buildroot] [PATCH next v3] package/luarocks: rework configuration file for per-package folders
2018-11-30 10:38 [Buildroot] [PATCH next v3] package/luarocks: rework configuration file for per-package folders Thomas Petazzoni
@ 2018-12-01 8:39 ` François Perrad
2018-12-01 21:55 ` Thomas Petazzoni
1 sibling, 0 replies; 3+ messages in thread
From: François Perrad @ 2018-12-01 8:39 UTC (permalink / raw)
To: buildroot
Le ven. 30 nov. 2018 ? 11:38, Thomas Petazzoni <thomas.petazzoni@bootlin.com>
a ?crit :
> Currently, luarocks.mk generates a configuration file with hardcoded
> STAGING_DIR, TARGET_DIR, TARGET_CC, LUAROCKS_CFLAGS and TARGET_LDFLAGS
> values. This is not compatible with per-package folders, where the
> value of STAGING_DIR, TARGET_DIR, TARGET_CC and possibly
> TARGET_CFLAGS/TARGET_LDFLAGS may be different from one package to the
> other.
>
> Based on input from Fran?ois Perrad, this commit:
>
> - Changes the Luarocks configuration file to use os_getenv() for the
> appropriate variables. Since the contents of this file is not
> fixed, it is no longer generated by luarocks.mk using a series of
> 'echo' but simply concatenated with the rest of the Luarocks
> configuration file.
>
> - Adjusts LUAROCKS_RUNV_ENV so that the necessary environment
> variables are now passed.
>
> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
>
Acked-by: Francois Perrad <francois.perrad@gadz.org>
---
> Changes since v2:
> - Do not pass STAGING_DIR/TARGET_DIR in LUAROCKS_RUN_ENV, since they
> are already exported globally in the environment. Suggested by
> Arnout Vandecappelle.
>
> Changes since v1:
> - Drop the luarocks patch exporting getenv() in the sandbox, as
> Fran?ois explained this is not needed.
> - Define a getenv() function in luarocks-br-config that returns the
> empty string when os_getenv() returns nothing so that luarocks can
> still be called without all the environment variable defined, as
> suggested by Fran?ois.
> ---
> package/luarocks/luarocks-br-config.lua | 13 +++++++++++++
> package/luarocks/luarocks.mk | 19 ++++++-------------
> 2 files changed, 19 insertions(+), 13 deletions(-)
> create mode 100644 package/luarocks/luarocks-br-config.lua
>
> diff --git a/package/luarocks/luarocks-br-config.lua
> b/package/luarocks/luarocks-br-config.lua
> new file mode 100644
> index 0000000000..32d71e1e21
> --- /dev/null
> +++ b/package/luarocks/luarocks-br-config.lua
> @@ -0,0 +1,13 @@
> +-- BR cross-compilation
> +local function getenv (name) return os_getenv(name) or '' end
> +variables.LUA_INCDIR = getenv('STAGING_DIR') .. [[/usr/include]]
> +variables.LUA_LIBDIR = getenv('STAGING_DIR') .. [[/usr/lib]]
> +variables.CC = getenv('TARGET_CC')
> +variables.LD = getenv('TARGET_CC')
> +variables.CFLAGS = getenv('TARGET_CFLAGS')
> +variables.LIBFLAG = [[-shared ]] .. getenv('TARGET_LDFLAGS')
> +external_deps_dirs = { getenv('STAGING_DIR') .. [[/usr]] }
> +gcc_rpath = false
> +rocks_trees = { getenv('TARGET_DIR') .. [[/usr]] }
> +wrap_bin_scripts = false
> +deps_mode = [[none]]
> diff --git a/package/luarocks/luarocks.mk b/package/luarocks/luarocks.mk
> index cfef8f19b3..1b29a21406 100644
> --- a/package/luarocks/luarocks.mk
> +++ b/package/luarocks/luarocks.mk
> @@ -30,23 +30,16 @@ endef
> define HOST_LUAROCKS_INSTALL_CMDS
> rm -f $(LUAROCKS_CONFIG_FILE)
> $(MAKE1) -C $(@D) install
> - echo "-- BR cross-compilation" >>
> $(LUAROCKS_CONFIG_FILE)
> - echo "variables.LUA_INCDIR = [[$(STAGING_DIR)/usr/include]]" >>
> $(LUAROCKS_CONFIG_FILE)
> - echo "variables.LUA_LIBDIR = [[$(STAGING_DIR)/usr/lib]]" >>
> $(LUAROCKS_CONFIG_FILE)
> - echo "variables.CC = [[$(TARGET_CC)]]" >>
> $(LUAROCKS_CONFIG_FILE)
> - echo "variables.LD = [[$(TARGET_CC)]]" >>
> $(LUAROCKS_CONFIG_FILE)
> - echo "variables.CFLAGS = [[$(LUAROCKS_CFLAGS)]]" >>
> $(LUAROCKS_CONFIG_FILE)
> - echo "variables.LIBFLAG = [[-shared $(TARGET_LDFLAGS)]]" >>
> $(LUAROCKS_CONFIG_FILE)
> - echo "external_deps_dirs = { [[$(STAGING_DIR)/usr]] }" >>
> $(LUAROCKS_CONFIG_FILE)
> - echo "gcc_rpath = false" >>
> $(LUAROCKS_CONFIG_FILE)
> - echo "rocks_trees = { [[$(TARGET_DIR)/usr]] }" >>
> $(LUAROCKS_CONFIG_FILE)
> - echo "wrap_bin_scripts = false" >>
> $(LUAROCKS_CONFIG_FILE)
> - echo "deps_mode = [[none]]" >>
> $(LUAROCKS_CONFIG_FILE)
> + cat $(HOST_LUAROCKS_PKGDIR)/luarocks-br-config.lua >>
> $(LUAROCKS_CONFIG_FILE)
> endef
>
> $(eval $(host-generic-package))
>
> -LUAROCKS_RUN_ENV =
> LUA_PATH="$(HOST_DIR)/share/lua/$(LUAINTERPRETER_ABIVER)/?.lua"
> +LUAROCKS_RUN_ENV = \
> + LUA_PATH="$(HOST_DIR)/share/lua/$(LUAINTERPRETER_ABIVER)/?.lua" \
> + TARGET_CC="$(TARGET_CC)" \
> + TARGET_CFLAGS="$(LUAROCKS_CFLAGS)" \
> + TARGET_LDFLAGS="$(TARGET_LDFLAGS)"
> LUAROCKS_RUN_CMD = $(LUA_RUN) $(HOST_DIR)/bin/luarocks
>
> define LUAROCKS_FINALIZE_TARGET
> --
> 2.19.2
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.busybox.net/pipermail/buildroot/attachments/20181201/c6fee140/attachment.html>
^ permalink raw reply [flat|nested] 3+ messages in thread
* [Buildroot] [PATCH next v3] package/luarocks: rework configuration file for per-package folders
2018-11-30 10:38 [Buildroot] [PATCH next v3] package/luarocks: rework configuration file for per-package folders Thomas Petazzoni
2018-12-01 8:39 ` François Perrad
@ 2018-12-01 21:55 ` Thomas Petazzoni
1 sibling, 0 replies; 3+ messages in thread
From: Thomas Petazzoni @ 2018-12-01 21:55 UTC (permalink / raw)
To: buildroot
Hello,
On Fri, 30 Nov 2018 11:38:29 +0100, Thomas Petazzoni wrote:
> Currently, luarocks.mk generates a configuration file with hardcoded
> STAGING_DIR, TARGET_DIR, TARGET_CC, LUAROCKS_CFLAGS and TARGET_LDFLAGS
> values. This is not compatible with per-package folders, where the
> value of STAGING_DIR, TARGET_DIR, TARGET_CC and possibly
> TARGET_CFLAGS/TARGET_LDFLAGS may be different from one package to the
> other.
>
> Based on input from Fran?ois Perrad, this commit:
>
> - Changes the Luarocks configuration file to use os_getenv() for the
> appropriate variables. Since the contents of this file is not
> fixed, it is no longer generated by luarocks.mk using a series of
> 'echo' but simply concatenated with the rest of the Luarocks
> configuration file.
>
> - Adjusts LUAROCKS_RUNV_ENV so that the necessary environment
> variables are now passed.
>
> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
> ---
> Changes since v2:
> - Do not pass STAGING_DIR/TARGET_DIR in LUAROCKS_RUN_ENV, since they
> are already exported globally in the environment. Suggested by
> Arnout Vandecappelle.
Applied to next, thanks.
Thomas
--
Thomas Petazzoni, CTO, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2018-12-01 21:55 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-11-30 10:38 [Buildroot] [PATCH next v3] package/luarocks: rework configuration file for per-package folders Thomas Petazzoni
2018-12-01 8:39 ` François Perrad
2018-12-01 21:55 ` Thomas Petazzoni
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox