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 | |
parent | 2bcc5e5049261b443e7f85ff7ae4ea290c964cfa (diff) | |
download | luarocks-ab3f1a0a82d564b4ac8b5bfb97cfcdf6fb18ee41.tar.gz luarocks-ab3f1a0a82d564b4ac8b5bfb97cfcdf6fb18ee41.tar.bz2 luarocks-ab3f1a0a82d564b4ac8b5bfb97cfcdf6fb18ee41.zip |
remove exe wrappers, just batch files on windows
-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 | ||