aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHisham Muhammad <hisham@gobolinux.org>2015-06-29 21:28:03 -0300
committerHisham Muhammad <hisham@gobolinux.org>2015-06-29 21:28:03 -0300
commit978abafcd957544c539dbc72057a243885eb50e9 (patch)
tree40a14c40b25427cbf2abef56198e502ae27f2dd0
parent0601f27c2371c9f19c4175f866f7babfcabb7277 (diff)
parent1eccb0385c6bef170ceee86a6415d7442c28699d (diff)
downloadluarocks-978abafcd957544c539dbc72057a243885eb50e9.tar.gz
luarocks-978abafcd957544c539dbc72057a243885eb50e9.tar.bz2
luarocks-978abafcd957544c539dbc72057a243885eb50e9.zip
Merge branch 'master' into luarocks-3
-rw-r--r--appveyor.yml2
-rw-r--r--src/luarocks/build/cmake.lua8
-rw-r--r--src/luarocks/cfg.lua66
-rw-r--r--src/luarocks/util.lua1
-rw-r--r--src/luarocks/write_rockspec.lua26
-rw-r--r--test/testing.lua1
-rwxr-xr-xtest/testing.sh1
7 files changed, 63 insertions, 42 deletions
diff --git a/appveyor.yml b/appveyor.yml
index 140308ce..abf15af6 100644
--- a/appveyor.yml
+++ b/appveyor.yml
@@ -11,7 +11,7 @@ environment:
11 matrix: 11 matrix:
12 - LUA_VER: 5.1.5 12 - LUA_VER: 5.1.5
13 - LUA_VER: 5.2.4 13 - LUA_VER: 5.2.4
14 - LUA_VER: 5.3.0 14 - LUA_VER: 5.3.1
15 - LJ_VER: 2.0.4 15 - LJ_VER: 2.0.4
16 - LJ_VER: 2.1 16 - LJ_VER: 2.1
17 17
diff --git a/src/luarocks/build/cmake.lua b/src/luarocks/build/cmake.lua
index c8f5a669..7b16fa51 100644
--- a/src/luarocks/build/cmake.lua
+++ b/src/luarocks/build/cmake.lua
@@ -35,14 +35,18 @@ function cmake.run(rockspec)
35 cmake_handler:close() 35 cmake_handler:close()
36 end 36 end
37 37
38
39 -- Execute cmake with variables. 38 -- Execute cmake with variables.
40 local args = "" 39 local args = ""
40
41 -- Try to pick the best generator. With msvc and x64, CMake does not select it by default so we need to be explicit.
41 if cfg.cmake_generator then 42 if cfg.cmake_generator then
42 args = args .. ' -G"'..cfg.cmake_generator.. '"' 43 args = args .. ' -G"'..cfg.cmake_generator.. '"'
44 elseif cfg.is_platform("windows") and cfg.target_cpu:match("x86_64$") then
45 args = args .. " -DCMAKE_GENERATOR_PLATFORM=x64"
43 end 46 end
47
44 for k,v in pairs(variables) do 48 for k,v in pairs(variables) do
45 args = args .. ' -D' ..k.. '="' ..v.. '"' 49 args = args .. ' -D' ..k.. '="' ..tostring(v).. '"'
46 end 50 end
47 51
48 if not fs.execute_string(rockspec.variables.CMAKE.." -H. -Bbuild.luarocks "..args) then 52 if not fs.execute_string(rockspec.variables.CMAKE.." -H. -Bbuild.luarocks "..args) then
diff --git a/src/luarocks/cfg.lua b/src/luarocks/cfg.lua
index 2a92c4dd..8321e9b9 100644
--- a/src/luarocks/cfg.lua
+++ b/src/luarocks/cfg.lua
@@ -144,34 +144,52 @@ end
144cfg.variables = {} 144cfg.variables = {}
145cfg.rocks_trees = {} 145cfg.rocks_trees = {}
146 146
147-- The global environment in the config files; 147-- Create global environment for the config files;
148local env_for_config_file 148local env_for_config_file = function()
149env_for_config_file = { 149 local e
150 home = cfg.home, 150 e = {
151 lua_version = cfg.lua_version, 151 home = cfg.home,
152 platform = util.make_shallow_copy(detected), 152 lua_version = cfg.lua_version,
153 processor = cfg.target_cpu, -- remains for compat reasons 153 platform = util.make_shallow_copy(detected),
154 target_cpu = cfg.target_cpu, -- replaces `processor` 154 processor = cfg.target_cpu, -- remains for compat reasons
155 os_getenv = os.getenv, 155 target_cpu = cfg.target_cpu, -- replaces `processor`
156 dump_env = function() 156 os_getenv = os.getenv,
157 -- debug function, calling it from a config file will show all 157 dump_env = function()
158 -- available globals to that config file 158 -- debug function, calling it from a config file will show all
159 print(util.show_table(env_for_config_file, "global environment")) 159 -- available globals to that config file
160 end, 160 print(util.show_table(e, "global environment"))
161} 161 end,
162 }
163 return e
164end
165
166-- Merge values from config files read into the `cfg` table
167local merge_overrides = function(overrides)
168 -- remove some stuff we do not want to integrate
169 overrides.os_getenv = nil
170 overrides.dump_env = nil
171 -- remove tables to be copied verbatim instead of deeply merged
172 if overrides.rocks_trees then cfg.rocks_trees = nil end
173 if overrides.rocks_servers then cfg.rocks_servers = nil end
174 -- perform actual merge
175 util.deep_merge(cfg, overrides)
176end
162 177
163sys_config_file = site_config.LUAROCKS_SYSCONFIG or sys_config_dir.."/config-"..cfg.lua_version..".lua" 178sys_config_file = site_config.LUAROCKS_SYSCONFIG or sys_config_dir.."/config-"..cfg.lua_version..".lua"
164do 179do
165 local err, errcode 180 local err, errcode
166 sys_config_ok, err, errcode = persist.load_into_table(sys_config_file, env_for_config_file) 181 sys_config_ok, err, errcode = persist.load_into_table(sys_config_file, env_for_config_file())
167 if (not sys_config_ok) and errcode == "open" then -- file not found, so try alternate file 182 if (not sys_config_ok) and errcode == "open" then -- file not found, so try alternate file
168 sys_config_file = sys_config_dir.."/config.lua" 183 sys_config_file = sys_config_dir.."/config.lua"
169 sys_config_ok, err, errcode = persist.load_into_table(sys_config_file, env_for_config_file) 184 sys_config_ok, err, errcode = persist.load_into_table(sys_config_file, env_for_config_file())
170 end 185 end
171 if (not sys_config_ok) and errcode ~= "open" then -- either "load" or "run"; bad config file, bail out with error 186 if (not sys_config_ok) and errcode ~= "open" then -- either "load" or "run"; bad config file, bail out with error
172 io.stderr:write(err.."\n") 187 io.stderr:write(err.."\n")
173 os.exit(cfg.errorcodes.CONFIGFILE) 188 os.exit(cfg.errorcodes.CONFIGFILE)
174 end 189 end
190 if sys_config_ok then
191 merge_overrides(sys_config_ok)
192 end
175end 193end
176 194
177if not site_config.LUAROCKS_FORCE_CONFIG then 195if not site_config.LUAROCKS_FORCE_CONFIG then
@@ -179,24 +197,18 @@ if not site_config.LUAROCKS_FORCE_CONFIG then
179 local home_overrides, err, errcode 197 local home_overrides, err, errcode
180 home_config_file = os.getenv("LUAROCKS_CONFIG_" .. version_suffix) or os.getenv("LUAROCKS_CONFIG") 198 home_config_file = os.getenv("LUAROCKS_CONFIG_" .. version_suffix) or os.getenv("LUAROCKS_CONFIG")
181 if home_config_file then 199 if home_config_file then
182 home_overrides, err, errcode = persist.load_into_table(home_config_file, env_for_config_file) 200 home_overrides, err, errcode = persist.load_into_table(home_config_file, env_for_config_file())
183 else 201 else
184 home_config_file = home_config_dir.."/config-"..cfg.lua_version..".lua" 202 home_config_file = home_config_dir.."/config-"..cfg.lua_version..".lua"
185 home_overrides, err, errcode = persist.load_into_table(home_config_file, env_for_config_file) 203 home_overrides, err, errcode = persist.load_into_table(home_config_file, env_for_config_file())
186 if (not home_overrides) and (not errcode == "run") then 204 if (not home_overrides) and (not errcode == "run") then
187 home_config_file = home_config_dir.."/config.lua" 205 home_config_file = home_config_dir.."/config.lua"
188 home_overrides, err, errcode = persist.load_into_table(home_config_file, env_for_config_file) 206 home_overrides, err, errcode = persist.load_into_table(home_config_file, env_for_config_file())
189 end 207 end
190 end 208 end
191 if home_overrides then 209 if home_overrides then
192 home_config_ok = true 210 home_config_ok = true
193 if home_overrides.rocks_trees then 211 merge_overrides(home_overrides)
194 cfg.rocks_trees = nil
195 end
196 if home_overrides.rocks_servers then
197 cfg.rocks_servers = nil
198 end
199 util.deep_merge(cfg, home_overrides)
200 else 212 else
201 home_config_ok = home_overrides 213 home_config_ok = home_overrides
202 if errcode ~= "open" then 214 if errcode ~= "open" then
diff --git a/src/luarocks/util.lua b/src/luarocks/util.lua
index 6fecf863..c06c8354 100644
--- a/src/luarocks/util.lua
+++ b/src/luarocks/util.lua
@@ -118,6 +118,7 @@ local supported_flags = {
118 ["rock-tree"] = true, 118 ["rock-tree"] = true,
119 ["rock-trees"] = true, 119 ["rock-trees"] = true,
120 ["rockspec"] = true, 120 ["rockspec"] = true,
121 ["rockspec-format"] = "<ver>",
121 ["server"] = "<server>", 122 ["server"] = "<server>",
122 ["skip-pack"] = true, 123 ["skip-pack"] = true,
123 ["source"] = true, 124 ["source"] = true,
diff --git a/src/luarocks/write_rockspec.lua b/src/luarocks/write_rockspec.lua
index 68942e07..972562c3 100644
--- a/src/luarocks/write_rockspec.lua
+++ b/src/luarocks/write_rockspec.lua
@@ -24,18 +24,19 @@ If a repository URL is given with no version, it creates an 'scm' rock.
24Note that the generated file is a _starting point_ for writing a 24Note that the generated file is a _starting point_ for writing a
25rockspec, and is not guaranteed to be complete or correct. 25rockspec, and is not guaranteed to be complete or correct.
26 26
27--output=<file> Write the rockspec with the given filename. 27--output=<file> Write the rockspec with the given filename.
28 If not given, a file is written in the current 28 If not given, a file is written in the current
29 directory with a filename based on given name and version. 29 directory with a filename based on given name and version.
30--license="<string>" A license string, such as "MIT/X11" or "GNU GPL v3". 30--license="<string>" A license string, such as "MIT/X11" or "GNU GPL v3".
31--summary="<txt>" A short one-line description summary. 31--summary="<txt>" A short one-line description summary.
32--detailed="<txt>" A longer description string. 32--detailed="<txt>" A longer description string.
33--homepage=<url> Project homepage. 33--homepage=<url> Project homepage.
34--lua-version=<ver> Supported Lua versions. Accepted values are "5.1", "5.2", 34--lua-version=<ver> Supported Lua versions. Accepted values are "5.1", "5.2",
35 "5.3", "5.1,5.2", "5.2,5.3", or "5.1,5.2,5.3". 35 "5.3", "5.1,5.2", "5.2,5.3", or "5.1,5.2,5.3".
36--tag=<tag> Tag to use. Will attempt to extract version number from it. 36--rockspec-format=<ver> Rockspec format version, such as "1.0" or "1.1".
37--lib=<lib>[,<lib>] A comma-separated list of libraries that C files need to 37--tag=<tag> Tag to use. Will attempt to extract version number from it.
38 link to. 38--lib=<lib>[,<lib>] A comma-separated list of libraries that C files need to
39 link to.
39]] 40]]
40 41
41local function open_file(name) 42local function open_file(name)
@@ -246,6 +247,7 @@ function write_rockspec.run(...)
246 end 247 end
247 248
248 local rockspec = { 249 local rockspec = {
250 rockspec_format = flags["rockspec-format"],
249 package = name, 251 package = name,
250 name = name:lower(), 252 name = name:lower(),
251 version = version.."-1", 253 version = version.."-1",
diff --git a/test/testing.lua b/test/testing.lua
index 44c6f098..48d4ac0e 100644
--- a/test/testing.lua
+++ b/test/testing.lua
@@ -400,6 +400,7 @@ local tests = {
400 end, 400 end,
401 test_write_rockspec = function() return run "$luarocks write_rockspec git://github.com/keplerproject/luarocks" end, 401 test_write_rockspec = function() return run "$luarocks write_rockspec git://github.com/keplerproject/luarocks" end,
402 test_write_rockspec_lib = function() return run '$luarocks write_rockspec git://github.com/mbalmer/luafcgi --lib=fcgi --license="3-clause BSD" --lua-version=5.1,5.2' end, 402 test_write_rockspec_lib = function() return run '$luarocks write_rockspec git://github.com/mbalmer/luafcgi --lib=fcgi --license="3-clause BSD" --lua-version=5.1,5.2' end,
403 test_write_rockspec_format = function() return run '$luarocks write_rockspec git://github.com/keplerproject/luarocks --rockspec-format=1.1 --lua-version=5.1,5.2' end,
403 test_write_rockspec_fullargs = function() return run '$luarocks write_rockspec git://github.com/keplerproject/luarocks --lua-version=5.1,5.2 --license="MIT/X11" --homepage="http://www.luarocks.org" --summary="A package manager for Lua modules"' end, 404 test_write_rockspec_fullargs = function() return run '$luarocks write_rockspec git://github.com/keplerproject/luarocks --lua-version=5.1,5.2 --license="MIT/X11" --homepage="http://www.luarocks.org" --summary="A package manager for Lua modules"' end,
404 fail_write_rockspec_args = function() return run "$luarocks write_rockspec invalid" end, 405 fail_write_rockspec_args = function() return run "$luarocks write_rockspec invalid" end,
405 fail_write_rockspec_args_url = function() return run "$luarocks write_rockspec http://example.com/invalid.zip" end, 406 fail_write_rockspec_args_url = function() return run "$luarocks write_rockspec http://example.com/invalid.zip" end,
diff --git a/test/testing.sh b/test/testing.sh
index 4338e48f..c43b4d52 100755
--- a/test/testing.sh
+++ b/test/testing.sh
@@ -492,6 +492,7 @@ test_deps_mode_make_order_sys() { $luarocks build --tree="$testing_tree" lpeg &&
492 492
493test_write_rockspec() { $luarocks write_rockspec git://github.com/keplerproject/luarocks; } 493test_write_rockspec() { $luarocks write_rockspec git://github.com/keplerproject/luarocks; }
494test_write_rockspec_lib() { $luarocks write_rockspec git://github.com/mbalmer/luafcgi --lib=fcgi --license="3-clause BSD" --lua-version=5.1,5.2; } 494test_write_rockspec_lib() { $luarocks write_rockspec git://github.com/mbalmer/luafcgi --lib=fcgi --license="3-clause BSD" --lua-version=5.1,5.2; }
495test_write_rockspec_format() { $luarocks write_rockspec git://github.com/keplerproject/luarocks --rockspec-format=1.1 --lua-version=5.1,5.2; }
495test_write_rockspec_fullargs() { $luarocks write_rockspec git://github.com/keplerproject/luarocks --lua-version=5.1,5.2 --license="MIT/X11" --homepage="http://www.luarocks.org" --summary="A package manager for Lua modules"; } 496test_write_rockspec_fullargs() { $luarocks write_rockspec git://github.com/keplerproject/luarocks --lua-version=5.1,5.2 --license="MIT/X11" --homepage="http://www.luarocks.org" --summary="A package manager for Lua modules"; }
496fail_write_rockspec_args() { $luarocks write_rockspec invalid; } 497fail_write_rockspec_args() { $luarocks write_rockspec invalid; }
497fail_write_rockspec_args_url() { $luarocks write_rockspec http://example.com/invalid.zip; } 498fail_write_rockspec_args_url() { $luarocks write_rockspec http://example.com/invalid.zip; }