mirror of
https://github.com/zebrajr/node.git
synced 2025-12-06 12:20:27 +01:00
Adds an option (NODE_COMPILE_CACHE_PORTABLE) for the built-in compile cache to encode the hashes with relative file paths. On enabling the option, the source directory along with cache directory can be bundled and moved, and the cache continues to work. When enabled, paths encoded in hash are relative to compile cache directory. PR-URL: https://github.com/nodejs/node/pull/58797 Fixes: https://github.com/nodejs/node/issues/58755 Refs: https://github.com/nodejs/node/issues/52696 Reviewed-By: Joyee Cheung <joyeec9h3@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com>
76 lines
1.8 KiB
JavaScript
76 lines
1.8 KiB
JavaScript
'use strict';
|
|
|
|
// This tests NODE_COMPILE_CACHE works with the NODE_COMPILE_CACHE_PORTABLE
|
|
// environment variable.
|
|
|
|
require('../common');
|
|
const { spawnSyncAndAssert } = require('../common/child_process');
|
|
const assert = require('assert');
|
|
const fs = require('fs');
|
|
const tmpdir = require('../common/tmpdir');
|
|
const path = require('path');
|
|
|
|
tmpdir.refresh();
|
|
const workDir = path.join(tmpdir.path, 'work');
|
|
const cacheRel = '.compile_cache_dir';
|
|
fs.mkdirSync(workDir, { recursive: true });
|
|
|
|
const script = path.join(workDir, 'script.js');
|
|
fs.writeFileSync(script, '');
|
|
|
|
// First run
|
|
{
|
|
spawnSyncAndAssert(
|
|
process.execPath,
|
|
[script],
|
|
{
|
|
env: {
|
|
...process.env,
|
|
NODE_DEBUG_NATIVE: 'COMPILE_CACHE',
|
|
NODE_COMPILE_CACHE: cacheRel,
|
|
NODE_COMPILE_CACHE_PORTABLE: '1',
|
|
},
|
|
cwd: workDir,
|
|
},
|
|
{
|
|
stderr(output) {
|
|
console.log(output);
|
|
assert.match(
|
|
output,
|
|
/script\.js was not initialized, initializing the in-memory entry/
|
|
);
|
|
assert.match(output, /writing cache for .*script\.js.*success/);
|
|
return true;
|
|
},
|
|
}
|
|
);
|
|
|
|
// Move the working directory and run again
|
|
const movedWorkDir = `${workDir}_moved`;
|
|
fs.renameSync(workDir, movedWorkDir);
|
|
spawnSyncAndAssert(
|
|
process.execPath,
|
|
[[path.join(movedWorkDir, 'script.js')]],
|
|
{
|
|
env: {
|
|
...process.env,
|
|
NODE_DEBUG_NATIVE: 'COMPILE_CACHE',
|
|
NODE_COMPILE_CACHE: cacheRel,
|
|
NODE_COMPILE_CACHE_PORTABLE: '1',
|
|
},
|
|
cwd: movedWorkDir,
|
|
},
|
|
{
|
|
stderr(output) {
|
|
console.log(output);
|
|
assert.match(
|
|
output,
|
|
/cache for .*script\.js was accepted, keeping the in-memory entry/
|
|
);
|
|
assert.match(output, /.*skip .*script\.js because cache was the same/);
|
|
return true;
|
|
},
|
|
}
|
|
);
|
|
}
|