aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile5
-rwxr-xr-xconfigure11
-rw-r--r--src/luarocks/cfg.lua4
-rw-r--r--src/luarocks/deps.lua36
-rw-r--r--src/luarocks/fs/unix.lua8
-rw-r--r--src/luarocks/fs/win32.lua4
6 files changed, 56 insertions, 12 deletions
diff --git a/Makefile b/Makefile
index 1213a589..2f640ae6 100644
--- a/Makefile
+++ b/Makefile
@@ -80,6 +80,11 @@ src/luarocks/site_config.lua: config.unix
80 echo "LUAROCKS_UNAME_M=[[$(LUAROCKS_UNAME_M)]]" >> src/luarocks/site_config.lua 80 echo "LUAROCKS_UNAME_M=[[$(LUAROCKS_UNAME_M)]]" >> src/luarocks/site_config.lua
81 echo "LUAROCKS_DOWNLOADER=[[$(LUAROCKS_DOWNLOADER)]]" >> src/luarocks/site_config.lua 81 echo "LUAROCKS_DOWNLOADER=[[$(LUAROCKS_DOWNLOADER)]]" >> src/luarocks/site_config.lua
82 echo "LUAROCKS_MD5CHECKER=[[$(LUAROCKS_MD5CHECKER)]]" >> src/luarocks/site_config.lua 82 echo "LUAROCKS_MD5CHECKER=[[$(LUAROCKS_MD5CHECKER)]]" >> src/luarocks/site_config.lua
83 if [ -n "$(MULTIARCH_SUBDIR)" ] ;\
84 then \
85 echo 'LUAROCKS_EXTERNAL_DEPS_SUBDIRS={ bin="bin", lib={ "lib", [[$(MULTIARCH_SUBDIR)]] }, include="include" }' >> src/luarocks/site_config.lua ;\
86 echo 'LUAROCKS_RUNTIME_EXTERNAL_DEPS_SUBDIRS={ bin="bin", lib={ "lib", [[$(MULTIARCH_SUBDIR)]] }, include="include" }' >> src/luarocks/site_config.lua ;\
87 fi
83 88
84dev: 89dev:
85 $(MAKE) build_bins LUADIR=$(PWD)/src 90 $(MAKE) build_bins LUADIR=$(PWD)/src
diff --git a/configure b/configure
index a5aa1f4d..579e96f5 100755
--- a/configure
+++ b/configure
@@ -14,6 +14,7 @@ LUA_BINDIR="/usr/bin"
14LUA_INCDIR="/usr/include" 14LUA_INCDIR="/usr/include"
15LUA_LIBDIR="/usr/lib" 15LUA_LIBDIR="/usr/lib"
16LUA_VERSION="5.1" 16LUA_VERSION="5.1"
17MULTIARCH_SUBDIR=""
17 18
18# ---------------------------------------------------------------------------- 19# ----------------------------------------------------------------------------
19# FUNCTION DEFINITIONS 20# FUNCTION DEFINITIONS
@@ -396,6 +397,15 @@ else
396 echo "Using unversioned rocks dir: $PREFIX$LUAROCKS_ROCKS_SUBDIR" 397 echo "Using unversioned rocks dir: $PREFIX$LUAROCKS_ROCKS_SUBDIR"
397fi 398fi
398 399
400if [ "$LUAROCKS_UNAME_S" = Linux ]
401then
402 GCC_ARCH=`gcc -print-multiarch 2>/dev/null`
403 if [ -n "$GCC_ARCH" -a -d "/usr/lib/$GCC_ARCH" ]
404 then
405 MULTIARCH_SUBDIR="lib/$GCC_ARCH"
406 fi
407fi
408
399if [ -f config.unix ]; then 409if [ -f config.unix ]; then
400 rm -f config.unix 410 rm -f config.unix
401fi 411fi
@@ -426,6 +436,7 @@ LUAROCKS_UNAME_S=$LUAROCKS_UNAME_S
426LUAROCKS_DOWNLOADER=$LUAROCKS_DOWNLOADER 436LUAROCKS_DOWNLOADER=$LUAROCKS_DOWNLOADER
427LUAROCKS_MD5CHECKER=$LUAROCKS_MD5CHECKER 437LUAROCKS_MD5CHECKER=$LUAROCKS_MD5CHECKER
428LUAROCKS_ROCKS_SUBDIR=$LUAROCKS_ROCKS_SUBDIR 438LUAROCKS_ROCKS_SUBDIR=$LUAROCKS_ROCKS_SUBDIR
439MULTIARCH_SUBDIR=$MULTIARCH_SUBDIR
429 440
430EOF 441EOF
431 442
diff --git a/src/luarocks/cfg.lua b/src/luarocks/cfg.lua
index 8e26bb46..94afe0a0 100644
--- a/src/luarocks/cfg.lua
+++ b/src/luarocks/cfg.lua
@@ -254,12 +254,12 @@ local defaults = {
254 STATFLAG = "-c '%a'", 254 STATFLAG = "-c '%a'",
255 }, 255 },
256 256
257 external_deps_subdirs = { 257 external_deps_subdirs = site_config.LUAROCKS_EXTERNAL_DEPS_SUBDIRS or {
258 bin = "bin", 258 bin = "bin",
259 lib = "lib", 259 lib = "lib",
260 include = "include" 260 include = "include"
261 }, 261 },
262 runtime_external_deps_subdirs = { 262 runtime_external_deps_subdirs = site_config.LUAROCKS_RUNTIME_EXTERNAL_DEPS_SUBDIRS or {
263 bin = "bin", 263 bin = "bin",
264 lib = "lib", 264 lib = "lib",
265 include = "include" 265 include = "include"
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)
583 prefix = prefix.prefix 583 prefix = prefix.prefix
584 end 584 end
585 for dirname, dirdata in pairs(dirs) do 585 for dirname, dirdata in pairs(dirs) do
586 dirdata.dir = vars[name.."_"..dirname] or dir.path(prefix, dirdata.subdir) 586 local paths
587 local path_var_value = vars[name.."_"..dirname]
588 if path_var_value then
589 paths = { path_var_value }
590 elseif type(dirdata.subdir) == "table" then
591 paths = {}
592 for i,v in ipairs(dirdata.subdir) do
593 paths[i] = dir.path(prefix, v)
594 end
595 else
596 paths = { dir.path(prefix, dirdata.subdir) }
597 end
598 dirdata.dir = paths[1]
587 local file = files[dirdata.testfile] 599 local file = files[dirdata.testfile]
588 if file then 600 if file then
589 local files = {} 601 local files = {}
@@ -605,16 +617,22 @@ function check_external_deps(rockspec, mode)
605 if f:match("%.so$") or f:match("%.dylib$") or f:match("%.dll$") then 617 if f:match("%.so$") or f:match("%.dylib$") or f:match("%.dll$") then
606 f = f:gsub("%.[^.]+$", "."..cfg.external_lib_extension) 618 f = f:gsub("%.[^.]+$", "."..cfg.external_lib_extension)
607 end 619 end
608 if f:match("%*") then 620 for _, d in ipairs(paths) do
609 local replaced = f:gsub("%.", "%%."):gsub("%*", ".*") 621 if f:match("%*") then
610 for _, entry in ipairs(fs.list_dir(dirdata.dir)) do 622 local replaced = f:gsub("%.", "%%."):gsub("%*", ".*")
611 if entry:match(replaced) then 623 for _, entry in ipairs(fs.list_dir(d)) do
612 found = true 624 if entry:match(replaced) then
613 break 625 found = true
626 break
627 end
614 end 628 end
629 else
630 found = fs.is_file(dir.path(d, f))
631 end
632 if found then
633 dirdata.dir = d
634 break
615 end 635 end
616 else
617 found = fs.is_file(dir.path(dirdata.dir, f))
618 end 636 end
619 if found then 637 if found then
620 break 638 break
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)
61 wrapper:write('LUA_PATH="'..package.path..';$LUA_PATH"\n') 61 wrapper:write('LUA_PATH="'..package.path..';$LUA_PATH"\n')
62 wrapper:write('LUA_CPATH="'..package.cpath..';$LUA_CPATH"\n') 62 wrapper:write('LUA_CPATH="'..package.cpath..';$LUA_CPATH"\n')
63 wrapper:write('export LUA_PATH LUA_CPATH\n') 63 wrapper:write('export LUA_PATH LUA_CPATH\n')
64 wrapper:write('if [ -n "$LUA_PATH_5_2" ]; then\n')
65 wrapper:write(' LUA_PATH_5_2="'..package.path..';$LUA_PATH_5_2"\n')
66 wrapper:write(' export LUA_PATH_5_2\n')
67 wrapper:write('fi\n')
68 wrapper:write('if [ -n "$LUA_CPATH_5_2" ]; then\n')
69 wrapper:write(' LUA_CPATH_5_2="'..package.cpath..';$LUA_CPATH_5_2"\n')
70 wrapper:write(' export LUA_CPATH_5_2\n')
71 wrapper:write('fi\n')
64 wrapper:write('exec "'..dir.path(cfg.variables["LUA_BINDIR"], cfg.lua_interpreter)..'" -lluarocks.loader -e\'luarocks.loader.add_context([['..name..']],[['..version..']])\' "'..file..'" "$@"\n') 72 wrapper:write('exec "'..dir.path(cfg.variables["LUA_BINDIR"], cfg.lua_interpreter)..'" -lluarocks.loader -e\'luarocks.loader.add_context([['..name..']],[['..version..']])\' "'..file..'" "$@"\n')
65 wrapper:close() 73 wrapper:close()
66 if fs.chmod(wrapname, "0755") then 74 if fs.chmod(wrapname, "0755") then
diff --git a/src/luarocks/fs/win32.lua b/src/luarocks/fs/win32.lua
index 2b5bb955..2bc595f6 100644
--- a/src/luarocks/fs/win32.lua
+++ b/src/luarocks/fs/win32.lua
@@ -71,7 +71,9 @@ function wrap_script(file, dest, name, version)
71 wrapper:write("setlocal\n") 71 wrapper:write("setlocal\n")
72 wrapper:write('set LUA_PATH='..package.path..";%LUA_PATH%\n") 72 wrapper:write('set LUA_PATH='..package.path..";%LUA_PATH%\n")
73 wrapper:write('set LUA_CPATH='..package.cpath..";%LUA_CPATH%\n") 73 wrapper:write('set LUA_CPATH='..package.cpath..";%LUA_CPATH%\n")
74 wrapper:write('"'..dir.path(cfg.variables["LUA_BINDIR"], cfg.lua_interpreter)..'" -lluarocks.loader -e\'luarocks.loader.add_context([['..name..']],[['..version..']])\' "'..file..'" %*\n') 74 wrapper:write('if not "%LUA_PATH_5_2%"=="" set LUA_PATH_5_2='..package.path..";%LUA_PATH_5_2%\n")
75 wrapper:write('if not "%LUA_CPATH_5_2%"=="" set LUA_CPATH_5_2='..package.cpath..";%LUA_CPATH_5_2%\n")
76 wrapper:write('"'..dir.path(cfg.variables["LUA_BINDIR"], cfg.lua_interpreter)..'" -lluarocks.loader -e"luarocks.loader.add_context([['..name..']],[['..version..']])" "'..file..'" %*\n')
75 wrapper:write("endlocal\n") 77 wrapper:write("endlocal\n")
76 wrapper:close() 78 wrapper:close()
77 return true 79 return true