1
0
Fork 0
mirror of https://github.com/denoland/deno.git synced 2024-11-30 16:40:57 -05:00

refactor: move definition of Deno.build from "runtime" to "core" (#18036)

We use information about build in several extension crates like
"ext/node" or "runtime/". In an effort to move "fs" APIs to a separate 
crate it is a prerequisite to have this information available outside 
of the "runtime/" crate.

This commit moves definition of "build" object to "Deno.core" that is 
later forwarded to "Deno.build".
This commit is contained in:
Bartek Iwańczuk 2023-03-05 18:18:13 -04:00 committed by Yoshiya Hinosawa
parent 38ed6d55f7
commit 4fbc51ca46
12 changed files with 56 additions and 62 deletions

View file

@ -1 +1 @@
await import("internal:runtime/01_build.js"); await import("internal:runtime/01_errors.js");

View file

@ -1,4 +1,4 @@
error: Uncaught TypeError: Cannot load internal module from external code error: Uncaught TypeError: Cannot load internal module from external code
await import("internal:runtime/01_build.js"); await import("internal:runtime/01_errors.js");
^ ^
at [WILDCARD]/internal_dynamic_import.ts:1:1 at [WILDCARD]/internal_dynamic_import.ts:1:1

View file

@ -1 +1 @@
import "internal:runtime/01_build.js"; import "internal:runtime/01_errors.js";

View file

@ -1,4 +1,4 @@
error: Unsupported scheme "internal" for module "internal:runtime/01_build.js". Supported schemes: [ error: Unsupported scheme "internal" for module "internal:runtime/01_errors.js". Supported schemes: [
"data", "data",
"blob", "blob",
"file", "file",

View file

@ -3,33 +3,57 @@
((window) => { ((window) => {
const { const {
Array,
ArrayPrototypeFill,
ArrayPrototypeMap,
ArrayPrototypePush,
Error, Error,
ErrorCaptureStackTrace,
Map,
MapPrototypeDelete,
MapPrototypeGet,
MapPrototypeHas,
MapPrototypeSet,
ObjectAssign,
ObjectFreeze,
ObjectFromEntries,
Promise,
PromisePrototypeThen,
RangeError, RangeError,
ReferenceError, ReferenceError,
SafePromisePrototypeFinally,
setQueueMicrotask,
StringPrototypeSlice,
StringPrototypeSplit,
SymbolFor,
SyntaxError, SyntaxError,
TypeError, TypeError,
URIError, URIError,
Array,
ArrayPrototypeFill,
ArrayPrototypePush,
ArrayPrototypeMap,
ErrorCaptureStackTrace,
Promise,
ObjectAssign,
ObjectFromEntries,
Map,
MapPrototypeGet,
MapPrototypeHas,
MapPrototypeDelete,
MapPrototypeSet,
PromisePrototypeThen,
SafePromisePrototypeFinally,
StringPrototypeSlice,
SymbolFor,
setQueueMicrotask,
} = window.__bootstrap.primordials; } = window.__bootstrap.primordials;
const { ops } = window.Deno.core; const { ops } = window.Deno.core;
const build = {
target: "unknown",
arch: "unknown",
os: "unknown",
vendor: "unknown",
env: undefined,
};
function setBuildInfo(target) {
const { 0: arch, 1: vendor, 2: os, 3: env } = StringPrototypeSplit(
target,
"-",
4,
);
build.target = target;
build.arch = arch;
build.vendor = vendor;
build.os = os;
build.env = env;
ObjectFreeze(build);
}
const errorMap = {}; const errorMap = {};
// Builtin v8 / JS errors // Builtin v8 / JS errors
registerErrorClass("Error", Error); registerErrorClass("Error", Error);
@ -408,6 +432,8 @@
eventLoopHasMoreWork: () => ops.op_event_loop_has_more_work(), eventLoopHasMoreWork: () => ops.op_event_loop_has_more_work(),
setPromiseRejectCallback: (fn) => ops.op_set_promise_reject_callback(fn), setPromiseRejectCallback: (fn) => ops.op_set_promise_reject_callback(fn),
byteLength: (str) => ops.op_str_byte_length(str), byteLength: (str) => ops.op_str_byte_length(str),
build,
setBuildInfo,
}); });
ObjectAssign(globalThis.__bootstrap, { core }); ObjectAssign(globalThis.__bootstrap, { core });

View file

@ -4,16 +4,16 @@
// The following are all the process APIs that don't depend on the stream module // The following are all the process APIs that don't depend on the stream module
// They have to be split this way to prevent a circular dependency // They have to be split this way to prevent a circular dependency
import { build } from "internal:runtime/01_build.js"; const core = globalThis.Deno.core;
import { nextTick as _nextTick } from "internal:deno_node/_next_tick.ts"; import { nextTick as _nextTick } from "internal:deno_node/_next_tick.ts";
import { _exiting } from "internal:deno_node/_process/exiting.ts"; import { _exiting } from "internal:deno_node/_process/exiting.ts";
import * as fs from "internal:runtime/30_fs.js"; import * as fs from "internal:runtime/30_fs.js";
/** Returns the operating system CPU architecture for which the Deno binary was compiled */ /** Returns the operating system CPU architecture for which the Deno binary was compiled */
export function arch(): string { export function arch(): string {
if (build.arch == "x86_64") { if (core.build.arch == "x86_64") {
return "x64"; return "x64";
} else if (build.arch == "aarch64") { } else if (core.build.arch == "aarch64") {
return "arm64"; return "arm64";
} else { } else {
throw Error("unreachable"); throw Error("unreachable");

View file

@ -194,7 +194,6 @@ mod startup_snapshot {
]) ])
.esm(include_js_files!( .esm(include_js_files!(
dir "js", dir "js",
"01_build.js",
"01_errors.js", "01_errors.js",
"01_version.ts", "01_version.ts",
"06_util.js", "06_util.js",

View file

@ -1,28 +0,0 @@
// Copyright 2018-2023 the Deno authors. All rights reserved. MIT license.
const primordials = globalThis.__bootstrap.primordials;
const { ObjectFreeze, StringPrototypeSplit } = primordials;
const build = {
target: "unknown",
arch: "unknown",
os: "unknown",
vendor: "unknown",
env: undefined,
};
function setBuildInfo(target) {
const { 0: arch, 1: vendor, 2: os, 3: env } = StringPrototypeSplit(
target,
"-",
4,
);
build.target = target;
build.arch = arch;
build.vendor = vendor;
build.os = os;
build.env = env;
ObjectFreeze(build);
}
export { build, setBuildInfo };

View file

@ -1,5 +1,6 @@
// Copyright 2018-2023 the Deno authors. All rights reserved. MIT license. // Copyright 2018-2023 the Deno authors. All rights reserved. MIT license.
const core = globalThis.Deno.core;
const internals = globalThis.__bootstrap.internals; const internals = globalThis.__bootstrap.internals;
const primordials = globalThis.__bootstrap.primordials; const primordials = globalThis.__bootstrap.primordials;
const { const {
@ -11,7 +12,6 @@ const {
StringPrototypeReplace, StringPrototypeReplace,
TypeError, TypeError,
} = primordials; } = primordials;
import { build } from "internal:runtime/01_build.js";
import { URLPrototype } from "internal:deno_url/00_url.js"; import { URLPrototype } from "internal:deno_url/00_url.js";
let logDebug = false; let logDebug = false;
let logSource = "JS"; let logSource = "JS";
@ -94,7 +94,7 @@ function pathFromURL(pathOrUrl) {
throw new TypeError("Must be a file URL."); throw new TypeError("Must be a file URL.");
} }
return build.os == "windows" return core.build.os == "windows"
? pathFromURLWin32(pathOrUrl) ? pathFromURLWin32(pathOrUrl)
: pathFromURLPosix(pathOrUrl); : pathFromURLPosix(pathOrUrl);
} }

View file

@ -25,7 +25,6 @@ import {
writableStreamForRid, writableStreamForRid,
} from "internal:deno_web/06_streams.js"; } from "internal:deno_web/06_streams.js";
import { pathFromURL } from "internal:runtime/06_util.js"; import { pathFromURL } from "internal:runtime/06_util.js";
import { build } from "internal:runtime/01_build.js";
function chmodSync(path, mode) { function chmodSync(path, mode) {
ops.op_chmod_sync(pathFromURL(path), mode); ops.op_chmod_sync(pathFromURL(path), mode);
@ -272,7 +271,7 @@ const { 0: statStruct, 1: statBuf } = createByteStruct({
}); });
function parseFileInfo(response) { function parseFileInfo(response) {
const unix = build.os === "darwin" || build.os === "linux"; const unix = core.build.os === "darwin" || core.build.os === "linux";
return { return {
isFile: response.isFile, isFile: response.isFile,
isDirectory: response.isDirectory, isDirectory: response.isDirectory,

View file

@ -10,7 +10,6 @@ import * as net from "internal:deno_net/01_net.js";
import * as tls from "internal:deno_net/02_tls.js"; import * as tls from "internal:deno_net/02_tls.js";
import * as http from "internal:deno_http/01_http.js"; import * as http from "internal:deno_http/01_http.js";
import * as flash from "internal:deno_flash/01_http.js"; import * as flash from "internal:deno_flash/01_http.js";
import * as build from "internal:runtime/01_build.js";
import * as errors from "internal:runtime/01_errors.js"; import * as errors from "internal:runtime/01_errors.js";
import * as version from "internal:runtime/01_version.ts"; import * as version from "internal:runtime/01_version.ts";
import * as permissions from "internal:runtime/10_permissions.js"; import * as permissions from "internal:runtime/10_permissions.js";
@ -65,7 +64,7 @@ const denoNs = {
renameSync: fs.renameSync, renameSync: fs.renameSync,
rename: fs.rename, rename: fs.rename,
version: version.version, version: version.version,
build: build.build, build: core.build,
statSync: fs.statSync, statSync: fs.statSync,
lstatSync: fs.lstatSync, lstatSync: fs.lstatSync,
stat: fs.stat, stat: fs.stat,

View file

@ -42,7 +42,6 @@ const {
import * as util from "internal:runtime/06_util.js"; import * as util from "internal:runtime/06_util.js";
import * as event from "internal:deno_web/02_event.js"; import * as event from "internal:deno_web/02_event.js";
import * as location from "internal:deno_web/12_location.js"; import * as location from "internal:deno_web/12_location.js";
import * as build from "internal:runtime/01_build.js";
import * as version from "internal:runtime/01_version.ts"; import * as version from "internal:runtime/01_version.ts";
import * as os from "internal:runtime/30_os.js"; import * as os from "internal:runtime/30_os.js";
import * as timers from "internal:deno_web/02_timers.js"; import * as timers from "internal:deno_web/02_timers.js";
@ -305,7 +304,7 @@ function runtimeStart(runtimeOptions, source) {
runtimeOptions.v8Version, runtimeOptions.v8Version,
runtimeOptions.tsVersion, runtimeOptions.tsVersion,
); );
build.setBuildInfo(runtimeOptions.target); core.setBuildInfo(runtimeOptions.target);
util.setLogDebug(runtimeOptions.debugFlag, source); util.setLogDebug(runtimeOptions.debugFlag, source);
colors.setNoColor(runtimeOptions.noColor || !runtimeOptions.isTty); colors.setNoColor(runtimeOptions.noColor || !runtimeOptions.isTty);
// deno-lint-ignore prefer-primordials // deno-lint-ignore prefer-primordials