From b958bba841f9907582f3c5fa4b6162353636fc8f Mon Sep 17 00:00:00 2001 From: Hans Hagen Date: Tue, 5 Mar 2019 16:41:28 +0100 Subject: 2019-03-05 15:48:00 --- scripts/context/lua/context.lua | 41 ++++ scripts/context/lua/mtx-install.lua | 413 +++++++++++++++++++++++++++++++++ scripts/context/lua/mtxrun.lua | 13 +- scripts/context/stubs/mswin/mtxrun.lua | 13 +- scripts/context/stubs/unix/mtxrun | 13 +- scripts/context/stubs/win64/mtxrun.lua | 13 +- 6 files changed, 490 insertions(+), 16 deletions(-) create mode 100644 scripts/context/lua/context.lua create mode 100644 scripts/context/lua/mtx-install.lua (limited to 'scripts') diff --git a/scripts/context/lua/context.lua b/scripts/context/lua/context.lua new file mode 100644 index 000000000..b44312cfa --- /dev/null +++ b/scripts/context/lua/context.lua @@ -0,0 +1,41 @@ +-- This file is a companion to "context(.exe)" and is effectively the same +-- as: +-- +-- mtxrun -script context ... +-- +-- which will locate "mtx-context.lua" and load that one. The binary is a +-- copy of "luametatex(.exe)" aka luatex 2.0 for context lmtx. In a similar +-- fashion "mtxrun(.exe)" will load the "mtrun.lua" script. +-- +-- The installation of context should do this on Windows: +-- +-- luametatex.exe -> tex/texmf-win64/bin/luatex.exe +-- luametatex.exe -> tex/texmf-win64/bin/mtxrun.exe +-- luametatex.exe -> tex/texmf-win64/bin/context.exe +-- mtxrun.lua -> tex/texmf-win64/bin/mtxrun.lua +-- context.lua -> tex/texmf-win64/bin/context.lua +-- +-- and this on Unix: +-- +-- luametatex -> tex/texmf-linux-64/bin/luatex +-- luametatex -> tex/texmf-linux-64/bin/mtxrun +-- luametatex -> tex/texmf-linux-64/bin/context +-- mtxrun.lua -> tex/texmf-linux-64/bin/mtxrun.lua +-- context.lua -> tex/texmf-linux-64/bin/context.lua +-- +-- The static binary is smaller than 3MB so the few copies provide no real +-- overhead. + +local selfpath = os.selfpath + +if not arg or not selfpath then + print("invalid stub") + os.exit() +end + +arg[0] = "mtxrun" + +table.insert(arg,1,"mtx-context") +table.insert(arg,1,"--script") + +dofile(selfpath .. "/" .. "mtxrun.lua") diff --git a/scripts/context/lua/mtx-install.lua b/scripts/context/lua/mtx-install.lua new file mode 100644 index 000000000..46580bb20 --- /dev/null +++ b/scripts/context/lua/mtx-install.lua @@ -0,0 +1,413 @@ +if not modules then modules = { } end modules ['mtx-install'] = { + version = 1.002, + comment = "companion to mtxrun.lua", + author = "Hans Hagen, PRAGMA-ADE, Hasselt NL", + copyright = "PRAGMA ADE / ConTeXt Development Team", + license = "see context related readme files" +} + +-- todo: initial install from zip + +local helpinfo = [[ + + + + mtx-install + ConTeXt Installer + 2.00 + + + + + platform (windows, linux, linux-64, osx-intel, osx-ppc, linux-ppc) + repository url (rsync://contextgarden.net) + extra modules (can be list or 'all') + additional fonts (can be list or 'all') + extra binaries (like scite and texworks) + install context + update context + create list of files + + + + +]] + +local gsub, find, escapedpattern = string.gsub, string.find, string.escapedpattern +local round = math.round +local savetable, loadtable, sortedhash = table.save, table.load, table.sortedhash +local joinfile, filesize, dirname, addsuffix = file.join, file.size, file.dirname, file.addsuffix +local isdir, isfile, walkdir = lfs.isdir, lfs.isfile, lfs.dir +local mkdirs, globdir = dir.mkdirs, dir.glob +local osremove, osexecute, ostype = os.remove, os.execute, os.type +local savedata = io.savedata +local formatters = string.formatters + +local fetch = socket.http.request + +local application = logs.application { + name = "mtx-install", + banner = "ConTeXt Installer 2.00", + helpinfo = helpinfo, +} + +local report = application.report + +scripts = scripts or { } +scripts.install = scripts.install or { } +local install = scripts.install + +local texformats = { + "cont-en", + "cont-nl", + "cont-cz", + "cont-de", + "cont-fa", + "cont-it", + "cont-ro", + "cont-uk", + "cont-pe", +} + +local platforms = { + ["mswin"] = "mswin", + ["windows"] = "mswin", + ["win32"] = "mswin", + ["win"] = "mswin", + -- + ["mswin-64"] = "win64", + ["windows-64"] = "win64", + ["win64"] = "win64", + -- + ["linux"] = "linux", + ["linux-32"] = "linux", + ["linux32"] = "linux", + -- + ["linux-64"] = "linux-64", + ["linux64"] = "linux-64", + -- + ["linuxmusl-64"] = "linuxmusl-64", + -- + ["linux-armhf"] = "linux-armhf", + -- + ["freebsd"] = "freebsd", + -- + ["freebsd-amd64"] = "freebsd-amd64", + -- + ["kfreebsd"] = "kfreebsd-i386", + ["kfreebsd-i386"] = "kfreebsd-i386", + -- + ["kfreebsd-amd64"] = "kfreebsd-amd64", + -- + ["linux-ppc"] = "linux-ppc", + ["ppc"] = "linux-ppc", + -- + ["osx"] = "osx-intel", + ["macosx"] = "osx-intel", + ["osx-intel"] = "osx-intel", + ["osxintel"] = "osx-intel", + -- + ["osx-ppc"] = "osx-ppc", + ["osx-powerpc"] = "osx-ppc", + ["osxppc"] = "osx-ppc", + ["osxpowerpc"] = "osx-ppc", + -- + ["osx-64"] = "osx-64", + -- + ["solaris-intel"] = "solaris-intel", + -- + ["solaris-sparc"] = "solaris-sparc", + ["solaris"] = "solaris-sparc", + -- + ["unknown"] = "unknown", +} + +function install.identify() + + -- We have to be in "...../tex" where subdirectories are prefixed with + -- "texmf". We strip the "tex/texm*/" from the name in the list. + + local function collect(root,tree) + + local path = root .. "/" .. tree + + if isdir(path) then + + local prefix = path .. "/" + local files = globdir(prefix .. "**") + local pattern = escapedpattern("^" .. prefix) + + local details = { } + local total = 0 + + for i=1,#files do + local name = files[i] + local size = filesize(name) + local base = gsub(name,pattern,"") + local stamp = md5.hex(io.loaddata(name)) + details[i] = { base, size, stamp } + total = total + size + end + report("%-20s : %4i files, %3.0f MB",tree,#files,total/(1000*1000)) + + savetable(path .. ".tma",details) + + end + + end + + local sourceroot = file.join(dir.current(),"tex") + + for d in walkdir("./tex") do + if find(d,"%texmf") then + collect(sourceroot,d) + end + end + +end + +function install.update() + + local function validdir(d) + local ok = isdir(d) + if not ok then + mkdirs(d) + ok = isdir(d) + end + return ok + end + + local function download(what,url,target,total,done) + local data = fetch(url .. "/" .. target) + if data then + if total and done then + report("%-8s : %3i %% : %8i : %s",what,round(100*done/total),#data,target) + else + report("%-8s : %8i : %s",what,#data,target) + end + if validdir(dirname(target)) then + savedata(target,data) + else + -- message + end + end + end + + local function remove(what,target) + report("%-8s : %8i : %s",what,filesize(target),target) + osremove(target) + end + + local function ispresent(target) + return isfile(target) + end + + local function hashed(list) + local hash = { } + for i=1,#list do + local l = list[i] + hash[l[1]] = l + end + return hash + end + + local function run(fmt,...) + local command = formatters[fmt](...) + -- command = gsub(command,"/","\\") + report("running: %s",command) + osexecute(command) + end + + local function prepare(tree) + tree = joinfile("tex",tree) + mkdirs(tree) + end + + local function update(url,tree) + + tree = joinfile("tex",tree) + + local ok = validdir(tree) + if not validdir(tree) then + report("invalid directory %a",tree) + return + end + + local lua = tree .. ".tma" + local all = url .. "/" .. lua + local old = loadtable(lua) + local new = fetch(all) + + if new then + new = loadstring(new) + if new then + new = new() + end + end + + if not new then + report("invalid database %a",all) + return + end + + local total = 0 + local done = 0 + + if not old then + + report("installing %s, %i files",tree,#new) + + for i=1,#new do + total = total + new[i][2] + end + + for i=1,#new do + local entry = new[i] + local name = entry[1] + local size = entry[2] + local target = joinfile(tree,name) + done = done + size + download("new",url,target,total,done) + end + + else + + report("updating %s, %i files",tree,#new) + + local hold = hashed(old) + local hnew = hashed(new) + local todo = { } + + for newname, newhash in sortedhash(hnew) do + local target = joinfile(tree,newname) + local oldhash = hold[newname] + local action = nil + if not oldhash then + action = "added" + elseif oldhash[3] ~= newhash[3] then + action = "changed" + elseif not ispresent(joinfile(tree,newname)) then + action = "missing" + end + if action then + local size = newhash[2] + total = total + size + todo[#todo+1] = { action, target, size } + end + end + + for i=1,#todo do + local entry = todo[i] + download(entry[1],url,entry[2],total,done) + done = done + entry[3] + end + + for oldname, oldhash in sortedhash(hold) do + local newhash = hnew[oldname] + local target = joinfile(tree,oldname) + if not newhash and ispresent(target) then + remove("removed",target) + end + end + + end + + savetable(lua,new) + + end + + local targetroot = dir.current() + + local server = environment.arguments.server or "" + local port = environment.arguments.port or "" + local instance = environment.arguments.instance or "" + + if server == "" then + report("provide server") + return + end + + local url = "http://" .. server + + if port ~= "" then + url = url .. ":" .. port + end + + url = url .. "/" + + if instance ~= "" then + url = url .. instance .. "/" + end + + local osplatform = os.platform + local platform = platforms[osplatform] + + if not platform then + report("unknown platform") + return + end + + local texmfplatform = "texmf-" .. platform + + report("server : %s",server) + report("port : %s",port == "" and 80 or "80") + report("instance : %s",instance) + report("platform : %s",osplatform) + report("system : %s",ostype) + + update(url,"texmf") + update(url,"texmf-context") + update(url,texmfplatform) + + prepare("texmf-cache") + prepare("texmf-project") + prepare("texmf-fonts") + prepare("texmf-local") + prepare("texmf-modules") + + local binpath = joinfile(targetroot,"tex",texmfplatform,"bin") + + if ostype == "unix" then + osexecute(formatters["chmod +x %s/*"](binpath)) + end + + local mtxrun = joinfile(binpath,"mtxrun") + local context = joinfile(binpath,"context") + + if ostype == "windows" then + addsuffix(mtxrun,"exe") + addsuffix(context,"exe") + end + + run("%s --generate",mtxrun) + run("%s --make en", context) + run("%s --make nl", context) + + -- local mtxrun = joinfile(binpath,"mtxrunjit") + -- local context = joinfile(binpath,"contextjit") + -- + -- if ostype == "windows" then + -- addsuffix(mtxrun,"exe") + -- addsuffix(context,"exe") + -- end + -- + -- run("%s --generate",mtxrun) + -- run("%s --make en", context) + -- run("%s --make nl", context) + + -- in calling script: update mtxrun.exe and mtxrun.lua + + report("update, done") +end + +if environment.argument("identify") then + install.identify() +elseif environment.argument("install") then + install.update() +elseif environment.argument("update") then + install.update() +elseif environment.argument("exporthelp") then + application.export(environment.argument("exporthelp"),environment.files[1]) +else + application.help() +end diff --git a/scripts/context/lua/mtxrun.lua b/scripts/context/lua/mtxrun.lua index 143c480e5..15606e1e1 100644 --- a/scripts/context/lua/mtxrun.lua +++ b/scripts/context/lua/mtxrun.lua @@ -8857,7 +8857,7 @@ do -- create closure to overcome 200 locals limit package.loaded["util-prs"] = package.loaded["util-prs"] or true --- original size: 23718, stripped down to: 16067 +-- original size: 24132, stripped down to: 16210 if not modules then modules={} end modules ['util-prs']={ version=1.001, @@ -9423,7 +9423,12 @@ function parsers.splitmethod(str,default) return default or false,"" end end -local pattern=Cf(Ct("")*Cg(Cc("year")*cardinal)*P("-")*Cg(Cc("month")*cardinal)*P("-")*Cg(Cc("day")*cardinal)*P(" ")*Cg(Cc("hour")*cardinal)*P(":")*Cg(Cc("minute")*cardinal)*(P(":")*Cg(Cc("sec")*cardinal))^-1 +local p_year=lpegpatterns.digit^4/tonumber +local pattern=Cf(Ct("")*( + (Cg(Cc("year")*p_year)*S("-/")*Cg(Cc("month")*cardinal)*S("-/")*Cg(Cc("day")*cardinal) + )+(Cg(Cc("day")*cardinal)*S("-/")*Cg(Cc("month")*cardinal)*S("-/")*Cg(Cc("year")*p_year) + ) + )*P(" ")*Cg(Cc("hour")*cardinal)*P(":")*Cg(Cc("min")*cardinal)*(P(":")*Cg(Cc("sec")*cardinal))^-1 ,rawset) lpegpatterns.splittime=pattern function parsers.totime(str) @@ -24968,8 +24973,8 @@ end -- of closure -- used libraries : l-bit32.lua l-lua.lua l-macro.lua l-sandbox.lua l-package.lua l-lpeg.lua l-function.lua l-string.lua l-table.lua l-io.lua l-number.lua l-set.lua l-os.lua l-file.lua l-gzip.lua l-md5.lua l-sha.lua l-url.lua l-dir.lua l-boolean.lua l-unicode.lua l-math.lua util-str.lua util-tab.lua util-fil.lua util-sac.lua util-sto.lua util-prs.lua util-fmt.lua util-soc-imp-reset.lua util-soc-imp-socket.lua util-soc-imp-copas.lua util-soc-imp-ltn12.lua util-soc-imp-mime.lua util-soc-imp-url.lua util-soc-imp-headers.lua util-soc-imp-tp.lua util-soc-imp-http.lua util-soc-imp-ftp.lua util-soc-imp-smtp.lua trac-set.lua trac-log.lua trac-inf.lua trac-pro.lua util-lua.lua util-deb.lua util-tpl.lua util-sbx.lua util-mrg.lua util-env.lua luat-env.lua lxml-tab.lua lxml-lpt.lua lxml-mis.lua lxml-aux.lua lxml-xml.lua trac-xml.lua data-ini.lua data-exp.lua data-env.lua data-tmp.lua data-met.lua data-res.lua data-pre.lua data-inp.lua data-out.lua data-fil.lua data-con.lua data-use.lua data-zip.lua data-tre.lua data-sch.lua data-lua.lua data-aux.lua data-tmf.lua data-lst.lua util-lib.lua luat-sta.lua luat-fmt.lua -- skipped libraries : - --- original bytes : 995087 --- stripped bytes : 395047 +-- original bytes : 995501 +-- stripped bytes : 395318 -- end library merge diff --git a/scripts/context/stubs/mswin/mtxrun.lua b/scripts/context/stubs/mswin/mtxrun.lua index 143c480e5..15606e1e1 100644 --- a/scripts/context/stubs/mswin/mtxrun.lua +++ b/scripts/context/stubs/mswin/mtxrun.lua @@ -8857,7 +8857,7 @@ do -- create closure to overcome 200 locals limit package.loaded["util-prs"] = package.loaded["util-prs"] or true --- original size: 23718, stripped down to: 16067 +-- original size: 24132, stripped down to: 16210 if not modules then modules={} end modules ['util-prs']={ version=1.001, @@ -9423,7 +9423,12 @@ function parsers.splitmethod(str,default) return default or false,"" end end -local pattern=Cf(Ct("")*Cg(Cc("year")*cardinal)*P("-")*Cg(Cc("month")*cardinal)*P("-")*Cg(Cc("day")*cardinal)*P(" ")*Cg(Cc("hour")*cardinal)*P(":")*Cg(Cc("minute")*cardinal)*(P(":")*Cg(Cc("sec")*cardinal))^-1 +local p_year=lpegpatterns.digit^4/tonumber +local pattern=Cf(Ct("")*( + (Cg(Cc("year")*p_year)*S("-/")*Cg(Cc("month")*cardinal)*S("-/")*Cg(Cc("day")*cardinal) + )+(Cg(Cc("day")*cardinal)*S("-/")*Cg(Cc("month")*cardinal)*S("-/")*Cg(Cc("year")*p_year) + ) + )*P(" ")*Cg(Cc("hour")*cardinal)*P(":")*Cg(Cc("min")*cardinal)*(P(":")*Cg(Cc("sec")*cardinal))^-1 ,rawset) lpegpatterns.splittime=pattern function parsers.totime(str) @@ -24968,8 +24973,8 @@ end -- of closure -- used libraries : l-bit32.lua l-lua.lua l-macro.lua l-sandbox.lua l-package.lua l-lpeg.lua l-function.lua l-string.lua l-table.lua l-io.lua l-number.lua l-set.lua l-os.lua l-file.lua l-gzip.lua l-md5.lua l-sha.lua l-url.lua l-dir.lua l-boolean.lua l-unicode.lua l-math.lua util-str.lua util-tab.lua util-fil.lua util-sac.lua util-sto.lua util-prs.lua util-fmt.lua util-soc-imp-reset.lua util-soc-imp-socket.lua util-soc-imp-copas.lua util-soc-imp-ltn12.lua util-soc-imp-mime.lua util-soc-imp-url.lua util-soc-imp-headers.lua util-soc-imp-tp.lua util-soc-imp-http.lua util-soc-imp-ftp.lua util-soc-imp-smtp.lua trac-set.lua trac-log.lua trac-inf.lua trac-pro.lua util-lua.lua util-deb.lua util-tpl.lua util-sbx.lua util-mrg.lua util-env.lua luat-env.lua lxml-tab.lua lxml-lpt.lua lxml-mis.lua lxml-aux.lua lxml-xml.lua trac-xml.lua data-ini.lua data-exp.lua data-env.lua data-tmp.lua data-met.lua data-res.lua data-pre.lua data-inp.lua data-out.lua data-fil.lua data-con.lua data-use.lua data-zip.lua data-tre.lua data-sch.lua data-lua.lua data-aux.lua data-tmf.lua data-lst.lua util-lib.lua luat-sta.lua luat-fmt.lua -- skipped libraries : - --- original bytes : 995087 --- stripped bytes : 395047 +-- original bytes : 995501 +-- stripped bytes : 395318 -- end library merge diff --git a/scripts/context/stubs/unix/mtxrun b/scripts/context/stubs/unix/mtxrun index 143c480e5..15606e1e1 100644 --- a/scripts/context/stubs/unix/mtxrun +++ b/scripts/context/stubs/unix/mtxrun @@ -8857,7 +8857,7 @@ do -- create closure to overcome 200 locals limit package.loaded["util-prs"] = package.loaded["util-prs"] or true --- original size: 23718, stripped down to: 16067 +-- original size: 24132, stripped down to: 16210 if not modules then modules={} end modules ['util-prs']={ version=1.001, @@ -9423,7 +9423,12 @@ function parsers.splitmethod(str,default) return default or false,"" end end -local pattern=Cf(Ct("")*Cg(Cc("year")*cardinal)*P("-")*Cg(Cc("month")*cardinal)*P("-")*Cg(Cc("day")*cardinal)*P(" ")*Cg(Cc("hour")*cardinal)*P(":")*Cg(Cc("minute")*cardinal)*(P(":")*Cg(Cc("sec")*cardinal))^-1 +local p_year=lpegpatterns.digit^4/tonumber +local pattern=Cf(Ct("")*( + (Cg(Cc("year")*p_year)*S("-/")*Cg(Cc("month")*cardinal)*S("-/")*Cg(Cc("day")*cardinal) + )+(Cg(Cc("day")*cardinal)*S("-/")*Cg(Cc("month")*cardinal)*S("-/")*Cg(Cc("year")*p_year) + ) + )*P(" ")*Cg(Cc("hour")*cardinal)*P(":")*Cg(Cc("min")*cardinal)*(P(":")*Cg(Cc("sec")*cardinal))^-1 ,rawset) lpegpatterns.splittime=pattern function parsers.totime(str) @@ -24968,8 +24973,8 @@ end -- of closure -- used libraries : l-bit32.lua l-lua.lua l-macro.lua l-sandbox.lua l-package.lua l-lpeg.lua l-function.lua l-string.lua l-table.lua l-io.lua l-number.lua l-set.lua l-os.lua l-file.lua l-gzip.lua l-md5.lua l-sha.lua l-url.lua l-dir.lua l-boolean.lua l-unicode.lua l-math.lua util-str.lua util-tab.lua util-fil.lua util-sac.lua util-sto.lua util-prs.lua util-fmt.lua util-soc-imp-reset.lua util-soc-imp-socket.lua util-soc-imp-copas.lua util-soc-imp-ltn12.lua util-soc-imp-mime.lua util-soc-imp-url.lua util-soc-imp-headers.lua util-soc-imp-tp.lua util-soc-imp-http.lua util-soc-imp-ftp.lua util-soc-imp-smtp.lua trac-set.lua trac-log.lua trac-inf.lua trac-pro.lua util-lua.lua util-deb.lua util-tpl.lua util-sbx.lua util-mrg.lua util-env.lua luat-env.lua lxml-tab.lua lxml-lpt.lua lxml-mis.lua lxml-aux.lua lxml-xml.lua trac-xml.lua data-ini.lua data-exp.lua data-env.lua data-tmp.lua data-met.lua data-res.lua data-pre.lua data-inp.lua data-out.lua data-fil.lua data-con.lua data-use.lua data-zip.lua data-tre.lua data-sch.lua data-lua.lua data-aux.lua data-tmf.lua data-lst.lua util-lib.lua luat-sta.lua luat-fmt.lua -- skipped libraries : - --- original bytes : 995087 --- stripped bytes : 395047 +-- original bytes : 995501 +-- stripped bytes : 395318 -- end library merge diff --git a/scripts/context/stubs/win64/mtxrun.lua b/scripts/context/stubs/win64/mtxrun.lua index 143c480e5..15606e1e1 100644 --- a/scripts/context/stubs/win64/mtxrun.lua +++ b/scripts/context/stubs/win64/mtxrun.lua @@ -8857,7 +8857,7 @@ do -- create closure to overcome 200 locals limit package.loaded["util-prs"] = package.loaded["util-prs"] or true --- original size: 23718, stripped down to: 16067 +-- original size: 24132, stripped down to: 16210 if not modules then modules={} end modules ['util-prs']={ version=1.001, @@ -9423,7 +9423,12 @@ function parsers.splitmethod(str,default) return default or false,"" end end -local pattern=Cf(Ct("")*Cg(Cc("year")*cardinal)*P("-")*Cg(Cc("month")*cardinal)*P("-")*Cg(Cc("day")*cardinal)*P(" ")*Cg(Cc("hour")*cardinal)*P(":")*Cg(Cc("minute")*cardinal)*(P(":")*Cg(Cc("sec")*cardinal))^-1 +local p_year=lpegpatterns.digit^4/tonumber +local pattern=Cf(Ct("")*( + (Cg(Cc("year")*p_year)*S("-/")*Cg(Cc("month")*cardinal)*S("-/")*Cg(Cc("day")*cardinal) + )+(Cg(Cc("day")*cardinal)*S("-/")*Cg(Cc("month")*cardinal)*S("-/")*Cg(Cc("year")*p_year) + ) + )*P(" ")*Cg(Cc("hour")*cardinal)*P(":")*Cg(Cc("min")*cardinal)*(P(":")*Cg(Cc("sec")*cardinal))^-1 ,rawset) lpegpatterns.splittime=pattern function parsers.totime(str) @@ -24968,8 +24973,8 @@ end -- of closure -- used libraries : l-bit32.lua l-lua.lua l-macro.lua l-sandbox.lua l-package.lua l-lpeg.lua l-function.lua l-string.lua l-table.lua l-io.lua l-number.lua l-set.lua l-os.lua l-file.lua l-gzip.lua l-md5.lua l-sha.lua l-url.lua l-dir.lua l-boolean.lua l-unicode.lua l-math.lua util-str.lua util-tab.lua util-fil.lua util-sac.lua util-sto.lua util-prs.lua util-fmt.lua util-soc-imp-reset.lua util-soc-imp-socket.lua util-soc-imp-copas.lua util-soc-imp-ltn12.lua util-soc-imp-mime.lua util-soc-imp-url.lua util-soc-imp-headers.lua util-soc-imp-tp.lua util-soc-imp-http.lua util-soc-imp-ftp.lua util-soc-imp-smtp.lua trac-set.lua trac-log.lua trac-inf.lua trac-pro.lua util-lua.lua util-deb.lua util-tpl.lua util-sbx.lua util-mrg.lua util-env.lua luat-env.lua lxml-tab.lua lxml-lpt.lua lxml-mis.lua lxml-aux.lua lxml-xml.lua trac-xml.lua data-ini.lua data-exp.lua data-env.lua data-tmp.lua data-met.lua data-res.lua data-pre.lua data-inp.lua data-out.lua data-fil.lua data-con.lua data-use.lua data-zip.lua data-tre.lua data-sch.lua data-lua.lua data-aux.lua data-tmf.lua data-lst.lua util-lib.lua luat-sta.lua luat-fmt.lua -- skipped libraries : - --- original bytes : 995087 --- stripped bytes : 395047 +-- original bytes : 995501 +-- stripped bytes : 395318 -- end library merge -- cgit v1.2.3