diff options
| author | Hisham Muhammad <hisham@gobolinux.org> | 2013-08-19 19:44:49 -0300 |
|---|---|---|
| committer | Hisham Muhammad <hisham@gobolinux.org> | 2013-08-19 19:44:49 -0300 |
| commit | 0b8605f5d53a9fef54ca17bf5447132327b0ae6e (patch) | |
| tree | b37bdefaf2b853d81e2c221213ffac34a7d24919 /src | |
| parent | 951cb2be4b29b65f9675b126ede52cd285528eea (diff) | |
| download | luarocks-0b8605f5d53a9fef54ca17bf5447132327b0ae6e.tar.gz luarocks-0b8605f5d53a9fef54ca17bf5447132327b0ae6e.tar.bz2 luarocks-0b8605f5d53a9fef54ca17bf5447132327b0ae6e.zip | |
Make behavior more intuitive when the key in a modules or build.install.lua section asks to rename a module.
I personally think it's a bad practice, but the syntax implies this is possible and the previous behavior is
surely worse than the new one. See http://stackoverflow.com/questions/18314068/does-luarocks-rockspec-use-only-file-names-for-module-sub-names
Diffstat (limited to 'src')
| -rw-r--r-- | src/luarocks/build.lua | 18 | ||||
| -rw-r--r-- | src/luarocks/build/builtin.lua | 14 |
2 files changed, 24 insertions, 8 deletions
diff --git a/src/luarocks/build.lua b/src/luarocks/build.lua index 7bd54a0c..4f089cff 100644 --- a/src/luarocks/build.lua +++ b/src/luarocks/build.lua | |||
| @@ -53,22 +53,32 @@ local function install_files(files, location, is_module_path) | |||
| 53 | if files then | 53 | if files then |
| 54 | for k, file in pairs(files) do | 54 | for k, file in pairs(files) do |
| 55 | local dest = location | 55 | local dest = location |
| 56 | local filename = dir.base_name(file) | ||
| 56 | if type(k) == "string" then | 57 | if type(k) == "string" then |
| 58 | local modname = k | ||
| 57 | if is_module_path then | 59 | if is_module_path then |
| 58 | dest = dir.path(location, path.module_to_path(k)) | 60 | dest = dir.path(location, path.module_to_path(modname)) |
| 59 | local ok, err = fs.make_dir(dest) | 61 | local ok, err = fs.make_dir(dest) |
| 60 | if not ok then return nil, err end | 62 | if not ok then return nil, err end |
| 63 | if filename:match("%.lua$") then | ||
| 64 | local basename = modname:match("([^.]+)$") | ||
| 65 | local baseinfo = filename:gsub("%.lua$", "") | ||
| 66 | if basename ~= baseinfo then | ||
| 67 | filename = basename..".lua" | ||
| 68 | end | ||
| 69 | end | ||
| 61 | else | 70 | else |
| 62 | dest = dir.path(location, dir.dir_name(k)) | 71 | dest = dir.path(location, dir.dir_name(modname)) |
| 63 | local ok, err = fs.make_dir(dest) | 72 | local ok, err = fs.make_dir(dest) |
| 64 | if not ok then return nil, err end | 73 | if not ok then return nil, err end |
| 65 | dest = dir.path(dest, dir.base_name(k)) | 74 | filename = dir.base_name(modname) |
| 66 | end | 75 | end |
| 67 | else | 76 | else |
| 68 | local ok, err = fs.make_dir(dest) | 77 | local ok, err = fs.make_dir(dest) |
| 69 | if not ok then return nil, err end | 78 | if not ok then return nil, err end |
| 70 | end | 79 | end |
| 71 | local ok = fs.copy(dir.path(file), dest) | 80 | print("COPYING ",dir.path(file), dir.path(dest, filename)) |
| 81 | local ok = fs.copy(dir.path(file), dir.path(dest, filename)) | ||
| 72 | if not ok then | 82 | if not ok then |
| 73 | return nil, "Failed copying "..file | 83 | return nil, "Failed copying "..file |
| 74 | end | 84 | end |
diff --git a/src/luarocks/build/builtin.lua b/src/luarocks/build/builtin.lua index c96a2496..3bace7c4 100644 --- a/src/luarocks/build/builtin.lua +++ b/src/luarocks/build/builtin.lua | |||
| @@ -196,10 +196,17 @@ function run(rockspec) | |||
| 196 | if type(info) == "string" then | 196 | if type(info) == "string" then |
| 197 | local ext = info:match(".([^.]+)$") | 197 | local ext = info:match(".([^.]+)$") |
| 198 | if ext == "lua" then | 198 | if ext == "lua" then |
| 199 | local filename = dir.base_name(info) | ||
| 199 | if info:match("init%.lua$") and not name:match("%.init$") then | 200 | if info:match("init%.lua$") and not name:match("%.init$") then |
| 200 | moddir = path.module_to_path(name..".init") | 201 | moddir = path.module_to_path(name..".init") |
| 202 | else | ||
| 203 | local basename = name:match("([^.]+)$") | ||
| 204 | local baseinfo = filename:gsub("%.lua$", "") | ||
| 205 | if basename ~= baseinfo then | ||
| 206 | filename = basename..".lua" | ||
| 207 | end | ||
| 201 | end | 208 | end |
| 202 | local dest = dir.path(luadir, moddir) | 209 | local dest = dir.path(luadir, moddir, filename) |
| 203 | built_modules[info] = dest | 210 | built_modules[info] = dest |
| 204 | else | 211 | else |
| 205 | info = {info} | 212 | info = {info} |
| @@ -227,8 +234,7 @@ function run(rockspec) | |||
| 227 | local ok, err = fs.make_dir(moddir) | 234 | local ok, err = fs.make_dir(moddir) |
| 228 | if not ok then return nil, err end | 235 | if not ok then return nil, err end |
| 229 | end | 236 | end |
| 230 | local dest = dir.path(libdir, moddir) | 237 | built_modules[module_name] = dir.path(libdir, moddir, module_name) |
| 231 | built_modules[module_name] = dest | ||
| 232 | ok = compile_library(module_name, objects, info.libraries, info.libdirs, name) | 238 | ok = compile_library(module_name, objects, info.libraries, info.libdirs, name) |
| 233 | if not ok then | 239 | if not ok then |
| 234 | return nil, "Failed compiling module "..module_name | 240 | return nil, "Failed compiling module "..module_name |
| @@ -236,7 +242,7 @@ function run(rockspec) | |||
| 236 | end | 242 | end |
| 237 | end | 243 | end |
| 238 | for name, dest in pairs(built_modules) do | 244 | for name, dest in pairs(built_modules) do |
| 239 | fs.make_dir(dest) | 245 | fs.make_dir(dir.dir_name(dest)) |
| 240 | ok = fs.copy(name, dest) | 246 | ok = fs.copy(name, dest) |
| 241 | if not ok then | 247 | if not ok then |
| 242 | return nil, "Failed installing "..name.." in "..dest | 248 | return nil, "Failed installing "..name.." in "..dest |
