dmg-builder 26.0.14 → 26.0.16
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/out/dmgUtil.d.ts +1 -1
- package/out/dmgUtil.js +8 -1
- package/out/dmgUtil.js.map +1 -1
- package/out/hdiuil.d.ts +18 -1
- package/out/hdiuil.js +50 -4
- package/out/hdiuil.js.map +1 -1
- package/package.json +3 -3
package/out/dmgUtil.d.ts
CHANGED
|
@@ -3,5 +3,5 @@ export { DmgTarget } from "./dmg";
|
|
|
3
3
|
export declare function getDmgTemplatePath(): string;
|
|
4
4
|
export declare function getDmgVendorPath(): string;
|
|
5
5
|
export declare function attachAndExecute(dmgPath: string, readWrite: boolean, task: () => Promise<any>): Promise<any>;
|
|
6
|
-
export declare function detach(name: string): Promise<string>;
|
|
6
|
+
export declare function detach(name: string): Promise<string | null>;
|
|
7
7
|
export declare function computeBackground(packager: PlatformPackager<any>): Promise<string>;
|
package/out/dmgUtil.js
CHANGED
|
@@ -35,7 +35,14 @@ async function attachAndExecute(dmgPath, readWrite, task) {
|
|
|
35
35
|
return await (0, builder_util_1.executeFinally)(task(), () => detach(device));
|
|
36
36
|
}
|
|
37
37
|
async function detach(name) {
|
|
38
|
-
return (0, hdiuil_1.hdiUtil)(["detach", "-quiet", name])
|
|
38
|
+
return (0, hdiuil_1.hdiUtil)(["detach", "-quiet", name]).catch(async (e) => {
|
|
39
|
+
if (hdiuil_1.hdiutilTransientExitCodes.has(e.code)) {
|
|
40
|
+
// Delay then force unmount with verbose output
|
|
41
|
+
await new Promise(resolve => setTimeout(resolve, 3000));
|
|
42
|
+
return (0, hdiuil_1.hdiUtil)(["detach", "--force", name]);
|
|
43
|
+
}
|
|
44
|
+
throw e;
|
|
45
|
+
});
|
|
39
46
|
}
|
|
40
47
|
async function computeBackground(packager) {
|
|
41
48
|
const resourceList = await packager.resourceList;
|
package/out/dmgUtil.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dmgUtil.js","sourceRoot":"","sources":["../src/dmgUtil.ts"],"names":[],"mappings":";;;AASA,gDAEC;AAED,4CAEC;AAED,4CAgBC;AAED,
|
|
1
|
+
{"version":3,"file":"dmgUtil.js","sourceRoot":"","sources":["../src/dmgUtil.ts"],"names":[],"mappings":"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","sourcesContent":["import { PlatformPackager } from \"app-builder-lib\"\nimport { executeFinally } from \"builder-util\"\nimport * as path from \"path\"\nimport { hdiUtil, hdiutilTransientExitCodes } from \"./hdiuil\"\n\nexport { DmgTarget } from \"./dmg\"\n\nconst root = path.join(__dirname, \"..\")\n\nexport function getDmgTemplatePath() {\n return path.join(root, \"templates\")\n}\n\nexport function getDmgVendorPath() {\n return path.join(root, \"vendor\")\n}\n\nexport async function attachAndExecute(dmgPath: string, readWrite: boolean, task: () => Promise<any>) {\n //noinspection SpellCheckingInspection\n const args = [\"attach\", \"-noverify\", \"-noautoopen\"]\n if (readWrite) {\n args.push(\"-readwrite\")\n }\n\n args.push(dmgPath)\n const attachResult = await hdiUtil(args)\n const deviceResult = attachResult == null ? null : /^(\\/dev\\/\\w+)/.exec(attachResult)\n const device = deviceResult == null || deviceResult.length !== 2 ? null : deviceResult[1]\n if (device == null) {\n throw new Error(`Cannot mount: ${attachResult}`)\n }\n\n return await executeFinally(task(), () => detach(device))\n}\n\nexport async function detach(name: string) {\n return hdiUtil([\"detach\", \"-quiet\", name]).catch(async e => {\n if (hdiutilTransientExitCodes.has(e.code)) {\n // Delay then force unmount with verbose output\n await new Promise(resolve => setTimeout(resolve, 3000))\n return hdiUtil([\"detach\", \"--force\", name])\n }\n throw e\n })\n}\n\nexport async function computeBackground(packager: PlatformPackager<any>): Promise<string> {\n const resourceList = await packager.resourceList\n if (resourceList.includes(\"background.tiff\")) {\n return path.join(packager.buildResourcesDir, \"background.tiff\")\n } else if (resourceList.includes(\"background.png\")) {\n return path.join(packager.buildResourcesDir, \"background.png\")\n } else {\n return path.join(getDmgTemplatePath(), \"background.tiff\")\n }\n}\n\n/** @internal */\nexport function serializeString(data: string) {\n return (\n ' $\"' +\n data\n .match(/.{1,32}/g)!\n .map(it => it.match(/.{1,4}/g)!.join(\" \"))\n .join('\"\\n $\"') +\n '\"'\n )\n}\n"]}
|
package/out/hdiuil.d.ts
CHANGED
|
@@ -1 +1,18 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Table of hdiutil error codes that are transient and can be retried.
|
|
3
|
+
* These codes are typically related to resource availability or temporary issues.
|
|
4
|
+
*
|
|
5
|
+
| Code | Meaning | Why Retry? |
|
|
6
|
+
| ------- | -------------------------------- | ---------------------------------------------------- |
|
|
7
|
+
| `1` | Generic error | Can occur from brief race conditions or temp issues. |
|
|
8
|
+
| `16` | **Resource busy** | Volume is in use — wait and retry often works. |
|
|
9
|
+
| `35` | **Operation timed out** | System delay or timeout — retry after a short delay. |
|
|
10
|
+
| `256` | Volume in use or unmount failure | Same as 16 — usually resolves after retry. |
|
|
11
|
+
| `49153` | Volume not mounted yet | Attach may be too fast — retry after delay. |
|
|
12
|
+
| `-5341` | Disk image too small | Retry *after fixing* with a larger `-size`. |
|
|
13
|
+
| `-5342` | Specified size too small | Same as above — retry if size is corrected. |
|
|
14
|
+
*
|
|
15
|
+
*/
|
|
16
|
+
export declare const hdiutilTransientExitCodes: Set<number>;
|
|
17
|
+
export declare function explainHdiutilError(errorCode: number): string;
|
|
18
|
+
export declare function hdiUtil(args: string[]): Promise<string | null>;
|
package/out/hdiuil.js
CHANGED
|
@@ -1,11 +1,57 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.hdiutilTransientExitCodes = void 0;
|
|
4
|
+
exports.explainHdiutilError = explainHdiutilError;
|
|
3
5
|
exports.hdiUtil = hdiUtil;
|
|
4
6
|
const builder_util_1 = require("builder-util");
|
|
7
|
+
/**
|
|
8
|
+
* Table of hdiutil error codes that are transient and can be retried.
|
|
9
|
+
* These codes are typically related to resource availability or temporary issues.
|
|
10
|
+
*
|
|
11
|
+
| Code | Meaning | Why Retry? |
|
|
12
|
+
| ------- | -------------------------------- | ---------------------------------------------------- |
|
|
13
|
+
| `1` | Generic error | Can occur from brief race conditions or temp issues. |
|
|
14
|
+
| `16` | **Resource busy** | Volume is in use — wait and retry often works. |
|
|
15
|
+
| `35` | **Operation timed out** | System delay or timeout — retry after a short delay. |
|
|
16
|
+
| `256` | Volume in use or unmount failure | Same as 16 — usually resolves after retry. |
|
|
17
|
+
| `49153` | Volume not mounted yet | Attach may be too fast — retry after delay. |
|
|
18
|
+
| `-5341` | Disk image too small | Retry *after fixing* with a larger `-size`. |
|
|
19
|
+
| `-5342` | Specified size too small | Same as above — retry if size is corrected. |
|
|
20
|
+
*
|
|
21
|
+
*/
|
|
22
|
+
exports.hdiutilTransientExitCodes = new Set([1, 16, 35, 256, 49153]);
|
|
23
|
+
function explainHdiutilError(errorCode) {
|
|
24
|
+
var _a;
|
|
25
|
+
const code = errorCode.toString();
|
|
26
|
+
const messages = {
|
|
27
|
+
"0": "Success: The hdiutil command completed without error.",
|
|
28
|
+
"1": "Generic error: The operation failed, but the reason is not specific. Check command syntax or permissions.",
|
|
29
|
+
"2": "No such file or directory: Check if the specified path exists.",
|
|
30
|
+
"6": "Disk image to resize is not currently attached or not recognized as a valid block device by macOS.",
|
|
31
|
+
"8": "Exec format error: The file might not be a valid disk image.",
|
|
32
|
+
"16": "Resource busy: The volume is in use. Try closing files or processes and retry.",
|
|
33
|
+
"22": "Invalid argument: One or more arguments passed to hdiutil are incorrect.",
|
|
34
|
+
"35": "Operation timed out: The system was too slow or unresponsive. Try again.",
|
|
35
|
+
"36": "I/O error: There was a problem reading or writing to disk. Check disk health.",
|
|
36
|
+
"100": "Image-related error: The disk image may be corrupted or invalid.",
|
|
37
|
+
"256": "Volume is busy or could not be unmounted. Try again after closing files.",
|
|
38
|
+
"49153": "Volume not mounted yet: The image may not have been fully attached.",
|
|
39
|
+
"-5341": "Disk image too small: hdiutil could not fit the contents. Increase the image size.",
|
|
40
|
+
"-5342": "Specified size too small: Disk image creation failed due to insufficient size.",
|
|
41
|
+
};
|
|
42
|
+
return (_a = messages[code]) !== null && _a !== void 0 ? _a : `Unknown error (code ${code}): Refer to hdiutil documentation or run with -verbose for details by rerunning with env var DEBUG_DEMB=true.`;
|
|
43
|
+
}
|
|
44
|
+
const shouldRetry = (args) => (error) => {
|
|
45
|
+
var _a, _b, _c;
|
|
46
|
+
const code = (_a = error.code) !== null && _a !== void 0 ? _a : -1;
|
|
47
|
+
const stderr = ((_b = error.stderr) === null || _b === void 0 ? void 0 : _b.toString()) || "";
|
|
48
|
+
const stdout = ((_c = error.stdout) === null || _c === void 0 ? void 0 : _c.toString()) || "";
|
|
49
|
+
const output = `${stdout} ${stderr}`.trim();
|
|
50
|
+
const willRetry = exports.hdiutilTransientExitCodes.has(code);
|
|
51
|
+
builder_util_1.log.warn({ willRetry, args, code, output }, `hdiutil error: ${explainHdiutilError(code)}`);
|
|
52
|
+
return willRetry;
|
|
53
|
+
};
|
|
5
54
|
async function hdiUtil(args) {
|
|
6
|
-
return (0, builder_util_1.retry)(() => (0, builder_util_1.exec)("hdiutil", args), 5, 5000, 2000, 0, (
|
|
7
|
-
builder_util_1.log.error({ args, code: error.code, error: (error.message || error).toString() }, "unable to execute hdiutil");
|
|
8
|
-
return true;
|
|
9
|
-
});
|
|
55
|
+
return (0, builder_util_1.retry)(() => (0, builder_util_1.exec)("hdiutil", args), 5, 5000, 2000, 0, shouldRetry(args));
|
|
10
56
|
}
|
|
11
57
|
//# sourceMappingURL=hdiuil.js.map
|
package/out/hdiuil.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hdiuil.js","sourceRoot":"","sources":["../src/hdiuil.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"hdiuil.js","sourceRoot":"","sources":["../src/hdiuil.ts"],"names":[],"mappings":";;;AAmBA,kDAoBC;AAcD,0BAEC;AAvDD,+CAA+C;AAE/C;;;;;;;;;;;;;;GAcG;AACU,QAAA,yBAAyB,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,CAAA;AAEzE,SAAgB,mBAAmB,CAAC,SAAiB;;IACnD,MAAM,IAAI,GAAG,SAAS,CAAC,QAAQ,EAAE,CAAA;IACjC,MAAM,QAAQ,GAA2B;QACvC,GAAG,EAAE,uDAAuD;QAC5D,GAAG,EAAE,2GAA2G;QAChH,GAAG,EAAE,gEAAgE;QACrE,GAAG,EAAE,oGAAoG;QACzG,GAAG,EAAE,8DAA8D;QACnE,IAAI,EAAE,gFAAgF;QACtF,IAAI,EAAE,0EAA0E;QAChF,IAAI,EAAE,0EAA0E;QAChF,IAAI,EAAE,+EAA+E;QACrF,KAAK,EAAE,kEAAkE;QACzE,KAAK,EAAE,0EAA0E;QACjF,OAAO,EAAE,qEAAqE;QAC9E,OAAO,EAAE,oFAAoF;QAC7F,OAAO,EAAE,gFAAgF;KAC1F,CAAA;IAED,OAAO,MAAA,QAAQ,CAAC,IAAI,CAAC,mCAAI,uBAAuB,IAAI,+GAA+G,CAAA;AACrK,CAAC;AAED,MAAM,WAAW,GAAG,CAAC,IAAc,EAAE,EAAE,CAAC,CAAC,KAAU,EAAE,EAAE;;IACrD,MAAM,IAAI,GAAG,MAAA,KAAK,CAAC,IAAI,mCAAI,CAAC,CAAC,CAAA;IAC7B,MAAM,MAAM,GAAG,CAAA,MAAA,KAAK,CAAC,MAAM,0CAAE,QAAQ,EAAE,KAAI,EAAE,CAAA;IAC7C,MAAM,MAAM,GAAG,CAAA,MAAA,KAAK,CAAC,MAAM,0CAAE,QAAQ,EAAE,KAAI,EAAE,CAAA;IAC7C,MAAM,MAAM,GAAG,GAAG,MAAM,IAAI,MAAM,EAAE,CAAC,IAAI,EAAE,CAAA;IAE3C,MAAM,SAAS,GAAG,iCAAyB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IACrD,kBAAG,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,kBAAkB,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAE1F,OAAO,SAAS,CAAA;AAClB,CAAC,CAAA;AAEM,KAAK,UAAU,OAAO,CAAC,IAAc;IAC1C,OAAO,IAAA,oBAAK,EAAC,GAAG,EAAE,CAAC,IAAA,mBAAI,EAAC,SAAS,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC,CAAA;AAChF,CAAC","sourcesContent":["import { exec, log, retry } from \"builder-util\"\n\n/**\n * Table of hdiutil error codes that are transient and can be retried.\n * These codes are typically related to resource availability or temporary issues.\n *\n| Code | Meaning | Why Retry? |\n| ------- | -------------------------------- | ---------------------------------------------------- |\n| `1` | Generic error | Can occur from brief race conditions or temp issues. |\n| `16` | **Resource busy** | Volume is in use — wait and retry often works. |\n| `35` | **Operation timed out** | System delay or timeout — retry after a short delay. |\n| `256` | Volume in use or unmount failure | Same as 16 — usually resolves after retry. |\n| `49153` | Volume not mounted yet | Attach may be too fast — retry after delay. |\n| `-5341` | Disk image too small | Retry *after fixing* with a larger `-size`. |\n| `-5342` | Specified size too small | Same as above — retry if size is corrected. |\n *\n */\nexport const hdiutilTransientExitCodes = new Set([1, 16, 35, 256, 49153])\n\nexport function explainHdiutilError(errorCode: number): string {\n const code = errorCode.toString()\n const messages: Record<string, string> = {\n \"0\": \"Success: The hdiutil command completed without error.\",\n \"1\": \"Generic error: The operation failed, but the reason is not specific. Check command syntax or permissions.\",\n \"2\": \"No such file or directory: Check if the specified path exists.\",\n \"6\": \"Disk image to resize is not currently attached or not recognized as a valid block device by macOS.\",\n \"8\": \"Exec format error: The file might not be a valid disk image.\",\n \"16\": \"Resource busy: The volume is in use. Try closing files or processes and retry.\",\n \"22\": \"Invalid argument: One or more arguments passed to hdiutil are incorrect.\",\n \"35\": \"Operation timed out: The system was too slow or unresponsive. Try again.\",\n \"36\": \"I/O error: There was a problem reading or writing to disk. Check disk health.\",\n \"100\": \"Image-related error: The disk image may be corrupted or invalid.\",\n \"256\": \"Volume is busy or could not be unmounted. Try again after closing files.\",\n \"49153\": \"Volume not mounted yet: The image may not have been fully attached.\",\n \"-5341\": \"Disk image too small: hdiutil could not fit the contents. Increase the image size.\",\n \"-5342\": \"Specified size too small: Disk image creation failed due to insufficient size.\",\n }\n\n return messages[code] ?? `Unknown error (code ${code}): Refer to hdiutil documentation or run with -verbose for details by rerunning with env var DEBUG_DEMB=true.`\n}\n\nconst shouldRetry = (args: string[]) => (error: any) => {\n const code = error.code ?? -1\n const stderr = error.stderr?.toString() || \"\"\n const stdout = error.stdout?.toString() || \"\"\n const output = `${stdout} ${stderr}`.trim()\n\n const willRetry = hdiutilTransientExitCodes.has(code)\n log.warn({ willRetry, args, code, output }, `hdiutil error: ${explainHdiutilError(code)}`)\n\n return willRetry\n}\n\nexport async function hdiUtil(args: string[]): Promise<string | null> {\n return retry(() => exec(\"hdiutil\", args), 5, 5000, 2000, 0, shouldRetry(args))\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dmg-builder",
|
|
3
|
-
"version": "26.0.
|
|
3
|
+
"version": "26.0.16",
|
|
4
4
|
"main": "out/dmgUtil.js",
|
|
5
5
|
"author": "Vladimir Krivosheev",
|
|
6
6
|
"license": "MIT",
|
|
@@ -20,8 +20,8 @@
|
|
|
20
20
|
"fs-extra": "^10.1.0",
|
|
21
21
|
"iconv-lite": "^0.6.2",
|
|
22
22
|
"js-yaml": "^4.1.0",
|
|
23
|
-
"app-builder-lib": "26.0.
|
|
24
|
-
"builder-util": "26.0.
|
|
23
|
+
"app-builder-lib": "26.0.16",
|
|
24
|
+
"builder-util": "26.0.16",
|
|
25
25
|
"builder-util-runtime": "9.3.2"
|
|
26
26
|
},
|
|
27
27
|
"optionalDependencies": {
|