app-builder-lib 26.11.1 → 26.12.1
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/binDownload.js +36 -6
- package/out/binDownload.js.map +1 -1
- package/out/codeSign/codesign.js +7 -23
- package/out/codeSign/codesign.js.map +1 -1
- package/out/codeSign/macCodeSign.js +2 -2
- package/out/codeSign/macCodeSign.js.map +1 -1
- package/out/configuration.d.ts +36 -2
- package/out/configuration.js.map +1 -1
- package/out/electron/ElectronFramework.js +4 -1
- package/out/electron/ElectronFramework.js.map +1 -1
- package/out/electron/electronVersion.js +9 -4
- package/out/electron/electronVersion.js.map +1 -1
- package/out/fileMatcher.d.ts +2 -1
- package/out/fileMatcher.js +0 -1
- package/out/fileMatcher.js.map +1 -1
- package/out/fileTransformer.js +2 -1
- package/out/fileTransformer.js.map +1 -1
- package/out/forge-maker.js +6 -2
- package/out/forge-maker.js.map +1 -1
- package/out/index.d.ts +1 -1
- package/out/index.js.map +1 -1
- package/out/linuxPackager.js +1 -1
- package/out/linuxPackager.js.map +1 -1
- package/out/mac/MacTargetHelper.d.ts +24 -0
- package/out/mac/MacTargetHelper.js +267 -0
- package/out/mac/MacTargetHelper.js.map +1 -0
- package/out/macPackager.d.ts +21 -7
- package/out/macPackager.js +218 -346
- package/out/macPackager.js.map +1 -1
- package/out/node-module-collector/moduleManager.d.ts +1 -0
- package/out/node-module-collector/moduleManager.js +2 -0
- package/out/node-module-collector/moduleManager.js.map +1 -1
- package/out/node-module-collector/nodeModulesCollector.d.ts +3 -2
- package/out/node-module-collector/nodeModulesCollector.js +23 -3
- package/out/node-module-collector/nodeModulesCollector.js.map +1 -1
- package/out/node-module-collector/pnpmNodeModulesCollector.js +5 -1
- package/out/node-module-collector/pnpmNodeModulesCollector.js.map +1 -1
- package/out/options/SnapOptions.d.ts +415 -56
- package/out/options/SnapOptions.js.map +1 -1
- package/out/options/linuxOptions.d.ts +8 -0
- package/out/options/linuxOptions.js.map +1 -1
- package/out/packager.js +4 -4
- package/out/packager.js.map +1 -1
- package/out/platformPackager.js +9 -5
- package/out/platformPackager.js.map +1 -1
- package/out/publish/PublishManager.js +2 -2
- package/out/publish/PublishManager.js.map +1 -1
- package/out/publish/updateInfoBuilder.d.ts +4 -0
- package/out/publish/updateInfoBuilder.js +14 -2
- package/out/publish/updateInfoBuilder.js.map +1 -1
- package/out/targets/AppxTarget.js +2 -1
- package/out/targets/AppxTarget.js.map +1 -1
- package/out/targets/ArchiveTarget.js +1 -1
- package/out/targets/ArchiveTarget.js.map +1 -1
- package/out/targets/FlatpakTarget.js +2 -4
- package/out/targets/FlatpakTarget.js.map +1 -1
- package/out/targets/FpmTarget.js +30 -6
- package/out/targets/FpmTarget.js.map +1 -1
- package/out/targets/LinuxTargetHelper.d.ts +4 -1
- package/out/targets/LinuxTargetHelper.js +134 -8
- package/out/targets/LinuxTargetHelper.js.map +1 -1
- package/out/targets/MsiTarget.js +7 -4
- package/out/targets/MsiTarget.js.map +1 -1
- package/out/targets/MsiWrappedTarget.js +1 -1
- package/out/targets/MsiWrappedTarget.js.map +1 -1
- package/out/targets/appimage/AppImageTarget.js +2 -1
- package/out/targets/appimage/AppImageTarget.js.map +1 -1
- package/out/targets/archive.js +2 -6
- package/out/targets/archive.js.map +1 -1
- package/out/targets/nsis/NsisTarget.js +26 -16
- package/out/targets/nsis/NsisTarget.js.map +1 -1
- package/out/targets/nsis/nsisScriptGenerator.js +2 -3
- package/out/targets/nsis/nsisScriptGenerator.js.map +1 -1
- package/out/targets/nsis/nsisUtil.d.ts +0 -7
- package/out/targets/nsis/nsisUtil.js +5 -48
- package/out/targets/nsis/nsisUtil.js.map +1 -1
- package/out/targets/pkg.js +1 -1
- package/out/targets/pkg.js.map +1 -1
- package/out/targets/snap/SnapTarget.d.ts +36 -0
- package/out/targets/snap/SnapTarget.js +105 -0
- package/out/targets/snap/SnapTarget.js.map +1 -0
- package/out/targets/snap/core24.d.ts +52 -0
- package/out/targets/snap/core24.js +448 -0
- package/out/targets/snap/core24.js.map +1 -0
- package/out/targets/snap/coreCustom.d.ts +28 -0
- package/out/targets/snap/coreCustom.js +63 -0
- package/out/targets/snap/coreCustom.js.map +1 -0
- package/out/targets/snap/coreLegacy.d.ts +20 -0
- package/out/targets/snap/coreLegacy.js +278 -0
- package/out/targets/snap/coreLegacy.js.map +1 -0
- package/out/targets/snap/snapcraftBuilder.d.ts +39 -0
- package/out/targets/snap/snapcraftBuilder.js +419 -0
- package/out/targets/snap/snapcraftBuilder.js.map +1 -0
- package/out/toolsets/linux.d.ts +5 -0
- package/out/toolsets/linux.js +55 -23
- package/out/toolsets/linux.js.map +1 -1
- package/out/toolsets/windows.d.ts +19 -0
- package/out/toolsets/windows.js +126 -18
- package/out/toolsets/windows.js.map +1 -1
- package/out/util/bundledTool.js +2 -1
- package/out/util/bundledTool.js.map +1 -1
- package/out/util/config/config.js +4 -3
- package/out/util/config/config.js.map +1 -1
- package/out/util/electronGet.d.ts +6 -1
- package/out/util/electronGet.js +15 -7
- package/out/util/electronGet.js.map +1 -1
- package/out/util/envPath.d.ts +2 -0
- package/out/util/envPath.js +28 -0
- package/out/util/envPath.js.map +1 -0
- package/out/util/packageMetadata.js +2 -1
- package/out/util/packageMetadata.js.map +1 -1
- package/out/util/toolsetLock.d.ts +1 -0
- package/out/util/toolsetLock.js +23 -0
- package/out/util/toolsetLock.js.map +1 -0
- package/out/util/yarn.js +1 -1
- package/out/util/yarn.js.map +1 -1
- package/out/version.d.ts +1 -1
- package/out/version.js +1 -1
- package/out/version.js.map +1 -1
- package/out/vm/vm.d.ts +1 -0
- package/out/vm/vm.js +18 -0
- package/out/vm/vm.js.map +1 -1
- package/package.json +9 -9
- package/scheme.json +1401 -107
- package/templates/nsis/multiUser.nsh +14 -12
- package/out/targets/snap.d.ts +0 -17
- package/out/targets/snap.js +0 -337
- package/out/targets/snap.js.map +0 -1
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
!include FileFunc.nsh
|
|
2
2
|
!include UAC.nsh
|
|
3
|
-
!include WinVer.nsh
|
|
4
3
|
|
|
5
4
|
!define FOLDERID_UserProgramFiles {5CD7AEE2-2219-4A67-B85D-6C9CE15660CB}
|
|
6
5
|
!define KF_FLAG_CREATE 0x00008000
|
|
@@ -30,17 +29,20 @@ Var installMode
|
|
|
30
29
|
${else}
|
|
31
30
|
StrCpy $0 "$LocalAppData\Programs"
|
|
32
31
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
32
|
+
Push $1
|
|
33
|
+
Push $2
|
|
34
|
+
# UserProgramFiles is the per-user install root and can be a non-default location
|
|
35
|
+
StrCpy $2 0
|
|
36
|
+
System::Call 'SHELL32::SHGetKnownFolderPath(g "${FOLDERID_UserProgramFiles}", i ${KF_FLAG_CREATE}, p 0, *p .r2)i.r1'
|
|
37
|
+
${If} $1 == 0
|
|
38
|
+
System::Call 'KERNEL32::lstrcpynW(w .r0, p r2, i ${NSIS_MAX_STRLEN})p'
|
|
39
|
+
${endif}
|
|
40
|
+
# SHGetKnownFolderPath may return allocated memory even on failure
|
|
41
|
+
${If} $2 != 0
|
|
42
|
+
System::Call 'OLE32::CoTaskMemFree(p r2)'
|
|
43
|
+
${endif}
|
|
44
|
+
Pop $2
|
|
45
|
+
Pop $1
|
|
44
46
|
|
|
45
47
|
StrCpy $INSTDIR "$0\${APP_FILENAME}"
|
|
46
48
|
${endif}
|
package/out/targets/snap.d.ts
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { Arch } from "builder-util";
|
|
2
|
-
import { Target } from "../core";
|
|
3
|
-
import { LinuxPackager } from "../linuxPackager";
|
|
4
|
-
import { SnapOptions } from "../options/SnapOptions";
|
|
5
|
-
import { LinuxTargetHelper } from "./LinuxTargetHelper";
|
|
6
|
-
export default class SnapTarget extends Target {
|
|
7
|
-
private readonly packager;
|
|
8
|
-
private readonly helper;
|
|
9
|
-
readonly outDir: string;
|
|
10
|
-
readonly options: SnapOptions;
|
|
11
|
-
isUseTemplateApp: boolean;
|
|
12
|
-
constructor(name: string, packager: LinuxPackager, helper: LinuxTargetHelper, outDir: string);
|
|
13
|
-
private replaceDefault;
|
|
14
|
-
private createDescriptor;
|
|
15
|
-
build(appOutDir: string, arch: Arch): Promise<any>;
|
|
16
|
-
private isElectronVersionGreaterOrEqualThan;
|
|
17
|
-
}
|
package/out/targets/snap.js
DELETED
|
@@ -1,337 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const builder_util_1 = require("builder-util");
|
|
4
|
-
const builder_util_runtime_1 = require("builder-util-runtime");
|
|
5
|
-
const fs_extra_1 = require("fs-extra");
|
|
6
|
-
const js_yaml_1 = require("js-yaml");
|
|
7
|
-
const path = require("path");
|
|
8
|
-
const semver = require("semver");
|
|
9
|
-
const core_1 = require("../core");
|
|
10
|
-
const pathManager_1 = require("../util/pathManager");
|
|
11
|
-
const targetUtil_1 = require("./targetUtil");
|
|
12
|
-
const defaultPlugs = ["desktop", "desktop-legacy", "home", "x11", "wayland", "unity7", "browser-support", "network", "gsettings", "audio-playback", "pulseaudio", "opengl"];
|
|
13
|
-
class SnapTarget extends core_1.Target {
|
|
14
|
-
constructor(name, packager, helper, outDir) {
|
|
15
|
-
super(name);
|
|
16
|
-
this.packager = packager;
|
|
17
|
-
this.helper = helper;
|
|
18
|
-
this.outDir = outDir;
|
|
19
|
-
this.options = { ...this.packager.platformSpecificBuildOptions, ...this.packager.config[this.name] };
|
|
20
|
-
this.isUseTemplateApp = false;
|
|
21
|
-
}
|
|
22
|
-
replaceDefault(inList, defaultList) {
|
|
23
|
-
const result = (0, builder_util_1.replaceDefault)(inList, defaultList);
|
|
24
|
-
if (result !== defaultList) {
|
|
25
|
-
this.isUseTemplateApp = false;
|
|
26
|
-
}
|
|
27
|
-
return result;
|
|
28
|
-
}
|
|
29
|
-
async createDescriptor(arch) {
|
|
30
|
-
if (!this.isElectronVersionGreaterOrEqualThan("4.0.0")) {
|
|
31
|
-
if (!this.isElectronVersionGreaterOrEqualThan("2.0.0-beta.1")) {
|
|
32
|
-
throw new builder_util_1.InvalidConfigurationError("Electron 2 and higher is required to build Snap");
|
|
33
|
-
}
|
|
34
|
-
builder_util_1.log.warn("Electron 4 and higher is highly recommended for Snap");
|
|
35
|
-
}
|
|
36
|
-
const appInfo = this.packager.appInfo;
|
|
37
|
-
const snapName = this.packager.executableName.toLowerCase();
|
|
38
|
-
const options = this.options;
|
|
39
|
-
const plugs = normalizePlugConfiguration(this.options.plugs);
|
|
40
|
-
const plugNames = this.replaceDefault(plugs == null ? null : Object.getOwnPropertyNames(plugs), defaultPlugs);
|
|
41
|
-
const slots = normalizePlugConfiguration(this.options.slots);
|
|
42
|
-
const buildPackages = (0, builder_util_runtime_1.asArray)(options.buildPackages);
|
|
43
|
-
const defaultStagePackages = getDefaultStagePackages();
|
|
44
|
-
const stagePackages = this.replaceDefault(options.stagePackages, defaultStagePackages);
|
|
45
|
-
this.isUseTemplateApp =
|
|
46
|
-
this.options.useTemplateApp !== false &&
|
|
47
|
-
(arch === builder_util_1.Arch.x64 || arch === builder_util_1.Arch.armv7l) &&
|
|
48
|
-
buildPackages.length === 0 &&
|
|
49
|
-
isArrayEqualRegardlessOfSort(stagePackages, defaultStagePackages);
|
|
50
|
-
const appDescriptor = {
|
|
51
|
-
command: "command.sh",
|
|
52
|
-
plugs: plugNames,
|
|
53
|
-
adapter: "none",
|
|
54
|
-
};
|
|
55
|
-
const snap = (0, js_yaml_1.load)(await (0, fs_extra_1.readFile)(path.join((0, pathManager_1.getTemplatePath)("snap"), "snapcraft.yaml"), "utf-8"));
|
|
56
|
-
if (this.isUseTemplateApp) {
|
|
57
|
-
delete appDescriptor.adapter;
|
|
58
|
-
}
|
|
59
|
-
if (options.base != null) {
|
|
60
|
-
snap.base = options.base;
|
|
61
|
-
// from core22 onwards adapter is legacy
|
|
62
|
-
if (Number(snap.base.split("core")[1]) >= 22) {
|
|
63
|
-
delete appDescriptor.adapter;
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
if (options.grade != null) {
|
|
67
|
-
snap.grade = options.grade;
|
|
68
|
-
}
|
|
69
|
-
if (options.confinement != null) {
|
|
70
|
-
snap.confinement = options.confinement;
|
|
71
|
-
}
|
|
72
|
-
if (options.appPartStage != null) {
|
|
73
|
-
snap.parts.app.stage = options.appPartStage;
|
|
74
|
-
}
|
|
75
|
-
if (options.layout != null) {
|
|
76
|
-
snap.layout = options.layout;
|
|
77
|
-
}
|
|
78
|
-
if (slots != null) {
|
|
79
|
-
appDescriptor.slots = Object.getOwnPropertyNames(slots);
|
|
80
|
-
for (const slotName of appDescriptor.slots) {
|
|
81
|
-
const slotOptions = slots[slotName];
|
|
82
|
-
if (slotOptions == null) {
|
|
83
|
-
continue;
|
|
84
|
-
}
|
|
85
|
-
if (!snap.slots) {
|
|
86
|
-
snap.slots = {};
|
|
87
|
-
}
|
|
88
|
-
snap.slots[slotName] = slotOptions;
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
(0, builder_util_1.deepAssign)(snap, {
|
|
92
|
-
name: snapName,
|
|
93
|
-
version: appInfo.version,
|
|
94
|
-
title: options.title || appInfo.productName,
|
|
95
|
-
summary: options.summary || appInfo.productName,
|
|
96
|
-
compression: options.compression,
|
|
97
|
-
description: this.helper.getDescription(options),
|
|
98
|
-
architectures: [(0, builder_util_1.toLinuxArchString)(arch, "snap")],
|
|
99
|
-
apps: {
|
|
100
|
-
[snapName]: appDescriptor,
|
|
101
|
-
},
|
|
102
|
-
parts: {
|
|
103
|
-
app: {
|
|
104
|
-
"stage-packages": stagePackages,
|
|
105
|
-
},
|
|
106
|
-
},
|
|
107
|
-
});
|
|
108
|
-
if (options.autoStart) {
|
|
109
|
-
appDescriptor.autostart = `${snap.name}.desktop`;
|
|
110
|
-
}
|
|
111
|
-
if (options.confinement === "classic") {
|
|
112
|
-
delete appDescriptor.plugs;
|
|
113
|
-
delete snap.plugs;
|
|
114
|
-
}
|
|
115
|
-
else {
|
|
116
|
-
const archTriplet = archNameToTriplet(arch);
|
|
117
|
-
const environment = {
|
|
118
|
-
PATH: "$SNAP/usr/sbin:$SNAP/usr/bin:$SNAP/sbin:$SNAP/bin:$PATH",
|
|
119
|
-
SNAP_DESKTOP_RUNTIME: "$SNAP/gnome-platform",
|
|
120
|
-
LD_LIBRARY_PATH: [
|
|
121
|
-
"$SNAP_LIBRARY_PATH",
|
|
122
|
-
"$SNAP/lib:$SNAP/usr/lib:$SNAP/lib/" + archTriplet + ":$SNAP/usr/lib/" + archTriplet,
|
|
123
|
-
"$LD_LIBRARY_PATH:$SNAP/lib:$SNAP/usr/lib",
|
|
124
|
-
"$SNAP/lib/" + archTriplet + ":$SNAP/usr/lib/" + archTriplet,
|
|
125
|
-
].join(":"),
|
|
126
|
-
...options.environment,
|
|
127
|
-
};
|
|
128
|
-
// Determine whether Wayland should be disabled based on:
|
|
129
|
-
// - Electron version (<38 historically had Wayland disabled)
|
|
130
|
-
// - Explicit allowNativeWayland override.
|
|
131
|
-
// https://github.com/electron-userland/electron-builder/issues/9320
|
|
132
|
-
const allow = options.allowNativeWayland;
|
|
133
|
-
const isOldElectron = !this.isElectronVersionGreaterOrEqualThan("38.0.0");
|
|
134
|
-
if ((allow == null && isOldElectron) || // No explicit option -> use legacy behavior for old Electron
|
|
135
|
-
allow === false // Explicitly disallowed
|
|
136
|
-
) {
|
|
137
|
-
environment.DISABLE_WAYLAND = "1";
|
|
138
|
-
}
|
|
139
|
-
appDescriptor.environment = environment;
|
|
140
|
-
if (plugs != null) {
|
|
141
|
-
for (const plugName of plugNames) {
|
|
142
|
-
const plugOptions = plugs[plugName];
|
|
143
|
-
if (plugOptions == null) {
|
|
144
|
-
continue;
|
|
145
|
-
}
|
|
146
|
-
snap.plugs[plugName] = plugOptions;
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
if (buildPackages.length > 0) {
|
|
151
|
-
snap.parts.app["build-packages"] = buildPackages;
|
|
152
|
-
}
|
|
153
|
-
if (options.after != null) {
|
|
154
|
-
snap.parts.app.after = options.after;
|
|
155
|
-
}
|
|
156
|
-
if (options.assumes != null) {
|
|
157
|
-
snap.assumes = (0, builder_util_runtime_1.asArray)(options.assumes);
|
|
158
|
-
}
|
|
159
|
-
return snap;
|
|
160
|
-
}
|
|
161
|
-
async build(appOutDir, arch) {
|
|
162
|
-
var _a;
|
|
163
|
-
const packager = this.packager;
|
|
164
|
-
const options = this.options;
|
|
165
|
-
// tslint:disable-next-line:no-invalid-template-strings
|
|
166
|
-
const artifactName = packager.expandArtifactNamePattern(this.options, "snap", arch, "${name}_${version}_${arch}.${ext}", false);
|
|
167
|
-
const artifactPath = path.join(this.outDir, artifactName);
|
|
168
|
-
await packager.info.emitArtifactBuildStarted({
|
|
169
|
-
targetPresentableName: "snap",
|
|
170
|
-
file: artifactPath,
|
|
171
|
-
arch,
|
|
172
|
-
});
|
|
173
|
-
const snap = await this.createDescriptor(arch);
|
|
174
|
-
const stageDir = await (0, targetUtil_1.createStageDirPath)(this, packager, arch);
|
|
175
|
-
const snapArch = (0, builder_util_1.toLinuxArchString)(arch, "snap");
|
|
176
|
-
const args = ["snap", "--app", appOutDir, "--stage", stageDir, "--arch", snapArch, "--output", artifactPath, "--executable", this.packager.executableName];
|
|
177
|
-
await this.helper.icons;
|
|
178
|
-
if (this.helper.maxIconPath != null) {
|
|
179
|
-
if (!this.isUseTemplateApp) {
|
|
180
|
-
snap.icon = "snap/gui/icon.png";
|
|
181
|
-
}
|
|
182
|
-
args.push("--icon", this.helper.maxIconPath);
|
|
183
|
-
}
|
|
184
|
-
// snapcraft.yaml inside a snap directory
|
|
185
|
-
const snapMetaDir = path.join(stageDir, this.isUseTemplateApp ? "meta" : "snap");
|
|
186
|
-
const desktopFile = path.join(snapMetaDir, "gui", `${snap.name}.desktop`);
|
|
187
|
-
await this.helper.writeDesktopEntry(this.options, packager.executableName + " %U", desktopFile, {
|
|
188
|
-
// tslint:disable:no-invalid-template-strings
|
|
189
|
-
Icon: "${SNAP}/meta/gui/icon.png",
|
|
190
|
-
});
|
|
191
|
-
const extraAppArgs = (_a = options.executableArgs) !== null && _a !== void 0 ? _a : [];
|
|
192
|
-
if (this.isElectronVersionGreaterOrEqualThan("5.0.0") && !isBrowserSandboxAllowed(snap)) {
|
|
193
|
-
const noSandboxArg = "--no-sandbox";
|
|
194
|
-
if (!extraAppArgs.includes(noSandboxArg)) {
|
|
195
|
-
extraAppArgs.push(noSandboxArg);
|
|
196
|
-
}
|
|
197
|
-
if (this.isUseTemplateApp) {
|
|
198
|
-
args.push("--exclude", "chrome-sandbox");
|
|
199
|
-
}
|
|
200
|
-
}
|
|
201
|
-
if (extraAppArgs.length > 0) {
|
|
202
|
-
args.push("--extraAppArgs=" + extraAppArgs.join(" "));
|
|
203
|
-
}
|
|
204
|
-
if (snap.compression != null) {
|
|
205
|
-
args.push("--compression", snap.compression);
|
|
206
|
-
}
|
|
207
|
-
if (this.isUseTemplateApp) {
|
|
208
|
-
// remove fields that are valid in snapcraft.yaml, but not snap.yaml
|
|
209
|
-
const fieldsToStrip = ["compression", "contact", "donation", "issues", "parts", "source-code", "website"];
|
|
210
|
-
for (const field of fieldsToStrip) {
|
|
211
|
-
delete snap[field];
|
|
212
|
-
}
|
|
213
|
-
}
|
|
214
|
-
if (packager.packagerOptions.effectiveOptionComputed != null && (await packager.packagerOptions.effectiveOptionComputed({ snap, desktopFile, args }))) {
|
|
215
|
-
return;
|
|
216
|
-
}
|
|
217
|
-
await (0, fs_extra_1.outputFile)(path.join(snapMetaDir, this.isUseTemplateApp ? "snap.yaml" : "snapcraft.yaml"), (0, builder_util_1.serializeToYaml)(snap));
|
|
218
|
-
const hooksDir = await packager.getResource(options.hooks, "snap-hooks");
|
|
219
|
-
if (hooksDir != null) {
|
|
220
|
-
args.push("--hooks", hooksDir);
|
|
221
|
-
}
|
|
222
|
-
if (this.isUseTemplateApp) {
|
|
223
|
-
args.push("--template-url", `electron4:${snapArch}`);
|
|
224
|
-
}
|
|
225
|
-
await (0, builder_util_1.executeAppBuilder)(args);
|
|
226
|
-
const publishConfig = findSnapPublishConfig(this.packager.config);
|
|
227
|
-
await packager.info.emitArtifactBuildCompleted({
|
|
228
|
-
file: artifactPath,
|
|
229
|
-
safeArtifactName: packager.computeSafeArtifactName(artifactName, "snap", arch, false),
|
|
230
|
-
target: this,
|
|
231
|
-
arch,
|
|
232
|
-
packager,
|
|
233
|
-
publishConfig,
|
|
234
|
-
});
|
|
235
|
-
}
|
|
236
|
-
isElectronVersionGreaterOrEqualThan(version) {
|
|
237
|
-
return semver.gte(this.packager.config.electronVersion || "7.0.0", version);
|
|
238
|
-
}
|
|
239
|
-
}
|
|
240
|
-
exports.default = SnapTarget;
|
|
241
|
-
function findSnapPublishConfig(config) {
|
|
242
|
-
var _a, _b;
|
|
243
|
-
const fallback = { provider: "snapStore" };
|
|
244
|
-
if (!config) {
|
|
245
|
-
return fallback;
|
|
246
|
-
}
|
|
247
|
-
if ((_a = config.snap) === null || _a === void 0 ? void 0 : _a.publish) {
|
|
248
|
-
return findSnapPublishConfigInPublishNode(config.snap.publish);
|
|
249
|
-
}
|
|
250
|
-
if ((_b = config.linux) === null || _b === void 0 ? void 0 : _b.publish) {
|
|
251
|
-
const configCandidate = findSnapPublishConfigInPublishNode(config.linux.publish);
|
|
252
|
-
if (configCandidate) {
|
|
253
|
-
return configCandidate;
|
|
254
|
-
}
|
|
255
|
-
}
|
|
256
|
-
if (config.publish) {
|
|
257
|
-
const configCandidate = findSnapPublishConfigInPublishNode(config.publish);
|
|
258
|
-
if (configCandidate) {
|
|
259
|
-
return configCandidate;
|
|
260
|
-
}
|
|
261
|
-
}
|
|
262
|
-
return fallback;
|
|
263
|
-
}
|
|
264
|
-
function findSnapPublishConfigInPublishNode(configPublishNode) {
|
|
265
|
-
if (!configPublishNode) {
|
|
266
|
-
return null;
|
|
267
|
-
}
|
|
268
|
-
if (Array.isArray(configPublishNode)) {
|
|
269
|
-
for (const configObj of configPublishNode) {
|
|
270
|
-
if (isSnapStoreOptions(configObj)) {
|
|
271
|
-
return configObj;
|
|
272
|
-
}
|
|
273
|
-
}
|
|
274
|
-
}
|
|
275
|
-
if (typeof configPublishNode === `object` && isSnapStoreOptions(configPublishNode)) {
|
|
276
|
-
return configPublishNode;
|
|
277
|
-
}
|
|
278
|
-
return null;
|
|
279
|
-
}
|
|
280
|
-
function isSnapStoreOptions(configPublishNode) {
|
|
281
|
-
const snapStoreOptionsCandidate = configPublishNode;
|
|
282
|
-
return (snapStoreOptionsCandidate === null || snapStoreOptionsCandidate === void 0 ? void 0 : snapStoreOptionsCandidate.provider) === `snapStore`;
|
|
283
|
-
}
|
|
284
|
-
function archNameToTriplet(arch) {
|
|
285
|
-
switch (arch) {
|
|
286
|
-
case builder_util_1.Arch.x64:
|
|
287
|
-
return "x86_64-linux-gnu";
|
|
288
|
-
case builder_util_1.Arch.ia32:
|
|
289
|
-
return "i386-linux-gnu";
|
|
290
|
-
case builder_util_1.Arch.armv7l:
|
|
291
|
-
// noinspection SpellCheckingInspection
|
|
292
|
-
return "arm-linux-gnueabihf";
|
|
293
|
-
case builder_util_1.Arch.arm64:
|
|
294
|
-
return "aarch64-linux-gnu";
|
|
295
|
-
default:
|
|
296
|
-
throw new Error(`Unsupported arch ${arch}`);
|
|
297
|
-
}
|
|
298
|
-
}
|
|
299
|
-
function isArrayEqualRegardlessOfSort(a, b) {
|
|
300
|
-
a = a.slice();
|
|
301
|
-
b = b.slice();
|
|
302
|
-
a.sort();
|
|
303
|
-
b.sort();
|
|
304
|
-
return a.length === b.length && a.every((value, index) => value === b[index]);
|
|
305
|
-
}
|
|
306
|
-
function normalizePlugConfiguration(raw) {
|
|
307
|
-
if (raw == null) {
|
|
308
|
-
return null;
|
|
309
|
-
}
|
|
310
|
-
const result = {};
|
|
311
|
-
for (const item of Array.isArray(raw) ? raw : [raw]) {
|
|
312
|
-
if (typeof item === "string") {
|
|
313
|
-
result[item] = null;
|
|
314
|
-
}
|
|
315
|
-
else {
|
|
316
|
-
Object.assign(result, item);
|
|
317
|
-
}
|
|
318
|
-
}
|
|
319
|
-
return result;
|
|
320
|
-
}
|
|
321
|
-
function isBrowserSandboxAllowed(snap) {
|
|
322
|
-
if (snap.plugs != null) {
|
|
323
|
-
for (const plugName of Object.keys(snap.plugs)) {
|
|
324
|
-
const plug = snap.plugs[plugName];
|
|
325
|
-
if (plug.interface === "browser-support" && plug["allow-sandbox"] === true) {
|
|
326
|
-
return true;
|
|
327
|
-
}
|
|
328
|
-
}
|
|
329
|
-
}
|
|
330
|
-
return false;
|
|
331
|
-
}
|
|
332
|
-
function getDefaultStagePackages() {
|
|
333
|
-
// libxss1 - was "error while loading shared libraries: libXss.so.1" on Xubuntu 16.04
|
|
334
|
-
// noinspection SpellCheckingInspection
|
|
335
|
-
return ["libnspr4", "libnss3", "libxss1", "libappindicator3-1", "libsecret-1-0"];
|
|
336
|
-
}
|
|
337
|
-
//# sourceMappingURL=snap.js.map
|
package/out/targets/snap.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"snap.js","sourceRoot":"","sources":["../../src/targets/snap.ts"],"names":[],"mappings":"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","sourcesContent":["import { replaceDefault as _replaceDefault, Arch, deepAssign, executeAppBuilder, InvalidConfigurationError, log, serializeToYaml, toLinuxArchString } from \"builder-util\"\nimport { asArray, Nullish, SnapStoreOptions } from \"builder-util-runtime\"\nimport { outputFile, readFile } from \"fs-extra\"\nimport { load } from \"js-yaml\"\nimport * as path from \"path\"\nimport * as semver from \"semver\"\nimport { Configuration } from \"../configuration\"\nimport { Publish, Target } from \"../core\"\nimport { LinuxPackager } from \"../linuxPackager\"\nimport { PlugDescriptor, SnapOptions } from \"../options/SnapOptions\"\nimport { getTemplatePath } from \"../util/pathManager\"\nimport { LinuxTargetHelper } from \"./LinuxTargetHelper\"\nimport { createStageDirPath } from \"./targetUtil\"\n\nconst defaultPlugs = [\"desktop\", \"desktop-legacy\", \"home\", \"x11\", \"wayland\", \"unity7\", \"browser-support\", \"network\", \"gsettings\", \"audio-playback\", \"pulseaudio\", \"opengl\"]\n\nexport default class SnapTarget extends Target {\n readonly options: SnapOptions = { ...this.packager.platformSpecificBuildOptions, ...(this.packager.config as any)[this.name] }\n\n public isUseTemplateApp = false\n\n constructor(\n name: string,\n private readonly packager: LinuxPackager,\n private readonly helper: LinuxTargetHelper,\n readonly outDir: string\n ) {\n super(name)\n }\n\n private replaceDefault(inList: Array<string> | Nullish, defaultList: Array<string>) {\n const result = _replaceDefault(inList, defaultList)\n if (result !== defaultList) {\n this.isUseTemplateApp = false\n }\n return result\n }\n\n private async createDescriptor(arch: Arch): Promise<any> {\n if (!this.isElectronVersionGreaterOrEqualThan(\"4.0.0\")) {\n if (!this.isElectronVersionGreaterOrEqualThan(\"2.0.0-beta.1\")) {\n throw new InvalidConfigurationError(\"Electron 2 and higher is required to build Snap\")\n }\n\n log.warn(\"Electron 4 and higher is highly recommended for Snap\")\n }\n\n const appInfo = this.packager.appInfo\n const snapName = this.packager.executableName.toLowerCase()\n const options = this.options\n\n const plugs = normalizePlugConfiguration(this.options.plugs)\n\n const plugNames = this.replaceDefault(plugs == null ? null : Object.getOwnPropertyNames(plugs), defaultPlugs)\n\n const slots = normalizePlugConfiguration(this.options.slots)\n\n const buildPackages = asArray(options.buildPackages)\n const defaultStagePackages = getDefaultStagePackages()\n const stagePackages = this.replaceDefault(options.stagePackages, defaultStagePackages)\n\n this.isUseTemplateApp =\n this.options.useTemplateApp !== false &&\n (arch === Arch.x64 || arch === Arch.armv7l) &&\n buildPackages.length === 0 &&\n isArrayEqualRegardlessOfSort(stagePackages, defaultStagePackages)\n\n const appDescriptor: any = {\n command: \"command.sh\",\n plugs: plugNames,\n adapter: \"none\",\n }\n\n const snap: any = load(await readFile(path.join(getTemplatePath(\"snap\"), \"snapcraft.yaml\"), \"utf-8\"))\n if (this.isUseTemplateApp) {\n delete appDescriptor.adapter\n }\n if (options.base != null) {\n snap.base = options.base\n // from core22 onwards adapter is legacy\n if (Number(snap.base.split(\"core\")[1]) >= 22) {\n delete appDescriptor.adapter\n }\n }\n if (options.grade != null) {\n snap.grade = options.grade\n }\n if (options.confinement != null) {\n snap.confinement = options.confinement\n }\n if (options.appPartStage != null) {\n snap.parts.app.stage = options.appPartStage\n }\n if (options.layout != null) {\n snap.layout = options.layout\n }\n if (slots != null) {\n appDescriptor.slots = Object.getOwnPropertyNames(slots)\n for (const slotName of appDescriptor.slots) {\n const slotOptions = slots[slotName]\n if (slotOptions == null) {\n continue\n }\n if (!snap.slots) {\n snap.slots = {}\n }\n snap.slots[slotName] = slotOptions\n }\n }\n\n deepAssign(snap, {\n name: snapName,\n version: appInfo.version,\n title: options.title || appInfo.productName,\n summary: options.summary || appInfo.productName,\n compression: options.compression,\n description: this.helper.getDescription(options),\n architectures: [toLinuxArchString(arch, \"snap\")],\n apps: {\n [snapName]: appDescriptor,\n },\n parts: {\n app: {\n \"stage-packages\": stagePackages,\n },\n },\n })\n\n if (options.autoStart) {\n appDescriptor.autostart = `${snap.name}.desktop`\n }\n\n if (options.confinement === \"classic\") {\n delete appDescriptor.plugs\n delete snap.plugs\n } else {\n const archTriplet = archNameToTriplet(arch)\n const environment: Record<string, string> = {\n PATH: \"$SNAP/usr/sbin:$SNAP/usr/bin:$SNAP/sbin:$SNAP/bin:$PATH\",\n SNAP_DESKTOP_RUNTIME: \"$SNAP/gnome-platform\",\n LD_LIBRARY_PATH: [\n \"$SNAP_LIBRARY_PATH\",\n \"$SNAP/lib:$SNAP/usr/lib:$SNAP/lib/\" + archTriplet + \":$SNAP/usr/lib/\" + archTriplet,\n \"$LD_LIBRARY_PATH:$SNAP/lib:$SNAP/usr/lib\",\n \"$SNAP/lib/\" + archTriplet + \":$SNAP/usr/lib/\" + archTriplet,\n ].join(\":\"),\n ...options.environment,\n }\n // Determine whether Wayland should be disabled based on:\n // - Electron version (<38 historically had Wayland disabled)\n // - Explicit allowNativeWayland override.\n // https://github.com/electron-userland/electron-builder/issues/9320\n const allow = options.allowNativeWayland\n const isOldElectron = !this.isElectronVersionGreaterOrEqualThan(\"38.0.0\")\n if (\n (allow == null && isOldElectron) || // No explicit option -> use legacy behavior for old Electron\n allow === false // Explicitly disallowed\n ) {\n environment.DISABLE_WAYLAND = \"1\"\n }\n\n appDescriptor.environment = environment\n\n if (plugs != null) {\n for (const plugName of plugNames) {\n const plugOptions = plugs[plugName]\n if (plugOptions == null) {\n continue\n }\n\n snap.plugs[plugName] = plugOptions\n }\n }\n }\n\n if (buildPackages.length > 0) {\n snap.parts.app[\"build-packages\"] = buildPackages\n }\n if (options.after != null) {\n snap.parts.app.after = options.after\n }\n\n if (options.assumes != null) {\n snap.assumes = asArray(options.assumes)\n }\n\n return snap\n }\n\n async build(appOutDir: string, arch: Arch): Promise<any> {\n const packager = this.packager\n const options = this.options\n // tslint:disable-next-line:no-invalid-template-strings\n const artifactName = packager.expandArtifactNamePattern(this.options, \"snap\", arch, \"${name}_${version}_${arch}.${ext}\", false)\n const artifactPath = path.join(this.outDir, artifactName)\n await packager.info.emitArtifactBuildStarted({\n targetPresentableName: \"snap\",\n file: artifactPath,\n arch,\n })\n\n const snap = await this.createDescriptor(arch)\n\n const stageDir = await createStageDirPath(this, packager, arch)\n const snapArch = toLinuxArchString(arch, \"snap\")\n const args = [\"snap\", \"--app\", appOutDir, \"--stage\", stageDir, \"--arch\", snapArch, \"--output\", artifactPath, \"--executable\", this.packager.executableName]\n\n await this.helper.icons\n if (this.helper.maxIconPath != null) {\n if (!this.isUseTemplateApp) {\n snap.icon = \"snap/gui/icon.png\"\n }\n args.push(\"--icon\", this.helper.maxIconPath)\n }\n\n // snapcraft.yaml inside a snap directory\n const snapMetaDir = path.join(stageDir, this.isUseTemplateApp ? \"meta\" : \"snap\")\n const desktopFile = path.join(snapMetaDir, \"gui\", `${snap.name}.desktop`)\n await this.helper.writeDesktopEntry(this.options, packager.executableName + \" %U\", desktopFile, {\n // tslint:disable:no-invalid-template-strings\n Icon: \"${SNAP}/meta/gui/icon.png\",\n })\n\n const extraAppArgs: Array<string> = options.executableArgs ?? []\n if (this.isElectronVersionGreaterOrEqualThan(\"5.0.0\") && !isBrowserSandboxAllowed(snap)) {\n const noSandboxArg = \"--no-sandbox\"\n if (!extraAppArgs.includes(noSandboxArg)) {\n extraAppArgs.push(noSandboxArg)\n }\n if (this.isUseTemplateApp) {\n args.push(\"--exclude\", \"chrome-sandbox\")\n }\n }\n if (extraAppArgs.length > 0) {\n args.push(\"--extraAppArgs=\" + extraAppArgs.join(\" \"))\n }\n\n if (snap.compression != null) {\n args.push(\"--compression\", snap.compression)\n }\n\n if (this.isUseTemplateApp) {\n // remove fields that are valid in snapcraft.yaml, but not snap.yaml\n const fieldsToStrip = [\"compression\", \"contact\", \"donation\", \"issues\", \"parts\", \"source-code\", \"website\"]\n for (const field of fieldsToStrip) {\n delete snap[field]\n }\n }\n\n if (packager.packagerOptions.effectiveOptionComputed != null && (await packager.packagerOptions.effectiveOptionComputed({ snap, desktopFile, args }))) {\n return\n }\n\n await outputFile(path.join(snapMetaDir, this.isUseTemplateApp ? \"snap.yaml\" : \"snapcraft.yaml\"), serializeToYaml(snap))\n\n const hooksDir = await packager.getResource(options.hooks, \"snap-hooks\")\n if (hooksDir != null) {\n args.push(\"--hooks\", hooksDir)\n }\n\n if (this.isUseTemplateApp) {\n args.push(\"--template-url\", `electron4:${snapArch}`)\n }\n\n await executeAppBuilder(args)\n\n const publishConfig = findSnapPublishConfig(this.packager.config)\n\n await packager.info.emitArtifactBuildCompleted({\n file: artifactPath,\n safeArtifactName: packager.computeSafeArtifactName(artifactName, \"snap\", arch, false),\n target: this,\n arch,\n packager,\n publishConfig,\n })\n }\n\n private isElectronVersionGreaterOrEqualThan(version: string) {\n return semver.gte(this.packager.config.electronVersion || \"7.0.0\", version)\n }\n}\n\nfunction findSnapPublishConfig(config?: Configuration): SnapStoreOptions | null {\n const fallback: SnapStoreOptions = { provider: \"snapStore\" }\n\n if (!config) {\n return fallback\n }\n\n if (config.snap?.publish) {\n return findSnapPublishConfigInPublishNode(config.snap.publish)\n }\n\n if (config.linux?.publish) {\n const configCandidate = findSnapPublishConfigInPublishNode(config.linux.publish)\n\n if (configCandidate) {\n return configCandidate\n }\n }\n\n if (config.publish) {\n const configCandidate = findSnapPublishConfigInPublishNode(config.publish)\n\n if (configCandidate) {\n return configCandidate\n }\n }\n\n return fallback\n}\n\nfunction findSnapPublishConfigInPublishNode(configPublishNode: Publish): SnapStoreOptions | null {\n if (!configPublishNode) {\n return null\n }\n\n if (Array.isArray(configPublishNode)) {\n for (const configObj of configPublishNode) {\n if (isSnapStoreOptions(configObj)) {\n return configObj\n }\n }\n }\n\n if (typeof configPublishNode === `object` && isSnapStoreOptions(configPublishNode)) {\n return configPublishNode\n }\n\n return null\n}\n\nfunction isSnapStoreOptions(configPublishNode: Publish): configPublishNode is SnapStoreOptions {\n const snapStoreOptionsCandidate = configPublishNode as SnapStoreOptions\n return snapStoreOptionsCandidate?.provider === `snapStore`\n}\n\nfunction archNameToTriplet(arch: Arch): string {\n switch (arch) {\n case Arch.x64:\n return \"x86_64-linux-gnu\"\n case Arch.ia32:\n return \"i386-linux-gnu\"\n case Arch.armv7l:\n // noinspection SpellCheckingInspection\n return \"arm-linux-gnueabihf\"\n case Arch.arm64:\n return \"aarch64-linux-gnu\"\n\n default:\n throw new Error(`Unsupported arch ${arch}`)\n }\n}\n\nfunction isArrayEqualRegardlessOfSort(a: Array<string>, b: Array<string>) {\n a = a.slice()\n b = b.slice()\n a.sort()\n b.sort()\n return a.length === b.length && a.every((value, index) => value === b[index])\n}\n\nfunction normalizePlugConfiguration(raw: Array<string | PlugDescriptor> | PlugDescriptor | Nullish): Record<string, Record<string, any> | null> | null {\n if (raw == null) {\n return null\n }\n\n const result: any = {}\n for (const item of Array.isArray(raw) ? raw : [raw]) {\n if (typeof item === \"string\") {\n result[item] = null\n } else {\n Object.assign(result, item)\n }\n }\n return result\n}\n\nfunction isBrowserSandboxAllowed(snap: any): boolean {\n if (snap.plugs != null) {\n for (const plugName of Object.keys(snap.plugs)) {\n const plug = snap.plugs[plugName]\n if (plug.interface === \"browser-support\" && plug[\"allow-sandbox\"] === true) {\n return true\n }\n }\n }\n return false\n}\n\nfunction getDefaultStagePackages() {\n // libxss1 - was \"error while loading shared libraries: libXss.so.1\" on Xubuntu 16.04\n // noinspection SpellCheckingInspection\n return [\"libnspr4\", \"libnss3\", \"libxss1\", \"libappindicator3-1\", \"libsecret-1-0\"]\n}\n"]}
|