Created
April 26, 2012 18:33
-
-
Save dvv/2501729 to your computer and use it in GitHub Desktop.
package.searchpath experiment
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env luajit2 | |
local Util = require('utils') | |
local p = Util.prettyPrint | |
local resolve | |
do | |
local ffi = require('ffi') | |
local C = ffi.C | |
ffi.cdef[[ | |
char *realpath(const char *path, char *resolved_path); | |
size_t strlen(const char *s); | |
void free(void *ptr); | |
]] | |
resolve = function(path) | |
local buf = ffi.new('uint8_t[1024]') | |
local s = C.realpath(path, buf) | |
if s ~= nil then | |
local r = ffi.string(s, C.strlen(s)) | |
return r | |
end | |
end | |
end | |
local pwd = os.getenv('PWD') | |
local sys_path_lua = '/usr/local/share/lua/5.1' | |
local sys_path_bin = '/usr/local/lib/lua/5.1' | |
local new_path = '../modules/?/init.lua;./?.lua;./?/init.lua;' .. sys_path_lua .. '/?.lua;' .. sys_path_lua .. '/?/init.lua' .. | |
'../modules/?/init.so;./?.so;' .. sys_path_bin .. '/?.so;' .. sys_path_bin .. '/loadall.so' | |
local _require = require | |
require = function(modname) | |
local abs_modname = resolve(package.searchpath(modname, new_path)) | |
--abs_modname = abs_modname:sub(1, -5) | |
print('REQ', modname, abs_modname) | |
local ret = dofile(abs_modname) | |
package.loaded[abs_modname] = ret | |
return ret | |
--[[ | |
--if modname:sub(1, 2) == './' then | |
local _path = package.path | |
local _cpath = package.cpath | |
package.path = abs_modname | |
package.cpath = abs_modname | |
local r = _require(abs_modname) | |
package.path = _path | |
package.cpath = _cpath | |
return r | |
--end | |
--return _require(abs_modname) | |
]] | |
end | |
p(_G, package) | |
package.path = '?' | |
package.cpath = '?' | |
--local Codec = require('luabins') | |
--p(Codec) | |
local WebSocket = require('websocket') | |
p(WebSocket) | |
p(package) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment