diff options
author | Karl Berry <karl@freefriends.org> | 2015-09-14 21:54:24 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2015-09-14 21:54:24 +0000 |
commit | ce8261713a3c6542d6509919d8dc0f75329432ad (patch) | |
tree | d0bfeba8c7f385fde614fd7f97497ede040a2bc5 | |
parent | 06ca0b68a1199a658979f91eec6aec65bca22075 (diff) |
l3build (14sep15)
git-svn-id: svn://tug.org/texlive/trunk@38376 c570f23f-e606-0410-a88d-b1316a301751
-rw-r--r-- | Master/texmf-dist/doc/latex/l3build/README.md | 66 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/l3build/l3build.pdf | bin | 593855 -> 595373 bytes | |||
-rw-r--r-- | Master/texmf-dist/source/latex/l3build/l3build.dtx | 52 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/l3build/l3build.lua | 185 |
4 files changed, 232 insertions, 71 deletions
diff --git a/Master/texmf-dist/doc/latex/l3build/README.md b/Master/texmf-dist/doc/latex/l3build/README.md index 87b8cbc8759..d39bf486108 100644 --- a/Master/texmf-dist/doc/latex/l3build/README.md +++ b/Master/texmf-dist/doc/latex/l3build/README.md @@ -1,26 +1,80 @@ l3build: a testing and building system for LaTeX3 ================================================= +Release 2015/09/14 (r6007) + +Overview +-------- + The `l3build` module is designed to support the development of high-quality LaTeX code by providing: - A unit testing system - Automated typesetting of code sources - A reliable packaging system for CTAN releases - + The bundle consists of a Lua script to run the tasks and a `.tex` file which provides the testing environment. These were originally developed for supporting LaTeX3 development but are designed such that they can be readily used by others. Full documentation is provided. +Discussion +---------- + +Discussion concerning the approach, suggestions for improvements, +changes, additions, _etc._ should be addressed to the list +[LaTeX-L](http://news.gmane.org/group/gmane.comp.tex.latex.latex3). + +You can subscribe to this list by sending mail to + + listserv@urz.uni-heidelberg.de + +with the body containing + + subscribe LATEX-L <Your-First-Name> <Your-Second-Name> + Issues ------ -The issue tracker for LaTeX3 bugs is currently located at +The issue tracker for LaTeX3 is currently located at + + https://github.com/latex3/latex3/issues + +Please report specific issues with LaTeX3 code there; more general +discussion should be directed to the [LaTeX-L list](#Discussion). + +The LaTeX3 Project +------------------ + +Development of LaTeX3 is carried out by +[The LaTeX3 Project](http://www.latex-project.org/latex3.html). Currently, +the team members are + + * Johannes Braams + * David Carlisle + * Robin Fairbairns + * Morten Høgholm + * Bruno Le Floch + * Thomas Lotze + * Frank Mittelbach + * Will Robertson + * Chris Rowley + * Rainer Schöpf + * Joseph Wright + +Former members of The LaTeX3 Project team were + + * Michael Downes + * Denys Duchier + * Alan Jeffrey + * Martin Schröder - https://github.com/latex3/latex3/issues +The development team can be contacted +by e-mail: <latex-team@latex-project.org>; for general LaTeX3 discussion +the [LaTeX-L list](#Discussion) should be used. -Please report specific issues with LaTeX3 code there. +----- ---- Copyright 2014 - The LaTeX3 Project. All rights reserved --- +<p>Copyright (C) 2014,2015 The LaTeX3 Project <br /> +<a href="http://latex-project.org/">http://latex-project.org/</a> <br /> +All rights reserved.</p> diff --git a/Master/texmf-dist/doc/latex/l3build/l3build.pdf b/Master/texmf-dist/doc/latex/l3build/l3build.pdf Binary files differindex 97f6fc3758a..a7ba01b7084 100644 --- a/Master/texmf-dist/doc/latex/l3build/l3build.pdf +++ b/Master/texmf-dist/doc/latex/l3build/l3build.pdf diff --git a/Master/texmf-dist/source/latex/l3build/l3build.dtx b/Master/texmf-dist/source/latex/l3build/l3build.dtx index 8ab332e83dc..f94bcdec5ba 100644 --- a/Master/texmf-dist/source/latex/l3build/l3build.dtx +++ b/Master/texmf-dist/source/latex/l3build/l3build.dtx @@ -39,8 +39,8 @@ \RequirePackage{expl3} \def\ExplFileName{l3build} \def\ExplFileDescription{L3 Regression test suite} -\def\ExplFileDate{2015/09/05} -\def\ExplFileVersion{5925} +\def\ExplFileDate{2015/09/14} +\def\ExplFileVersion{6007} \documentclass[full]{l3doc} \renewcommand\partname{Part} \usepackage{multicol,needspace} @@ -106,7 +106,7 @@ \luavarset{installfiles} {\{"*.sty"\}} {Files to install to the \TeX{} tree and similar tasks.} \luavarset{makeindexfiles} {\{"*.ist"\}}{MakeIndex files to be included in a TDS-style zip} \luavarset{sourcefiles} {\{"*.dtx", "*.ins"\}}{Files to copy for unpacking.} -\luavarset{textfiles} {\{"*.md", "*.txt"\}}{Plain text files to send to CTAN as-is.} +\luavarset{textfiles} {\{"*.md", "*.txt"\}}{Plain text files to send to CTAN as-is.} \luavarset{typesetfiles} {\{"*.dtx"\}} {Files to typeset for documentation.} \luavarset{typesetsuppfiles}{\{~\}} {Files needed to support typesetting when \enquote{sandboxed}.} \luavarset{unpackfiles} {\{"*.ins"\}} {Files to run to perform unpacking.} @@ -150,6 +150,7 @@ \luavarset{makeindexexe} {"makeindex"}{MakeIndex executable} \luavarset{makeindexopts}{""} {MakeIndex options} \luavarseparator +\luavarset{asciiengines}{\{"pdftex"\}}{Engines which should log as sure ASCII} \luavarset{checkruns} {1} {How many times to run a check file before comparing the log.} \luavarset{packtdszip} {false} {Build a TDS-style zip file for CTAN?} \luavarset{scriptname} {"build.lua"} {Name of script used in dependencies.} @@ -271,7 +272,7 @@ % yyy.ins zoo.ins % \end{Verbatim} % All modules within a bundle must use the same build script name. -% +% % In a small number of cases, the name used by CTAN for a module or bundle is % different from that used in the installation tree. For example, the \LaTeXe{} % kernel is called \pkg{latex-base} by CTAN but is located inside @@ -307,7 +308,7 @@ % \item save \meta{name(s)} % \end{itemize} % These commands are described below. -% +% % As well as these commands, the system recognises the options % \begin{itemize} % \item \texttt{--engine} (\texttt{-e}) Sets the engine to use for @@ -324,6 +325,15 @@ % If changes to the package or the typesetting environment have affected the results, the check for that file fails. % A |diff| of the expected to actual output should then be inspected to determine the cause of the error; it is located in the \var{testdir} directory (default \luavar{testdir}). % +% On Windows, the |diff| program is not available and so |fc| is used instead +% (generating an |.fc| file). Setting the environmental variables |diffexe| +% and |diffext| can be used to adjust the choice of comparison made: the standard +% values are +% \begin{itemize} +% \item[Windows] |diffext = fc|, |diffexe = fc /n| +% \item[*nix] |diffext = diff|, |diffexe = diff -c --strip-trailing-cr| +% \end{itemize} +% % The following files are moved into the \enquote{sandbox} for the |check| process: % \begin{itemize} % \item all \var{installfiles} after unpacking; @@ -341,7 +351,7 @@ % More detail on this in the documentation on |save|. % Options passed to the binary are defined in the variable \var{checkopts}. % -% By default, |texmf| trees are searched for input files when checking. This can be disabled by setting \var{checksearch} to |false|: isolation provides confidence that the tests cannot accidentally be running with incorrect files installed in the main distribution or |hometexmf|. +% By default, |texmf| trees are searched for input files when checking. This can be disabled by setting \var{checksearch} to |false|: isolation provides confidence that the tests cannot accidentally be running with incorrect files installed in the main distribution or |hometexmf|. % \end{buildcmd} % % @@ -401,7 +411,7 @@ % \begin{itemize} % \item all files matched by \var{demofiles}, % \item all files matched by \var{docfiles}, -% \item all files matched by \var{typesetfiles} with their extension replaced with |.pdf|, +% \item all files matched by \var{typesetfiles} with their extension replaced with |.pdf|, % \item all files matched by \var{textfiles}, % \item all files matched by \var{bibfiles}. % \end{itemize} @@ -411,7 +421,7 @@ % Files that should always be excluded from the archive are matched against the \var{excludefiles} variable; by default this is \luavar{excludefiles}, which match Emacs' autosave files. % % Binary files should be specified with the \var{binaryfiles} variable (default \luavar{binaryfiles}); these are added to the zip archive without normalising line endings (text files are automatically converted to Unix-style line endings). -% +% % To create the archive, by default the binary \var{zipexe} is used (\luavar{zipexe}) with options \var{zipopts} (|-v -r -X|). The intermediate build directories \var{ctandir} and \var{tdsdir} are used to construct the archive. % \end{buildcmd} % @@ -623,14 +633,14 @@ % years due to a \TeX{} bug). % \item Conversion of \texttt{on line \meta{number}} to \texttt{on line ...} % to allow flexibility in changes to test files. -% \item +% \item % \end{itemize} -% +% % \LuaTeX{} makes several additional changes to the log file. As normalising % these may not be desirable in all cases, they are handled separately. % When creating \LuaTeX{}-specific test files (either with \LuaTeX{} as -% the standard engine or saving a \LuaTeX{}-specific |.tlg| file) no futher -% normalisation is undertaken. On the other hand, for cross-engine comparision +% the standard engine or saving a \LuaTeX{}-specific |.tlg| file) no further +% normalisation is undertaken. On the other hand, for cross-engine comparison % the following normalisation is applied: % \begin{itemize} % \item Removal of additional (unused) |\discretionary| points. @@ -645,6 +655,16 @@ % \item Conversion of low chars ($1$ to $31$) to |^^| notation. % \end{itemize} % +% When making comparisons between 8-bit and Unicode engines it is useful to +% format the top half of the 8-bit range such that it appears in the log as +% |^^|\texttt{\meta{char}} (the exact nature of the 8-bit output is otherwise +% dependent on the active code page). This may be controlled using the +% |asciiengines| option. Any engines named here will use a |.tcx| file to +% produce only ASCII chars in the log output, whilst for other engines +% normalisation is carried out from UTF-8 to ASCII. If the option is set to +% an empty table the latter process is skipped: suitable for cases where only +% Unicode engines are in use. +% % \section{Writing test files} % \label{sec:writing-tests} % @@ -678,7 +698,7 @@ % (See the \var{checkruns} variable for how these tests would be test up.) % % \subsection{Commands to help write tests} -% +% % A simple command \cs{CHECKCOMMAND}\cs{\meta{macro}} is provided to check whether a particular \cs{\meta{macro}} is defined, undefined, or equivalent to \cs{relax}. % This is useful to flag either that internal macros are remaining local to their definitions, or that defined commands definitely are defined, or even as a reminder that commands you intend to define in a future package need to be tested once they appear. % @@ -924,7 +944,7 @@ % For example, Figure~\ref{fig:PDF} shows a simple script which might % apply to a case where multiple \BibTeX{} runs are needed (perhaps where % citations can appear within other references). -% +% % \begin{figure}[!b] % \begin{lstlisting}[frame=single,language={[5.2]Lua},gobble = 6] % #!/usr/bin/env texlua @@ -944,7 +964,7 @@ % bibtex (name) + % tex (file) + % tex (file) -% ) +% ) % end % return errorlevel % end @@ -994,7 +1014,7 @@ \showboxdepth=\maxdimen % \end{macrocode} % -% The |\showoutput| command of \LaTeX{} calls |\loggingoutput| which in +% The |\showoutput| command of \LaTeX{} calls |\loggingoutput| which in % turn calls |\errorstopmode| but we want to continue running without % any stops. % \begin{macrocode} diff --git a/Master/texmf-dist/tex/latex/l3build/l3build.lua b/Master/texmf-dist/tex/latex/l3build/l3build.lua index 62728f04072..e8fffc16c43 100644 --- a/Master/texmf-dist/tex/latex/l3build/l3build.lua +++ b/Master/texmf-dist/tex/latex/l3build/l3build.lua @@ -17,8 +17,8 @@ --]] -- Version information: should be identical to that in l3build.dtx -release_date = "2015/09/06" -release_ver = "5925" +release_date = "2015/09/14" +release_ver = "6007" -- "module" is a deprecated function in Lua 5.2: as we want the name -- for other purposes, and it should eventually be 'free', simply @@ -146,6 +146,7 @@ makeindexexe = makeindexexe or "makeindex" makeindexopts = makeindexopts or "" -- Other required settings +asciiengines = asciiengines or {"pdftex"} checkruns = checkruns or 1 packtdszip = packtdszip or false -- Not actually needed but clearer scriptname = scriptname or "build.lua" -- Script used in each directory @@ -373,9 +374,10 @@ end -- both Windows and Unix cases: more complex situations are handled inside -- the support functions if os.type == "windows" then + os_ascii = "@echo." os_concat = "&" - os_diffext = ".fc" - os_diffexe = "fc /n" + os_diffext = os.getenv("diffext") or ".fc" + os_diffexe = os.getenv("diffexe") or "fc /n" os_grepexe = "findstr /r" os_newline = "\r\n" os_null = "nul" @@ -384,9 +386,10 @@ if os.type == "windows" then os_windows = true os_yes = "for /l %I in (1,1,200) do @echo y" else + os_ascii = "echo \"\"" os_concat = ";" - os_diffext = ".diff" - os_diffexe = "diff -c --strip-trailing-cr" + os_diffext = os.getenv("diffext") or ".diff" + os_diffexe = os.getenv("diffexe") or "diff -c --strip-trailing-cr" os_grepexe = "grep" os_newline = "\n" os_null = "/dev/null" @@ -491,13 +494,13 @@ function relpath(target, source) local resultdir = "" local trimpattern = "^[^/]*/" -- Trim off identical leading directories - while + while (string.match(target, trimpattern) or "X") == (string.match(target, trimpattern) or "Y") do target = string.gsub(target, trimpattern, "") source = string.gsub(source, trimpattern, "") end - -- Go up from the source + -- Go up from the source for i = 0, select(2, string.gsub(target, "/", "")) do resultdir = resultdir .. "../" end @@ -598,6 +601,7 @@ function checkinit() for _,i in ipairs(checksuppfiles) do cp(i, supportdir, testdir) end + os.execute(os_ascii .. ">" .. testdir .. "/ascii.tcx") end -- Copy files to the main CTAN release directory @@ -721,9 +725,9 @@ function formatlog(logfile, newfile, engine) line = string.gsub(line, "%(.*/([%w-]+%.[%w-]+)%s*$", "(../%1") end -- Zap map loading of map - line = string.gsub(line, "%{[%w/%-]*/pdftex%.map%}", "") + line = string.gsub(line, "%{%w?:?[%w/%-]*/pdftex%.map%}", "") -- Merge all of .fd data into one line so will be removed later - if string.match(line, "^%([%.%/%w]+%.fd[^%)]*$") then + if string.match(line, "^ *%([%.%/%w]+%.fd[^%)]*$") then lastline = (lastline or "") .. line return "" end @@ -736,23 +740,29 @@ function formatlog(logfile, newfile, engine) -- Zap "on line <num>" and replace with "on line ..." line = string.gsub(line, "on line %d*", "on line ...") -- Tidy up to ^^ notation - for i = 1, 31, 1 do + for i = 0, 31 do line = string.gsub(line, string.char(i), "^^" .. string.char(64 + i)) end -- Zap line numbers from \show, \showbox, \box_show and the like -- Two stages as line wrapping alters some of them and restore the break line = string.gsub(line, "^l%.%d+ ", "l. ...") - line = string.gsub(line, "%.%.%.l%.%d+ ( *)%}$", "...\nl. ...%1}") + line = string.gsub( + line, "%.%.%.l%.%d+ ( *)%}$", "..." .. os_newline .. "l. ...%1}" + ) -- Remove spaces at the start of lines: deals with the fact that LuaTeX -- uses a different number to the other engines line = string.gsub(line, "^%s+", "") -- Remove 'normal' direction information on boxes with (u)pTeX - line = string.gsub(line, ", yoko direction", "") + line = string.gsub(line, ",? yoko direction,?", "") + -- A tidy-up to keep LuaTeX and other engines in sync + local utf8_char = unicode.utf8.char + line = string.gsub(line, utf8_char(127), "^^?") -- Unicode engines display chars in the upper half of the 8-bit range: - -- tidy up to match pdfTeX - local utf8 = unicode.utf8 - for i = 128, 255, 1 do - line = string.gsub(line, utf8.char(i), "^^" .. string.format("%02x", i)) + -- tidy up to match pdfTeX if an ASCII engine is in use + if next(asciiengines) then + for i = 128, 255 do + line = string.gsub(line, utf8_char(i), "^^" .. string.format("%02x", i)) + end end return line end @@ -791,14 +801,16 @@ end -- Additional normalization for LuaTeX function formatlualog(logfile, newfile) local function normalize(line, lastline, dropping) - local line = line - -- Find discretionary lines skip: may get re-added - if string.match(line, "^%.+\\discretionary$") then - return "", line, false + -- Find \discretionary or \whatsit lines: + -- These may come back later + if string.match(line, "^%.+\\discretionary$") or + string.match(line, "^%.+\\whatsit$") then + return "", line end - -- Find whatsit lines skip: may get re-added - if string.match(line, "^%.+\\whatsit$") then - return "", line, false + -- For \mathon, we always need this line but the next + -- may be affected + if string.match(line, "^%.+\\mathon$") then + return line, line end -- Remove 'display' at end of display math boxes: -- LuaTeX omits this as it includes direction in all cases @@ -807,50 +819,114 @@ function formatlualog(logfile, newfile) -- any bidi/vertical stuff will still show line = string.gsub(line, ", direction TLT", "") -- Find glue setting and round out the last place - line = string.gsub( - line, - "glue set (%-? ?)%d+.%d+fil$", - "glue set %1" .. string.format( - "%.4f", string.match(line, "glue set %-? ?(%d+.%d+)fil$") or 0 - ) - .. "fil" + local function round_digits(l, m) + return string.gsub( + l, + m .. " (%-?)%d+%.%d+", + m .. " %1" + .. string.format( + "%.3f", + string.match(line, m .. " %-?(%d+%.%d+)") or 0 + ) ) + end + if string.match(line, "glue set %-?%d+%.%d+") then + line = round_digits(line, "glue set") + end + if string.match( + line, "glue %-?%d+%.%d+ plus %-?%d+%.%d+ minus %-?%d+%.%d+$" + ) + then + line = round_digits(line, "glue") + line = round_digits(line, "plus") + line = round_digits(line, "minus") + end + -- LuaTeX writes ^^M as a new line, which we loose + line = string.gsub(line, "%^%^M", "") -- Remove U+ notation in the "Missing character" message line = string.gsub( line, "Missing character: There is no (%^%^..) %(U%+(....)%)", "Missing character: There is no %1" ) + -- A function to handle the box prefix part + local function boxprefix(s) + return string.gsub(string.match(s, "^(%.+)"), "%.", "%%.") + end -- Where the last line was a discretionary, looks for the -- info one level in about what it represents if string.match(lastline, "^%.+\\discretionary$") then - prefix = string.gsub(string.match(lastline, "^(%.+)"), "%.", "%%.") + local prefix = boxprefix(lastline) if string.match(line, prefix .. "%.") or string.match(line, prefix .. "%|") then return "", lastline, true else if dropping then -- End of a \discretionary block - return line, "", false + return line, "" else -- A normal (TeX90) discretionary: -- add with the line break reintroduced - return lastline .. "\n" .. line, "" + return lastline .. os_newline .. line, "" end end end + -- Look for another form of \discretionary, replacing a "-" + pattern = "^%.+\\discretionary replacing *$" + if string.match(line, pattern) then + return "", line + else + if string.match(lastline, pattern) then + local prefix = boxprefix(lastline) + if string.match(line, prefix .. "%.\\kern") then + return string.gsub(line, "^%.", ""), lastline, true + elseif dropping then + return "", "" + else + return lastline .. os_newline .. line, "" + end + end + end + -- For \mathon, if the current line is an empty \hbox then + -- drop it + if string.match(lastline, "^%.+\\mathon$") then + local prefix = boxprefix(lastline) + if string.match(line, prefix .. "\\hbox%(0%.0%+0%.0%)x0%.0$") then + return "", "" + end + end -- Much the same idea when the last line was a whatsit, -- but things are simpler in this case if string.match(lastline, "^%.+\\whatsit$") then - prefix = string.gsub(string.match(lastline, "^(%.+)"), "%.", "%%.") + local prefix = boxprefix(lastline) if string.match(line, prefix .. "%.") then return "", lastline, true else -- End of a \whatsit block - return line, "", false + return line, "" + end + end + -- Wrap some cases that can be picked out + -- In some places LuaTeX does use max_print_line, then we + -- get into issues with different wrapping approaches + local kpse = require("kpse") + kpse.set_program_name("luatex") + local maxprintline = tonumber(kpse.expand_var("$max_print_line")) + if (string.len(line) == maxprintline) then + return "", line + elseif (string.len(lastline) == maxprintline) then + if string.match(line, "\\ETC%.%}$") then + -- If the line wrapped at \ETC we might have lost a space + return lastline + .. ((string.match(line, "^\\ETC%.%}$") and " ") or "") + .. line, "" + elseif string.match(line, "^%}%}%}$") then + return lastline .. line, "" + else + return lastline .. os_newline .. line, "" end end - return line, lastline, false + return line, "" end local newlog = "" local lastline = "" @@ -858,7 +934,7 @@ function formatlualog(logfile, newfile) for line in io.lines(logfile) do line, lastline, dropping = normalize(line, lastline, dropping) if not string.match(line, "^ *$") then - newlog = newlog .. line .. "\n" + newlog = newlog .. line .. os_newline end end local newfile = io.open(newfile, "w") @@ -948,7 +1024,7 @@ function runcheck(name, hide) errlevel = os.execute( os_diffexe .. " " .. luatlgfile .. " " .. newfile .. " > " .. difffile - ) + ) else errlevel = os.execute( os_diffexe .. " " .. tlgfile .. " " .. newfile .. " > " .. difffile @@ -998,6 +1074,13 @@ function runtest(name, engine, hide, ext) end local logfile = testdir .. "/" .. name .. logext local newfile = testdir .. "/" .. name .. "." .. engine .. logext + local asciiopt = "" + for _,i in ipairs(asciiengines) do + if realengine == i then + asciiopt = "-translate-file ./ascii.tcx " + break + end + end for i = 1, checkruns do run( testdir, @@ -1005,7 +1088,11 @@ function runtest(name, engine, hide, ext) -- avoids any paths in the logs os_setenv .. " TEXINPUTS=." .. (checksearch and os_pathsep or "") .. os_concat .. - realengine .. format .. " " .. checkopts .. " " .. lvtfile + -- Avoid spurious output from (u)pTeX + os_setenv .. " GUESS_INPUT_KANJI_ENCODING=0" + .. os_concat .. + realengine .. format .. " " + .. checkopts .. " " .. asciiopt .. lvtfile .. (hide and (" > " .. os_null) or "") ) end @@ -1049,7 +1136,7 @@ function runtool(envvar, command) .. relpath(localdir, typesetdir) .. (typesetsearch and os_pathsep or "") .. os_concat .. - command + command ) ) end @@ -1089,7 +1176,7 @@ function bibtex(name) os_setenv .. " BSTINPUTS=." .. os_pathsep .. relpath(localdir, typesetdir) .. (typesetsearch and os_pathsep or "") .. - os_concat .. + os_concat .. bibtexexe .. " " .. bibtexopts .. " " .. name ) ) @@ -1220,7 +1307,7 @@ function check(names) local errlevel = runcheck(name, hide) -- Return value must be 1 not errlevel if errlevel ~= 0 then - if opthalt then + if opthalt then return 1 else errorlevel = 1 @@ -1287,7 +1374,7 @@ function cmdcheck() os_setenv .. " TEXINPUTS=." .. os_pathsep .. localdir .. os_pathsep .. os_concat .. - engine .. " " .. cmdchkopts .. + engine .. " " .. cmdchkopts .. " \"\\PassOptionsToClass{check}{l3doc} \\input " .. j .. "\"" .. " > " .. os_null ) @@ -1318,11 +1405,11 @@ function ctan(standalone) -- First, zip up all of the text files run( dir, - zipexe .. " " .. zipopts .. " -ll ".. zipname .. " " .. "." - .. ( + zipexe .. " " .. zipopts .. " -ll ".. zipname .. " " .. "." + .. ( (binfiles or exclude) and (" -x" .. binfiles .. " " .. exclude) or "" - ) + ) ) -- Then add the binary ones run( @@ -1447,7 +1534,7 @@ function doc(files) local errorlevel = typesetpdf(j) if errorlevel ~= 0 then return errorlevel - end + end end end end @@ -1539,7 +1626,7 @@ bundleunpack = bundleunpack or function(sourcedir) os_setenv .. " TEXINPUTS=." .. os_pathsep .. localdir .. (unpacksearch and os_pathsep or "") .. os_concat .. - unpackexe .. " " .. unpackopts .. " " .. j .. " < " + unpackexe .. " " .. unpackopts .. " " .. j .. " < " .. localdir .. "/yes" ) end |