From 4745a6e42598414fb38565c75e84bd13723372ba Mon Sep 17 00:00:00 2001 From: Philipp Janda Date: Thu, 26 Sep 2013 09:02:33 +0200 Subject: support for tables in (runtime_)external_deps_subdirs.* --- src/luarocks/cfg.lua | 17 +++++++++++++++++ src/luarocks/deps.lua | 36 +++++++++++++++++++++++++++--------- 2 files changed, 44 insertions(+), 9 deletions(-) (limited to 'src') diff --git a/src/luarocks/cfg.lua b/src/luarocks/cfg.lua index 8e26bb46..9227db4b 100644 --- a/src/luarocks/cfg.lua +++ b/src/luarocks/cfg.lua @@ -437,6 +437,23 @@ if detected.solaris then defaults.variables.MAKE = "gmake" end +if type(site_config.LUAROCKS_ADD_LIB_SUBDIRS) == "table" and next(site_config.LUAROCKS_ADD_LIB_SUBDIRS) ~= nil then + local lib = defaults.external_deps_subdirs.lib + if type(lib) ~= "table" then + lib = { lib } + end + local rt_lib = defaults.runtime_external_deps_subdirs.lib + if type(rt_lib) ~= "table" then + rt_lib = { rt_lib } + end + for i,v in ipairs(site_config.LUAROCKS_ADD_LIB_SUBDIRS) do + lib[#lib+1] = v + rt_lib[#rt_lib+1] = v + end + defaults.external_deps_subdirs.lib = lib + defaults.runtime_external_deps_subdirs.lib = rt_lib +end + -- Expose some more values detected by LuaRocks for use by rockspec authors. defaults.variables.LIB_EXTENSION = defaults.lib_extension defaults.variables.OBJ_EXTENSION = defaults.obj_extension diff --git a/src/luarocks/deps.lua b/src/luarocks/deps.lua index f24dc507..7f3b44f2 100644 --- a/src/luarocks/deps.lua +++ b/src/luarocks/deps.lua @@ -583,7 +583,19 @@ function check_external_deps(rockspec, mode) prefix = prefix.prefix end for dirname, dirdata in pairs(dirs) do - dirdata.dir = vars[name.."_"..dirname] or dir.path(prefix, dirdata.subdir) + local paths + local path_var_value = vars[name.."_"..dirname] + if path_var_value then + paths = { path_var_value } + elseif type(dirdata.subdir) == "table" then + paths = {} + for i,v in ipairs(dirdata.subdir) do + paths[i] = dir.path(prefix, v) + end + else + paths = { dir.path(prefix, dirdata.subdir) } + end + dirdata.dir = paths[1] local file = files[dirdata.testfile] if file then local files = {} @@ -605,16 +617,22 @@ function check_external_deps(rockspec, mode) if f:match("%.so$") or f:match("%.dylib$") or f:match("%.dll$") then f = f:gsub("%.[^.]+$", "."..cfg.external_lib_extension) end - if f:match("%*") then - local replaced = f:gsub("%.", "%%."):gsub("%*", ".*") - for _, entry in ipairs(fs.list_dir(dirdata.dir)) do - if entry:match(replaced) then - found = true - break + for _, d in ipairs(paths) do + if f:match("%*") then + local replaced = f:gsub("%.", "%%."):gsub("%*", ".*") + for _, entry in ipairs(fs.list_dir(d)) do + if entry:match(replaced) then + found = true + break + end end + else + found = fs.is_file(dir.path(d, f)) + end + if found then + dirdata.dir = d + break end - else - found = fs.is_file(dir.path(dirdata.dir, f)) end if found then break -- cgit v1.2.3-55-g6feb From fc9d5bb39c677b8515c118cd74fb572e681023f1 Mon Sep 17 00:00:00 2001 From: Philipp Janda Date: Thu, 26 Sep 2013 10:48:20 +0200 Subject: adding Lua 5.2 paths to wrapper scripts --- src/luarocks/fs/unix.lua | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'src') diff --git a/src/luarocks/fs/unix.lua b/src/luarocks/fs/unix.lua index cccbbd33..cb5e634d 100644 --- a/src/luarocks/fs/unix.lua +++ b/src/luarocks/fs/unix.lua @@ -61,6 +61,14 @@ function wrap_script(file, dest, name, version) wrapper:write('LUA_PATH="'..package.path..';$LUA_PATH"\n') wrapper:write('LUA_CPATH="'..package.cpath..';$LUA_CPATH"\n') wrapper:write('export LUA_PATH LUA_CPATH\n') + wrapper:write('if [ -n "$LUA_PATH_5_2" ]; then\n') + wrapper:write(' LUA_PATH_5_2="'..package.path..';$LUA_PATH_5_2"\n') + wrapper:write(' export LUA_PATH_5_2\n') + wrapper:write('fi\n') + wrapper:write('if [ -n "$LUA_CPATH_5_2" ]; then\n') + wrapper:write(' LUA_CPATH_5_2="'..package.cpath..';$LUA_CPATH_5_2"\n') + wrapper:write(' export LUA_CPATH_5_2\n') + wrapper:write('fi\n') wrapper:write('exec "'..dir.path(cfg.variables["LUA_BINDIR"], cfg.lua_interpreter)..'" -lluarocks.loader -e\'luarocks.loader.add_context([['..name..']],[['..version..']])\' "'..file..'" "$@"\n') wrapper:close() if fs.chmod(wrapname, "0755") then -- cgit v1.2.3-55-g6feb From 216f3601359ecf216683edb40a7da78824aa042c Mon Sep 17 00:00:00 2001 From: Philipp Janda Date: Fri, 27 Sep 2013 01:30:59 +0200 Subject: changed multiarch detection and site_config variables --- Makefile | 3 ++- configure | 2 +- src/luarocks/cfg.lua | 21 ++------------------- 3 files changed, 5 insertions(+), 21 deletions(-) (limited to 'src') diff --git a/Makefile b/Makefile index 6e7bee03..2f640ae6 100644 --- a/Makefile +++ b/Makefile @@ -82,7 +82,8 @@ src/luarocks/site_config.lua: config.unix echo "LUAROCKS_MD5CHECKER=[[$(LUAROCKS_MD5CHECKER)]]" >> src/luarocks/site_config.lua if [ -n "$(MULTIARCH_SUBDIR)" ] ;\ then \ - echo "LUAROCKS_ADD_LIB_SUBDIRS={ [[$(MULTIARCH_SUBDIR)]] }" >> src/luarocks/site_config.lua ;\ + echo 'LUAROCKS_EXTERNAL_DEPS_SUBDIRS={ bin="bin", lib={ "lib", [[$(MULTIARCH_SUBDIR)]] }, include="include" }' >> src/luarocks/site_config.lua ;\ + echo 'LUAROCKS_RUNTIME_EXTERNAL_DEPS_SUBDIRS={ bin="bin", lib={ "lib", [[$(MULTIARCH_SUBDIR)]] }, include="include" }' >> src/luarocks/site_config.lua ;\ fi dev: diff --git a/configure b/configure index 0e64fb55..579e96f5 100755 --- a/configure +++ b/configure @@ -399,7 +399,7 @@ fi if [ "$LUAROCKS_UNAME_S" = Linux ] then - GCC_ARCH=`gcc -dumpspecs 2>/dev/null | grep -A 1 "^*multilib:$" | tail -1 | cut -d: -f3 | cut -d' ' -f1` + GCC_ARCH=`gcc -print-multiarch 2>/dev/null` if [ -n "$GCC_ARCH" -a -d "/usr/lib/$GCC_ARCH" ] then MULTIARCH_SUBDIR="lib/$GCC_ARCH" diff --git a/src/luarocks/cfg.lua b/src/luarocks/cfg.lua index 9227db4b..94afe0a0 100644 --- a/src/luarocks/cfg.lua +++ b/src/luarocks/cfg.lua @@ -254,12 +254,12 @@ local defaults = { STATFLAG = "-c '%a'", }, - external_deps_subdirs = { + external_deps_subdirs = site_config.LUAROCKS_EXTERNAL_DEPS_SUBDIRS or { bin = "bin", lib = "lib", include = "include" }, - runtime_external_deps_subdirs = { + runtime_external_deps_subdirs = site_config.LUAROCKS_RUNTIME_EXTERNAL_DEPS_SUBDIRS or { bin = "bin", lib = "lib", include = "include" @@ -437,23 +437,6 @@ if detected.solaris then defaults.variables.MAKE = "gmake" end -if type(site_config.LUAROCKS_ADD_LIB_SUBDIRS) == "table" and next(site_config.LUAROCKS_ADD_LIB_SUBDIRS) ~= nil then - local lib = defaults.external_deps_subdirs.lib - if type(lib) ~= "table" then - lib = { lib } - end - local rt_lib = defaults.runtime_external_deps_subdirs.lib - if type(rt_lib) ~= "table" then - rt_lib = { rt_lib } - end - for i,v in ipairs(site_config.LUAROCKS_ADD_LIB_SUBDIRS) do - lib[#lib+1] = v - rt_lib[#rt_lib+1] = v - end - defaults.external_deps_subdirs.lib = lib - defaults.runtime_external_deps_subdirs.lib = rt_lib -end - -- Expose some more values detected by LuaRocks for use by rockspec authors. defaults.variables.LIB_EXTENSION = defaults.lib_extension defaults.variables.OBJ_EXTENSION = defaults.obj_extension -- cgit v1.2.3-55-g6feb From be6664eea148ef2fc24c29ed812b5c2966f6a121 Mon Sep 17 00:00:00 2001 From: Philipp Janda Date: Sun, 29 Sep 2013 09:23:25 +0200 Subject: Lua 5.2 paths in wrapper scripts on windows --- install.bat | 1 + src/luarocks/fs/win32.lua | 2 ++ 2 files changed, 3 insertions(+) (limited to 'src') diff --git a/install.bat b/install.bat index 99dc7fa7..46ad2b99 100644 --- a/install.bat +++ b/install.bat @@ -508,6 +508,7 @@ for _, c in ipairs{"luarocks", "luarocks-admin"} do @ECHO OFF SETLOCAL SET LUA_PATH=$LUADIR\?.lua;$LUADIR\?\init.lua;%LUA_PATH% +IF NOT "%LUA_PATH_5_2%"=="" SET LUA_PATH_5_2=$LUADIR\?.lua;$LUADIR\?\init.lua;%LUA_PATH_5_2% SET PATH=$BINDIR\;%PATH% "$LUA_INTERPRETER" "$BINDIR\]]..c..[[.lua" %* ENDLOCAL diff --git a/src/luarocks/fs/win32.lua b/src/luarocks/fs/win32.lua index 2b5bb955..c6347b9f 100644 --- a/src/luarocks/fs/win32.lua +++ b/src/luarocks/fs/win32.lua @@ -71,6 +71,8 @@ function wrap_script(file, dest, name, version) wrapper:write("setlocal\n") wrapper:write('set LUA_PATH='..package.path..";%LUA_PATH%\n") wrapper:write('set LUA_CPATH='..package.cpath..";%LUA_CPATH%\n") + wrapper:write('if not "%LUA_PATH_5_2%"=="" set LUA_PATH_5_2='..package.path..";%LUA_PATH_5_2%\n") + wrapper:write('if not "%LUA_CPATH_5_2%"=="" set LUA_CPATH_5_2='..package.cpath..";%LUA_CPATH_5_2%\n") wrapper:write('"'..dir.path(cfg.variables["LUA_BINDIR"], cfg.lua_interpreter)..'" -lluarocks.loader -e\'luarocks.loader.add_context([['..name..']],[['..version..']])\' "'..file..'" %*\n') wrapper:write("endlocal\n") wrapper:close() -- cgit v1.2.3-55-g6feb From b11a31c0a5c2f19f1632367f6d885885a136d1a1 Mon Sep 17 00:00:00 2001 From: Philipp Janda Date: Wed, 2 Oct 2013 08:57:09 +0200 Subject: fixed quotes in wrapper scripts on windows --- src/luarocks/fs/win32.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/luarocks/fs/win32.lua b/src/luarocks/fs/win32.lua index c6347b9f..2bc595f6 100644 --- a/src/luarocks/fs/win32.lua +++ b/src/luarocks/fs/win32.lua @@ -73,7 +73,7 @@ function wrap_script(file, dest, name, version) wrapper:write('set LUA_CPATH='..package.cpath..";%LUA_CPATH%\n") wrapper:write('if not "%LUA_PATH_5_2%"=="" set LUA_PATH_5_2='..package.path..";%LUA_PATH_5_2%\n") wrapper:write('if not "%LUA_CPATH_5_2%"=="" set LUA_CPATH_5_2='..package.cpath..";%LUA_CPATH_5_2%\n") - wrapper:write('"'..dir.path(cfg.variables["LUA_BINDIR"], cfg.lua_interpreter)..'" -lluarocks.loader -e\'luarocks.loader.add_context([['..name..']],[['..version..']])\' "'..file..'" %*\n') + wrapper:write('"'..dir.path(cfg.variables["LUA_BINDIR"], cfg.lua_interpreter)..'" -lluarocks.loader -e"luarocks.loader.add_context([['..name..']],[['..version..']])" "'..file..'" %*\n') wrapper:write("endlocal\n") wrapper:close() return true -- cgit v1.2.3-55-g6feb From 504f70f3b7724d8449be76a06dba13f22a1b73f4 Mon Sep 17 00:00:00 2001 From: Philipp Janda Date: Sun, 13 Oct 2013 20:05:59 +0200 Subject: wrapper scripts don't mess with env-vars of subprocesses --- Makefile | 7 +------ src/luarocks/fs/unix.lua | 13 +------------ src/luarocks/fs/win32.lua | 8 +------- 3 files changed, 3 insertions(+), 25 deletions(-) (limited to 'src') diff --git a/Makefile b/Makefile index ee06b670..cb7dbd09 100644 --- a/Makefile +++ b/Makefile @@ -174,11 +174,6 @@ write_sysconfig: built install: install_bins install_luas install_site_config write_sysconfig bootstrap: src/luarocks/site_config.lua install_site_config write_sysconfig - if [ -n "$$LUA_PATH_5_2" ] ;\ - then \ - LUA_PATH="$$PWD/src/?.lua;$$LUA_PATH" LUA_PATH_5_2="$$PWD/src/?.lua;$$LUA_PATH_5_2" src/bin/luarocks make rockspec --tree="$(PREFIX)" ;\ - else \ - LUA_PATH="$$PWD/src/?.lua;$$LUA_PATH" src/bin/luarocks make rockspec --tree="$(PREFIX)" ;\ - fi + '$(LUA_BINDIR)/lua$(LUA_SUFFIX)' -e "package.path=[[$$PWD/src/?.lua;]]..package.path" src/bin/luarocks make rockspec --tree="$(PREFIX)" install_rock: install_bins install_luas diff --git a/src/luarocks/fs/unix.lua b/src/luarocks/fs/unix.lua index cb5e634d..92f9abc1 100644 --- a/src/luarocks/fs/unix.lua +++ b/src/luarocks/fs/unix.lua @@ -58,18 +58,7 @@ function wrap_script(file, dest, name, version) return nil, "Could not open "..wrapname.." for writing." end wrapper:write("#!/bin/sh\n\n") - wrapper:write('LUA_PATH="'..package.path..';$LUA_PATH"\n') - wrapper:write('LUA_CPATH="'..package.cpath..';$LUA_CPATH"\n') - wrapper:write('export LUA_PATH LUA_CPATH\n') - wrapper:write('if [ -n "$LUA_PATH_5_2" ]; then\n') - wrapper:write(' LUA_PATH_5_2="'..package.path..';$LUA_PATH_5_2"\n') - wrapper:write(' export LUA_PATH_5_2\n') - wrapper:write('fi\n') - wrapper:write('if [ -n "$LUA_CPATH_5_2" ]; then\n') - wrapper:write(' LUA_CPATH_5_2="'..package.cpath..';$LUA_CPATH_5_2"\n') - wrapper:write(' export LUA_CPATH_5_2\n') - wrapper:write('fi\n') - wrapper:write('exec "'..dir.path(cfg.variables["LUA_BINDIR"], cfg.lua_interpreter)..'" -lluarocks.loader -e\'luarocks.loader.add_context([['..name..']],[['..version..']])\' "'..file..'" "$@"\n') + wrapper:write('exec "'..dir.path(cfg.variables["LUA_BINDIR"], cfg.lua_interpreter)..'" -e \'package.path=[['..package.path..';]]..package.path\' -e \'package.cpath=[['..package.cpath..';]]..package.cpath\' -lluarocks.loader -e\'luarocks.loader.add_context([['..name..']],[['..version..']])\' "'..file..'" "$@"\n') wrapper:close() if fs.chmod(wrapname, "0755") then return true diff --git a/src/luarocks/fs/win32.lua b/src/luarocks/fs/win32.lua index 2bc595f6..6872dc47 100644 --- a/src/luarocks/fs/win32.lua +++ b/src/luarocks/fs/win32.lua @@ -68,13 +68,7 @@ function wrap_script(file, dest, name, version) return nil, "Could not open "..wrapname.." for writing." end wrapper:write("@echo off\n") - wrapper:write("setlocal\n") - wrapper:write('set LUA_PATH='..package.path..";%LUA_PATH%\n") - wrapper:write('set LUA_CPATH='..package.cpath..";%LUA_CPATH%\n") - wrapper:write('if not "%LUA_PATH_5_2%"=="" set LUA_PATH_5_2='..package.path..";%LUA_PATH_5_2%\n") - wrapper:write('if not "%LUA_CPATH_5_2%"=="" set LUA_CPATH_5_2='..package.cpath..";%LUA_CPATH_5_2%\n") - wrapper:write('"'..dir.path(cfg.variables["LUA_BINDIR"], cfg.lua_interpreter)..'" -lluarocks.loader -e"luarocks.loader.add_context([['..name..']],[['..version..']])" "'..file..'" %*\n') - wrapper:write("endlocal\n") + wrapper:write('"'..dir.path(cfg.variables["LUA_BINDIR"], cfg.lua_interpreter)..'" -e "package.path=[['..package.path..';]]..package.path" -e "package.cpath=[['..package.cpath..';]]..package.cpath" -lluarocks.loader -e"luarocks.loader.add_context([['..name..']],[['..version..']])" "'..file..'" %*\n') wrapper:close() return true end -- cgit v1.2.3-55-g6feb From 58c7d8dd682fb69f1c5344bc9bacd58776ea0ced Mon Sep 17 00:00:00 2001 From: Philipp Janda Date: Sun, 13 Oct 2013 21:21:38 +0200 Subject: minimize path and cpath modification in wrapper scripts --- src/luarocks/fs/unix.lua | 3 ++- src/luarocks/fs/win32.lua | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/luarocks/fs/unix.lua b/src/luarocks/fs/unix.lua index 92f9abc1..5b9a11b5 100644 --- a/src/luarocks/fs/unix.lua +++ b/src/luarocks/fs/unix.lua @@ -53,12 +53,13 @@ function wrap_script(file, dest, name, version) local base = dir.base_name(file) local wrapname = fs.is_dir(dest) and dest.."/"..base or dest + local lpath, lcpath = cfg.package_paths() local wrapper = io.open(wrapname, "w") if not wrapper then return nil, "Could not open "..wrapname.." for writing." end wrapper:write("#!/bin/sh\n\n") - wrapper:write('exec "'..dir.path(cfg.variables["LUA_BINDIR"], cfg.lua_interpreter)..'" -e \'package.path=[['..package.path..';]]..package.path\' -e \'package.cpath=[['..package.cpath..';]]..package.cpath\' -lluarocks.loader -e\'luarocks.loader.add_context([['..name..']],[['..version..']])\' "'..file..'" "$@"\n') + wrapper:write('exec "'..dir.path(cfg.variables["LUA_BINDIR"], cfg.lua_interpreter)..'" -e \'package.path=[['..lpath..';]]..package.path\' -e \'package.cpath=[['..lcpath..';]]..package.cpath\' -lluarocks.loader -e\'luarocks.loader.add_context([['..name..']],[['..version..']])\' "'..file..'" "$@"\n') wrapper:close() if fs.chmod(wrapname, "0755") then return true diff --git a/src/luarocks/fs/win32.lua b/src/luarocks/fs/win32.lua index 6872dc47..8f14239d 100644 --- a/src/luarocks/fs/win32.lua +++ b/src/luarocks/fs/win32.lua @@ -63,12 +63,13 @@ function wrap_script(file, dest, name, version) local base = dir.base_name(file) local wrapname = fs.is_dir(dest) and dest.."/"..base or dest wrapname = wrapname..".bat" + local lpath, lcpath = cfg.package_paths() local wrapper = io.open(wrapname, "w") if not wrapper then return nil, "Could not open "..wrapname.." for writing." end wrapper:write("@echo off\n") - wrapper:write('"'..dir.path(cfg.variables["LUA_BINDIR"], cfg.lua_interpreter)..'" -e "package.path=[['..package.path..';]]..package.path" -e "package.cpath=[['..package.cpath..';]]..package.cpath" -lluarocks.loader -e"luarocks.loader.add_context([['..name..']],[['..version..']])" "'..file..'" %*\n') + wrapper:write('"'..dir.path(cfg.variables["LUA_BINDIR"], cfg.lua_interpreter)..'" -e "package.path=[['..lpath..';]]..package.path" -e "package.cpath=[['..lcpath..';]]..package.cpath" -lluarocks.loader -e"luarocks.loader.add_context([['..name..']],[['..version..']])" "'..file..'" %*\n') wrapper:close() return true end -- cgit v1.2.3-55-g6feb