158 f:write(opts.executable, "\n"); |
158 f:write(opts.executable, "\n"); |
159 end |
159 end |
160 end |
160 end |
161 |
161 |
162 if enable_debug then |
162 if enable_debug then |
163 f:write [[ |
163 f:write(require_resource("squish.debug")); |
164 local function ___rename_chunk(chunk, name) |
|
165 if type(chunk) == "function" then |
|
166 chunk = string.dump(chunk); |
|
167 end |
|
168 local intsize = chunk:sub(8,8):byte(); |
|
169 local b = { chunk:sub(13, 13+intsize-1):byte(1, intsize) }; |
|
170 local oldlen = 0; |
|
171 for i = 1, #b do |
|
172 oldlen = oldlen + b[i] * 2^((i-1)*8); |
|
173 end |
|
174 |
|
175 local newname = name.."\0"; |
|
176 local newlen = #newname; |
|
177 |
|
178 local b = { }; |
|
179 for i=1,intsize do |
|
180 b[i] = string.char(math.floor(newlen / 2^((i-1)*8)) % (2^(i*8))); |
|
181 end |
|
182 |
|
183 return loadstring(chunk:sub(1, 12)..table.concat(b)..newname |
|
184 ..chunk:sub(13+intsize+oldlen, -1)); |
|
185 end |
|
186 ]]; |
|
187 end |
164 end |
188 |
165 |
189 print_verbose("Packing modules..."); |
166 print_verbose("Packing modules..."); |
190 for _, module in ipairs(modules) do |
167 for _, module in ipairs(modules) do |
191 local modulename, path = module.name, base_path..module.path; |
168 local modulename, path = module.name, base_path..module.path; |
198 if data then |
175 if data then |
199 f:write("package.preload['", modulename, "'] = (function (...)\n"); |
176 f:write("package.preload['", modulename, "'] = (function (...)\n"); |
200 f:write(data); |
177 f:write(data); |
201 f:write("end)\n"); |
178 f:write("end)\n"); |
202 if enable_debug then |
179 if enable_debug then |
203 f:write(string.format("package.preload[%q] = ___rename_chunk(package.preload[%q], %q);\n\n", |
180 f:write(string.format("package.preload[%q] = ___adjust_chunk(package.preload[%q], %q);\n\n", |
204 modulename, modulename, "@"..path)); |
181 modulename, modulename, "@"..path)); |
205 end |
182 end |
206 else |
183 else |
207 print_err("Couldn't pack module '"..modulename.."': "..err); |
184 print_err("Couldn't pack module '"..modulename.."': "..err); |
208 os.exit(1); |
185 os.exit(1); |