diff options
Diffstat (limited to 'src/luarocks/cfg.lua')
| -rw-r--r-- | src/luarocks/cfg.lua | 98 |
1 files changed, 55 insertions, 43 deletions
diff --git a/src/luarocks/cfg.lua b/src/luarocks/cfg.lua index f74c40ad..d4bcbfb6 100644 --- a/src/luarocks/cfg.lua +++ b/src/luarocks/cfg.lua | |||
| @@ -10,6 +10,7 @@ local rawset, next, table, pairs, print, require, io, os, setmetatable, pcall = | |||
| 10 | module("luarocks.cfg") | 10 | module("luarocks.cfg") |
| 11 | 11 | ||
| 12 | program_version = "1.1" | 12 | program_version = "1.1" |
| 13 | user_agent = "LuaRocks/"..program_version | ||
| 13 | 14 | ||
| 14 | local persist = require("luarocks.persist") | 15 | local persist = require("luarocks.persist") |
| 15 | 16 | ||
| @@ -24,6 +25,8 @@ else | |||
| 24 | os.exit(1) | 25 | os.exit(1) |
| 25 | end | 26 | end |
| 26 | 27 | ||
| 28 | -- System detection: | ||
| 29 | |||
| 27 | local detected = {} | 30 | local detected = {} |
| 28 | local system,proc | 31 | local system,proc |
| 29 | 32 | ||
| @@ -61,6 +64,8 @@ else | |||
| 61 | -- Fall back to Unix in unknown systems. | 64 | -- Fall back to Unix in unknown systems. |
| 62 | end | 65 | end |
| 63 | 66 | ||
| 67 | -- Path configuration: | ||
| 68 | |||
| 64 | local sys_config_file, home_config_file, home_tree | 69 | local sys_config_file, home_config_file, home_tree |
| 65 | if detected.windows then | 70 | if detected.windows then |
| 66 | home = os.getenv("APPDATA") or "c:" | 71 | home = os.getenv("APPDATA") or "c:" |
| @@ -88,46 +93,65 @@ if not LUAROCKS_FORCE_CONFIG then | |||
| 88 | end | 93 | end |
| 89 | end | 94 | end |
| 90 | 95 | ||
| 96 | if not next(rocks_trees) then | ||
| 97 | if home_tree then | ||
| 98 | table.insert(rocks_trees, home_tree) | ||
| 99 | end | ||
| 100 | if LUAROCKS_ROCKS_TREE then | ||
| 101 | table.insert(rocks_trees, LUAROCKS_ROCKS_TREE) | ||
| 102 | end | ||
| 103 | end | ||
| 104 | |||
| 105 | -- Configure defaults: | ||
| 106 | |||
| 107 | local root = LUAROCKS_ROCKS_TREE or home_tree | ||
| 91 | local defaults = { | 108 | local defaults = { |
| 109 | root_dir = root, | ||
| 110 | rocks_dir = root.."/lib/luarocks/rocks", | ||
| 111 | scripts_dir = root.."/bin/", | ||
| 112 | lua_modules_dir = root.."/share/lua/5.1/", | ||
| 113 | bin_modules_dir = root.."/lib/lua/5.1/", | ||
| 114 | |||
| 92 | arch = "unknown", | 115 | arch = "unknown", |
| 93 | lib_extension = "unknown", | 116 | lib_extension = "unknown", |
| 94 | obj_extension = "unknown", | 117 | obj_extension = "unknown", |
| 118 | |||
| 95 | rocks_servers = { | 119 | rocks_servers = { |
| 96 | "http://luarocks.luaforge.net/rocks" | 120 | "http://luarocks.luaforge.net/rocks" |
| 97 | }, | 121 | }, |
| 122 | |||
| 98 | lua_extension = "lua", | 123 | lua_extension = "lua", |
| 99 | lua_interpreter = LUA_INTERPRETER or "lua", | 124 | lua_interpreter = LUA_INTERPRETER or "lua", |
| 100 | downloader = LUAROCKS_DOWNLOADER or "wget", | 125 | downloader = LUAROCKS_DOWNLOADER or "wget", |
| 101 | md5checker = LUAROCKS_MD5CHECKER or "md5sum", | 126 | md5checker = LUAROCKS_MD5CHECKER or "md5sum", |
| 102 | variables = {} | ||
| 103 | } | ||
| 104 | 127 | ||
| 105 | defaults.external_deps_subdirs = { | 128 | variables = {}, |
| 106 | bin = "bin", | 129 | |
| 107 | lib = "lib", | 130 | external_deps_subdirs = { |
| 108 | include = "include" | 131 | bin = "bin", |
| 132 | lib = "lib", | ||
| 133 | include = "include" | ||
| 134 | }, | ||
| 135 | runtime_external_deps_subdirs = { | ||
| 136 | bin = "bin", | ||
| 137 | lib = "lib", | ||
| 138 | include = "include" | ||
| 139 | }, | ||
| 109 | } | 140 | } |
| 110 | defaults.runtime_external_deps_subdirs = defaults.external_deps_subdirs | ||
| 111 | 141 | ||
| 112 | if detected.windows then | 142 | if detected.windows then |
| 113 | home_config_file = home_config_file:gsub("\\","/") | 143 | home_config_file = home_config_file:gsub("\\","/") |
| 144 | defaults.arch = "win32-"..proc | ||
| 145 | defaults.platforms = {"win32", "windows" } | ||
| 114 | defaults.lib_extension = "dll" | 146 | defaults.lib_extension = "dll" |
| 147 | defaults.external_lib_extension = "dll" | ||
| 115 | defaults.obj_extension = "obj" | 148 | defaults.obj_extension = "obj" |
| 116 | local rootdir = LUAROCKS_ROCKS_TREE or home_tree | ||
| 117 | defaults.root_dir = rootdir | ||
| 118 | defaults.rocks_dir = rootdir.."/rocks/" | ||
| 119 | defaults.scripts_dir = rootdir.."/bin/" | ||
| 120 | defaults.external_deps_dirs = { "c:/external/" } | 149 | defaults.external_deps_dirs = { "c:/external/" } |
| 121 | defaults.variables.LUA_BINDIR = LUA_BINDIR and LUA_BINDIR:gsub("\\", "/") or "c:/lua5.1/bin" | 150 | defaults.variables.LUA_BINDIR = LUA_BINDIR and LUA_BINDIR:gsub("\\", "/") or "c:/lua5.1/bin" |
| 122 | defaults.variables.LUA_INCDIR = LUA_INCDIR and LUA_INCDIR:gsub("\\", "/") or "c:/lua5.1/include" | 151 | defaults.variables.LUA_INCDIR = LUA_INCDIR and LUA_INCDIR:gsub("\\", "/") or "c:/lua5.1/include" |
| 123 | defaults.variables.LUA_LIBDIR = LUA_LIBDIR and LUA_LIBDIR:gsub("\\", "/") or "c:/lua5.1/lib" | 152 | defaults.variables.LUA_LIBDIR = LUA_LIBDIR and LUA_LIBDIR:gsub("\\", "/") or "c:/lua5.1/lib" |
| 124 | defaults.arch = "win32-"..proc | ||
| 125 | defaults.platforms = {"win32", "windows" } | ||
| 126 | defaults.cmake_generator = "MinGW Makefiles" | 153 | defaults.cmake_generator = "MinGW Makefiles" |
| 127 | -- TODO: Split Windows flavors between mingw and msvc | 154 | defaults.make = "nmake" -- TODO: Split Windows flavors between mingw and msvc |
| 128 | -- defaults.make = "make" | ||
| 129 | -- defaults.makefile = "Makefile" | ||
| 130 | defaults.make = "nmake" | ||
| 131 | defaults.makefile = "Makefile.win" | 155 | defaults.makefile = "Makefile.win" |
| 132 | defaults.variables.CC = "cl" | 156 | defaults.variables.CC = "cl" |
| 133 | defaults.variables.LD = "link" | 157 | defaults.variables.LD = "link" |
| @@ -148,11 +172,8 @@ end | |||
| 148 | 172 | ||
| 149 | if detected.unix then | 173 | if detected.unix then |
| 150 | defaults.lib_extension = "so" | 174 | defaults.lib_extension = "so" |
| 175 | defaults.external_lib_extension = "so" | ||
| 151 | defaults.obj_extension = "o" | 176 | defaults.obj_extension = "o" |
| 152 | local rootdir = LUAROCKS_ROCKS_TREE or home_tree | ||
| 153 | defaults.root_dir = rootdir | ||
| 154 | defaults.rocks_dir = rootdir.."/rocks/" | ||
| 155 | defaults.scripts_dir = rootdir.."/bin/" | ||
| 156 | defaults.external_deps_dirs = { "/usr/local", "/usr" } | 177 | defaults.external_deps_dirs = { "/usr/local", "/usr" } |
| 157 | defaults.variables.LUA_BINDIR = LUA_BINDIR or "/usr/local/bin" | 178 | defaults.variables.LUA_BINDIR = LUA_BINDIR or "/usr/local/bin" |
| 158 | defaults.variables.LUA_INCDIR = LUA_INCDIR or "/usr/local/include" | 179 | defaults.variables.LUA_INCDIR = LUA_INCDIR or "/usr/local/include" |
| @@ -186,8 +207,6 @@ if detected.cygwin then | |||
| 186 | defaults.variables.LIBFLAG = "-shared" | 207 | defaults.variables.LIBFLAG = "-shared" |
| 187 | end | 208 | end |
| 188 | 209 | ||
| 189 | defaults.external_lib_extension = defaults.lib_extension | ||
| 190 | |||
| 191 | if detected.macosx then | 210 | if detected.macosx then |
| 192 | defaults.external_lib_extension = "dylib" | 211 | defaults.external_lib_extension = "dylib" |
| 193 | defaults.arch = "macosx-"..proc | 212 | defaults.arch = "macosx-"..proc |
| @@ -224,16 +243,10 @@ defaults.variables.LIB_EXTENSION = defaults.lib_extension | |||
| 224 | defaults.variables.OBJ_EXTENSION = defaults.obj_extension | 243 | defaults.variables.OBJ_EXTENSION = defaults.obj_extension |
| 225 | defaults.variables.LUAROCKS_PREFIX = LUAROCKS_PREFIX | 244 | defaults.variables.LUAROCKS_PREFIX = LUAROCKS_PREFIX |
| 226 | 245 | ||
| 227 | local cfg_mt = { | 246 | -- Use defaults: |
| 228 | __index = function(t, k) | ||
| 229 | local default = defaults[k] | ||
| 230 | if default then | ||
| 231 | rawset(t, k, default) | ||
| 232 | end | ||
| 233 | return default | ||
| 234 | end | ||
| 235 | } | ||
| 236 | 247 | ||
| 248 | -- Populate values from 'defaults.variables' in 'variables' if they were not | ||
| 249 | -- already set by user. | ||
| 237 | if not _M.variables then | 250 | if not _M.variables then |
| 238 | _M.variables = {} | 251 | _M.variables = {} |
| 239 | end | 252 | end |
| @@ -243,15 +256,14 @@ for k,v in pairs(defaults.variables) do | |||
| 243 | end | 256 | end |
| 244 | end | 257 | end |
| 245 | 258 | ||
| 246 | setmetatable(_M, cfg_mt) | 259 | -- For values not set in the config file, use values from the 'defaults' table. |
| 247 | 260 | local cfg_mt = { | |
| 248 | if not next(rocks_trees) then | 261 | __index = function(t, k) |
| 249 | if home_tree then | 262 | local default = defaults[k] |
| 250 | table.insert(rocks_trees, home_tree) | 263 | if default then |
| 251 | end | 264 | rawset(t, k, default) |
| 252 | if LUAROCKS_ROCKS_TREE then | 265 | end |
| 253 | table.insert(rocks_trees, LUAROCKS_ROCKS_TREE) | 266 | return default |
| 254 | end | 267 | end |
| 255 | end | 268 | } |
| 256 | 269 | setmetatable(_M, cfg_mt) | |
| 257 | user_agent = "LuaRocks/"..program_version | ||
