@electron/rebuild 3.7.1 → 4.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +30 -17
- package/lib/arch.d.ts +1 -1
- package/lib/arch.js +4 -9
- package/lib/arch.js.map +1 -1
- package/lib/cache.d.ts +2 -2
- package/lib/cache.js +35 -41
- package/lib/cache.js.map +1 -1
- package/lib/clang-fetcher.js +26 -56
- package/lib/clang-fetcher.js.map +1 -1
- package/lib/cli.js +22 -52
- package/lib/cli.js.map +1 -1
- package/lib/constants.js +3 -29
- package/lib/constants.js.map +1 -1
- package/lib/electron-locator.js +12 -38
- package/lib/electron-locator.js.map +1 -1
- package/lib/fetcher.d.ts +2 -1
- package/lib/fetcher.js +5 -12
- package/lib/fetcher.js.map +1 -1
- package/lib/main.d.ts +1 -2
- package/lib/main.js +2 -9
- package/lib/main.js.map +1 -1
- package/lib/module-rebuilder.d.ts +1 -1
- package/lib/module-rebuilder.js +30 -52
- package/lib/module-rebuilder.js.map +1 -1
- package/lib/module-type/index.d.ts +3 -3
- package/lib/module-type/index.js +19 -22
- package/lib/module-type/index.js.map +1 -1
- package/lib/module-type/node-gyp/node-gyp.d.ts +1 -1
- package/lib/module-type/node-gyp/node-gyp.js +18 -26
- package/lib/module-type/node-gyp/node-gyp.js.map +1 -1
- package/lib/module-type/node-gyp/worker.js +2 -7
- package/lib/module-type/node-gyp/worker.js.map +1 -1
- package/lib/module-type/node-pre-gyp.d.ts +1 -1
- package/lib/module-type/node-pre-gyp.js +14 -22
- package/lib/module-type/node-pre-gyp.js.map +1 -1
- package/lib/module-type/prebuild-install.d.ts +1 -1
- package/lib/module-type/prebuild-install.js +12 -20
- package/lib/module-type/prebuild-install.js.map +1 -1
- package/lib/module-type/prebuildify.d.ts +1 -1
- package/lib/module-type/prebuildify.js +18 -27
- package/lib/module-type/prebuildify.js.map +1 -1
- package/lib/module-walker.d.ts +1 -1
- package/lib/module-walker.js +41 -25
- package/lib/module-walker.js.map +1 -1
- package/lib/node-api.js +5 -7
- package/lib/node-api.js.map +1 -1
- package/lib/prebuild-shim.d.ts +1 -0
- package/lib/prebuild-shim.js +2 -1
- package/lib/prebuild-shim.js.map +1 -1
- package/lib/promisifiedGracefulFs.d.ts +3 -0
- package/lib/promisifiedGracefulFs.js +9 -0
- package/lib/promisifiedGracefulFs.js.map +1 -0
- package/lib/read-package-json.js +6 -31
- package/lib/read-package-json.js.map +1 -1
- package/lib/rebuild.d.ts +6 -6
- package/lib/rebuild.js +42 -54
- package/lib/rebuild.js.map +1 -1
- package/lib/search-module.js +7 -36
- package/lib/search-module.js.map +1 -1
- package/lib/sysroot-fetcher.js +20 -50
- package/lib/sysroot-fetcher.js.map +1 -1
- package/lib/types.d.ts +4 -3
- package/lib/types.js +2 -5
- package/lib/types.js.map +1 -1
- package/package.json +25 -67
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
## Electron Rebuild
|
|
2
2
|
|
|
3
|
-
[](https://github.com/electron/rebuild/actions/workflows/test.yml)
|
|
4
4
|
[](https://npm.im/@electron/rebuild)
|
|
5
5
|
[](https://codecov.io/gh/electron/rebuild)
|
|
6
6
|
|
|
@@ -44,7 +44,7 @@ npm run rebuild
|
|
|
44
44
|
|
|
45
45
|
### What are the requirements?
|
|
46
46
|
|
|
47
|
-
Node
|
|
47
|
+
Node v22.12.0 or higher is required. Building native modules from source uses
|
|
48
48
|
[`node-gyp`](https://github.com/nodejs/node-gyp#installation), refer to the link for its
|
|
49
49
|
installation/runtime requirements.
|
|
50
50
|
|
|
@@ -97,12 +97,12 @@ This package is automatically used with Electron Forge when packaging an Electro
|
|
|
97
97
|
|
|
98
98
|
### How can I integrate this into [Electron Packager](https://github.com/electron/packager)?
|
|
99
99
|
|
|
100
|
-
electron-rebuild provides a function compatible with the [`afterCopy` hook](https://electron.github.io/packager/main/interfaces/
|
|
100
|
+
electron-rebuild provides a function compatible with the [`afterCopy` hook](https://electron.github.io/packager/main/interfaces/Options.html#afterCopy)
|
|
101
101
|
for Electron Packager. For example:
|
|
102
102
|
|
|
103
103
|
```javascript
|
|
104
104
|
import packager from '@electron/packager';
|
|
105
|
-
import rebuild from '@electron/rebuild';
|
|
105
|
+
import { rebuild } from '@electron/rebuild';
|
|
106
106
|
|
|
107
107
|
packager({
|
|
108
108
|
// … other options
|
|
@@ -128,7 +128,7 @@ electron-rebuild is also a library that you can require into your app or
|
|
|
128
128
|
build process. It has a very simple API:
|
|
129
129
|
|
|
130
130
|
```javascript
|
|
131
|
-
import rebuild from '@electron/rebuild';
|
|
131
|
+
import { rebuild } from '@electron/rebuild';
|
|
132
132
|
|
|
133
133
|
// Public: Rebuilds a node_modules directory with the given Electron version.
|
|
134
134
|
//
|
|
@@ -151,16 +151,29 @@ import rebuild from '@electron/rebuild';
|
|
|
151
151
|
A full build process might look something like:
|
|
152
152
|
|
|
153
153
|
```javascript
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
154
|
+
// ESM
|
|
155
|
+
import { rebuild } from '@electron/rebuild'
|
|
156
|
+
|
|
157
|
+
rebuild({
|
|
158
|
+
buildPath: import.meta.dirname,
|
|
159
|
+
electronVersion: '35.1.5'
|
|
160
|
+
})
|
|
161
|
+
.then(() => console.info('Rebuild Successful'))
|
|
162
|
+
.catch((e) => {
|
|
163
|
+
console.error('Building modules didn\'t work!')
|
|
164
|
+
console.error(e)
|
|
165
|
+
})
|
|
166
|
+
|
|
167
|
+
// CommonJS
|
|
168
|
+
const { rebuild } = require('@electron/rebuild')
|
|
169
|
+
|
|
170
|
+
rebuild({
|
|
171
|
+
buildPath: __dirname,
|
|
172
|
+
electronVersion: '35.1.5'
|
|
173
|
+
})
|
|
174
|
+
.then(() => console.info('Rebuild Successful'))
|
|
175
|
+
.catch((e) => {
|
|
176
|
+
console.error('Building modules didn\'t work!')
|
|
177
|
+
console.error(e)
|
|
178
|
+
})
|
|
166
179
|
```
|
package/lib/arch.d.ts
CHANGED
package/lib/arch.js
CHANGED
|
@@ -1,25 +1,21 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getNodeArch = exports.uname = void 0;
|
|
4
|
-
const child_process_1 = require("child_process");
|
|
1
|
+
import { execSync } from 'node:child_process';
|
|
5
2
|
/**
|
|
6
3
|
* Runs the `uname` command and returns the trimmed output.
|
|
7
4
|
*
|
|
8
5
|
* Copied from `@electron/get`.
|
|
9
6
|
*/
|
|
10
|
-
function uname() {
|
|
11
|
-
return
|
|
7
|
+
export function uname() {
|
|
8
|
+
return execSync('uname -m')
|
|
12
9
|
.toString()
|
|
13
10
|
.trim();
|
|
14
11
|
}
|
|
15
|
-
exports.uname = uname;
|
|
16
12
|
/**
|
|
17
13
|
* Generates an architecture name that would be used in an Electron or Node.js
|
|
18
14
|
* download file name.
|
|
19
15
|
*
|
|
20
16
|
* Copied from `@electron/get`.
|
|
21
17
|
*/
|
|
22
|
-
function getNodeArch(arch, configVariables) {
|
|
18
|
+
export function getNodeArch(arch, configVariables) {
|
|
23
19
|
if (arch === 'arm') {
|
|
24
20
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
25
21
|
switch (configVariables.arm_version) {
|
|
@@ -32,5 +28,4 @@ function getNodeArch(arch, configVariables) {
|
|
|
32
28
|
}
|
|
33
29
|
return arch;
|
|
34
30
|
}
|
|
35
|
-
exports.getNodeArch = getNodeArch;
|
|
36
31
|
//# sourceMappingURL=arch.js.map
|
package/lib/arch.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"arch.js","sourceRoot":"","sources":["../src/arch.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"arch.js","sourceRoot":"","sources":["../src/arch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAE9C;;;;GAIG;AACH,MAAM,UAAU,KAAK;IACnB,OAAO,QAAQ,CAAC,UAAU,CAAC;SACxB,QAAQ,EAAE;SACV,IAAI,EAAE,CAAC;AACZ,CAAC;AAMD;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CAAC,IAAY,EAAE,eAAgC;IACxE,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;QACnB,8DAA8D;QAC9D,QAAQ,eAAe,CAAC,WAAW,EAAE,CAAC;YACpC,KAAK,GAAG;gBACN,OAAO,KAAK,EAAE,CAAC;YACjB,KAAK,GAAG,CAAC;YACT;gBACE,OAAO,QAAQ,CAAC;QACpB,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
|
package/lib/cache.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
type CacheOptions = {
|
|
2
2
|
ABI: string;
|
|
3
3
|
arch: string;
|
|
4
4
|
platform: string;
|
|
@@ -8,7 +8,7 @@ declare type CacheOptions = {
|
|
|
8
8
|
modulePath: string;
|
|
9
9
|
};
|
|
10
10
|
export declare const cacheModuleState: (dir: string, cachePath: string, key: string) => Promise<void>;
|
|
11
|
-
|
|
11
|
+
type ApplyDiffFunction = (dir: string) => Promise<void>;
|
|
12
12
|
export declare const lookupModuleState: (cachePath: string, key: string) => Promise<ApplyDiffFunction | boolean>;
|
|
13
13
|
export declare function generateCacheKey(opts: CacheOptions): Promise<string>;
|
|
14
14
|
export {};
|
package/lib/cache.js
CHANGED
|
@@ -1,18 +1,15 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
const
|
|
8
|
-
const debug_1 = __importDefault(require("debug"));
|
|
9
|
-
const fs_extra_1 = __importDefault(require("fs-extra"));
|
|
10
|
-
const path_1 = __importDefault(require("path"));
|
|
11
|
-
const zlib_1 = __importDefault(require("zlib"));
|
|
12
|
-
const d = (0, debug_1.default)('electron-rebuild');
|
|
1
|
+
import crypto from 'node:crypto';
|
|
2
|
+
import debug from 'debug';
|
|
3
|
+
import fs from 'graceful-fs';
|
|
4
|
+
import path from 'node:path';
|
|
5
|
+
import zlib from 'node:zlib';
|
|
6
|
+
import { promisifiedGracefulFs } from './promisifiedGracefulFs.js';
|
|
7
|
+
const d = debug('electron-rebuild');
|
|
13
8
|
// Update this number if you change the caching logic to ensure no bad cache hits
|
|
14
9
|
const ELECTRON_REBUILD_CACHE_ID = 1;
|
|
15
10
|
class Snap {
|
|
11
|
+
hash;
|
|
12
|
+
data;
|
|
16
13
|
constructor(hash, data) {
|
|
17
14
|
this.hash = hash;
|
|
18
15
|
this.data = data;
|
|
@@ -20,17 +17,17 @@ class Snap {
|
|
|
20
17
|
}
|
|
21
18
|
const takeSnapshot = async (dir, relativeTo = dir) => {
|
|
22
19
|
const snap = {};
|
|
23
|
-
await Promise.all((await
|
|
20
|
+
await Promise.all((await promisifiedGracefulFs.readdir(dir)).map(async (child) => {
|
|
24
21
|
if (child === 'node_modules')
|
|
25
22
|
return;
|
|
26
|
-
const childPath =
|
|
27
|
-
const relative =
|
|
28
|
-
if ((await
|
|
23
|
+
const childPath = path.resolve(dir, child);
|
|
24
|
+
const relative = path.relative(relativeTo, childPath);
|
|
25
|
+
if ((await fs.promises.stat(childPath)).isDirectory()) {
|
|
29
26
|
snap[relative] = await takeSnapshot(childPath, relativeTo);
|
|
30
27
|
}
|
|
31
28
|
else {
|
|
32
|
-
const data = await
|
|
33
|
-
snap[relative] = new Snap(
|
|
29
|
+
const data = await promisifiedGracefulFs.readFile(childPath);
|
|
30
|
+
snap[relative] = new Snap(crypto.createHash('SHA256').update(data).digest('hex'), data);
|
|
34
31
|
}
|
|
35
32
|
}));
|
|
36
33
|
return snap;
|
|
@@ -38,11 +35,11 @@ const takeSnapshot = async (dir, relativeTo = dir) => {
|
|
|
38
35
|
const writeSnapshot = async (diff, dir) => {
|
|
39
36
|
for (const key in diff) {
|
|
40
37
|
if (diff[key] instanceof Snap) {
|
|
41
|
-
await
|
|
42
|
-
await
|
|
38
|
+
await fs.promises.mkdir(path.dirname(path.resolve(dir, key)), { recursive: true });
|
|
39
|
+
await promisifiedGracefulFs.writeFile(path.resolve(dir, key), diff[key].data);
|
|
43
40
|
}
|
|
44
41
|
else {
|
|
45
|
-
await
|
|
42
|
+
await fs.promises.mkdir(path.resolve(dir, key), { recursive: true });
|
|
46
43
|
await writeSnapshot(diff[key], dir);
|
|
47
44
|
}
|
|
48
45
|
}
|
|
@@ -79,26 +76,24 @@ const unserialize = (jsonReady) => {
|
|
|
79
76
|
}
|
|
80
77
|
return snap;
|
|
81
78
|
};
|
|
82
|
-
const cacheModuleState = async (dir, cachePath, key) => {
|
|
79
|
+
export const cacheModuleState = async (dir, cachePath, key) => {
|
|
83
80
|
const snap = await takeSnapshot(dir);
|
|
84
81
|
const moduleBuffer = Buffer.from(JSON.stringify(serialize(snap)));
|
|
85
|
-
const zipped = await new Promise(resolve =>
|
|
86
|
-
await
|
|
87
|
-
await
|
|
82
|
+
const zipped = await new Promise(resolve => zlib.gzip(moduleBuffer, (_, result) => resolve(result)));
|
|
83
|
+
await fs.promises.mkdir(cachePath, { recursive: true });
|
|
84
|
+
await promisifiedGracefulFs.writeFile(path.resolve(cachePath, key), zipped);
|
|
88
85
|
};
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
if (await fs_extra_1.default.pathExists(path_1.default.resolve(cachePath, key))) {
|
|
86
|
+
export const lookupModuleState = async (cachePath, key) => {
|
|
87
|
+
if (fs.existsSync(path.resolve(cachePath, key))) {
|
|
92
88
|
return async function applyDiff(dir) {
|
|
93
|
-
const zipped = await
|
|
94
|
-
const unzipped = await new Promise(resolve => {
|
|
89
|
+
const zipped = await promisifiedGracefulFs.readFile(path.resolve(cachePath, key));
|
|
90
|
+
const unzipped = await new Promise(resolve => { zlib.gunzip(zipped, (_, result) => resolve(result)); });
|
|
95
91
|
const diff = unserialize(JSON.parse(unzipped.toString()));
|
|
96
92
|
await writeSnapshot(diff, dir);
|
|
97
93
|
};
|
|
98
94
|
}
|
|
99
95
|
return false;
|
|
100
96
|
};
|
|
101
|
-
exports.lookupModuleState = lookupModuleState;
|
|
102
97
|
function dHashTree(tree, hash) {
|
|
103
98
|
for (const key of Object.keys(tree).sort()) {
|
|
104
99
|
hash.update(key);
|
|
@@ -111,10 +106,10 @@ function dHashTree(tree, hash) {
|
|
|
111
106
|
}
|
|
112
107
|
}
|
|
113
108
|
async function hashDirectory(dir, relativeTo) {
|
|
114
|
-
relativeTo
|
|
109
|
+
relativeTo ??= dir;
|
|
115
110
|
d('hashing dir', dir);
|
|
116
111
|
const dirTree = {};
|
|
117
|
-
await Promise.all((await
|
|
112
|
+
await Promise.all((await promisifiedGracefulFs.readdir(dir)).map(async (child) => {
|
|
118
113
|
d('found child', child, 'in dir', dir);
|
|
119
114
|
// Ignore output directories
|
|
120
115
|
if (dir === relativeTo && (child === 'build' || child === 'bin'))
|
|
@@ -122,23 +117,23 @@ async function hashDirectory(dir, relativeTo) {
|
|
|
122
117
|
// Don't hash nested node_modules
|
|
123
118
|
if (child === 'node_modules')
|
|
124
119
|
return;
|
|
125
|
-
const childPath =
|
|
120
|
+
const childPath = path.resolve(dir, child);
|
|
126
121
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
127
|
-
const relative =
|
|
128
|
-
if ((await
|
|
122
|
+
const relative = path.relative(relativeTo, childPath);
|
|
123
|
+
if ((await fs.promises.stat(childPath)).isDirectory()) {
|
|
129
124
|
dirTree[relative] = await hashDirectory(childPath, relativeTo);
|
|
130
125
|
}
|
|
131
126
|
else {
|
|
132
|
-
dirTree[relative] =
|
|
127
|
+
dirTree[relative] = crypto.createHash('SHA256').update(await promisifiedGracefulFs.readFile(childPath)).digest('hex');
|
|
133
128
|
}
|
|
134
129
|
}));
|
|
135
130
|
return dirTree;
|
|
136
131
|
}
|
|
137
|
-
async function generateCacheKey(opts) {
|
|
132
|
+
export async function generateCacheKey(opts) {
|
|
138
133
|
const tree = await hashDirectory(opts.modulePath);
|
|
139
|
-
const hasher =
|
|
134
|
+
const hasher = crypto.createHash('SHA256')
|
|
140
135
|
.update(`${ELECTRON_REBUILD_CACHE_ID}`)
|
|
141
|
-
.update(
|
|
136
|
+
.update(path.basename(opts.modulePath))
|
|
142
137
|
.update(opts.ABI)
|
|
143
138
|
.update(opts.arch)
|
|
144
139
|
.update(opts.platform)
|
|
@@ -150,5 +145,4 @@ async function generateCacheKey(opts) {
|
|
|
150
145
|
d('calculated hash of', opts.modulePath, 'to be', hash);
|
|
151
146
|
return hash;
|
|
152
147
|
}
|
|
153
|
-
exports.generateCacheKey = generateCacheKey;
|
|
154
148
|
//# sourceMappingURL=cache.js.map
|
package/lib/cache.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../src/cache.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../src/cache.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,aAAa,CAAC;AAC7B,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAEnE,MAAM,CAAC,GAAG,KAAK,CAAC,kBAAkB,CAAC,CAAC;AAEpC,iFAAiF;AACjF,MAAM,yBAAyB,GAAG,CAAC,CAAC;AAEpC,MAAM,IAAI;IACW;IAAqB;IAAxC,YAAmB,IAAY,EAAS,IAAY;QAAjC,SAAI,GAAJ,IAAI,CAAQ;QAAS,SAAI,GAAJ,IAAI,CAAQ;IAAG,CAAC;CACzD;AAkBD,MAAM,YAAY,GAAG,KAAK,EAAE,GAAW,EAAE,UAAU,GAAG,GAAG,EAAqB,EAAE;IAC9E,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,qBAAqB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;QAC/E,IAAI,KAAK,KAAK,cAAc;YAAE,OAAO;QACrC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QACtD,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;YACtD,IAAI,CAAC,QAAQ,CAAC,GAAG,MAAM,YAAY,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;QAC7D,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,GAAG,MAAM,qBAAqB,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;YAC7D,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,IAAI,CACvB,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EACtD,IAAI,CACL,CAAC;QACJ,CAAC;IACH,CAAC,CAAC,CAAC,CAAC;IACJ,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,KAAK,EAAE,IAAc,EAAE,GAAW,EAAiB,EAAE;IACzE,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,IAAI,CAAC,GAAG,CAAC,YAAY,IAAI,EAAE,CAAC;YAC9B,MAAM,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACnF,MAAM,qBAAqB,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,EAAG,IAAI,CAAC,GAAG,CAAU,CAAC,IAAI,CAAC,CAAC;QAC1F,CAAC;aAAM,CAAC;YACN,MAAM,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACrE,MAAM,aAAa,CAAC,IAAI,CAAC,GAAG,CAAa,EAAE,GAAG,CAAC,CAAC;QAClD,CAAC;IACH,CAAC;AACH,CAAC,CAAC;AAEF,8DAA8D;AAC9D,MAAM,SAAS,GAAG,CAAC,IAAc,EAAO,EAAE;IACxC,8DAA8D;IAC9D,MAAM,SAAS,GAAQ,EAAE,CAAC;IAC1B,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,IAAI,CAAC,GAAG,CAAC,YAAY,IAAI,EAAE,CAAC;YAC9B,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAS,CAAC;YAC5B,SAAS,CAAC,GAAG,CAAC,GAAG;gBACf,QAAQ,EAAE,IAAI;gBACd,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;aAChC,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,SAAS,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAa,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAEF,8DAA8D;AAC9D,MAAM,WAAW,GAAG,CAAC,SAAc,EAAY,EAAE;IAC/C,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;QAC5B,IAAI,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC;YAC5B,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,IAAI,CAClB,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EACnB,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,CAC3C,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,EAAE,GAAW,EAAE,SAAiB,EAAE,GAAW,EAAiB,EAAE;IACnG,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,GAAG,CAAC,CAAC;IAErC,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClE,MAAM,MAAM,GAAG,MAAM,IAAI,OAAO,CAAS,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAC7G,MAAM,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACxD,MAAM,qBAAqB,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;AAC9E,CAAC,CAAC;AAIF,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,EAAE,SAAiB,EAAE,GAAW,EAAwC,EAAE;IAC9G,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC;QAChD,OAAO,KAAK,UAAU,SAAS,CAAC,GAAW;YACzC,MAAM,MAAM,GAAG,MAAM,qBAAqB,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC;YAClF,MAAM,QAAQ,GAAW,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAChH,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;YAC1D,MAAM,aAAa,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACjC,CAAC,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEF,SAAS,SAAS,CAAC,IAAc,EAAE,IAAiB;IAClD,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;QAC3C,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjB,IAAI,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,QAAQ,EAAE,CAAC;YAClC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAW,CAAC,CAAC;QACnC,CAAC;aAAM,CAAC;YACN,SAAS,CAAC,IAAI,CAAC,GAAG,CAAa,EAAE,IAAI,CAAC,CAAC;QACzC,CAAC;IACH,CAAC;AACH,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,GAAW,EAAE,UAAmB;IAC3D,UAAU,KAAK,GAAG,CAAC;IACnB,CAAC,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;IACtB,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,qBAAqB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;QAC/E,CAAC,CAAC,aAAa,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;QACvC,4BAA4B;QAC5B,IAAI,GAAG,KAAK,UAAU,IAAI,CAAC,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,KAAK,CAAC;YAAE,OAAO;QACzE,iCAAiC;QACjC,IAAI,KAAK,KAAK,cAAc;YAAE,OAAO;QAErC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC3C,oEAAoE;QACpE,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAW,EAAE,SAAS,CAAC,CAAC;QACvD,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;YACtD,OAAO,CAAC,QAAQ,CAAC,GAAG,MAAM,aAAa,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;QACjE,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,MAAM,qBAAqB,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACxH,CAAC;IACH,CAAC,CAAC,CAAC,CAAC;IAEJ,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,IAAkB;IACvD,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAClD,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC;SACvC,MAAM,CAAC,GAAG,yBAAyB,EAAE,CAAC;SACtC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;SACtC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;SAChB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;SACjB,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;SACrB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC;SAC1C,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;SACtB,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAChC,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACxB,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAClC,CAAC,CAAC,oBAAoB,EAAE,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IACxD,OAAO,IAAI,CAAC;AACd,CAAC"}
|
package/lib/clang-fetcher.js
CHANGED
|
@@ -1,42 +1,14 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
-
if (mod && mod.__esModule) return mod;
|
|
20
|
-
var result = {};
|
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
-
__setModuleDefault(result, mod);
|
|
23
|
-
return result;
|
|
24
|
-
};
|
|
25
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
-
};
|
|
28
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
-
exports.getClangEnvironmentVars = void 0;
|
|
30
|
-
const cp = __importStar(require("child_process"));
|
|
31
|
-
const debug_1 = __importDefault(require("debug"));
|
|
32
|
-
const fs = __importStar(require("fs-extra"));
|
|
33
|
-
const path = __importStar(require("path"));
|
|
34
|
-
const tar = __importStar(require("tar"));
|
|
35
|
-
const zlib = __importStar(require("zlib"));
|
|
36
|
-
const constants_1 = require("./constants");
|
|
37
|
-
const fetcher_1 = require("./fetcher");
|
|
38
|
-
const sysroot_fetcher_1 = require("./sysroot-fetcher");
|
|
39
|
-
const d = (0, debug_1.default)('electron-rebuild');
|
|
1
|
+
import cp from 'node:child_process';
|
|
2
|
+
import debug from 'debug';
|
|
3
|
+
import fs from 'graceful-fs';
|
|
4
|
+
import path from 'node:path';
|
|
5
|
+
import tar from 'tar';
|
|
6
|
+
import zlib from 'node:zlib';
|
|
7
|
+
import { ELECTRON_GYP_DIR } from './constants.js';
|
|
8
|
+
import { fetch } from './fetcher.js';
|
|
9
|
+
import { downloadLinuxSysroot } from './sysroot-fetcher.js';
|
|
10
|
+
import { promisifiedGracefulFs } from './promisifiedGracefulFs.js';
|
|
11
|
+
const d = debug('electron-rebuild');
|
|
40
12
|
const CDS_URL = 'https://commondatastorage.googleapis.com/chromium-browser-clang';
|
|
41
13
|
function getPlatformUrlPrefix(hostOS, hostArch) {
|
|
42
14
|
const prefixMap = {
|
|
@@ -60,7 +32,7 @@ function getSDKRoot() {
|
|
|
60
32
|
const output = cp.execFileSync('xcrun', ['--sdk', 'macosx', '--show-sdk-path']);
|
|
61
33
|
return output.toString().trim();
|
|
62
34
|
}
|
|
63
|
-
async function getClangEnvironmentVars(electronVersion, targetArch) {
|
|
35
|
+
export async function getClangEnvironmentVars(electronVersion, targetArch) {
|
|
64
36
|
const clangDownloadDir = await downloadClangVersion(electronVersion);
|
|
65
37
|
const clangDir = path.resolve(clangDownloadDir, 'bin');
|
|
66
38
|
const clangArgs = [];
|
|
@@ -69,11 +41,11 @@ async function getClangEnvironmentVars(electronVersion, targetArch) {
|
|
|
69
41
|
}
|
|
70
42
|
const gypArgs = [];
|
|
71
43
|
if (process.platform === 'win32') {
|
|
72
|
-
console.log(
|
|
44
|
+
console.log(await promisifiedGracefulFs.readdir(clangDir));
|
|
73
45
|
gypArgs.push(`/p:CLToolExe=clang-cl.exe`, `/p:CLToolPath=${clangDir}`);
|
|
74
46
|
}
|
|
75
47
|
if (process.platform === 'linux') {
|
|
76
|
-
const sysrootPath = await
|
|
48
|
+
const sysrootPath = await downloadLinuxSysroot(electronVersion, targetArch);
|
|
77
49
|
clangArgs.push('--sysroot', sysrootPath);
|
|
78
50
|
}
|
|
79
51
|
return {
|
|
@@ -84,7 +56,6 @@ async function getClangEnvironmentVars(electronVersion, targetArch) {
|
|
|
84
56
|
args: gypArgs,
|
|
85
57
|
};
|
|
86
58
|
}
|
|
87
|
-
exports.getClangEnvironmentVars = getClangEnvironmentVars;
|
|
88
59
|
function clangVersionFromRevision(update) {
|
|
89
60
|
const regex = /CLANG_REVISION = '([^']+)'\nCLANG_SUB_REVISION = (\d+)\n/g;
|
|
90
61
|
const clangVersionMatch = regex.exec(update);
|
|
@@ -103,39 +74,38 @@ function clangVersionFromSVN(update) {
|
|
|
103
74
|
}
|
|
104
75
|
async function downloadClangVersion(electronVersion) {
|
|
105
76
|
d('fetching clang for Electron:', electronVersion);
|
|
106
|
-
const clangDirPath = path.resolve(
|
|
107
|
-
if (
|
|
77
|
+
const clangDirPath = path.resolve(ELECTRON_GYP_DIR, `${electronVersion}-clang`);
|
|
78
|
+
if (fs.existsSync(path.resolve(clangDirPath, 'bin', 'clang')))
|
|
108
79
|
return clangDirPath;
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
const electronDeps = await (0, fetcher_1.fetch)(`https://raw.githubusercontent.com/electron/electron/v${electronVersion}/DEPS`, 'text');
|
|
80
|
+
await fs.promises.mkdir(ELECTRON_GYP_DIR, { recursive: true });
|
|
81
|
+
const electronDeps = await fetch(`https://raw.githubusercontent.com/electron/electron/v${electronVersion}/DEPS`, 'text');
|
|
112
82
|
const chromiumRevisionExtractor = /'chromium_version':\n\s+'([^']+)/g;
|
|
113
83
|
const chromiumRevisionMatch = chromiumRevisionExtractor.exec(electronDeps);
|
|
114
84
|
if (!chromiumRevisionMatch)
|
|
115
85
|
throw new Error('Failed to determine Chromium revision for given Electron version');
|
|
116
86
|
const chromiumRevision = chromiumRevisionMatch[1];
|
|
117
87
|
d('fetching clang for Chromium:', chromiumRevision);
|
|
118
|
-
const base64ClangUpdate = await
|
|
88
|
+
const base64ClangUpdate = await fetch(`https://chromium.googlesource.com/chromium/src.git/+/${chromiumRevision}/tools/clang/scripts/update.py?format=TEXT`, 'text');
|
|
119
89
|
const clangUpdate = Buffer.from(base64ClangUpdate, 'base64').toString('utf8');
|
|
120
90
|
const clangVersionString = clangVersionFromRevision(clangUpdate) || clangVersionFromSVN(clangUpdate);
|
|
121
91
|
if (!clangVersionString)
|
|
122
92
|
throw new Error('Failed to determine Clang revision from Electron version');
|
|
123
93
|
d('fetching clang:', clangVersionString);
|
|
124
94
|
const clangDownloadURL = getClangDownloadURL('clang', clangVersionString, process.platform, process.arch);
|
|
125
|
-
const contents = await
|
|
95
|
+
const contents = await fetch(clangDownloadURL, 'buffer');
|
|
126
96
|
d('deflating clang');
|
|
127
97
|
zlib.deflateSync(contents);
|
|
128
|
-
const tarPath = path.resolve(
|
|
129
|
-
if (
|
|
130
|
-
await fs.
|
|
131
|
-
await
|
|
132
|
-
await fs.
|
|
98
|
+
const tarPath = path.resolve(ELECTRON_GYP_DIR, `${electronVersion}-clang.tar`);
|
|
99
|
+
if (fs.existsSync(tarPath))
|
|
100
|
+
await fs.promises.rm(tarPath, { recursive: true, force: true });
|
|
101
|
+
await promisifiedGracefulFs.writeFile(tarPath, Buffer.from(contents));
|
|
102
|
+
await fs.promises.mkdir(clangDirPath, { recursive: true });
|
|
133
103
|
d('tar running on clang');
|
|
134
104
|
await tar.x({
|
|
135
105
|
file: tarPath,
|
|
136
106
|
cwd: clangDirPath,
|
|
137
107
|
});
|
|
138
|
-
await fs.
|
|
108
|
+
await fs.promises.rm(tarPath, { recursive: true, force: true });
|
|
139
109
|
d('cleaning up clang tar file');
|
|
140
110
|
return clangDirPath;
|
|
141
111
|
}
|
package/lib/clang-fetcher.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clang-fetcher.js","sourceRoot":"","sources":["../src/clang-fetcher.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"clang-fetcher.js","sourceRoot":"","sources":["../src/clang-fetcher.ts"],"names":[],"mappings":"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"}
|
package/lib/cli.js
CHANGED
|
@@ -1,41 +1,14 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
o[k2] = m[k];
|
|
13
|
-
}));
|
|
14
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
15
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
16
|
-
}) : function(o, v) {
|
|
17
|
-
o["default"] = v;
|
|
18
|
-
});
|
|
19
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
20
|
-
if (mod && mod.__esModule) return mod;
|
|
21
|
-
var result = {};
|
|
22
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
23
|
-
__setModuleDefault(result, mod);
|
|
24
|
-
return result;
|
|
25
|
-
};
|
|
26
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
27
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
28
|
-
};
|
|
29
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
30
|
-
const chalk_1 = __importDefault(require("chalk"));
|
|
31
|
-
const fs = __importStar(require("fs-extra"));
|
|
32
|
-
const path = __importStar(require("path"));
|
|
33
|
-
const ora = require("ora");
|
|
34
|
-
const yargs_1 = __importDefault(require("yargs/yargs"));
|
|
35
|
-
const search_module_1 = require("./search-module");
|
|
36
|
-
const electron_locator_1 = require("./electron-locator");
|
|
37
|
-
const rebuild_1 = require("./rebuild");
|
|
38
|
-
const argv = (0, yargs_1.default)(process.argv.slice(2)).version(false).options({
|
|
2
|
+
import chalk from 'chalk';
|
|
3
|
+
import fs from 'graceful-fs';
|
|
4
|
+
import path from 'node:path';
|
|
5
|
+
import ora from 'ora';
|
|
6
|
+
import yargs from 'yargs/yargs';
|
|
7
|
+
import { getProjectRootPath } from './search-module.js';
|
|
8
|
+
import { locateElectronModule } from './electron-locator.js';
|
|
9
|
+
import { rebuild } from './rebuild.js';
|
|
10
|
+
import { pathToFileURL } from 'node:url';
|
|
11
|
+
const argv = yargs(process.argv.slice(2)).version(false).options({
|
|
39
12
|
version: { alias: 'v', type: 'string', description: 'The version of Electron to build against' },
|
|
40
13
|
force: { alias: 'f', type: 'boolean', description: 'Force rebuilding modules, even if we would skip it otherwise' },
|
|
41
14
|
arch: { alias: 'a', type: 'string', description: "Override the target architecture to something other than your system's" },
|
|
@@ -62,34 +35,31 @@ const argv = (0, yargs_1.default)(process.argv.slice(2)).version(false).options(
|
|
|
62
35
|
.epilog('Copyright 2016-2021')
|
|
63
36
|
.parseSync();
|
|
64
37
|
if (process.argv.length === 3 && process.argv[2] === '--version') {
|
|
65
|
-
/* eslint-disable @typescript-eslint/no-var-requires */
|
|
66
38
|
try {
|
|
67
|
-
console.log('Electron Rebuild Version:',
|
|
39
|
+
console.log('Electron Rebuild Version:', (await import(pathToFileURL(path.resolve(import.meta.dirname, '../../package.json')).toString(), { with: { type: 'json' } })).default.version);
|
|
68
40
|
}
|
|
69
41
|
catch (err) {
|
|
70
|
-
console.log('Electron Rebuild Version:',
|
|
42
|
+
console.log('Electron Rebuild Version:', (await import(pathToFileURL(path.resolve(import.meta.dirname, '../package.json')).toString(), { with: { type: 'json' } })).default.version);
|
|
71
43
|
}
|
|
72
|
-
/* eslint-enable @typescript-eslint/no-var-requires */
|
|
73
44
|
process.exit(0);
|
|
74
45
|
}
|
|
75
46
|
const handler = (err) => {
|
|
76
|
-
console.error(
|
|
77
|
-
console.error(
|
|
47
|
+
console.error(chalk.red('\nAn unhandled error occurred inside electron-rebuild'));
|
|
48
|
+
console.error(chalk.red(`${err.message}\n\n${err.stack}`));
|
|
78
49
|
process.exit(-1);
|
|
79
50
|
};
|
|
80
51
|
process.on('uncaughtException', handler);
|
|
81
52
|
process.on('unhandledRejection', handler);
|
|
82
53
|
(async () => {
|
|
83
|
-
const projectRootPath = await
|
|
84
|
-
const electronModulePath = argv.e ? path.resolve(process.cwd(), argv.e) : await
|
|
54
|
+
const projectRootPath = await getProjectRootPath(process.cwd());
|
|
55
|
+
const electronModulePath = argv.e ? path.resolve(process.cwd(), argv.e) : await locateElectronModule(projectRootPath);
|
|
85
56
|
let electronModuleVersion = argv.v;
|
|
86
57
|
if (!electronModuleVersion) {
|
|
87
58
|
try {
|
|
88
59
|
if (!electronModulePath)
|
|
89
60
|
throw new Error('Prebuilt electron module not found');
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
electronModuleVersion = pkgJson.version;
|
|
61
|
+
const pkgJson = await import(pathToFileURL(path.join(electronModulePath, 'package.json')).toString(), { with: { type: 'json' } });
|
|
62
|
+
electronModuleVersion = pkgJson.default.version;
|
|
93
63
|
}
|
|
94
64
|
catch (e) {
|
|
95
65
|
throw new Error(`Unable to find electron's version number, either install it or specify an explicit version`);
|
|
@@ -100,11 +70,11 @@ process.on('unhandledRejection', handler);
|
|
|
100
70
|
// NB: We assume here that we're going to rebuild the immediate parent's
|
|
101
71
|
// node modules, which might not always be the case but it's at least a
|
|
102
72
|
// good guess
|
|
103
|
-
rootDirectory = path.resolve(
|
|
104
|
-
if (!
|
|
73
|
+
rootDirectory = path.resolve(import.meta.dirname, '../../..');
|
|
74
|
+
if (!fs.existsSync(rootDirectory) || !fs.existsSync(path.resolve(rootDirectory, 'package.json'))) {
|
|
105
75
|
// Then we try the CWD
|
|
106
76
|
rootDirectory = process.cwd();
|
|
107
|
-
if (!
|
|
77
|
+
if (!fs.existsSync(rootDirectory) || !fs.existsSync(path.resolve(rootDirectory, 'package.json'))) {
|
|
108
78
|
throw new Error('Unable to find parent node_modules directory, specify it via --module-dir, E.g. "--module-dir ." for the current directory');
|
|
109
79
|
}
|
|
110
80
|
}
|
|
@@ -129,7 +99,7 @@ process.on('unhandledRejection', handler);
|
|
|
129
99
|
rebuildSpinner.text = `Building module: ${lastModuleName}, Completed: ${modulesDone}`;
|
|
130
100
|
}
|
|
131
101
|
};
|
|
132
|
-
const rebuilder =
|
|
102
|
+
const rebuilder = rebuild({
|
|
133
103
|
buildPath: rootDirectory,
|
|
134
104
|
electronVersion: electronModuleVersion,
|
|
135
105
|
arch: argv.a || process.arch,
|