Skip to content

Commit 0a7025e

Browse files
authored
fix: strip extra fields out that are not allowed when creating snap.yaml (#7104) (#7110)
1 parent 323618f commit 0a7025e

File tree

5 files changed

+256
-24
lines changed

5 files changed

+256
-24
lines changed

.changeset/small-dodos-worry.md

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"app-builder-lib": patch
3+
---
4+
5+
fix: strip extra fields out that are not allowed when creating snap.yaml (#7104)

packages/app-builder-lib/src/targets/snap.ts

+8-4
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,6 @@ export default class SnapTarget extends Target {
124124
const archTriplet = archNameToTriplet(arch)
125125
appDescriptor.environment = {
126126
DISABLE_WAYLAND: options.allowNativeWayland ? "" : "1",
127-
TMPDIR: "$XDG_RUNTIME_DIR",
128127
PATH: "$SNAP/usr/sbin:$SNAP/usr/bin:$SNAP/sbin:$SNAP/bin:$PATH",
129128
SNAP_DESKTOP_RUNTIME: "$SNAP/gnome-platform",
130129
LD_LIBRARY_PATH: [
@@ -175,9 +174,6 @@ export default class SnapTarget extends Target {
175174
})
176175

177176
const snap = await this.createDescriptor(arch)
178-
if (this.isUseTemplateApp) {
179-
delete snap.parts
180-
}
181177

182178
const stageDir = await createStageDirPath(this, packager, arch)
183179
const snapArch = toLinuxArchString(arch, "snap")
@@ -210,6 +206,14 @@ export default class SnapTarget extends Target {
210206
args.push("--compression", snap.compression)
211207
}
212208

209+
if (this.isUseTemplateApp) {
210+
// remove fields that are valid in snapcraft.yaml, but not snap.yaml
211+
const fieldsToStrip = ["compression", "contact", "donation", "issues", "parts", "source-code", "website"]
212+
for (const field of fieldsToStrip) {
213+
delete snap[field]
214+
}
215+
}
216+
213217
if (packager.packagerOptions.effectiveOptionComputed != null && (await packager.packagerOptions.effectiveOptionComputed({ snap, desktopFile, args }))) {
214218
return
215219
}

test/snapshots/linux/snapTest.js.snap

+207-11
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ Object {
2222
"LD_LIBRARY_PATH": "$SNAP_LIBRARY_PATH:$SNAP/lib:$SNAP/usr/lib:$SNAP/lib/x86_64-linux-gnu:$SNAP/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH:$SNAP/lib:$SNAP/usr/lib:$SNAP/lib/x86_64-linux-gnu:$SNAP/usr/lib/x86_64-linux-gnu",
2323
"PATH": "$SNAP/usr/sbin:$SNAP/usr/bin:$SNAP/sbin:$SNAP/bin:$PATH",
2424
"SNAP_DESKTOP_RUNTIME": "$SNAP/gnome-platform",
25-
"TMPDIR": "$XDG_RUNTIME_DIR",
2625
},
2726
"plugs": Array [
2827
"desktop",
@@ -93,7 +92,6 @@ Object {
9392
"LD_LIBRARY_PATH": "$SNAP_LIBRARY_PATH:$SNAP/lib:$SNAP/usr/lib:$SNAP/lib/x86_64-linux-gnu:$SNAP/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH:$SNAP/lib:$SNAP/usr/lib:$SNAP/lib/x86_64-linux-gnu:$SNAP/usr/lib/x86_64-linux-gnu",
9493
"PATH": "$SNAP/usr/sbin:$SNAP/usr/bin:$SNAP/sbin:$SNAP/bin:$PATH",
9594
"SNAP_DESKTOP_RUNTIME": "$SNAP/gnome-platform",
96-
"TMPDIR": "$XDG_RUNTIME_DIR",
9795
},
9896
"plugs": Array [
9997
"desktop",
@@ -310,13 +308,13 @@ exports[`compression option 1`] = `
310308
Object {
311309
"apps": Object {
312310
"sep": Object {
311+
"adapter": "none",
313312
"command": "command.sh",
314313
"environment": Object {
315314
"DISABLE_WAYLAND": "1",
316315
"LD_LIBRARY_PATH": "$SNAP_LIBRARY_PATH:$SNAP/lib:$SNAP/usr/lib:$SNAP/lib/x86_64-linux-gnu:$SNAP/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH:$SNAP/lib:$SNAP/usr/lib:$SNAP/lib/x86_64-linux-gnu:$SNAP/usr/lib/x86_64-linux-gnu",
317316
"PATH": "$SNAP/usr/sbin:$SNAP/usr/bin:$SNAP/sbin:$SNAP/bin:$PATH",
318317
"SNAP_DESKTOP_RUNTIME": "$SNAP/gnome-platform",
319-
"TMPDIR": "$XDG_RUNTIME_DIR",
320318
},
321319
"plugs": Array [
322320
"desktop",
@@ -342,7 +340,144 @@ Object {
342340
"confinement": "strict",
343341
"description": "Test Application (test quite “ #378)",
344342
"grade": "stable",
343+
"icon": "snap/gui/icon.png",
345344
"name": "sep",
345+
"parts": Object {
346+
"app": Object {
347+
"plugin": "nil",
348+
"stage": Array [
349+
"-usr/lib/python*",
350+
"-usr/bin/python*",
351+
"-var/lib/ucf",
352+
"-usr/include",
353+
"-usr/lib/X11",
354+
"-usr/share",
355+
"-usr/sbin",
356+
"-usr/bin",
357+
"-usr/lib/*/libicudata.*",
358+
"-usr/lib/*/libicui18n.*",
359+
"-usr/lib/*/libgtk-*",
360+
"-usr/lib/*/libgdk-*",
361+
"-usr/lib/*/glib-*",
362+
"-usr/lib/*/gtk-*",
363+
"-usr/lib/*/gdk-*",
364+
"-usr/lib/*/krb5",
365+
"-usr/lib/systemd",
366+
"-usr/lib/glib-networking",
367+
"-usr/lib/dconf",
368+
"-usr/lib/*/avahi",
369+
"-usr/lib/*/gio",
370+
"-usr/lib/*/libatk*",
371+
"-usr/lib/*/libatspi*",
372+
"-usr/lib/*/libavahi*",
373+
"-usr/lib/*/libcairo*",
374+
"-usr/lib/*/libcolordprivate*",
375+
"-usr/lib/*/libcolord*",
376+
"-usr/lib/*/libcroco*",
377+
"-usr/lib/*/libcups*",
378+
"-usr/lib/*/libdatrie*",
379+
"-usr/lib/*/libdconf*",
380+
"-usr/lib/*/libepoxy*",
381+
"-usr/lib/*/libexpatw*",
382+
"-usr/lib/*/libffi*",
383+
"-usr/lib/*/libfontconfig*",
384+
"-usr/lib/*/libfreetype*",
385+
"-usr/lib/*/libgdk_pixbuf*",
386+
"-usr/lib/*/libgdk_pixbuf_xlib*",
387+
"-usr/lib/*/libgio*",
388+
"-usr/lib/*/libglib*",
389+
"-usr/lib/*/libgmodule*",
390+
"-usr/lib/*/libgmp*",
391+
"-usr/lib/*/libgnutls*",
392+
"-usr/lib/*/libgobject*",
393+
"-usr/lib/*/libgraphite2*",
394+
"-usr/lib/*/libgssapi_krb5*",
395+
"-usr/lib/*/libgthread*",
396+
"-usr/lib/*/libharfbuzz*",
397+
"-usr/lib/*/libhogweed*",
398+
"-usr/lib/*/libicuio*",
399+
"-usr/lib/*/libicutest*",
400+
"-usr/lib/*/libicutu*",
401+
"-usr/lib/*/libicuuc*",
402+
"-usr/lib/*/libidn2*",
403+
"-usr/lib/*/libjbig*",
404+
"-usr/lib/*/libjpeg*",
405+
"-usr/lib/*/libjson*",
406+
"-usr/lib/*/libk5crypto*",
407+
"-usr/lib/*/libkrb5*",
408+
"-usr/lib/*/libkrb5support*",
409+
"-usr/lib/*/liblcms2*",
410+
"-usr/lib/*/libnettle*",
411+
"-usr/lib/*/libp11*",
412+
"-usr/lib/*/libpango*",
413+
"-usr/lib/*/libpangocairo*",
414+
"-usr/lib/*/libpangoft2*",
415+
"-usr/lib/*/libpixman*",
416+
"-usr/lib/*/libpng16*",
417+
"-usr/lib/*/libproxy*",
418+
"-usr/lib/*/librest*",
419+
"-usr/lib/*/librsvg*",
420+
"-usr/lib/*/libsecret*",
421+
"-usr/lib/*/libsoup*",
422+
"-usr/lib/*/libsqlite3*",
423+
"-usr/lib/*/libtasn1*",
424+
"-usr/lib/*/libthai*",
425+
"-usr/lib/*/libtiff*",
426+
"-usr/lib/*/libunistring*",
427+
"-usr/lib/*/libwayland*",
428+
"-usr/lib/*/libX11*",
429+
"-usr/lib/*/libXau*",
430+
"-usr/lib/*/libxcb.so*",
431+
"-usr/lib/*/libxcb-dri2*",
432+
"-usr/lib/*/libxcb-dri3*",
433+
"-usr/lib/*/libxcb-glx*",
434+
"-usr/lib/*/libxcb-present*",
435+
"-usr/lib/*/libxcb-render*",
436+
"-usr/lib/*/libxcb-shm*",
437+
"-usr/lib/*/libxcb-sync*",
438+
"-usr/lib/*/libxcb-xfixes*",
439+
"-usr/lib/*/libXcomposite*",
440+
"-usr/lib/*/libXcursor*",
441+
"-usr/lib/*/libXdamage*",
442+
"-usr/lib/*/libXdmcp*",
443+
"-usr/lib/*/libXext*",
444+
"-usr/lib/*/libXfixes*",
445+
"-usr/lib/*/libXinerama*",
446+
"-usr/lib/*/libXi*",
447+
"-usr/lib/*/libxkbcommon*",
448+
"-usr/lib/*/libxml2*",
449+
"-usr/lib/*/libXrandr*",
450+
"-usr/lib/*/libXrender*",
451+
],
452+
"stage-packages": Array [
453+
"libnspr4",
454+
"libnss3",
455+
"libxss1",
456+
"libappindicator3-1",
457+
"libsecret-1-0",
458+
],
459+
},
460+
"app-files": Object {
461+
"organize": Object {
462+
"*": "app/",
463+
},
464+
"plugin": "dump",
465+
"source": "app",
466+
"stage": Array [
467+
"-app/chrome-sandbox",
468+
"-LICENSES.chromium.html",
469+
],
470+
},
471+
"gnome-platform-empty-dirs": Object {
472+
"override-build": "mkdir -p \\"$SNAPCRAFT_PART_INSTALL/data-dir/themes\\" mkdir -p \\"$SNAPCRAFT_PART_INSTALL/data-dir/icons\\" mkdir -p \\"$SNAPCRAFT_PART_INSTALL/data-dir/sounds\\" mkdir $SNAPCRAFT_PART_INSTALL/gnome-platform
473+
",
474+
"plugin": "nil",
475+
},
476+
"launch-scripts": Object {
477+
"plugin": "dump",
478+
"source": "scripts",
479+
},
480+
},
346481
"plugs": Object {
347482
"gnome-3-28-1804": Object {
348483
"default-provider": "gnome-3-28-1804",
@@ -387,7 +522,6 @@ Object {
387522
"LD_LIBRARY_PATH": "$SNAP_LIBRARY_PATH:$SNAP/lib:$SNAP/usr/lib:$SNAP/lib/x86_64-linux-gnu:$SNAP/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH:$SNAP/lib:$SNAP/usr/lib:$SNAP/lib/x86_64-linux-gnu:$SNAP/usr/lib/x86_64-linux-gnu",
388523
"PATH": "$SNAP/usr/sbin:$SNAP/usr/bin:$SNAP/sbin:$SNAP/bin:$PATH",
389524
"SNAP_DESKTOP_RUNTIME": "$SNAP/gnome-platform",
390-
"TMPDIR": "$XDG_RUNTIME_DIR",
391525
},
392526
"plugs": Array [
393527
"desktop",
@@ -458,7 +592,6 @@ Object {
458592
"LD_LIBRARY_PATH": "$SNAP_LIBRARY_PATH:$SNAP/lib:$SNAP/usr/lib:$SNAP/lib/x86_64-linux-gnu:$SNAP/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH:$SNAP/lib:$SNAP/usr/lib:$SNAP/lib/x86_64-linux-gnu:$SNAP/usr/lib/x86_64-linux-gnu",
459593
"PATH": "$SNAP/usr/sbin:$SNAP/usr/bin:$SNAP/sbin:$SNAP/bin:$PATH",
460594
"SNAP_DESKTOP_RUNTIME": "$SNAP/gnome-platform",
461-
"TMPDIR": "$XDG_RUNTIME_DIR",
462595
},
463596
"plugs": Array [
464597
"desktop",
@@ -528,7 +661,6 @@ Object {
528661
"LD_LIBRARY_PATH": "$SNAP_LIBRARY_PATH:$SNAP/lib:$SNAP/usr/lib:$SNAP/lib/x86_64-linux-gnu:$SNAP/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH:$SNAP/lib:$SNAP/usr/lib:$SNAP/lib/x86_64-linux-gnu:$SNAP/usr/lib/x86_64-linux-gnu",
529662
"PATH": "$SNAP/usr/sbin:$SNAP/usr/bin:$SNAP/sbin:$SNAP/bin:$PATH",
530663
"SNAP_DESKTOP_RUNTIME": "$SNAP/gnome-platform",
531-
"TMPDIR": "$XDG_RUNTIME_DIR",
532664
},
533665
"plugs": Array [
534666
"desktop",
@@ -1262,7 +1394,6 @@ Object {
12621394
"LD_LIBRARY_PATH": "$SNAP_LIBRARY_PATH:$SNAP/lib:$SNAP/usr/lib:$SNAP/lib/x86_64-linux-gnu:$SNAP/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH:$SNAP/lib:$SNAP/usr/lib:$SNAP/lib/x86_64-linux-gnu:$SNAP/usr/lib/x86_64-linux-gnu",
12631395
"PATH": "$SNAP/usr/sbin:$SNAP/usr/bin:$SNAP/sbin:$SNAP/bin:$PATH",
12641396
"SNAP_DESKTOP_RUNTIME": "$SNAP/gnome-platform",
1265-
"TMPDIR": "$XDG_RUNTIME_DIR",
12661397
},
12671398
"plugs": Array [
12681399
"foo",
@@ -1323,7 +1454,6 @@ Object {
13231454
"LD_LIBRARY_PATH": "$SNAP_LIBRARY_PATH:$SNAP/lib:$SNAP/usr/lib:$SNAP/lib/x86_64-linux-gnu:$SNAP/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH:$SNAP/lib:$SNAP/usr/lib:$SNAP/lib/x86_64-linux-gnu:$SNAP/usr/lib/x86_64-linux-gnu",
13241455
"PATH": "$SNAP/usr/sbin:$SNAP/usr/bin:$SNAP/sbin:$SNAP/bin:$PATH",
13251456
"SNAP_DESKTOP_RUNTIME": "$SNAP/gnome-platform",
1326-
"TMPDIR": "$XDG_RUNTIME_DIR",
13271457
},
13281458
"plugs": Array [
13291459
"browser-sandbox",
@@ -1525,7 +1655,6 @@ Object {
15251655
"LD_LIBRARY_PATH": "$SNAP_LIBRARY_PATH:$SNAP/lib:$SNAP/usr/lib:$SNAP/lib/x86_64-linux-gnu:$SNAP/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH:$SNAP/lib:$SNAP/usr/lib:$SNAP/lib/x86_64-linux-gnu:$SNAP/usr/lib/x86_64-linux-gnu",
15261656
"PATH": "$SNAP/usr/sbin:$SNAP/usr/bin:$SNAP/sbin:$SNAP/bin:$PATH",
15271657
"SNAP_DESKTOP_RUNTIME": "$SNAP/gnome-platform",
1528-
"TMPDIR": "$XDG_RUNTIME_DIR",
15291658
},
15301659
"plugs": Array [
15311660
"browser-sandbox",
@@ -1726,7 +1855,6 @@ Object {
17261855
"LD_LIBRARY_PATH": "$SNAP_LIBRARY_PATH:$SNAP/lib:$SNAP/usr/lib:$SNAP/lib/x86_64-linux-gnu:$SNAP/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH:$SNAP/lib:$SNAP/usr/lib:$SNAP/lib/x86_64-linux-gnu:$SNAP/usr/lib/x86_64-linux-gnu",
17271856
"PATH": "$SNAP/usr/sbin:$SNAP/usr/bin:$SNAP/sbin:$SNAP/bin:$PATH",
17281857
"SNAP_DESKTOP_RUNTIME": "$SNAP/gnome-platform",
1729-
"TMPDIR": "$XDG_RUNTIME_DIR",
17301858
},
17311859
"plugs": Array [
17321860
"desktop",
@@ -1800,7 +1928,6 @@ Object {
18001928
"LD_LIBRARY_PATH": "$SNAP_LIBRARY_PATH:$SNAP/lib:$SNAP/usr/lib:$SNAP/lib/x86_64-linux-gnu:$SNAP/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH:$SNAP/lib:$SNAP/usr/lib:$SNAP/lib/x86_64-linux-gnu:$SNAP/usr/lib/x86_64-linux-gnu",
18011929
"PATH": "$SNAP/usr/sbin:$SNAP/usr/bin:$SNAP/sbin:$SNAP/bin:$PATH",
18021930
"SNAP_DESKTOP_RUNTIME": "$SNAP/gnome-platform",
1803-
"TMPDIR": "$XDG_RUNTIME_DIR",
18041931
},
18051932
"plugs": Array [
18061933
"desktop",
@@ -1880,3 +2007,72 @@ Object {
18802007
],
18812008
}
18822009
`;
2010+
2011+
exports[`use template app 1`] = `
2012+
Object {
2013+
"apps": Object {
2014+
"testapp": Object {
2015+
"command": "command.sh",
2016+
"environment": Object {
2017+
"DISABLE_WAYLAND": "1",
2018+
"LD_LIBRARY_PATH": "$SNAP_LIBRARY_PATH:$SNAP/lib:$SNAP/usr/lib:$SNAP/lib/x86_64-linux-gnu:$SNAP/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH:$SNAP/lib:$SNAP/usr/lib:$SNAP/lib/x86_64-linux-gnu:$SNAP/usr/lib/x86_64-linux-gnu",
2019+
"PATH": "$SNAP/usr/sbin:$SNAP/usr/bin:$SNAP/sbin:$SNAP/bin:$PATH",
2020+
"SNAP_DESKTOP_RUNTIME": "$SNAP/gnome-platform",
2021+
},
2022+
"plugs": Array [
2023+
"desktop",
2024+
"desktop-legacy",
2025+
"home",
2026+
"x11",
2027+
"wayland",
2028+
"unity7",
2029+
"browser-support",
2030+
"network",
2031+
"gsettings",
2032+
"audio-playback",
2033+
"pulseaudio",
2034+
"opengl",
2035+
],
2036+
},
2037+
},
2038+
"architectures": Array [
2039+
"amd64",
2040+
],
2041+
"base": "core18",
2042+
"confinement": "strict",
2043+
"description": "Test Application (test quite “ #378)",
2044+
"grade": "stable",
2045+
"name": "testapp",
2046+
"plugs": Object {
2047+
"gnome-3-28-1804": Object {
2048+
"default-provider": "gnome-3-28-1804",
2049+
"interface": "content",
2050+
"target": "$SNAP/gnome-platform",
2051+
},
2052+
"gtk-3-themes": Object {
2053+
"default-provider": "gtk-common-themes",
2054+
"interface": "content",
2055+
"target": "$SNAP/data-dir/themes",
2056+
},
2057+
"icon-themes": Object {
2058+
"default-provider": "gtk-common-themes",
2059+
"interface": "content",
2060+
"target": "$SNAP/data-dir/icons",
2061+
},
2062+
"sound-themes": Object {
2063+
"default-provider": "gtk-common-themes",
2064+
"interface": "content",
2065+
"target": "$SNAP/data-dir/sounds",
2066+
},
2067+
},
2068+
"summary": "Test App ßW",
2069+
"title": "Test App ßW",
2070+
"version": "1.1.0",
2071+
}
2072+
`;
2073+
2074+
exports[`use template app 2`] = `
2075+
Object {
2076+
"linux": Array [],
2077+
}
2078+
`;

test/src/helpers/packTester.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ if (process.env.TRAVIS !== "true") {
2727
}
2828

2929
export const linuxDirTarget = Platform.LINUX.createTarget(DIR_TARGET)
30-
export const snapTarget = Platform.LINUX.createTarget("snap")
30+
export const snapTarget = Platform.LINUX.createTarget("snap", Arch.x64)
3131

3232
export interface AssertPackOptions {
3333
readonly projectDirCreated?: (projectDir: string, tmpDir: TmpDir) => Promise<any>

0 commit comments

Comments
 (0)