From 8e57ecb7318ee98dbc00d3228cb2a2fcddc18703 Mon Sep 17 00:00:00 2001 From: Ben Newman Date: Mon, 26 Sep 2016 19:18:23 -0400 Subject: [PATCH] Use optimistic functions in Builder#copyDirectory. --- tools/isobuild/builder.js | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/tools/isobuild/builder.js b/tools/isobuild/builder.js index 85b5644618..8a2df5ceb1 100644 --- a/tools/isobuild/builder.js +++ b/tools/isobuild/builder.js @@ -2,6 +2,11 @@ import {WatchSet, readAndWatchFile, sha1} from '../fs/watch.js'; import files from '../fs/files.js'; import NpmDiscards from './npm-discards.js'; import {Profile} from '../tool-env/profile.js'; +import { + optimisticReadFile, + optimisticReaddir, + optimisticLStat, +} from "../fs/optimistic.js"; // Builder is in charge of writing "bundles" to disk, which are // directory trees such as site archives, programs, and packages. In @@ -455,7 +460,7 @@ Previous builder: ${previousBuilder.outputPath}, this builder: ${outputPath}` this._ensureDirectory(relTo); - files.readdir(absFrom).forEach(item => { + optimisticReaddir(absFrom).forEach(item => { const thisAbsFrom = files.pathResolve(absFrom, item); const thisRelTo = files.pathJoin(relTo, item); @@ -463,7 +468,7 @@ Previous builder: ${previousBuilder.outputPath}, this builder: ${outputPath}` return; } - const fileStatus = files.lstat(thisAbsFrom); + const fileStatus = optimisticLStat(thisAbsFrom); let itemForMatch = item; const isDirectory = fileStatus.isDirectory(); @@ -500,9 +505,11 @@ Previous builder: ${previousBuilder.outputPath}, this builder: ${outputPath}` } else { // XXX can't really optimize this copying without reading // the file into memory to calculate the hash. - files.copyFile(thisAbsFrom, - files.pathResolve(this.buildPath, thisRelTo), - fileStatus.mode); + files.writeFile( + files.pathResolve(this.buildPath, thisRelTo), + optimisticReadFile(thisAbsFrom), + { mode: fileStatus.mode }, + ); this.usedAsFile[thisRelTo] = true; }