@electron/rebuild 4.0.3 → 4.0.5
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 +4 -6
- package/lib/arch.js +1 -3
- package/lib/arch.js.map +1 -1
- package/lib/cache.js +18 -13
- package/lib/cache.js.map +1 -1
- package/lib/clang-fetcher.js +14 -21
- package/lib/clang-fetcher.js.map +1 -1
- package/lib/cli.js +122 -78
- package/lib/cli.js.map +1 -1
- package/lib/detect-libc.d.ts +8 -0
- package/lib/detect-libc.js +24 -0
- package/lib/detect-libc.js.map +1 -0
- package/lib/electron-locator.js +5 -4
- package/lib/electron-locator.js.map +1 -1
- package/lib/fetcher.d.ts +1 -3
- package/lib/fetcher.js +11 -11
- package/lib/fetcher.js.map +1 -1
- package/lib/module-rebuilder.js +9 -9
- package/lib/module-rebuilder.js.map +1 -1
- package/lib/module-type/index.js +2 -2
- package/lib/module-type/index.js.map +1 -1
- package/lib/module-type/node-gyp/node-gyp.js +16 -13
- package/lib/module-type/node-gyp/node-gyp.js.map +1 -1
- package/lib/module-type/node-gyp/worker.js +1 -1
- package/lib/module-type/node-gyp/worker.js.map +1 -1
- package/lib/module-type/node-pre-gyp.js +2 -2
- package/lib/module-type/node-pre-gyp.js.map +1 -1
- package/lib/module-type/prebuild-install.js +5 -11
- package/lib/module-type/prebuild-install.js.map +1 -1
- package/lib/module-type/prebuildify.js +2 -2
- package/lib/module-type/prebuildify.js.map +1 -1
- package/lib/module-walker.d.ts +1 -1
- package/lib/module-walker.js +6 -6
- package/lib/module-walker.js.map +1 -1
- package/lib/node-api.js +2 -2
- package/lib/node-api.js.map +1 -1
- package/lib/prebuild-shim.js +1 -1
- package/lib/prebuild-shim.js.map +1 -1
- package/lib/read-package-json.js +2 -2
- package/lib/read-package-json.js.map +1 -1
- package/lib/rebuild.d.ts +0 -2
- package/lib/rebuild.js +14 -8
- package/lib/rebuild.js.map +1 -1
- package/lib/search-module.js +1 -1
- package/lib/search-module.js.map +1 -1
- package/lib/sysroot-fetcher.js +6 -7
- package/lib/sysroot-fetcher.js.map +1 -1
- package/lib/types.d.ts +0 -2
- package/package.json +25 -36
- package/lib/promisifiedGracefulFs.d.ts +0 -3
- package/lib/promisifiedGracefulFs.js +0 -9
- package/lib/promisifiedGracefulFs.js.map +0 -1
package/README.md
CHANGED
|
@@ -99,20 +99,18 @@ This package is automatically used with Electron Forge when packaging an Electro
|
|
|
99
99
|
|
|
100
100
|
### How can I integrate this into [Electron Packager](https://github.com/electron/packager)?
|
|
101
101
|
|
|
102
|
-
electron-rebuild provides a function compatible with the [`afterCopy` hook](https://
|
|
102
|
+
electron-rebuild provides a function compatible with the [`afterCopy` hook](https://packages.electronjs.org/packager/v19.0.5/interfaces/Options.html#aftercopy)
|
|
103
103
|
for Electron Packager. For example:
|
|
104
104
|
|
|
105
105
|
```javascript
|
|
106
|
-
import packager from "@electron/packager";
|
|
106
|
+
import { packager } from "@electron/packager";
|
|
107
107
|
import { rebuild } from "@electron/rebuild";
|
|
108
108
|
|
|
109
109
|
packager({
|
|
110
110
|
// … other options
|
|
111
111
|
afterCopy: [
|
|
112
|
-
(buildPath, electronVersion,
|
|
113
|
-
rebuild({ buildPath, electronVersion, arch })
|
|
114
|
-
.then(() => callback())
|
|
115
|
-
.catch((error) => callback(error));
|
|
112
|
+
async ({ buildPath, electronVersion, arch }) => {
|
|
113
|
+
await rebuild({ buildPath, electronVersion, arch });
|
|
116
114
|
},
|
|
117
115
|
],
|
|
118
116
|
// … other options
|
package/lib/arch.js
CHANGED
|
@@ -5,9 +5,7 @@ import { execSync } from 'node:child_process';
|
|
|
5
5
|
* Copied from `@electron/get`.
|
|
6
6
|
*/
|
|
7
7
|
export function uname() {
|
|
8
|
-
return execSync('uname -m')
|
|
9
|
-
.toString()
|
|
10
|
-
.trim();
|
|
8
|
+
return execSync('uname -m').toString().trim();
|
|
11
9
|
}
|
|
12
10
|
/**
|
|
13
11
|
* Generates an architecture name that would be used in an Electron or Node.js
|
package/lib/arch.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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
|
|
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,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC;AAChD,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.js
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import crypto from 'node:crypto';
|
|
2
2
|
import debug from 'debug';
|
|
3
|
-
import fs from '
|
|
3
|
+
import fs from 'node:fs';
|
|
4
4
|
import path from 'node:path';
|
|
5
5
|
import zlib from 'node:zlib';
|
|
6
|
-
import { promisifiedGracefulFs } from './promisifiedGracefulFs.js';
|
|
7
6
|
const d = debug('electron-rebuild');
|
|
8
7
|
// Update this number if you change the caching logic to ensure no bad cache hits
|
|
9
8
|
const ELECTRON_REBUILD_CACHE_ID = 1;
|
|
@@ -17,7 +16,7 @@ class Snap {
|
|
|
17
16
|
}
|
|
18
17
|
const takeSnapshot = async (dir, relativeTo = dir) => {
|
|
19
18
|
const snap = {};
|
|
20
|
-
await Promise.all((await
|
|
19
|
+
await Promise.all((await fs.promises.readdir(dir)).map(async (child) => {
|
|
21
20
|
if (child === 'node_modules')
|
|
22
21
|
return;
|
|
23
22
|
const childPath = path.resolve(dir, child);
|
|
@@ -26,7 +25,7 @@ const takeSnapshot = async (dir, relativeTo = dir) => {
|
|
|
26
25
|
snap[relative] = await takeSnapshot(childPath, relativeTo);
|
|
27
26
|
}
|
|
28
27
|
else {
|
|
29
|
-
const data = await
|
|
28
|
+
const data = await fs.promises.readFile(childPath);
|
|
30
29
|
snap[relative] = new Snap(crypto.createHash('SHA256').update(data).digest('hex'), data);
|
|
31
30
|
}
|
|
32
31
|
}));
|
|
@@ -36,7 +35,7 @@ const writeSnapshot = async (diff, dir) => {
|
|
|
36
35
|
for (const key in diff) {
|
|
37
36
|
if (diff[key] instanceof Snap) {
|
|
38
37
|
await fs.promises.mkdir(path.dirname(path.resolve(dir, key)), { recursive: true });
|
|
39
|
-
await
|
|
38
|
+
await fs.promises.writeFile(path.resolve(dir, key), diff[key].data);
|
|
40
39
|
}
|
|
41
40
|
else {
|
|
42
41
|
await fs.promises.mkdir(path.resolve(dir, key), { recursive: true });
|
|
@@ -54,7 +53,7 @@ const serialize = (snap) => {
|
|
|
54
53
|
jsonReady[key] = {
|
|
55
54
|
__isSnap: true,
|
|
56
55
|
hash: s.hash,
|
|
57
|
-
data: s.data.toString('base64')
|
|
56
|
+
data: s.data.toString('base64'),
|
|
58
57
|
};
|
|
59
58
|
}
|
|
60
59
|
else {
|
|
@@ -79,15 +78,17 @@ const unserialize = (jsonReady) => {
|
|
|
79
78
|
export const cacheModuleState = async (dir, cachePath, key) => {
|
|
80
79
|
const snap = await takeSnapshot(dir);
|
|
81
80
|
const moduleBuffer = Buffer.from(JSON.stringify(serialize(snap)));
|
|
82
|
-
const zipped = await new Promise(resolve => zlib.gzip(moduleBuffer, (_, result) => resolve(result)));
|
|
81
|
+
const zipped = await new Promise((resolve) => zlib.gzip(moduleBuffer, (_, result) => resolve(result)));
|
|
83
82
|
await fs.promises.mkdir(cachePath, { recursive: true });
|
|
84
|
-
await
|
|
83
|
+
await fs.promises.writeFile(path.resolve(cachePath, key), zipped);
|
|
85
84
|
};
|
|
86
85
|
export const lookupModuleState = async (cachePath, key) => {
|
|
87
86
|
if (fs.existsSync(path.resolve(cachePath, key))) {
|
|
88
87
|
return async function applyDiff(dir) {
|
|
89
|
-
const zipped = await
|
|
90
|
-
const unzipped = await new Promise(resolve => {
|
|
88
|
+
const zipped = await fs.promises.readFile(path.resolve(cachePath, key));
|
|
89
|
+
const unzipped = await new Promise((resolve) => {
|
|
90
|
+
zlib.gunzip(zipped, (_, result) => resolve(result));
|
|
91
|
+
});
|
|
91
92
|
const diff = unserialize(JSON.parse(unzipped.toString()));
|
|
92
93
|
await writeSnapshot(diff, dir);
|
|
93
94
|
};
|
|
@@ -109,7 +110,7 @@ async function hashDirectory(dir, relativeTo) {
|
|
|
109
110
|
relativeTo ??= dir;
|
|
110
111
|
d('hashing dir', dir);
|
|
111
112
|
const dirTree = {};
|
|
112
|
-
await Promise.all((await
|
|
113
|
+
await Promise.all((await fs.promises.readdir(dir)).map(async (child) => {
|
|
113
114
|
d('found child', child, 'in dir', dir);
|
|
114
115
|
// Ignore output directories
|
|
115
116
|
if (dir === relativeTo && (child === 'build' || child === 'bin'))
|
|
@@ -124,14 +125,18 @@ async function hashDirectory(dir, relativeTo) {
|
|
|
124
125
|
dirTree[relative] = await hashDirectory(childPath, relativeTo);
|
|
125
126
|
}
|
|
126
127
|
else {
|
|
127
|
-
dirTree[relative] = crypto
|
|
128
|
+
dirTree[relative] = crypto
|
|
129
|
+
.createHash('SHA256')
|
|
130
|
+
.update(await fs.promises.readFile(childPath))
|
|
131
|
+
.digest('hex');
|
|
128
132
|
}
|
|
129
133
|
}));
|
|
130
134
|
return dirTree;
|
|
131
135
|
}
|
|
132
136
|
export async function generateCacheKey(opts) {
|
|
133
137
|
const tree = await hashDirectory(opts.modulePath);
|
|
134
|
-
const hasher = crypto
|
|
138
|
+
const hasher = crypto
|
|
139
|
+
.createHash('SHA256')
|
|
135
140
|
.update(`${ELECTRON_REBUILD_CACHE_ID}`)
|
|
136
141
|
.update(path.basename(opts.modulePath))
|
|
137
142
|
.update(opts.ABI)
|
package/lib/cache.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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,
|
|
1
|
+
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../src/cache.ts"],"names":[],"mappings":"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"}
|
package/lib/clang-fetcher.js
CHANGED
|
@@ -1,20 +1,18 @@
|
|
|
1
1
|
import cp from 'node:child_process';
|
|
2
2
|
import debug from 'debug';
|
|
3
|
-
import fs from '
|
|
3
|
+
import fs from 'node:fs';
|
|
4
4
|
import path from 'node:path';
|
|
5
|
-
import * as tar from 'tar';
|
|
6
|
-
import zlib from 'node:zlib';
|
|
7
5
|
import { ELECTRON_GYP_DIR } from './constants.js';
|
|
8
|
-
import {
|
|
6
|
+
import { fetchUrl } from './fetcher.js';
|
|
9
7
|
import { downloadLinuxSysroot } from './sysroot-fetcher.js';
|
|
10
|
-
import {
|
|
8
|
+
import { spawn } from '@malept/cross-spawn-promise';
|
|
11
9
|
const d = debug('electron-rebuild');
|
|
12
10
|
const CDS_URL = 'https://commondatastorage.googleapis.com/chromium-browser-clang';
|
|
13
11
|
function getPlatformUrlPrefix(hostOS, hostArch) {
|
|
14
12
|
const prefixMap = {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
13
|
+
linux: 'Linux_x64',
|
|
14
|
+
darwin: 'Mac',
|
|
15
|
+
win32: 'Win',
|
|
18
16
|
};
|
|
19
17
|
let prefix = prefixMap[hostOS];
|
|
20
18
|
if (prefix === 'Mac' && hostArch === 'arm64') {
|
|
@@ -41,7 +39,7 @@ export async function getClangEnvironmentVars(electronVersion, targetArch) {
|
|
|
41
39
|
}
|
|
42
40
|
const gypArgs = [];
|
|
43
41
|
if (process.platform === 'win32') {
|
|
44
|
-
console.log(await
|
|
42
|
+
console.log(await fs.promises.readdir(clangDir));
|
|
45
43
|
gypArgs.push(`/p:CLToolExe=clang-cl.exe`, `/p:CLToolPath=${clangDir}`);
|
|
46
44
|
}
|
|
47
45
|
if (process.platform === 'linux') {
|
|
@@ -78,33 +76,28 @@ async function downloadClangVersion(electronVersion) {
|
|
|
78
76
|
if (fs.existsSync(path.resolve(clangDirPath, 'bin', 'clang')))
|
|
79
77
|
return clangDirPath;
|
|
80
78
|
await fs.promises.mkdir(ELECTRON_GYP_DIR, { recursive: true });
|
|
81
|
-
const electronDeps = await
|
|
79
|
+
const electronDeps = await fetchUrl(`https://raw.githubusercontent.com/electron/electron/v${electronVersion}/DEPS`, 'text');
|
|
82
80
|
const chromiumRevisionExtractor = /'chromium_version':\n\s+'([^']+)/g;
|
|
83
81
|
const chromiumRevisionMatch = chromiumRevisionExtractor.exec(electronDeps);
|
|
84
82
|
if (!chromiumRevisionMatch)
|
|
85
83
|
throw new Error('Failed to determine Chromium revision for given Electron version');
|
|
86
84
|
const chromiumRevision = chromiumRevisionMatch[1];
|
|
87
85
|
d('fetching clang for Chromium:', chromiumRevision);
|
|
88
|
-
const base64ClangUpdate = await
|
|
86
|
+
const base64ClangUpdate = await fetchUrl(`https://chromium.googlesource.com/chromium/src.git/+/${chromiumRevision}/tools/clang/scripts/update.py?format=TEXT`, 'text');
|
|
89
87
|
const clangUpdate = Buffer.from(base64ClangUpdate, 'base64').toString('utf8');
|
|
90
88
|
const clangVersionString = clangVersionFromRevision(clangUpdate) || clangVersionFromSVN(clangUpdate);
|
|
91
89
|
if (!clangVersionString)
|
|
92
90
|
throw new Error('Failed to determine Clang revision from Electron version');
|
|
93
91
|
d('fetching clang:', clangVersionString);
|
|
94
92
|
const clangDownloadURL = getClangDownloadURL('clang', clangVersionString, process.platform, process.arch);
|
|
95
|
-
const contents = await
|
|
96
|
-
|
|
97
|
-
zlib.deflateSync(contents);
|
|
98
|
-
const tarPath = path.resolve(ELECTRON_GYP_DIR, `${electronVersion}-clang.tar`);
|
|
93
|
+
const contents = await fetchUrl(clangDownloadURL, 'buffer');
|
|
94
|
+
const tarPath = path.resolve(ELECTRON_GYP_DIR, `${electronVersion}-clang.tgz`);
|
|
99
95
|
if (fs.existsSync(tarPath))
|
|
100
96
|
await fs.promises.rm(tarPath, { recursive: true, force: true });
|
|
101
|
-
await
|
|
97
|
+
await fs.promises.writeFile(tarPath, contents);
|
|
102
98
|
await fs.promises.mkdir(clangDirPath, { recursive: true });
|
|
103
|
-
d('
|
|
104
|
-
await tar
|
|
105
|
-
file: tarPath,
|
|
106
|
-
cwd: clangDirPath,
|
|
107
|
-
});
|
|
99
|
+
d('extracting clang');
|
|
100
|
+
await spawn('tar', ['-xf', tarPath, '-C', clangDirPath], { stdio: 'ignore' });
|
|
108
101
|
await fs.promises.rm(tarPath, { recursive: true, force: true });
|
|
109
102
|
d('cleaning up clang tar file');
|
|
110
103
|
return clangDirPath;
|
package/lib/clang-fetcher.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clang-fetcher.js","sourceRoot":"","sources":["../src/clang-fetcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,oBAAoB,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,
|
|
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,59 +1,114 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import fs from '
|
|
2
|
+
import fs from 'node:fs';
|
|
3
3
|
import path from 'node:path';
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
import yargs from 'yargs/yargs';
|
|
4
|
+
import { parseArgs, styleText } from 'node:util';
|
|
5
|
+
import { pathToFileURL } from 'node:url';
|
|
7
6
|
import { getProjectRootPath } from './search-module.js';
|
|
8
7
|
import { locateElectronModule } from './electron-locator.js';
|
|
9
8
|
import { rebuild } from './rebuild.js';
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
9
|
+
const options = {
|
|
10
|
+
version: { short: 'v', type: 'string', description: 'The version of Electron to build against' },
|
|
11
|
+
force: {
|
|
12
|
+
short: 'f',
|
|
13
|
+
type: 'boolean',
|
|
14
|
+
description: 'Force rebuilding modules, even if we would skip it otherwise',
|
|
15
|
+
},
|
|
16
|
+
arch: {
|
|
17
|
+
short: 'a',
|
|
18
|
+
type: 'string',
|
|
19
|
+
description: "Override the target architecture to something other than your system's",
|
|
20
|
+
},
|
|
21
|
+
platform: {
|
|
22
|
+
type: 'string',
|
|
23
|
+
description: "Override the target platform to something other than your system's",
|
|
24
|
+
},
|
|
25
|
+
'module-dir': {
|
|
26
|
+
short: 'm',
|
|
27
|
+
type: 'string',
|
|
28
|
+
description: 'The path to the node_modules directory to rebuild',
|
|
29
|
+
},
|
|
30
|
+
'which-module': {
|
|
31
|
+
short: 'w',
|
|
32
|
+
type: 'string',
|
|
33
|
+
description: 'A specific module to build, or comma separated list of modules. Modules will only be rebuilt if they also match the types of dependencies being rebuilt (see --types).',
|
|
34
|
+
},
|
|
35
|
+
only: {
|
|
36
|
+
short: 'o',
|
|
37
|
+
type: 'string',
|
|
38
|
+
description: 'Only build specified module, or comma separated list of modules. All others are ignored.',
|
|
39
|
+
},
|
|
40
|
+
'electron-prebuilt-dir': {
|
|
41
|
+
short: 'e',
|
|
42
|
+
type: 'string',
|
|
43
|
+
description: 'The path to the prebuilt electron module',
|
|
44
|
+
},
|
|
45
|
+
'dist-url': { short: 'd', type: 'string', description: 'Custom header tarball URL' },
|
|
46
|
+
types: {
|
|
47
|
+
short: 't',
|
|
48
|
+
type: 'string',
|
|
49
|
+
description: 'The types of dependencies to rebuild. Comma separated list of "prod", "dev" and "optional". Default is "prod,optional"',
|
|
50
|
+
},
|
|
51
|
+
parallel: {
|
|
52
|
+
short: 'p',
|
|
53
|
+
type: 'boolean',
|
|
54
|
+
description: 'Rebuild in parallel, this is enabled by default on macOS and Linux',
|
|
55
|
+
},
|
|
56
|
+
sequential: {
|
|
57
|
+
short: 's',
|
|
58
|
+
type: 'boolean',
|
|
59
|
+
description: 'Rebuild modules sequentially, this is enabled by default on Windows',
|
|
60
|
+
},
|
|
61
|
+
debug: { short: 'b', type: 'boolean', description: 'Build debug version of modules' },
|
|
62
|
+
'prebuild-tag-prefix': {
|
|
63
|
+
type: 'string',
|
|
64
|
+
description: 'GitHub tag prefix passed to prebuild-install. Default is "v"',
|
|
65
|
+
},
|
|
66
|
+
'force-abi': {
|
|
67
|
+
type: 'string',
|
|
68
|
+
description: 'Override the ABI version for the version of Electron you are targeting. Only use when targeting Nightly releases.',
|
|
69
|
+
},
|
|
70
|
+
'use-electron-clang': {
|
|
71
|
+
type: 'boolean',
|
|
72
|
+
description: 'Use the clang executable that Electron used when building its binary. This will guarantee compiler compatibility',
|
|
73
|
+
},
|
|
30
74
|
'disable-pre-gyp-copy': { type: 'boolean', description: 'Disables the pre-gyp copy step' },
|
|
31
|
-
'build-from-source': {
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
75
|
+
'build-from-source': {
|
|
76
|
+
type: 'boolean',
|
|
77
|
+
description: 'Skips prebuild download and rebuilds module from source.',
|
|
78
|
+
},
|
|
79
|
+
help: { short: 'h', type: 'boolean', description: 'Show help' },
|
|
80
|
+
};
|
|
81
|
+
const { values: argv } = parseArgs({ options, allowPositionals: true });
|
|
82
|
+
if (argv.help) {
|
|
83
|
+
console.log('Usage: electron-rebuild --version [version] --module-dir [path]\n\nOptions:');
|
|
84
|
+
for (const [name, opt] of Object.entries(options)) {
|
|
85
|
+
const short = 'short' in opt ? `-${opt.short}, ` : ' ';
|
|
86
|
+
console.log(` ${short}--${name.padEnd(22)} ${opt.description}`);
|
|
87
|
+
}
|
|
88
|
+
process.exit(0);
|
|
89
|
+
}
|
|
37
90
|
if (process.argv.length === 3 && process.argv[2] === '--version') {
|
|
38
91
|
try {
|
|
39
92
|
console.log('Electron Rebuild Version:', (await import(pathToFileURL(path.resolve(import.meta.dirname, '../../package.json')).toString(), { with: { type: 'json' } })).default.version);
|
|
40
93
|
}
|
|
41
|
-
catch
|
|
94
|
+
catch {
|
|
42
95
|
console.log('Electron Rebuild Version:', (await import(pathToFileURL(path.resolve(import.meta.dirname, '../package.json')).toString(), { with: { type: 'json' } })).default.version);
|
|
43
96
|
}
|
|
44
97
|
process.exit(0);
|
|
45
98
|
}
|
|
46
99
|
const handler = (err) => {
|
|
47
|
-
console.error(
|
|
48
|
-
console.error(
|
|
100
|
+
console.error(styleText('red', '\nAn unhandled error occurred inside electron-rebuild'));
|
|
101
|
+
console.error(styleText('red', `${err.message}\n\n${err.stack}`));
|
|
49
102
|
process.exit(-1);
|
|
50
103
|
};
|
|
51
104
|
process.on('uncaughtException', handler);
|
|
52
105
|
process.on('unhandledRejection', handler);
|
|
53
|
-
(async () => {
|
|
106
|
+
void (async () => {
|
|
54
107
|
const projectRootPath = await getProjectRootPath(process.cwd());
|
|
55
|
-
const electronModulePath = argv
|
|
56
|
-
|
|
108
|
+
const electronModulePath = argv['electron-prebuilt-dir']
|
|
109
|
+
? path.resolve(process.cwd(), argv['electron-prebuilt-dir'])
|
|
110
|
+
: await locateElectronModule(projectRootPath);
|
|
111
|
+
let electronModuleVersion = argv.version;
|
|
57
112
|
if (!electronModuleVersion) {
|
|
58
113
|
try {
|
|
59
114
|
if (!electronModulePath)
|
|
@@ -61,20 +116,22 @@ process.on('unhandledRejection', handler);
|
|
|
61
116
|
const pkgJson = await import(pathToFileURL(path.join(electronModulePath, 'package.json')).toString(), { with: { type: 'json' } });
|
|
62
117
|
electronModuleVersion = pkgJson.default.version;
|
|
63
118
|
}
|
|
64
|
-
catch
|
|
119
|
+
catch {
|
|
65
120
|
throw new Error(`Unable to find electron's version number, either install it or specify an explicit version`);
|
|
66
121
|
}
|
|
67
122
|
}
|
|
68
|
-
let rootDirectory = argv
|
|
123
|
+
let rootDirectory = argv['module-dir'];
|
|
69
124
|
if (!rootDirectory) {
|
|
70
125
|
// NB: We assume here that we're going to rebuild the immediate parent's
|
|
71
126
|
// node modules, which might not always be the case but it's at least a
|
|
72
127
|
// good guess
|
|
73
128
|
rootDirectory = path.resolve(import.meta.dirname, '../../..');
|
|
74
|
-
if (!fs.existsSync(rootDirectory) ||
|
|
129
|
+
if (!fs.existsSync(rootDirectory) ||
|
|
130
|
+
!fs.existsSync(path.resolve(rootDirectory, 'package.json'))) {
|
|
75
131
|
// Then we try the CWD
|
|
76
132
|
rootDirectory = process.cwd();
|
|
77
|
-
if (!fs.existsSync(rootDirectory) ||
|
|
133
|
+
if (!fs.existsSync(rootDirectory) ||
|
|
134
|
+
!fs.existsSync(path.resolve(rootDirectory, 'package.json'))) {
|
|
78
135
|
throw new Error('Unable to find parent node_modules directory, specify it via --module-dir, E.g. "--module-dir ." for the current directory');
|
|
79
136
|
}
|
|
80
137
|
}
|
|
@@ -82,59 +139,46 @@ process.on('unhandledRejection', handler);
|
|
|
82
139
|
else {
|
|
83
140
|
rootDirectory = path.resolve(process.cwd(), rootDirectory);
|
|
84
141
|
}
|
|
85
|
-
|
|
142
|
+
const forceAbi = argv['force-abi'] ? Number(argv['force-abi']) : undefined;
|
|
143
|
+
if (argv['force-abi'] && Number.isNaN(forceAbi)) {
|
|
86
144
|
throw new Error('force-abi must be a number');
|
|
87
145
|
}
|
|
88
|
-
|
|
89
|
-
let moduleTotal = 0;
|
|
90
|
-
const rebuildSpinner = ora('Searching dependency tree').start();
|
|
91
|
-
let lastModuleName;
|
|
92
|
-
const redraw = (moduleName) => {
|
|
93
|
-
if (moduleName)
|
|
94
|
-
lastModuleName = moduleName;
|
|
95
|
-
if (argv.p) {
|
|
96
|
-
rebuildSpinner.text = `Building modules: ${modulesDone}/${moduleTotal}`;
|
|
97
|
-
}
|
|
98
|
-
else {
|
|
99
|
-
rebuildSpinner.text = `Building module: ${lastModuleName}, Completed: ${modulesDone}`;
|
|
100
|
-
}
|
|
101
|
-
};
|
|
146
|
+
console.error('Searching dependency tree');
|
|
102
147
|
const rebuilder = rebuild({
|
|
103
148
|
buildPath: rootDirectory,
|
|
104
149
|
electronVersion: electronModuleVersion,
|
|
105
|
-
arch: argv.
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
150
|
+
arch: argv.arch || process.arch,
|
|
151
|
+
platform: argv.platform || process.platform,
|
|
152
|
+
extraModules: argv['which-module'] ? argv['which-module'].split(',') : [],
|
|
153
|
+
onlyModules: argv.only ? argv.only.split(',') : null,
|
|
154
|
+
force: argv.force,
|
|
155
|
+
headerURL: argv['dist-url'],
|
|
156
|
+
types: argv.types ? argv.types.split(',') : ['prod', 'optional'],
|
|
157
|
+
mode: argv.parallel ? 'parallel' : argv.sequential ? 'sequential' : undefined,
|
|
112
158
|
debug: argv.debug,
|
|
113
|
-
prebuildTagPrefix: argv
|
|
114
|
-
forceABI:
|
|
115
|
-
useElectronClang: !!argv
|
|
116
|
-
disablePreGypCopy: !!argv
|
|
159
|
+
prebuildTagPrefix: argv['prebuild-tag-prefix'] || 'v',
|
|
160
|
+
forceABI: forceAbi,
|
|
161
|
+
useElectronClang: !!argv['use-electron-clang'],
|
|
162
|
+
disablePreGypCopy: !!argv['disable-pre-gyp-copy'],
|
|
117
163
|
projectRootPath,
|
|
118
|
-
buildFromSource: !!argv
|
|
164
|
+
buildFromSource: !!argv['build-from-source'],
|
|
119
165
|
});
|
|
120
166
|
const lifecycle = rebuilder.lifecycle;
|
|
121
|
-
lifecycle.on('
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
167
|
+
lifecycle.on('modules-found', (moduleNames) => {
|
|
168
|
+
if (moduleNames.length > 0) {
|
|
169
|
+
console.error(`Building modules: ${moduleNames.join(', ')}`);
|
|
170
|
+
}
|
|
171
|
+
else {
|
|
172
|
+
console.error('No native modules found');
|
|
173
|
+
}
|
|
128
174
|
});
|
|
129
175
|
try {
|
|
130
176
|
await rebuilder;
|
|
131
177
|
}
|
|
132
178
|
catch (err) {
|
|
133
|
-
|
|
134
|
-
rebuildSpinner.fail();
|
|
179
|
+
console.error(styleText('red', '✖ Rebuild Failed'));
|
|
135
180
|
throw err;
|
|
136
181
|
}
|
|
137
|
-
|
|
138
|
-
rebuildSpinner.succeed();
|
|
182
|
+
console.error(styleText('green', '✔ Rebuild Complete'));
|
|
139
183
|
})();
|
|
140
184
|
//# sourceMappingURL=cli.js.map
|
package/lib/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAE7D,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,MAAM,OAAO,GAAG;IACd,OAAO,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,0CAA0C,EAAE;IAChG,KAAK,EAAE;QACL,KAAK,EAAE,GAAG;QACV,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,8DAA8D;KAC5E;IACD,IAAI,EAAE;QACJ,KAAK,EAAE,GAAG;QACV,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,wEAAwE;KACtF;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,oEAAoE;KAClF;IACD,YAAY,EAAE;QACZ,KAAK,EAAE,GAAG;QACV,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,mDAAmD;KACjE;IACD,cAAc,EAAE;QACd,KAAK,EAAE,GAAG;QACV,IAAI,EAAE,QAAQ;QACd,WAAW,EACT,wKAAwK;KAC3K;IACD,IAAI,EAAE;QACJ,KAAK,EAAE,GAAG;QACV,IAAI,EAAE,QAAQ;QACd,WAAW,EACT,0FAA0F;KAC7F;IACD,uBAAuB,EAAE;QACvB,KAAK,EAAE,GAAG;QACV,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,0CAA0C;KACxD;IACD,UAAU,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,2BAA2B,EAAE;IACpF,KAAK,EAAE;QACL,KAAK,EAAE,GAAG;QACV,IAAI,EAAE,QAAQ;QACd,WAAW,EACT,0HAA0H;KAC7H;IACD,QAAQ,EAAE;QACR,KAAK,EAAE,GAAG;QACV,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,oEAAoE;KAClF;IACD,UAAU,EAAE;QACV,KAAK,EAAE,GAAG;QACV,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,qEAAqE;KACnF;IACD,KAAK,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,gCAAgC,EAAE;IACrF,qBAAqB,EAAE;QACrB,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,8DAA8D;KAC5E;IACD,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,WAAW,EACT,oHAAoH;KACvH;IACD,oBAAoB,EAAE;QACpB,IAAI,EAAE,SAAS;QACf,WAAW,EACT,kHAAkH;KACrH;IACD,sBAAsB,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,gCAAgC,EAAE;IAC1F,mBAAmB,EAAE;QACnB,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,0DAA0D;KACxE;IACD,IAAI,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE;CAIhE,CAAC;AAEF,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,SAAS,CAAC,EAAE,OAAO,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC,CAAC;AAExE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,6EAA6E,CAAC,CAAC;IAC3F,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QAClD,MAAM,KAAK,GAAG,OAAO,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;QAC1D,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,KAAK,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;IACnE,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,WAAW,EAAE,CAAC;IACjE,IAAI,CAAC;QACH,OAAO,CAAC,GAAG,CACT,2BAA2B,EAC3B,CACE,MAAM,MAAM,CACV,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,oBAAoB,CAAC,CAAC,CAAC,QAAQ,EAAE,EACjF,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,CAC3B,CACF,CAAC,OAAO,CAAC,OAAO,CAClB,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,GAAG,CACT,2BAA2B,EAC3B,CACE,MAAM,MAAM,CACV,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC,QAAQ,EAAE,EAC9E,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,CAC3B,CACF,CAAC,OAAO,CAAC,OAAO,CAClB,CAAC;IACJ,CAAC;IAED,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,MAAM,OAAO,GAAG,CAAC,GAAU,EAAQ,EAAE;IACnC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,EAAE,uDAAuD,CAAC,CAAC,CAAC;IACzF,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,GAAG,CAAC,OAAO,OAAO,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAClE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACnB,CAAC,CAAC;AAEF,OAAO,CAAC,EAAE,CAAC,mBAAmB,EAAE,OAAO,CAAC,CAAC;AACzC,OAAO,CAAC,EAAE,CAAC,oBAAoB,EAAE,OAAO,CAAC,CAAC;AAE1C,KAAK,CAAC,KAAK,IAAmB,EAAE;IAC9B,MAAM,eAAe,GAAG,MAAM,kBAAkB,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAChE,MAAM,kBAAkB,GAAG,IAAI,CAAC,uBAAuB,CAAC;QACtD,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,uBAAuB,CAAC,CAAC;QAC5D,CAAC,CAAC,MAAM,oBAAoB,CAAC,eAAe,CAAC,CAAC;IAChD,IAAI,qBAAqB,GAAG,IAAI,CAAC,OAAO,CAAC;IAEzC,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC3B,IAAI,CAAC;YACH,IAAI,CAAC,kBAAkB;gBAAE,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;YAC/E,MAAM,OAAO,GAAG,MAAM,MAAM,CAC1B,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,cAAc,CAAC,CAAC,CAAC,QAAQ,EAAE,EACvE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,CAC3B,CAAC;YAEF,qBAAqB,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC;QAClD,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,KAAK,CACb,4FAA4F,CAC7F,CAAC;QACJ,CAAC;IACH,CAAC;IAED,IAAI,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC;IAEvC,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,wEAAwE;QACxE,uEAAuE;QACvE,aAAa;QACb,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QAC9D,IACE,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC;YAC7B,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC,EAC3D,CAAC;YACD,sBAAsB;YACtB,aAAa,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;YAC9B,IACE,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC;gBAC7B,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC,EAC3D,CAAC;gBACD,MAAM,IAAI,KAAK,CACb,4HAA4H,CAC7H,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;SAAM,CAAC;QACN,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,aAAa,CAAC,CAAC;IAC7D,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC3E,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;QAChD,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;IAChD,CAAC;IAED,OAAO,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;IAE3C,MAAM,SAAS,GAAG,OAAO,CAAC;QACxB,SAAS,EAAE,aAAa;QACxB,eAAe,EAAE,qBAA+B;QAChD,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI;QAC/B,QAAQ,EAAG,IAAI,CAAC,QAA4B,IAAI,OAAO,CAAC,QAAQ;QAChE,YAAY,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE;QACzE,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI;QACpD,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC;QAC3B,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAkB,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,UAAU,CAAC;QAClF,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS;QAC7E,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,iBAAiB,EAAE,IAAI,CAAC,qBAAqB,CAAC,IAAI,GAAG;QACrD,QAAQ,EAAE,QAAQ;QAClB,gBAAgB,EAAE,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC;QAC9C,iBAAiB,EAAE,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC;QACjD,eAAe;QACf,eAAe,EAAE,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC;KAC7C,CAAC,CAAC;IAEH,MAAM,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC;IAEtC,SAAS,CAAC,EAAE,CAAC,eAAe,EAAE,CAAC,WAAqB,EAAE,EAAE;QACtD,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,OAAO,CAAC,KAAK,CAAC,qBAAqB,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC/D,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC;QACH,MAAM,SAAS,CAAC;IAClB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,EAAE,kBAAkB,CAAC,CAAC,CAAC;QACpD,MAAM,GAAG,CAAC;IACZ,CAAC;IAED,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,EAAE,oBAAoB,CAAC,CAAC,CAAC;AAC1D,CAAC,CAAC,EAAE,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Detects the libc family on the current Linux host via `process.report`.
|
|
3
|
+
*
|
|
4
|
+
* Used to resolve the `{libc}` token in prebuilt binary path templates.
|
|
5
|
+
*
|
|
6
|
+
* @returns `'glibc'` | `'musl'` | `null` (non-Linux or unable to detect)
|
|
7
|
+
*/
|
|
8
|
+
export declare function detectLibcFamily(): string | null;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
let cached;
|
|
2
|
+
/**
|
|
3
|
+
* Detects the libc family on the current Linux host via `process.report`.
|
|
4
|
+
*
|
|
5
|
+
* Used to resolve the `{libc}` token in prebuilt binary path templates.
|
|
6
|
+
*
|
|
7
|
+
* @returns `'glibc'` | `'musl'` | `null` (non-Linux or unable to detect)
|
|
8
|
+
*/
|
|
9
|
+
export function detectLibcFamily() {
|
|
10
|
+
if (cached !== undefined)
|
|
11
|
+
return cached;
|
|
12
|
+
if (process.platform !== 'linux')
|
|
13
|
+
return (cached = null);
|
|
14
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
15
|
+
const report = process.report?.getReport();
|
|
16
|
+
if (report?.header?.glibcVersionRuntime)
|
|
17
|
+
return (cached = 'glibc');
|
|
18
|
+
if (Array.isArray(report?.sharedObjects) &&
|
|
19
|
+
report.sharedObjects.some((s) => s.includes('libc.musl') || s.includes('ld-musl'))) {
|
|
20
|
+
return (cached = 'musl');
|
|
21
|
+
}
|
|
22
|
+
return (cached = null);
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=detect-libc.js.map
|