[pkg-lua-devel] Bug#1019088: luarocks: always configured with x86_64 libraries even on other architectures

Gergely Imreh gergely at imreh.net
Sat Sep 3 16:01:13 BST 2022


Package: luarocks
Version: 2.4.2+dfsg-1.1
Severity: important

The luarocks package on this version sets up a number of "site_config.lua"
files that configures behaviour. Those files set the relevant library
paths to the "x86_64" ones even on other platforms, such as arm64, armhf (armv7).

Relevant lines from the configurations on the current arm64 machine that's being used::

> $ cat /usr/share/lua/*/luarocks/site_config.lua |grep x86
> site_config.LUAROCKS_EXTERNAL_DEPS_SUBDIRS={ bin="bin", lib={ "lib", [[lib/x86_64-linux-gnu]] }, include="include" }
> site_config.LUAROCKS_RUNTIME_EXTERNAL_DEPS_SUBDIRS={ bin="bin", lib={ "lib", [[lib/x86_64-linux-gnu]] }, include="include" }
> site_config.LUAROCKS_EXTERNAL_DEPS_SUBDIRS={ bin="bin", lib={ "lib", [[lib/x86_64-linux-gnu]] }, include="include" }
> site_config.LUAROCKS_RUNTIME_EXTERNAL_DEPS_SUBDIRS={ bin="bin", lib={ "lib", [[lib/x86_64-linux-gnu]] }, include="include" }
> site_config.LUAROCKS_EXTERNAL_DEPS_SUBDIRS={ bin="bin", lib={ "lib", [[lib/x86_64-linux-gnu]] }, include="include" }
> site_config.LUAROCKS_RUNTIME_EXTERNAL_DEPS_SUBDIRS={ bin="bin", lib={ "lib", [[lib/x86_64-linux-gnu]] }, include="include" }

> $ ls -1 /usr/share/lua/*/luarocks/site_config.lua
> /usr/share/lua/5.1/luarocks/site_config.lua
> /usr/share/lua/5.2/luarocks/site_config.lua
> /usr/share/lua/5.3/luarocks/site_config.lua

This prevents luarocks to install packages that require actual compilation in the system.
This can for example be tested with the `idn2` package, e.g. in an arm64 environment:

> $ sudo apt install libidn2-0-dev
> ...
> $ luarocks install idn2
> Installing https://luarocks.org/idn2-0.1-0.src.rock
>
> Error: Could not find library file for IDN2
>   No file libidn2.a in /usr/lib
>   No file libidn2.a in /usr/lib/x86_64-linux-gnu
>   No file libidn2.so in /usr/lib
>   No file libidn2.so in /usr/lib/x86_64-linux-gnu
>   No file matching libidn2.so.* in /usr/lib
>   No file matching libidn2.so.* in /usr/lib/x86_64-linux-gnu
> You may have to install IDN2 in your system and/or pass IDN2_DIR or IDN2_LIBDIR to the luarocks command.
> Example: luarocks install idn2 IDN2_DIR=/usr/local

^^^ As visible, luarocks is trying to use the x86_64 libraries.

Fixing up things in place with the following command enables proper compilation, not surprisingly:

> $ sudo sed -i 's/lib\/x86_64-linux-gnu/lib\/'`gcc -dumpmachine`'/' /usr/share/lua/*/luarocks/site_config.lua

where "gcc -dumpmachine" inserts the correct gcc triplet for the given architecture,
after which the install succeeds:

> $ luarocks install idn2
> Installing https://luarocks.org/idn2-0.1-0.src.rock
> gcc -O2 -fPIC -I/usr/include/lua5.1 -c idn2/idn2.c -o idn2/idn2.o -I/usr/include
> gcc -shared -o idn2.so -L/usr/local/lib idn2/idn2.o -L/usr/lib/aarch64-linux-gnu -Wl,-rpath,/usr/lib/aarch64-linux-gnu: -lidn2
> idn2 0.1-0 is now installed in /usr/local (license: MIT)

This issue affects Debian versions where luarocks 2.x is used (ie. bullseye/stable and buster/oldstable as well,
which is still quite widely used).

The testing version of the package on luarocks 3.x is no longer affected.

-- System Information:
Debian Release: 11.4
  APT prefers stable-updates
  APT policy: (500, 'stable-updates'), (500, 'stable-security'), (500, 'stable')
Architecture: arm64 (aarch64)

Kernel: Linux 5.10.124-linuxkit (SMP w/6 CPU threads)
Kernel taint flags: TAINT_OOT_MODULE, TAINT_RANDSTRUCT
Locale: LANG=C, LC_CTYPE=C.UTF-8 (charmap=UTF-8), LANGUAGE not set
Shell: /bin/sh linked to /bin/dash
Init: unable to detect

Versions of packages luarocks depends on:
ii  liblua5.1-0-dev [liblua5.1-dev]  5.1.5-8.1+b3
ii  lua-any                          27
ii  lua5.1                           5.1.5-8.1+b3
ii  unzip                            6.0-26+deb11u1
ii  wget                             1.21-1+deb11u1
ii  zip                              3.0-12

Versions of packages luarocks recommends:
ii  lua-sec  1.0-1

luarocks suggests no packages.

-- no debconf information



More information about the pkg-lua-devel mailing list