Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/torch/luajit-rocks.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/luarocks/cfg.lua')
-rw-r--r--src/luarocks/cfg.lua484
1 files changed, 484 insertions, 0 deletions
diff --git a/src/luarocks/cfg.lua b/src/luarocks/cfg.lua
new file mode 100644
index 0000000..5d918b1
--- /dev/null
+++ b/src/luarocks/cfg.lua
@@ -0,0 +1,484 @@
+--- Configuration for LuaRocks.
+-- Tries to load the user's configuration file and
+-- defines defaults for unset values. See the
+-- <a href="http://luarocks.org/en/Config_file_format">config
+-- file format documentation</a> for details.
+--
+-- End-users shouldn't edit this file. They can override any defaults
+-- set in this file using their system-wide $LUAROCKS_SYSCONFIG file
+-- (see luarocks.site_config) or their user-specific configuration file
+-- (~/.luarocks/config.lua on Unix or %APPDATA%/luarocks/config.lua on
+-- Windows).
+
+local rawset, next, table, pairs, require, io, os, setmetatable, pcall, ipairs, package, tonumber, type, assert, _VERSION =
+ rawset, next, table, pairs, require, io, os, setmetatable, pcall, ipairs, package, tonumber, type, assert, _VERSION
+
+module("luarocks.cfg")
+
+lua_version = _VERSION:sub(5)
+local version_suffix = lua_version:gsub("%.", "_")
+
+-- Load site-local global configurations
+local ok, site_config = pcall(require, "luarocks.site_config_"..version_suffix)
+if not ok then
+ ok, site_config = pcall(require, "luarocks.site_config")
+end
+if not ok then
+ io.stderr:write("Site-local luarocks/site_config.lua file not found. Incomplete installation?\n")
+ site_config = {}
+end
+
+_M.site_config = site_config
+
+program_version = "2.1.0"
+
+local persist = require("luarocks.persist")
+
+local popen_ok, popen_result = pcall(io.popen, "")
+if popen_ok then
+ if popen_result then
+ popen_result:close()
+ end
+else
+ io.stderr:write("Your version of Lua does not support io.popen,\n")
+ io.stderr:write("which is required by LuaRocks. Please check your Lua installation.\n")
+ os.exit(1)
+end
+
+-- System detection:
+
+local detected = {}
+local system,proc
+
+-- A proper installation of LuaRocks will hardcode the system
+-- and proc values with site_config.LUAROCKS_UNAME_S and site_config.LUAROCKS_UNAME_M,
+-- so that this detection does not run every time. When it is
+-- performed, we use the Unix way to identify the system,
+-- even on Windows (assuming UnxUtils or Cygwin).
+system = site_config.LUAROCKS_UNAME_S or io.popen("uname -s"):read("*l")
+proc = site_config.LUAROCKS_UNAME_M or io.popen("uname -m"):read("*l")
+if proc:match("i[%d]86") then
+ proc = "x86"
+elseif proc:match("amd64") or proc:match("x86_64") then
+ proc = "x86_64"
+elseif proc:match("Power Macintosh") then
+ proc = "powerpc"
+end
+
+if system == "FreeBSD" then
+ detected.unix = true
+ detected.freebsd = true
+ detected.bsd = true
+elseif system == "OpenBSD" then
+ detected.unix = true
+ detected.openbsd = true
+ detected.bsd = true
+elseif system == "NetBSD" then
+ detected.unix = true
+ detected.netbsd = true
+ detected.bsd = true
+elseif system == "Darwin" then
+ detected.unix = true
+ detected.macosx = true
+ detected.bsd = true
+elseif system == "Linux" then
+ detected.unix = true
+ detected.linux = true
+elseif system == "SunOS" then
+ detected.unix = true
+ detected.solaris = true
+elseif system and system:match("^CYGWIN") then
+ detected.unix = true
+ detected.cygwin = true
+elseif system and system:match("^Windows") then
+ detected.windows = true
+elseif system and system:match("^MINGW") then
+ detected.windows = true
+ detected.mingw32 = true
+else
+ detected.unix = true
+ -- Fall back to Unix in unknown systems.
+end
+
+-- Path configuration:
+
+local sys_config_file, home_config_file
+local sys_config_dir, home_config_dir
+local sys_config_ok, home_config_ok = false, false
+sys_config_dir = site_config.LUAROCKS_SYSCONFDIR
+if detected.windows then
+ home = os.getenv("APPDATA") or "c:"
+ sys_config_dir = sys_config_dir or "c:/luarocks"
+ home_config_dir = home.."/luarocks"
+ home_tree = home.."/luarocks/"
+else
+ home = os.getenv("HOME") or ""
+ sys_config_dir = sys_config_dir or "/etc/luarocks"
+ home_config_dir = home.."/.luarocks"
+ home_tree = home.."/.luarocks/"
+end
+
+variables = {}
+rocks_trees = {}
+
+sys_config_file = site_config.LUAROCKS_SYSCONFIG or sys_config_dir.."/config-"..lua_version..".lua"
+local err
+sys_config_ok, err = persist.load_into_table(sys_config_file, _M)
+
+if not sys_config_ok then
+ sys_config_file = sys_config_dir.."/config.lua"
+ sys_config_ok, err = persist.load_into_table(sys_config_file, _M)
+end
+if err and ok == nil then
+ io.stderr:write(err.."\n")
+end
+
+if not site_config.LUAROCKS_FORCE_CONFIG then
+ local home_overrides, err
+ home_config_file = os.getenv("LUAROCKS_CONFIG_" .. version_suffix) or os.getenv("LUAROCKS_CONFIG")
+ if home_config_file then
+ home_overrides, err = persist.load_into_table(home_config_file, { home = home, lua_version = lua_version })
+ else
+ home_config_file = home_config_dir.."/config-"..lua_version..".lua"
+ home_overrides, err = persist.load_into_table(home_config_file, { home = home, lua_version = lua_version })
+ if not home_overrides then
+ home_config_file = home_config_dir.."/config.lua"
+ home_overrides, err = persist.load_into_table(home_config_file, { home = home, lua_version = lua_version })
+ end
+ end
+ if home_overrides then
+ home_config_ok = true
+ local util = require("luarocks.util")
+ if home_overrides.rocks_trees then
+ _M.rocks_trees = nil
+ end
+ if home_overrides.rocks_servers then
+ _M.rocks_servers = nil
+ end
+ util.deep_merge(_M, home_overrides)
+ else -- nil or false
+ home_config_ok = home_overrides
+ if err and home_config_ok == nil then
+ io.stderr:write(err.."\n")
+ end
+ end
+end
+
+if not next(rocks_trees) then
+ if home_tree then
+ table.insert(rocks_trees, home_tree)
+ end
+ if site_config.LUAROCKS_ROCKS_TREE then
+ table.insert(rocks_trees, site_config.LUAROCKS_ROCKS_TREE)
+ end
+end
+
+-- Configure defaults:
+
+local root = rocks_trees[#rocks_trees]
+local defaults = {
+
+ local_by_default = false,
+ use_extensions = false,
+ accept_unknown_fields = false,
+ fs_use_modules = true,
+ hooks_enabled = true,
+ deps_mode = "one",
+
+ lua_modules_path = "/share/lua/"..lua_version,
+ lib_modules_path = "/lib/lua/"..lua_version,
+ rocks_subdir = site_config.LUAROCKS_ROCKS_SUBDIR or "/lib/luarocks/rocks",
+
+ arch = "unknown",
+ lib_extension = "unknown",
+ obj_extension = "unknown",
+
+ rocks_servers = {
+ {
+ "http://www.luarocks.org/repositories/rocks",
+ "http://luarocks.giga.puc-rio.br/",
+ "http://luafr.org/luarocks/rocks",
+ "http://liblua.so/luarocks/repositories/rocks",
+ "http://luarocks.logiceditor.com/rocks",
+ }
+ },
+
+ lua_extension = "lua",
+ lua_interpreter = site_config.LUA_INTERPRETER or "lua",
+ downloader = site_config.LUAROCKS_DOWNLOADER or "wget",
+ md5checker = site_config.LUAROCKS_MD5CHECKER or "md5sum",
+
+ variables = {
+ MAKE = "make",
+ CC = "cc",
+ LD = "ld",
+
+ CVS = "cvs",
+ GIT = "git",
+ SSCM = "sscm",
+ SVN = "svn",
+ HG = "hg",
+
+ RSYNC = "rsync",
+ WGET = "wget",
+ SCP = "scp",
+ CURL = "curl",
+
+ PWD = "pwd",
+ MKDIR = "mkdir",
+ RMDIR = "rmdir",
+ CP = "cp",
+ LS = "ls",
+ RM = "rm",
+ FIND = "find",
+ TEST = "test",
+ CHMOD = "chmod",
+ PATCH = "patch",
+
+ ZIP = "zip",
+ UNZIP = "unzip -n",
+ GUNZIP = "gunzip",
+ BUNZIP2 = "bunzip2",
+ TAR = "tar",
+
+ MD5SUM = "md5sum",
+ OPENSSL = "openssl",
+ MD5 = "md5",
+ STAT = "stat",
+
+ CMAKE = "cmake",
+ SEVENZ = "7z",
+
+ STATFLAG = "-c '%a'",
+ },
+
+ external_deps_subdirs = {
+ bin = "bin",
+ lib = "lib",
+ include = "include"
+ },
+ runtime_external_deps_subdirs = {
+ bin = "bin",
+ lib = "lib",
+ include = "include"
+ },
+}
+
+if detected.windows then
+ home_config_file = home_config_file and home_config_file:gsub("\\","/")
+ defaults.fs_use_modules = false
+ defaults.arch = "win32-"..proc
+ defaults.platforms = {"win32", "windows" }
+ defaults.lib_extension = "dll"
+ defaults.external_lib_extension = "dll"
+ defaults.obj_extension = "obj"
+ defaults.external_deps_dirs = { "c:/external/" }
+ defaults.variables.LUA_BINDIR = site_config.LUA_BINDIR and site_config.LUA_BINDIR:gsub("\\", "/") or "c:/lua"..lua_version.."/bin"
+ defaults.variables.LUA_INCDIR = site_config.LUA_INCDIR and site_config.LUA_INCDIR:gsub("\\", "/") or "c:/lua"..lua_version.."/include"
+ defaults.variables.LUA_LIBDIR = site_config.LUA_LIBDIR and site_config.LUA_LIBDIR:gsub("\\", "/") or "c:/lua"..lua_version.."/lib"
+ defaults.cmake_generator = "MinGW Makefiles"
+ defaults.makefile = "Makefile.win"
+ defaults.variables.MAKE = "nmake"
+ defaults.variables.CC = "cl"
+ defaults.variables.RC = "rc"
+ defaults.variables.WRAPPER = site_config.LUAROCKS_PREFIX .. "\\2.0\\rclauncher.c"
+ defaults.variables.LD = "link"
+ defaults.variables.MT = "mt"
+ defaults.variables.LUALIB = "lua"..lua_version..".lib"
+ defaults.variables.CFLAGS = "/MD /O2"
+ defaults.variables.LIBFLAG = "/dll"
+ defaults.variables.LUALIB = "lua"..lua_version..".lib"
+ defaults.external_deps_patterns = {
+ bin = { "?.exe", "?.bat" },
+ lib = { "?.lib", "?.dll", "lib?.dll" },
+ include = { "?.h" }
+ }
+ defaults.runtime_external_deps_patterns = {
+ bin = { "?.exe", "?.bat" },
+ lib = { "?.dll", "lib?.dll" },
+ include = { "?.h" }
+ }
+ defaults.export_path = "SET PATH=%s"
+ defaults.export_path_separator = ";"
+ defaults.export_lua_path = "SET LUA_PATH=%s"
+ defaults.export_lua_cpath = "SET LUA_CPATH=%s"
+ defaults.local_cache = home.."/cache/luarocks"
+end
+
+if detected.mingw32 then
+ defaults.platforms = { "win32", "mingw32", "windows" }
+ defaults.obj_extension = "o"
+ defaults.cmake_generator = "MinGW Makefiles"
+ defaults.variables.MAKE = "mingw32-make"
+ defaults.variables.CC = "mingw32-gcc"
+ defaults.variables.RC = "windres"
+ defaults.variables.WRAPPER = site_config.LUAROCKS_PREFIX .. "\\2.0\\rclauncher.c"
+ defaults.variables.LD = "mingw32-gcc"
+ defaults.variables.CFLAGS = "-O2"
+ defaults.variables.LIBFLAG = "-shared"
+end
+
+if detected.unix then
+ defaults.lib_extension = "so"
+ defaults.external_lib_extension = "so"
+ defaults.obj_extension = "o"
+ defaults.external_deps_dirs = { "/usr/local", "/usr" }
+ defaults.variables.LUA_BINDIR = site_config.LUA_BINDIR or "/usr/local/bin"
+ defaults.variables.LUA_INCDIR = site_config.LUA_INCDIR or "/usr/local/include"
+ defaults.variables.LUA_LIBDIR = site_config.LUA_LIBDIR or "/usr/local/lib"
+ defaults.variables.CFLAGS = "-O2"
+ defaults.cmake_generator = "Unix Makefiles"
+ defaults.platforms = { "unix" }
+ defaults.variables.CC = "gcc"
+ defaults.variables.LD = "gcc"
+ defaults.gcc_rpath = true
+ defaults.variables.LIBFLAG = "-shared"
+ defaults.external_deps_patterns = {
+ bin = { "?" },
+ lib = { "lib?.a", "lib?.so", "lib?.so.*" },
+ include = { "?.h" }
+ }
+ defaults.runtime_external_deps_patterns = {
+ bin = { "?" },
+ lib = { "lib?.so", "lib?.so.*" },
+ include = { "?.h" }
+ }
+ defaults.export_path = "export PATH='%s'"
+ defaults.export_path_separator = ":"
+ defaults.export_lua_path = "export LUA_PATH='%s'"
+ defaults.export_lua_cpath = "export LUA_CPATH='%s'"
+ defaults.local_cache = home.."/.cache/luarocks"
+ if not defaults.variables.CFLAGS:match("-fPIC") then
+ defaults.variables.CFLAGS = defaults.variables.CFLAGS.." -fPIC"
+ end
+end
+
+if detected.cygwin then
+ defaults.lib_extension = "so" -- can be overridden in the config file for mingw builds
+ defaults.arch = "cygwin-"..proc
+ defaults.platforms = {"unix", "cygwin"}
+ defaults.cmake_generator = "Unix Makefiles"
+ defaults.variables.CC = "echo -llua | xargs gcc"
+ defaults.variables.LD = "echo -llua | xargs gcc"
+ defaults.variables.LIBFLAG = "-shared"
+end
+
+if detected.bsd then
+ defaults.variables.MAKE = "gmake"
+ defaults.variables.STATFLAG = "-f '%OLp'"
+end
+
+if detected.macosx then
+ defaults.variables.MAKE = "make"
+ defaults.external_lib_extension = "dylib"
+ defaults.arch = "macosx-"..proc
+ defaults.platforms = {"unix", "bsd", "macosx"}
+ defaults.variables.LIBFLAG = "-bundle -undefined dynamic_lookup -all_load"
+ defaults.variables.STATFLAG = "-f '%A'"
+ local version = io.popen("sw_vers -productVersion"):read("*l")
+ version = tonumber(version and version:match("^[^.]+%.([^.]+)")) or 3
+ if version >= 5 then
+ version = 5
+ else
+ defaults.gcc_rpath = false
+ end
+ defaults.variables.CC = "export MACOSX_DEPLOYMENT_TARGET=10."..version.."; gcc"
+ defaults.variables.LD = "export MACOSX_DEPLOYMENT_TARGET=10."..version.."; gcc"
+end
+
+if detected.linux then
+ defaults.arch = "linux-"..proc
+ defaults.platforms = {"unix", "linux"}
+end
+
+if detected.freebsd then
+ defaults.arch = "freebsd-"..proc
+ defaults.platforms = {"unix", "bsd", "freebsd"}
+end
+
+if detected.openbsd then
+ defaults.arch = "openbsd-"..proc
+ defaults.platforms = {"unix", "bsd", "openbsd"}
+end
+
+if detected.netbsd then
+ defaults.arch = "netbsd-"..proc
+ defaults.platforms = {"unix", "bsd", "netbsd"}
+end
+
+if detected.solaris then
+ defaults.arch = "solaris-"..proc
+ defaults.platforms = {"unix", "solaris"}
+ defaults.variables.MAKE = "gmake"
+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
+defaults.variables.LUAROCKS_PREFIX = site_config.LUAROCKS_PREFIX
+defaults.variables.LUA = site_config.LUA_DIR_SET and (defaults.variables.LUA_BINDIR.."/"..defaults.lua_interpreter) or defaults.lua_interpreter
+
+-- Use defaults:
+
+-- Populate values from 'defaults.variables' in 'variables' if they were not
+-- already set by user.
+if not _M.variables then
+ _M.variables = {}
+end
+for k,v in pairs(defaults.variables) do
+ if not _M.variables[k] then
+ _M.variables[k] = v
+ end
+end
+
+-- For values not set in the config file, use values from the 'defaults' table.
+local cfg_mt = {
+ __index = function(t, k)
+ local default = defaults[k]
+ if default then
+ rawset(t, k, default)
+ end
+ return default
+ end
+}
+setmetatable(_M, cfg_mt)
+
+function package_paths()
+ local new_path, new_cpath = {}, {}
+ for _,tree in ipairs(rocks_trees) do
+ if type(tree) == "string" then
+ table.insert(new_path, 1, tree..lua_modules_path.."/?.lua;"..tree..lua_modules_path.."/?/init.lua")
+ table.insert(new_cpath, 1, tree..lib_modules_path.."/?."..lib_extension)
+ else
+ table.insert(new_path, 1, (tree.lua_dir or tree.root..lua_modules_path).."/?.lua;"..
+ (tree.lua_dir or tree.root..lua_modules_path).."/?/init.lua")
+ table.insert(new_cpath, 1, (tree.lib_dir or tree.root..lib_modules_path).."/?."..lib_extension)
+ end
+ end
+ return table.concat(new_path, ";"), table.concat(new_cpath, ";")
+end
+
+do
+ local new_path, new_cpath = package_paths()
+ package.path = new_path..";"..package.path
+ package.cpath = new_cpath..";"..package.cpath
+end
+
+function which_config()
+ return sys_config_file, sys_config_ok, home_config_file, home_config_ok
+end
+
+user_agent = "LuaRocks/"..program_version.." "..arch
+
+--- Check if platform was detected
+-- @param query string: The platform name to check.
+-- @return boolean: true if LuaRocks is currently running on queried platform.
+function is_platform(query)
+ assert(type(query) == "string")
+
+ for _, platform in ipairs(platforms) do
+ if platform == query then
+ return true
+ end
+ end
+end