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
