node/lib/internal/bootstrap/cache.js
Daniel Bevenius d28980c464 crypto: add crypto/keys to cannotUseCache
Currently when configuring --without-ssl test-code-cache.js will fail
with the following error:
internal/bootstrap/loaders.js:151
      mod = bindingObj[module] = getInternalBinding(module);
                                 ^

Error: No such module: crypto
    at internalBinding (internal/bootstrap/loaders.js:151:34)
    at internal/crypto/keys.js:14:5
    at NativeModule.compile (internal/bootstrap/loaders.js:342:5)
    at Function.NativeModule.require (internal/bootstrap/loaders.js:213:16)
    at Function.Module._load (internal/modules/cjs/loader.js:539:25)
    at Module.require (internal/modules/cjs/loader.js:654:17)
    at require (internal/modules/cjs/helpers.js:22:18)
    at Object.<anonymous> (/node/test/code-cache/test-code-cache.js:31:3)
    at Module._compile (internal/modules/cjs/loader.js:718:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:729:10)

This commit adds internal/crypto/keys to the cannotUseCache array if
compiled without crypto support.

PR-URL: https://github.com/nodejs/node/pull/25237
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Tobias Nießen <tniessen@tnie.de>
Reviewed-By: Minwoo Jung <minwoo@nodesource.com>
2018-12-31 07:34:25 +01:00

79 lines
2.1 KiB
JavaScript

'use strict';
// This is only exposed for internal build steps and testing purposes.
// We create new copies of the source and the code cache
// so the resources eventually used to compile builtin modules
// cannot be tampered with even with --expose-internals.
const { NativeModule } = require('internal/bootstrap/loaders');
const {
source, getCodeCache, compileFunction
} = internalBinding('native_module');
const { hasTracing } = process.binding('config');
const depsModule = Object.keys(source).filter(
(key) => NativeModule.isDepsModule(key) || key.startsWith('internal/deps')
);
// Modules with source code compiled in js2c that
// cannot be compiled with the code cache.
const cannotUseCache = [
'sys', // Deprecated.
'internal/v8_prof_polyfill',
'internal/v8_prof_processor',
'internal/per_context',
'internal/test/binding',
// TODO(joyeecheung): update the C++ side so that
// the code cache is also used when compiling these two files.
'internal/bootstrap/loaders',
'internal/bootstrap/node'
].concat(depsModule);
// Skip modules that cannot be required when they are not
// built into the binary.
if (process.config.variables.v8_enable_inspector !== 1) {
cannotUseCache.push(
'inspector',
'internal/util/inspector',
);
}
if (!hasTracing) {
cannotUseCache.push('trace_events');
}
if (!process.versions.openssl) {
cannotUseCache.push(
'crypto',
'https',
'http2',
'tls',
'_tls_common',
'_tls_wrap',
'internal/crypto/certificate',
'internal/crypto/cipher',
'internal/crypto/diffiehellman',
'internal/crypto/hash',
'internal/crypto/keygen',
'internal/crypto/keys',
'internal/crypto/pbkdf2',
'internal/crypto/random',
'internal/crypto/scrypt',
'internal/crypto/sig',
'internal/crypto/util',
'internal/http2/core',
'internal/http2/compat',
'internal/streams/lazy_transform',
);
}
module.exports = {
cachableBuiltins: Object.keys(source).filter(
(key) => !cannotUseCache.includes(key)
),
getSource(id) { return source[id]; },
getCodeCache,
compileFunction,
cannotUseCache
};