summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/l3build/l3build-install.lua
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2022-09-16 03:01:41 +0000
committerNorbert Preining <norbert@preining.info>2022-09-16 03:01:41 +0000
commit3d3e0a1ec600d13b4db750f4b15dbaa7bad36781 (patch)
tree9b945a76aadc072cc646c5c22b1913d626987567 /macros/latex/contrib/l3build/l3build-install.lua
parent6d44c638512eb736c41551c5887b4475a14935bf (diff)
CTAN sync 202209160301
Diffstat (limited to 'macros/latex/contrib/l3build/l3build-install.lua')
-rw-r--r--macros/latex/contrib/l3build/l3build-install.lua8
1 files changed, 8 insertions, 0 deletions
diff --git a/macros/latex/contrib/l3build/l3build-install.lua b/macros/latex/contrib/l3build/l3build-install.lua
index baea5a9a42..64d29fc590 100644
--- a/macros/latex/contrib/l3build/l3build-install.lua
+++ b/macros/latex/contrib/l3build/l3build-install.lua
@@ -327,9 +327,17 @@ function install_files(target,full,dry_run)
if errorlevel ~= 0 then return errorlevel end
+ -- Track created destination directories to avoid overhead from
+ -- repeatedly creating them
+ local destination_dirs = {}
+
-- Files are all copied in one shot: this ensures that cleandir()
-- can't be an issue even if there are complex set-ups
for _,v in ipairs(installmap) do
+ if not destination_dirs[v.dest] then
+ mkdir(v.dest)
+ destination_dirs[v.dest] = true
+ end
errorlevel = cp(v.file,v.source,v.dest)
if errorlevel ~= 0 then return errorlevel end
end