Skip to content

Configuration isn't checking whether the LuaJIT libraries exist in the given paths on Linux #1661

Closed

Description

@pantherman594

I'm trying to configure and build ngx_lua with ./configure --with-compat --add-dynamic-module=../lua-nginx-module-0.10.16rc4/, but it is unable to automatically find LuaJIT, and fails the LuaJIT 2.x check with error: unsupported LuaJIT version; ngx_http_lua_module requires LuaJIT 2.x..

It seems like it's not running any of the "auto-discovery" checks, which I believe is because $ngx_found is still "yes" from the previous check. This can be fixed by removing the if statement around the first check in that else block, "LuaJIT library in /usr/local/", or explicitly setting $ngx_found to no.

Even with that change, it passes the first check, even though LuaJIT is installed in /usr/, not /usr/local/. I don't think it ever checks if the LuaJIT libraries exist in the paths. This is true when LUAJIT_LIB and LUAJIT_INC were provided explicitly as well, with paths that do not exist:

configuring additional dynamic modules
adding module in ../lua-nginx-module-0.10.16rc4/
checking for LuaJIT library in /dkfjd and /asdfdsf (specified by the LUAJIT_LIB and LUAJIT_INC env, with -ldl) ... found
checking for LuaJIT 2.x ... not found
    ./configure: error: unsupported LuaJIT version; ngx_http_lua_module requires LuaJIT 2.x.

or compiling as a standard (not dynamic) module with LUAJIT_INC=/asdfdsf LUAJIT_LIB=/dkfjd ./configure --with-ld-opt="-Wl,-rpath,/usr/lib" --add-module=../lua-nginx-module-0.10.16rc4/:

configuring additional modules
adding module in ../lua-nginx-module-0.10.16rc4/
checking for LuaJIT library in /dkfjd and /asdfdsf (specified by the LUAJIT_LIB and LUAJIT_INC env, with -ldl) ... found
checking for LuaJIT 2.x ... not found
    ./configure: error: unsupported LuaJIT version; ngx_http_lua_module requires LuaJIT 2.x.

I fixed this by changing line 7 from ngx_feature_incs= to ngx_feature_incs="#include <lauxlib.h>", which I believe was removed in a96e99a and added it back like it is now in 315330a.

Looking at the ngx_feature_libs in the explicit section, it also appears that the ones in the auto discovery section should have -L/usr/local/include/luajit-2.0 / -L/usr/include/luajit-2.0 instead of -L/usr/local/lib / -L/usr/lib

It also doesn't automatically check for LuaJIT 2.1 at all.

Build Environment:
ngx_lua v0.10.16rc4
nginx 1.17.9
luajit 2.0.5-2 (I have also tried luajit 2.1 0ad60cc and openresty/luajit2@38cb695, with the same results)
gcc 9.2.1 20200130

Activity

  1. pavelkim commented on Apr 3, 2020

    @pavelkim

    Hello,
    First of all thanks for the leads. I thought, I've got the same issue, but no.
    Compiled LuaJIT 2.0.5 in a temporary location, didn't install it to the system.

    LUAJIT_LIB="/tmp/luajit/lib" LUAJIT_INC="/tmp/luajit/include/luajit-2.0" ./configure --prefix=/opt/nginx
    ...
    adding module in ../lua-nginx-module
    checking for LuaJIT library in /tmp/luajit/lib and /tmp/luajit/include/luajit-2.0 (specified by the LUAJIT_LIB and LUAJIT_INC env, with -ldl) ... found
    adding extra linking options needed by LuaJIT on x86_64
    checking for LuaJIT 2.x ... found
    checking for Lua language 5.1 ... found
    

    I think this line is misleading:

    checking for LuaJIT library in /tmp/luajit/lib and /tmp/luajit/include/luajit-2.0 (specified by the LUAJIT_LIB and LUAJIT_INC env, with -ldl) ... found
    
  2. anil-venkata commented on Nov 30, 2020

    @anil-venkata

    i solved it by specifying LUAJIT_LIB and LUAJIT_INC explicitly in the config file (at the variable initialisation)

    LUAJIT_INC="/path/to/luajit/include/luajit-2.1" LUAJIT_LIB="/path/to/luajit//lib"

    and it installed

  3. sharmashivanand commented on Feb 3, 2022

    @sharmashivanand

    What's the path going to be on Debian / Ubuntu? Sad this is still open and not yet resolved.

  4. peterreji commented on Mar 28, 2022

    @peterreji

    i solved it by specifying LUAJIT_LIB and LUAJIT_INC explicitly in the config file (at the variable initialisation)

    LUAJIT_INC="/path/to/luajit/include/luajit-2.1" LUAJIT_LIB="/path/to/luajit//lib"

    and it installed

    this worked for me as well

  5. nivaldodasilva commented on Jan 3, 2024

    @nivaldodasilva

    What's the path going to be on Debian / Ubuntu? Sad this is still open and not yet resolved.

    I share your frustration; I think some developers either retarded or they don't care. It seems when we download the https://github.com/openresty/luajit2, the lib and include folder don't exist. So again, no idea how to set
    LUAJIT_INC="/path/to/luajit/include/luajit-2.1" LUAJIT_LIB="/path/to/luajit//lib"

  6. zhuizhuhaomeng commented on Jan 3, 2024

    @zhuizhuhaomeng
    Contributor
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions