aboutsummaryrefslogtreecommitdiff
path: root/src/luarocks/cfg.lua
diff options
context:
space:
mode:
Diffstat (limited to 'src/luarocks/cfg.lua')
-rw-r--r--src/luarocks/cfg.lua98
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 =
10module("luarocks.cfg") 10module("luarocks.cfg")
11 11
12program_version = "1.1" 12program_version = "1.1"
13user_agent = "LuaRocks/"..program_version
13 14
14local persist = require("luarocks.persist") 15local persist = require("luarocks.persist")
15 16
@@ -24,6 +25,8 @@ else
24 os.exit(1) 25 os.exit(1)
25end 26end
26 27
28-- System detection:
29
27local detected = {} 30local detected = {}
28local system,proc 31local 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.
62end 65end
63 66
67-- Path configuration:
68
64local sys_config_file, home_config_file, home_tree 69local sys_config_file, home_config_file, home_tree
65if detected.windows then 70if 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
89end 94end
90 95
96if 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
103end
104
105-- Configure defaults:
106
107local root = LUAROCKS_ROCKS_TREE or home_tree
91local defaults = { 108local 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
105defaults.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}
110defaults.runtime_external_deps_subdirs = defaults.external_deps_subdirs
111 141
112if detected.windows then 142if 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
149if detected.unix then 173if 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"
187end 208end
188 209
189defaults.external_lib_extension = defaults.lib_extension
190
191if detected.macosx then 210if 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
224defaults.variables.OBJ_EXTENSION = defaults.obj_extension 243defaults.variables.OBJ_EXTENSION = defaults.obj_extension
225defaults.variables.LUAROCKS_PREFIX = LUAROCKS_PREFIX 244defaults.variables.LUAROCKS_PREFIX = LUAROCKS_PREFIX
226 245
227local 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.
237if not _M.variables then 250if not _M.variables then
238 _M.variables = {} 251 _M.variables = {}
239end 252end
@@ -243,15 +256,14 @@ for k,v in pairs(defaults.variables) do
243 end 256 end
244end 257end
245 258
246setmetatable(_M, cfg_mt) 259-- For values not set in the config file, use values from the 'defaults' table.
247 260local cfg_mt = {
248if 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
255end 268}
256 269setmetatable(_M, cfg_mt)
257user_agent = "LuaRocks/"..program_version