diff options
| author | Thijs Schreijer <thijs@thijsschreijer.nl> | 2014-03-03 09:55:00 +0100 |
|---|---|---|
| committer | Thijs Schreijer <thijs@thijsschreijer.nl> | 2014-03-03 09:55:00 +0100 |
| commit | ab3f1a0a82d564b4ac8b5bfb97cfcdf6fb18ee41 (patch) | |
| tree | 6db8528add3fc33dab460cf47a4f3586124fd154 /src | |
| parent | 2bcc5e5049261b443e7f85ff7ae4ea290c964cfa (diff) | |
| download | luarocks-ab3f1a0a82d564b4ac8b5bfb97cfcdf6fb18ee41.tar.gz luarocks-ab3f1a0a82d564b4ac8b5bfb97cfcdf6fb18ee41.tar.bz2 luarocks-ab3f1a0a82d564b4ac8b5bfb97cfcdf6fb18ee41.zip | |
remove exe wrappers, just batch files on windows
Diffstat (limited to 'src')
| -rw-r--r-- | src/luarocks/build/builtin.lua | 25 | ||||
| -rw-r--r-- | src/luarocks/fs/lua.lua | 17 | ||||
| -rw-r--r-- | src/luarocks/repos.lua | 10 |
3 files changed, 31 insertions, 21 deletions
diff --git a/src/luarocks/build/builtin.lua b/src/luarocks/build/builtin.lua index 5c58265a..5120c85c 100644 --- a/src/luarocks/build/builtin.lua +++ b/src/luarocks/build/builtin.lua | |||
| @@ -19,6 +19,7 @@ end | |||
| 19 | --- Makes an RC file with an embedded Lua script, for building .exes on Windows | 19 | --- Makes an RC file with an embedded Lua script, for building .exes on Windows |
| 20 | -- @return nil if could open files, error otherwise | 20 | -- @return nil if could open files, error otherwise |
| 21 | local function make_rc(luafilename, rcfilename) | 21 | local function make_rc(luafilename, rcfilename) |
| 22 | --TODO EXEWRAPPER | ||
| 22 | local rcfile = io.open(rcfilename, "w") | 23 | local rcfile = io.open(rcfilename, "w") |
| 23 | if not rcfile then | 24 | if not rcfile then |
| 24 | error("Could not open "..rcfilename.." for writing.") | 25 | error("Could not open "..rcfilename.." for writing.") |
| @@ -46,7 +47,7 @@ end | |||
| 46 | -- nil and an error message otherwise. | 47 | -- nil and an error message otherwise. |
| 47 | function run(rockspec) | 48 | function run(rockspec) |
| 48 | assert(type(rockspec) == "table") | 49 | assert(type(rockspec) == "table") |
| 49 | local compile_object, compile_library, compile_wrapper_binary | 50 | local compile_object, compile_library, compile_wrapper_binary --TODO EXEWRAPPER |
| 50 | 51 | ||
| 51 | local build = rockspec.build | 52 | local build = rockspec.build |
| 52 | local variables = rockspec.variables | 53 | local variables = rockspec.variables |
| @@ -80,6 +81,7 @@ function run(rockspec) | |||
| 80 | return ok | 81 | return ok |
| 81 | end | 82 | end |
| 82 | compile_wrapper_binary = function(fullname, name) | 83 | compile_wrapper_binary = function(fullname, name) |
| 84 | --TODO EXEWRAPPER | ||
| 83 | local fullbasename = fullname:gsub("%.lua$", ""):gsub("/", "\\") | 85 | local fullbasename = fullname:gsub("%.lua$", ""):gsub("/", "\\") |
| 84 | local basename = name:gsub("%.lua$", ""):gsub("/", "\\") | 86 | local basename = name:gsub("%.lua$", ""):gsub("/", "\\") |
| 85 | local rcname = basename..".rc" | 87 | local rcname = basename..".rc" |
| @@ -125,6 +127,7 @@ function run(rockspec) | |||
| 125 | return ok | 127 | return ok |
| 126 | end | 128 | end |
| 127 | compile_wrapper_binary = function(fullname, name) | 129 | compile_wrapper_binary = function(fullname, name) |
| 130 | --TODO EXEWRAPPER | ||
| 128 | local fullbasename = fullname:gsub("%.lua$", ""):gsub("/", "\\") | 131 | local fullbasename = fullname:gsub("%.lua$", ""):gsub("/", "\\") |
| 129 | local basename = name:gsub("%.lua$", ""):gsub("/", "\\") | 132 | local basename = name:gsub("%.lua$", ""):gsub("/", "\\") |
| 130 | local object = basename..".obj" | 133 | local object = basename..".obj" |
| @@ -165,6 +168,7 @@ function run(rockspec) | |||
| 165 | return execute(variables.LD.." "..variables.LIBFLAG, "-o", library, "-L"..variables.LUA_LIBDIR, unpack(extras)) | 168 | return execute(variables.LD.." "..variables.LIBFLAG, "-o", library, "-L"..variables.LUA_LIBDIR, unpack(extras)) |
| 166 | end | 169 | end |
| 167 | compile_wrapper_binary = function(fullname, name) return true, name end | 170 | compile_wrapper_binary = function(fullname, name) return true, name end |
| 171 | --TODO EXEWRAPPER | ||
| 168 | end | 172 | end |
| 169 | 173 | ||
| 170 | local ok = true | 174 | local ok = true |
| @@ -173,30 +177,25 @@ function run(rockspec) | |||
| 173 | local luadir = path.lua_dir(rockspec.name, rockspec.version) | 177 | local luadir = path.lua_dir(rockspec.name, rockspec.version) |
| 174 | local libdir = path.lib_dir(rockspec.name, rockspec.version) | 178 | local libdir = path.lib_dir(rockspec.name, rockspec.version) |
| 175 | local docdir = path.doc_dir(rockspec.name, rockspec.version) | 179 | local docdir = path.doc_dir(rockspec.name, rockspec.version) |
| 180 | --TODO EXEWRAPPER | ||
| 176 | -- On Windows, compiles an .exe for each Lua file in build.install.bin, and | 181 | -- On Windows, compiles an .exe for each Lua file in build.install.bin, and |
| 177 | -- replaces the filename with the .exe name. Strips the .lua extension if it exists, | 182 | -- replaces the filename with the .exe name. Strips the .lua extension if it exists, |
| 178 | -- otherwise just appends .exe to the name | 183 | -- otherwise just appends .exe to the name. Only if `cfg.exewrapper = true` |
| 179 | if build.install and build.install.bin then | 184 | if build.install and build.install.bin then |
| 180 | for i, name in ipairs(build.install.bin) do | 185 | for key, name in pairs(build.install.bin) do |
| 181 | local fullname = dir.path(fs.current_dir(), name) | 186 | local fullname = dir.path(fs.current_dir(), name) |
| 182 | local match = name:match("%.lua$") | 187 | if cfg.exewrapper and fs.is_lua(fullname) then |
| 183 | local basename = name:gsub("%.lua$", "") | ||
| 184 | local file | ||
| 185 | if not match then | ||
| 186 | file = io.open(fullname) | ||
| 187 | end | ||
| 188 | if match or (file and file:read():match("#!.*lua.*")) then | ||
| 189 | ok, name = compile_wrapper_binary(fullname, name) | 188 | ok, name = compile_wrapper_binary(fullname, name) |
| 190 | if ok then | 189 | if ok then |
| 191 | build.install.bin[i] = name | 190 | build.install.bin[key] = name |
| 192 | else | 191 | else |
| 193 | if file then file:close() end | ||
| 194 | return nil, "Build error in wrapper binaries" | 192 | return nil, "Build error in wrapper binaries" |
| 195 | end | 193 | end |
| 196 | end | 194 | end |
| 197 | if file then file:close() end | ||
| 198 | end | 195 | end |
| 199 | end | 196 | end |
| 197 | |||
| 198 | |||
| 200 | for name, info in pairs(build.modules) do | 199 | for name, info in pairs(build.modules) do |
| 201 | local moddir = path.module_to_path(name) | 200 | local moddir = path.module_to_path(name) |
| 202 | if type(info) == "string" then | 201 | if type(info) == "string" then |
diff --git a/src/luarocks/fs/lua.lua b/src/luarocks/fs/lua.lua index 9806bb63..c169f89c 100644 --- a/src/luarocks/fs/lua.lua +++ b/src/luarocks/fs/lua.lua | |||
| @@ -800,4 +800,21 @@ function fs_lua.check_command_permissions(flags) | |||
| 800 | end | 800 | end |
| 801 | end | 801 | end |
| 802 | 802 | ||
| 803 | --- Check whether a file is a Lua script | ||
| 804 | -- Either a '.lua' extension, or a shebang with lua interpreter | ||
| 805 | -- @param name (string) filename to check | ||
| 806 | -- @return true if the filename has a '.lua' extension or the file contains a | ||
| 807 | -- 'lua' interpreter shebang | ||
| 808 | function fs_lua.is_lua(name) | ||
| 809 | local is_lua = name:lower():match("%.lua$") -- .lua extension, so it's a Lua file | ||
| 810 | if not is_lua then -- check for shebang | ||
| 811 | local file = io.open(name) | ||
| 812 | if file then | ||
| 813 | is_lua = file:read():match("#!.*lua.*") -- no extension, but a shebang, so it's a Lua file | ||
| 814 | file:close() | ||
| 815 | end | ||
| 816 | end | ||
| 817 | return not (is_lua == nil) | ||
| 818 | end | ||
| 819 | |||
| 803 | return fs_lua | 820 | return fs_lua |
diff --git a/src/luarocks/repos.lua b/src/luarocks/repos.lua index 4a9c2f7d..7ad75846 100644 --- a/src/luarocks/repos.lua +++ b/src/luarocks/repos.lua | |||
| @@ -153,18 +153,12 @@ end | |||
| 153 | local function install_binary(source, target, name, version) | 153 | local function install_binary(source, target, name, version) |
| 154 | assert(type(source) == "string") | 154 | assert(type(source) == "string") |
| 155 | assert(type(target) == "string") | 155 | assert(type(target) == "string") |
| 156 | 156 | ||
| 157 | local match = source:match("%.lua$") | 157 | if fs.is_lua(source) then |
| 158 | local file, ok, err | ||
| 159 | if not match then | ||
| 160 | file = io.open(source) | ||
| 161 | end | ||
| 162 | if match or (file and file:read():match("^#!.*lua.*")) then | ||
| 163 | ok, err = fs.wrap_script(source, target, name, version) | 158 | ok, err = fs.wrap_script(source, target, name, version) |
| 164 | else | 159 | else |
| 165 | ok, err = fs.copy_binary(source, target) | 160 | ok, err = fs.copy_binary(source, target) |
| 166 | end | 161 | end |
| 167 | if file then file:close() end | ||
| 168 | return ok, err | 162 | return ok, err |
| 169 | end | 163 | end |
| 170 | 164 | ||
