mirror of
https://github.com/bitwarden/browser
synced 2024-12-15 10:48:59 +01:00
55874b72bf
* [PM-7846] Implement a rust based native messaging proxy and IPC system
* Only build desktop_proxy
* Bundle the desktop_proxy file
* Make sys deps optional for the proxy
* Restore accidentally deleted after-sign
* Update native cache to contain dist folder
* Add some test logging
* Native module cache seems very aggressive
* Fix invalid directory
* Fix debug print
* Remove cache force
* Remove cache debug code
* Only log to file in debug builds
* Place the binary in the correct place for mac and make sure it's signed
* Fix platform paths
* Test unsigned appx
* Revert "Test unsigned appx"
This reverts commit e47535440a
.
* Fix comment
* Remove logs
* Use debug builds in native code, and test private path on MacOS
* Add connected message
* Update IPC API comments
* Update linux to also use XDG_ dir
* Update main.rs comment
* Improve docs and split some tasks spawned into separate functions
* Update send docs and return number of elements sent
* Mark `listen` as async to ensure it runs in a tokio context, handle errors better
* Add log on client channel closed
* Move binary to MacOS folder, and sign it manually so it gets the correct entitlements
* Fix some review comments
* Run prettier
* Added missing zbus_polkit dep
* Extract magic number and increase it to match spec
* Comment fix
* Use Napi object, combine nativeBinding export, always log to file
* Missed one comment
* Remove unnecessary generics
* Correct comment
* Select only codesigning identities
* Filter certificates
* Also add local dev cert
* Remove log
* Fix package ID
* debug_assert won't run the pop() in release mode
* Better error messages
* Fix review comments
* Remove unnecessary comment
* Update napi generated TS file
* Temporary fix for DDG
69 lines
2.4 KiB
JavaScript
69 lines
2.4 KiB
JavaScript
/* eslint-disable @typescript-eslint/no-var-requires */
|
|
const child_process = require("child_process");
|
|
const fs = require("fs");
|
|
const path = require("path");
|
|
const process = require("process");
|
|
|
|
let crossPlatform = process.argv.length > 2 && process.argv[2] === "cross-platform";
|
|
|
|
function buildNapiModule(target, release = true) {
|
|
const targetArg = target ? `--target ${target}` : "";
|
|
const releaseArg = release ? "--release" : "";
|
|
return child_process.execSync(`npm run build -- ${releaseArg} ${targetArg}`, { stdio: 'inherit', cwd: path.join(__dirname, "napi") });
|
|
}
|
|
|
|
function buildProxyBin(target, release = true) {
|
|
const targetArg = target ? `--target ${target}` : "";
|
|
const releaseArg = release ? "--release" : "";
|
|
return child_process.execSync(`cargo build --bin desktop_proxy ${releaseArg} ${targetArg}`, {stdio: 'inherit', cwd: path.join(__dirname, "proxy")});
|
|
}
|
|
|
|
if (!crossPlatform) {
|
|
console.log("Building native modules in debug mode for the native architecture");
|
|
buildNapiModule(false, false);
|
|
buildProxyBin(false, false);
|
|
return;
|
|
}
|
|
|
|
// Note that targets contains pairs of [rust target, node arch]
|
|
// We do this to move the output binaries to a location that can
|
|
// be easily accessed from electron-builder using ${os} and ${arch}
|
|
let targets = [];
|
|
switch (process.platform) {
|
|
case "win32":
|
|
targets = [
|
|
["i686-pc-windows-msvc", 'ia32'],
|
|
["x86_64-pc-windows-msvc", 'x64'],
|
|
["aarch64-pc-windows-msvc", 'arm64']
|
|
];
|
|
break;
|
|
|
|
case "darwin":
|
|
targets = [
|
|
["x86_64-apple-darwin", 'x64'],
|
|
["aarch64-apple-darwin", 'arm64']
|
|
];
|
|
break;
|
|
|
|
default:
|
|
targets = [
|
|
['x86_64-unknown-linux-musl', 'x64']
|
|
];
|
|
|
|
process.env["PKG_CONFIG_ALLOW_CROSS"] = "1";
|
|
process.env["PKG_CONFIG_ALL_STATIC"] = "1";
|
|
break;
|
|
}
|
|
|
|
console.log("Cross building native modules for the targets: ", targets.map(([target, _]) => target).join(", "));
|
|
|
|
fs.mkdirSync(path.join(__dirname, "dist"), { recursive: true });
|
|
|
|
targets.forEach(([target, nodeArch]) => {
|
|
buildNapiModule(target);
|
|
buildProxyBin(target);
|
|
|
|
const ext = process.platform === "win32" ? ".exe" : "";
|
|
fs.copyFileSync(path.join(__dirname, "target", target, "release", `desktop_proxy${ext}`), path.join(__dirname, "dist", `desktop_proxy.${process.platform}-${nodeArch}${ext}`));
|
|
});
|