chore: import upstream snapshot with attribution
This commit is contained in:
@@ -0,0 +1,66 @@
|
||||
// ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
|
||||
// ┃ ██████ ██████ ██████ █ █ █ █ █ █▄ ▀███ █ ┃
|
||||
// ┃ ▄▄▄▄▄█ █▄▄▄▄▄ ▄▄▄▄▄█ ▀▀▀▀▀█▀▀▀▀▀ █ ▀▀▀▀▀█ ████████▌▐███ ███▄ ▀█ █ ▀▀▀▀▀ ┃
|
||||
// ┃ █▀▀▀▀▀ █▀▀▀▀▀ █▀██▀▀ ▄▄▄▄▄ █ ▄▄▄▄▄█ ▄▄▄▄▄█ ████████▌▐███ █████▄ █ ▄▄▄▄▄ ┃
|
||||
// ┃ █ ██████ █ ▀█▄ █ ██████ █ ███▌▐███ ███████▄ █ ┃
|
||||
// ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
|
||||
// ┃ Copyright (c) 2017, the Perspective Authors. ┃
|
||||
// ┃ ╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌ ┃
|
||||
// ┃ This file is part of the Perspective library, distributed under the terms ┃
|
||||
// ┃ of the [Apache License 2.0](https://www.apache.org/licenses/LICENSE-2.0). ┃
|
||||
// ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
|
||||
|
||||
import path from "path";
|
||||
import os from "os";
|
||||
import fs from "fs";
|
||||
import * as dotenv from "dotenv";
|
||||
import { getWorkspaceRoot, getWorkspacePackageJson } from "./workspace.mjs";
|
||||
|
||||
import "zx/globals";
|
||||
|
||||
const pkg = getWorkspacePackageJson();
|
||||
|
||||
const emscripten = pkg.emscripten;
|
||||
|
||||
dotenv.config({ path: "./.perspectiverc", quiet: true });
|
||||
|
||||
function base() {
|
||||
return path.resolve(getWorkspaceRoot(), ".emsdk").replace(/\\/g, "/");
|
||||
}
|
||||
|
||||
function emsdk_checkout() {
|
||||
$.sync`git clone https://github.com/emscripten-core/emsdk.git ${base()}`;
|
||||
}
|
||||
|
||||
function emsdk(...args) {
|
||||
const basedir = base();
|
||||
const suffix = os.type() == "Windows_NT" ? ".bat" : "";
|
||||
const emsdkBin = path.join(basedir, "emsdk" + suffix).replace(/\\/g, "/");
|
||||
$.sync`${emsdkBin} ${args}`;
|
||||
}
|
||||
|
||||
function toolchain_install() {
|
||||
console.log(`-- Installing Emscripten ${emscripten}`);
|
||||
$.sync({ cwd: ".emsdk" })`git pull`;
|
||||
emsdk("install", emscripten);
|
||||
emsdk("activate", emscripten);
|
||||
console.log(`-- Emscripten ${emscripten} installed`);
|
||||
}
|
||||
|
||||
function repo_check() {
|
||||
return fs.existsSync(path.join(base(), "emsdk_env.sh"));
|
||||
}
|
||||
|
||||
if (!process.env.PSP_SKIP_EMSDK_INSTALL) {
|
||||
// if a stale toolchain is still activated in the shell, these vars break
|
||||
// emsdk install in a confusing way. ensure they are unset
|
||||
for (let ev of ["EMSDK", "EMSDK_NODE", "EMSDK_PYTHON", "SSL_CERT_FILE"]) {
|
||||
delete process.env[ev];
|
||||
}
|
||||
|
||||
if (!repo_check()) {
|
||||
emsdk_checkout();
|
||||
}
|
||||
|
||||
toolchain_install();
|
||||
}
|
||||
Reference in New Issue
Block a user