diff options
Diffstat (limited to 'Master/texmf-dist/scripts/l3build/l3build-aux.lua')
-rw-r--r-- | Master/texmf-dist/scripts/l3build/l3build-aux.lua | 127 |
1 files changed, 127 insertions, 0 deletions
diff --git a/Master/texmf-dist/scripts/l3build/l3build-aux.lua b/Master/texmf-dist/scripts/l3build/l3build-aux.lua new file mode 100644 index 00000000000..773a17a40e1 --- /dev/null +++ b/Master/texmf-dist/scripts/l3build/l3build-aux.lua @@ -0,0 +1,127 @@ +--[[ + +File l3build-aux.lua Copyright (C) 2018 The LaTeX3 Project + +It may be distributed and/or modified under the conditions of the +LaTeX Project Public License (LPPL), either version 1.3c of this +license or (at your option) any later version. The latest version +of this license is in the file + + http://www.latex-project.org/lppl.txt + +This file is part of the "l3build bundle" (The Work in LPPL) +and all files in that bundle must be distributed together. + +----------------------------------------------------------------------- + +The development version of the bundle can be found at + + https://github.com/latex3/l3build + +for those people who are interested. + +--]] + +local match = string.match + +local pairs = pairs +local print = print + +-- +-- Auxiliary functions which are used by more than one main function +-- + +function normalise_epoch() + -- If given as an ISO date, turn into an epoch number + local y, m, d = match(epoch, "^(%d%d%d%d)-(%d%d)-(%d%d)$") + if y then + epoch = + os_time({year = y, month = m, day = d, hour = 0, sec = 0, isdst = nil}) - + os_time({year = 1970, month = 1, day = 1, hour = 0, sec = 0, isdst = nil}) + elseif match(epoch, "^%d+$") then + epoch = tonumber(epoch) + else + epoch = 0 + end +end + +function setepoch() + return + os_setenv .. " SOURCE_DATE_EPOCH=" .. epoch + .. os_concat .. + os_setenv .. " SOURCE_DATE_EPOCH_TEX_PRIMITIVES=1" + .. os_concat .. + os_setenv .. " FORCE_SOURCE_DATE=1" + .. os_concat +end + +local function getscriptname() + if match(arg[0], "l3build(%.lua)$") then + return "l3build.lua" + else + return "build.lua" + end +end + +-- Do some subtarget for all modules in a bundle +function call(dirs, target, opts) + -- Turn the option table into a string + local opts = opts or options + local s = "" + for k,v in pairs(opts) do + if k ~= "names" and k ~= "target" then -- Special cases + local t = option_list[k] or { } + local arg = "" + if t["type"] == "string" then + arg = arg .. "=" .. v + end + if t["type"] == "table" then + for _,a in pairs(v) do + if arg == "" then + arg = "=" .. a -- Add the initial "=" here + else + arg = arg .. "," .. a + end + end + end + s = s .. " --" .. k .. arg + end + end + if opts["names"] then + for _,v in pairs(opts["names"]) do + s = s .. " " .. v + end + end + local scriptname = getscriptname() + for _,i in ipairs(dirs) do + local text = " for module " .. i + if i == "." then + text = " with configuration " .. opts["config"][1] + end + print( + "Running script " .. scriptname .. " with target \"" .. target + .. "\"" .. text + ) + local errorlevel = run( + i, + "texlua " .. scriptname .. " " .. target .. s + ) + if errorlevel ~= 0 then + return errorlevel + end + end + return 0 +end + +-- Unpack files needed to support testing/typesetting/unpacking +function depinstall(deps) + local errorlevel + for _,i in ipairs(deps) do + print("Installing dependency: " .. i) + errorlevel = run(i, "texlua " .. getscriptname() .. " unpack -q") + if errorlevel ~= 0 then + return errorlevel + end + end + return 0 +end |