Philipp,

Thanks a ton.

-Steven

On Sat, Aug 30, 2014 at 2:23 PM, Philipp Janda <[email protected]> wrote:
> Am 30.08.2014 um 01:13 schröbte Steven Degutis:
>> I can't for the life of me figure this out.
>>
>> Here's the module I'm trying to convert:
>> https://github.com/mjolnir-io/mjolnir-keycodes
>>
>> Basically it's a really simple module. The only strange things it
>> needs are `CFLAGS += -fobjc-arc -Wall -Wextra` and `LDFLAGS +=
>> -framework Cocoa -framework Carbon`, and for `CC` to not contain
>> `MACOSX_DEPLOYMENT_TARGET=10.5` by default like it does. Ideally I'd
>> like to use the `builtin` back-end according to the [Rockspec
>> format](http://luarocks.org/en/Rockspec_format), but I don't think
>> that works with this.
>
> No, the "builtin" backend is supposed to be platform- and
> compiler-agnostic, so there is no way to specify compiler switches
> directly in the rockspec. The "make" backend is probably your best bet.
>
>>
>> Now, all of the above is strictly about trying to fix the current
>> [mjolnir-keycodes-0.1-1.rockspec](https://github.com/mjolnir-io/mjolnir-keycodes/blob/master/mjolnir-keycodes-0.1-1.rockspec)
>> file. What I have in the repo right now will *technically* build and
>> install. But when I try `k = require 'mj.keycodes'`, it fails saying
>> `module 'mj.keycodes.internal' not found` (which is referring to [this
>> line](https://github.com/mjolnir-io/mjolnir-keycodes/blob/master/keycodes.lua#L17)
>> inside `keycodes.lua`). This means it's actually loading the Lua
>> module, but it's not registering the file correctly. Thus I'm pretty
>> sure it's related to the `.rockspec` file not being written correctly.
>>
>> Technically the file is missing also:
>>
>> ~~~
>> $ ls -la /usr/local/share/lua/5.1/mj/
>> total 8
>> drwxr-xr-x  3 sdegutis  admin   102B Aug 29 18:01 .
>> drwxr-xr-x  7 sdegutis  admin   238B Aug 29 18:01 ..
>> -rw-r--r--  1 sdegutis  admin   1.2K Aug 29 18:01 keycodes.lua
>> ~~~
>
> The compiled C module should be
> `/usr/local/lib/lua/5.1/mj/keycodes/internal.so`, so *not* in
> `/usr/local/share`.
>
>>
>> But that's not the only problem. I'm also probably referencing it
>> wrongly inside the `.rockspec` file. And on top of that, it probably
>> contains the wrong `luaopen_*` name internally.
>
> The correct one should be `luaopen_mj_keycodes_internal`.
>
>>
>> Please help. Thanks.
>
> Using the "make" backend has reasonable defaults for most settings, so
> you often only need to pass some variables from LuaRocks to `make`:
>
>      build = {
>        type = "make",
>        variables = {
>          DLL_INSTALL_DIR = "$(LIBDIR)",
>          LUA_INSTALL_DIR = "$(LUADIR)",
>          LUA_INCDIR = "$(LUA_INCDIR)",
>          CC = "$(CC)",
>          CFLAGS = "$(CFLAGS)",
>          LIBFLAG = "$(LIBFLAG)",
>        }
>      }
>
> This assumes that you have a `Makefile` in the top directory, the
> default target (usually the topmost target) should build the dynamic
> library, and the `install` target should create the necessary sub
> directories in `${DLL_INSTALL_DIR}` and `${LUA_INSTALL_DIR}` and copy
> the `.lua`/`.so` files there. The variables listed in the rockspec will
> *replace* any variables you set in the `Makefile`, so you can put
> default settings there for use without LuaRocks.
>
> You might need to remove `CC` from the list above, because it will
> evaluate to `export MACOS_DEPLOYMENT_TARGET=10.x; gcc` on your OS, where
> `x` is never greater than 5. `${LIBFLAG}` will evaluate to the compiler
> flags needed to build a C extension module (`-shared` on sane OSes, and
> the whole `-bundle -undefined dynamic_lookup -all_load` on MacOS). And
> you don't need to link your C extension to the Lua library on MacOS, btw.
>
>>
>> -Steven
>>
>
> HTH,
> Philipp
>
>
>
>
> ------------------------------------------------------------------------------
> Slashdot TV.
> Video for Nerds.  Stuff that matters.
> http://tv.slashdot.org/
> _______________________________________________
> Luarocks-developers mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/luarocks-developers

------------------------------------------------------------------------------
Slashdot TV.  
Video for Nerds.  Stuff that matters.
http://tv.slashdot.org/
_______________________________________________
Luarocks-developers mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/luarocks-developers

Reply via email to