diff options
author | Mark Hatle <mark.hatle@amd.com> | 2023-07-06 14:27:29 -0600 |
---|---|---|
committer | Mark Hatle <mark.hatle@amd.com> | 2023-07-07 09:41:02 -0500 |
commit | 076b278f8e15b5d3f23f3cb625399b950c273c99 (patch) | |
tree | 4d76f85f27bb65cfd3b4963f175ff007523a168a | |
parent | 1e046b546065b51f018346adad9005776db8d83b (diff) | |
download | meta-xilinx-076b278f8e15b5d3f23f3cb625399b950c273c99.tar.gz |
weston: Add Weston 9.0.0 for libmali, disable Weston 10.0.2 with libmali
libmali only provides GL ES 2 interfaces, but Weston 10.0.2 requires GL ES 3
interfaces. Disble 10.0.2 version in this case, and fall back to 9.0.0.
The 9.0.0 version is based on the last 9.0.0 supported Yocto Project version.
One minor change was required, in order to support on-target upgrade from the
unmodified 10.0.2 to the libmali 9.0.0 requires a way to enabel PE set to 1.
However if the 9.0.0 version doesn't use libmali, we don't want the PE set
so that 10.0.2 remains the superior version.
Signed-off-by: Mark Hatle <mark.hatle@amd.com>
14 files changed, 530 insertions, 123 deletions
diff --git a/meta-xilinx-core/recipes-graphics/wayland/files/0001-libweston-GL_EXT_unpack_subimage-not-supported-for-G.patch b/meta-xilinx-core/recipes-graphics/wayland/files/0001-libweston-GL_EXT_unpack_subimage-not-supported-for-G.patch deleted file mode 100644 index e2e7dd95..00000000 --- a/meta-xilinx-core/recipes-graphics/wayland/files/0001-libweston-GL_EXT_unpack_subimage-not-supported-for-G.patch +++ /dev/null | |||
@@ -1,33 +0,0 @@ | |||
1 | From 354bbf9657385519dceeff6a890a71f9d53e6a8f Mon Sep 17 00:00:00 2001 | ||
2 | From: Parth Gajjar <parth.gajjar@amd.com> | ||
3 | Date: Tue, 17 Jan 2023 02:04:32 -0800 | ||
4 | Subject: [PATCH] libweston: GL_EXT_unpack_subimage not supported for GLES2.0 | ||
5 | |||
6 | Removing GL_EXT_unpack_subimage as not supported by GLES2.0 | ||
7 | |||
8 | Signed-off-by: Parth Gajjar <parth.gajjar@amd.com> | ||
9 | --- | ||
10 | libweston/renderer-gl/gl-renderer.c | 2 ++ | ||
11 | 1 file changed, 2 insertions(+) | ||
12 | |||
13 | diff --git a/libweston/renderer-gl/gl-renderer.c b/libweston/renderer-gl/gl-renderer.c | ||
14 | index 613ddf4..046a26f 100644 | ||
15 | --- a/libweston/renderer-gl/gl-renderer.c | ||
16 | +++ b/libweston/renderer-gl/gl-renderer.c | ||
17 | @@ -3941,11 +3941,13 @@ gl_renderer_setup(struct weston_compositor *ec, EGLSurface egl_surface) | ||
18 | else | ||
19 | ec->read_format = PIXMAN_a8b8g8r8; | ||
20 | |||
21 | +#if 0 | ||
22 | if (gr->gl_version < gr_gl_version(3, 0) && | ||
23 | !weston_check_egl_extension(extensions, "GL_EXT_unpack_subimage")) { | ||
24 | weston_log("GL_EXT_unpack_subimage not available.\n"); | ||
25 | return -1; | ||
26 | } | ||
27 | +#endif | ||
28 | |||
29 | if (gr->gl_version >= gr_gl_version(3, 0) || | ||
30 | weston_check_egl_extension(extensions, "GL_EXT_texture_type_2_10_10_10_REV")) | ||
31 | -- | ||
32 | 2.34.1 | ||
33 | |||
diff --git a/meta-xilinx-core/recipes-graphics/wayland/files/0002-libmali-does-not-support-gles3.patch b/meta-xilinx-core/recipes-graphics/wayland/files/0002-libmali-does-not-support-gles3.patch deleted file mode 100644 index d4dadc7c..00000000 --- a/meta-xilinx-core/recipes-graphics/wayland/files/0002-libmali-does-not-support-gles3.patch +++ /dev/null | |||
@@ -1,77 +0,0 @@ | |||
1 | libmali does not support libgles3 | ||
2 | |||
3 | Build in compatible ifdefs where necessary to workaround slight differences | ||
4 | between GLES2 (mali) and GLES3 (mesa) that Weston is expecting. | ||
5 | |||
6 | Signed-off-by: Mark Hatle <mark.hatle@amd.com> | ||
7 | |||
8 | diff -urN a/libweston/renderer-gl/gl-renderer.c b/libweston/renderer-gl/gl-renderer.c | ||
9 | --- a/libweston/renderer-gl/gl-renderer.c 2022-07-26 03:22:25.000000000 -0700 | ||
10 | +++ b/libweston/renderer-gl/gl-renderer.c 2022-10-26 16:25:13.497247422 -0700 | ||
11 | @@ -29,7 +29,7 @@ | ||
12 | |||
13 | #include <GLES2/gl2.h> | ||
14 | #include <GLES2/gl2ext.h> | ||
15 | -#include <GLES3/gl3.h> | ||
16 | +/*#include <GLES3/gl3.h>*/ | ||
17 | |||
18 | #include <stdbool.h> | ||
19 | #include <stdint.h> | ||
20 | @@ -1822,7 +1822,13 @@ | ||
21 | return GL_RED_EXT; | ||
22 | case GL_RG8_EXT: | ||
23 | return GL_RG_EXT; | ||
24 | +#ifndef GL_RGBA16F | ||
25 | +#define GL_RGBA16F GL_RGBA16F_EXT | ||
26 | +#endif | ||
27 | case GL_RGBA16F: | ||
28 | +#ifndef GL_RGB10_A2 | ||
29 | +#define GL_RGB10_A2 GL_RGB10_A2_EXT | ||
30 | +#endif | ||
31 | case GL_RGB10_A2: | ||
32 | return GL_RGBA; | ||
33 | default: | ||
34 | @@ -2023,6 +2029,9 @@ | ||
35 | gs->shader_variant = SHADER_VARIANT_RGBA; | ||
36 | pitch = wl_shm_buffer_get_stride(shm_buffer) / 8; | ||
37 | gl_format[0] = GL_RGBA16F; | ||
38 | +#ifndef GL_HALF_FLOAT | ||
39 | +#define GL_HALF_FLOAT GL_HALF_FLOAT_OES | ||
40 | +#endif | ||
41 | gl_pixel_type = GL_HALF_FLOAT; | ||
42 | es->is_opaque = false; | ||
43 | break; | ||
44 | diff -urN a/libweston/renderer-gl/gl-shader-config-color-transformation.c b/libweston/renderer-gl/gl-shader-config-color-transformation.c | ||
45 | --- a/libweston/renderer-gl/gl-shader-config-color-transformation.c 2022-07-26 03:22:25.000000000 -0700 | ||
46 | +++ b/libweston/renderer-gl/gl-shader-config-color-transformation.c 2022-07-26 03:22:25.000000000 -0700 | ||
47 | @@ -25,7 +25,8 @@ | ||
48 | |||
49 | #include "config.h" | ||
50 | |||
51 | -#include <GLES3/gl3.h> | ||
52 | +#include <GLES2/gl2.h> | ||
53 | +/*#include <GLES3/gl3.h>*/ | ||
54 | #include <GLES2/gl2ext.h> | ||
55 | |||
56 | #include <assert.h> | ||
57 | @@ -138,6 +139,9 @@ | ||
58 | glPixelStorei(GL_UNPACK_ROW_LENGTH_EXT, 0); | ||
59 | glPixelStorei(GL_UNPACK_SKIP_PIXELS_EXT, 0); | ||
60 | glPixelStorei(GL_UNPACK_SKIP_ROWS_EXT, 0); | ||
61 | +#ifndef GL_R32F | ||
62 | +#define GL_R32F GL_R32F_EXT | ||
63 | +#endif | ||
64 | glTexImage2D(GL_TEXTURE_2D, 0, GL_R32F, lut_len, nr_rows, 0, | ||
65 | GL_RED_EXT, GL_FLOAT, lut); | ||
66 | |||
67 | diff -ur a/shared/weston-egl-ext.h b/shared/weston-egl-ext.h | ||
68 | --- a/shared/weston-egl-ext.h 2022-07-26 03:22:25.000000000 -0700 | ||
69 | +++ b/shared/weston-egl-ext.h 2022-10-26 17:11:28.501107772 -0700 | ||
70 | @@ -150,6 +150,7 @@ | ||
71 | #define EGL_NO_DEVICE_EXT EGL_CAST(EGLDeviceEXT,0) | ||
72 | #define EGL_BAD_DEVICE_EXT 0x322B | ||
73 | #define EGL_DEVICE_EXT 0x322C | ||
74 | +#define EGLAttrib EGLAttribKHR | ||
75 | typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYDEVICEATTRIBEXTPROC) (EGLDeviceEXT device, EGLint attribute, EGLAttrib *value); | ||
76 | typedef const char *(EGLAPIENTRYP PFNEGLQUERYDEVICESTRINGEXTPROC) (EGLDeviceEXT device, EGLint name); | ||
77 | typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYDEVICESEXTPROC) (EGLint max_devices, EGLDeviceEXT *devices, EGLint *num_devices); | ||
diff --git a/meta-xilinx-core/recipes-graphics/wayland/weston/0001-libweston-backend-drm-Re-order-gbm-destruction-at-DR.patch b/meta-xilinx-core/recipes-graphics/wayland/weston/0001-libweston-backend-drm-Re-order-gbm-destruction-at-DR.patch new file mode 100644 index 00000000..f8f75894 --- /dev/null +++ b/meta-xilinx-core/recipes-graphics/wayland/weston/0001-libweston-backend-drm-Re-order-gbm-destruction-at-DR.patch | |||
@@ -0,0 +1,50 @@ | |||
1 | From c8bfa1f8d576cdc6d515dbbac36c48c6166be0d5 Mon Sep 17 00:00:00 2001 | ||
2 | From: Marius Vlad <marius.vlad@collabora.com> | ||
3 | Date: Thu, 1 Apr 2021 00:12:00 +0300 | ||
4 | Subject: [PATCH] libweston/backend-drm: Re-order gbm destruction at DRM-backend tear down | ||
5 | |||
6 | Tearing down the drm-backend when there are no input devices, would call | ||
7 | for the gbm device destruction before compositor shutdown. The latter | ||
8 | would call into the renderer detroy function and assume that the | ||
9 | EGLDisplay, which was created using the before-mentioned gbm device, is | ||
10 | still available. This patch re-orders the gbm destruction after the | ||
11 | compositor shutdown when no one would make use of it. | ||
12 | |||
13 | Fixes: #314 | ||
14 | |||
15 | Signed-off-by: Marius Vlad <marius.vlad@collabora.com> | ||
16 | Suggested-by: Daniel Stone <daniel.stone@collabora.com> | ||
17 | |||
18 | Upstream-Status: Backport [https://gitlab.freedesktop.org/wayland/weston/-/commit/d171c7b3ba346c4d0bd6494f45ebf0be3c3cc5fb] | ||
19 | --- | ||
20 | libweston/backend-drm/drm.c | 8 ++++---- | ||
21 | 1 file changed, 4 insertions(+), 4 deletions(-) | ||
22 | |||
23 | diff --git a/libweston/backend-drm/drm.c b/libweston/backend-drm/drm.c | ||
24 | index 2780f3b..fbcfeca 100644 | ||
25 | --- a/libweston/backend-drm/drm.c | ||
26 | +++ b/libweston/backend-drm/drm.c | ||
27 | @@ -3025,10 +3025,6 @@ err_drm_source: | ||
28 | err_udev_input: | ||
29 | udev_input_destroy(&b->input); | ||
30 | err_sprite: | ||
31 | -#ifdef BUILD_DRM_GBM | ||
32 | - if (b->gbm) | ||
33 | - gbm_device_destroy(b->gbm); | ||
34 | -#endif | ||
35 | destroy_sprites(b); | ||
36 | err_udev_dev: | ||
37 | udev_device_unref(drm_device); | ||
38 | @@ -3038,6 +3034,10 @@ err_launcher: | ||
39 | weston_launcher_destroy(compositor->launcher); | ||
40 | err_compositor: | ||
41 | weston_compositor_shutdown(compositor); | ||
42 | +#ifdef BUILD_DRM_GBM | ||
43 | + if (b->gbm) | ||
44 | + gbm_device_destroy(b->gbm); | ||
45 | +#endif | ||
46 | free(b); | ||
47 | return NULL; | ||
48 | } | ||
49 | -- | ||
50 | 2.33.0 | ||
diff --git a/meta-xilinx-core/recipes-graphics/wayland/weston/0001-meson.build-fix-incorrect-header.patch b/meta-xilinx-core/recipes-graphics/wayland/weston/0001-meson.build-fix-incorrect-header.patch new file mode 100644 index 00000000..06e0f7ba --- /dev/null +++ b/meta-xilinx-core/recipes-graphics/wayland/weston/0001-meson.build-fix-incorrect-header.patch | |||
@@ -0,0 +1,32 @@ | |||
1 | From a2ba4714a6872e547621d29d9ddcb0f374b88cf6 Mon Sep 17 00:00:00 2001 | ||
2 | From: Chen Qi <Qi.Chen@windriver.com> | ||
3 | Date: Tue, 20 Apr 2021 20:42:18 -0700 | ||
4 | Subject: [PATCH] meson.build: fix incorrect header | ||
5 | |||
6 | The wayland.c actually include 'xdg-shell-client-protocol.h' instead of | ||
7 | the server one, so fix it. Otherwise, it's possible to get build failure | ||
8 | due to race condition. | ||
9 | |||
10 | Upstream-Status: Pending | ||
11 | |||
12 | Signed-off-by: Chen Qi <Qi.Chen@windriver.com> | ||
13 | --- | ||
14 | libweston/backend-wayland/meson.build | 2 +- | ||
15 | 1 file changed, 1 insertion(+), 1 deletion(-) | ||
16 | |||
17 | diff --git a/libweston/backend-wayland/meson.build b/libweston/backend-wayland/meson.build | ||
18 | index 7e82513..29270b5 100644 | ||
19 | --- a/libweston/backend-wayland/meson.build | ||
20 | +++ b/libweston/backend-wayland/meson.build | ||
21 | @@ -10,7 +10,7 @@ srcs_wlwl = [ | ||
22 | fullscreen_shell_unstable_v1_protocol_c, | ||
23 | presentation_time_protocol_c, | ||
24 | presentation_time_server_protocol_h, | ||
25 | - xdg_shell_server_protocol_h, | ||
26 | + xdg_shell_client_protocol_h, | ||
27 | xdg_shell_protocol_c, | ||
28 | ] | ||
29 | |||
30 | -- | ||
31 | 2.30.2 | ||
32 | |||
diff --git a/meta-xilinx-core/recipes-graphics/wayland/weston/0001-tests-include-fcntl.h-for-open-O_RDWR-O_CLOEXEC-and-.patch b/meta-xilinx-core/recipes-graphics/wayland/weston/0001-tests-include-fcntl.h-for-open-O_RDWR-O_CLOEXEC-and-.patch new file mode 100644 index 00000000..6fe86ff3 --- /dev/null +++ b/meta-xilinx-core/recipes-graphics/wayland/weston/0001-tests-include-fcntl.h-for-open-O_RDWR-O_CLOEXEC-and-.patch | |||
@@ -0,0 +1,47 @@ | |||
1 | From 58760e09eed662a72da939ff4802d605489cff8e Mon Sep 17 00:00:00 2001 | ||
2 | From: Denys Dmytriyenko <denys@ti.com> | ||
3 | Date: Tue, 8 Sep 2020 19:37:42 -0400 | ||
4 | Subject: [PATCH] tests: include fcntl.h for open(), O_RDWR, O_CLOEXEC and | ||
5 | O_CREAT | ||
6 | |||
7 | musl libc (unlike glibc) requires explicitly incuding fcntl.h to define open(), | ||
8 | O_RDWR, O_CLOEXEC and O_CREAT. Otherwise the build fails with the errors: | ||
9 | |||
10 | | ../weston-9.0.0/tests/weston-test-fixture-compositor.c: In function 'wait_for_lock': | ||
11 | | ../weston-9.0.0/tests/weston-test-fixture-compositor.c:135:7: warning: implicit declaration of function 'open'; did you mean 'popen'? [-Wimplicit-function-declaration] | ||
12 | | 135 | fd = open(lock_path, O_RDWR | O_CLOEXEC | O_CREAT, 00700); | ||
13 | | | ^~~~ | ||
14 | | | popen | ||
15 | | ../weston-9.0.0/tests/weston-test-fixture-compositor.c:135:23: error: 'O_RDWR' undeclared (first use in this function) | ||
16 | | 135 | fd = open(lock_path, O_RDWR | O_CLOEXEC | O_CREAT, 00700); | ||
17 | | | ^~~~~~ | ||
18 | | ../weston-9.0.0/tests/weston-test-fixture-compositor.c:135:23: note: each undeclared identifier is reported only once for each function it appears in | ||
19 | | ../weston-9.0.0/tests/weston-test-fixture-compositor.c:135:32: error: 'O_CLOEXEC' undeclared (first use in this function) | ||
20 | | 135 | fd = open(lock_path, O_RDWR | O_CLOEXEC | O_CREAT, 00700); | ||
21 | | | ^~~~~~~~~ | ||
22 | | ../weston-9.0.0/tests/weston-test-fixture-compositor.c:135:44: error: 'O_CREAT' undeclared (first use in this function) | ||
23 | | 135 | fd = open(lock_path, O_RDWR | O_CLOEXEC | O_CREAT, 00700); | ||
24 | | | ^~~~~~~ | ||
25 | |||
26 | Upstream-Status: Submitted [https://gitlab.freedesktop.org/wayland/weston/-/merge_requests/493/diffs?commit_id=b10c0e843dcb8148bbe869bb15261955b94ac98c] | ||
27 | |||
28 | Signed-off-by: Denys Dmytriyenko <denys@ti.com> | ||
29 | --- | ||
30 | tests/weston-test-fixture-compositor.c | 1 + | ||
31 | 1 file changed, 1 insertion(+) | ||
32 | |||
33 | diff --git a/tests/weston-test-fixture-compositor.c b/tests/weston-test-fixture-compositor.c | ||
34 | index 0c9855f..e0e32c9 100644 | ||
35 | --- a/tests/weston-test-fixture-compositor.c | ||
36 | +++ b/tests/weston-test-fixture-compositor.c | ||
37 | @@ -31,6 +31,7 @@ | ||
38 | #include <unistd.h> | ||
39 | #include <sys/file.h> | ||
40 | #include <errno.h> | ||
41 | +#include <fcntl.h> | ||
42 | |||
43 | #include "shared/helpers.h" | ||
44 | #include "weston-test-fixture-compositor.h" | ||
45 | -- | ||
46 | 2.7.4 | ||
47 | |||
diff --git a/meta-xilinx-core/recipes-graphics/wayland/weston/0001-weston-launch-Provide-a-default-version-that-doesn-t.patch b/meta-xilinx-core/recipes-graphics/wayland/weston/0001-weston-launch-Provide-a-default-version-that-doesn-t.patch new file mode 100644 index 00000000..f6ebfd8f --- /dev/null +++ b/meta-xilinx-core/recipes-graphics/wayland/weston/0001-weston-launch-Provide-a-default-version-that-doesn-t.patch | |||
@@ -0,0 +1,199 @@ | |||
1 | From a1548c742bf2dedbb47282d8a00407b60bbab669 Mon Sep 17 00:00:00 2001 | ||
2 | From: Tom Hochstein <tom.hochstein@nxp.com> | ||
3 | Date: Wed, 22 Feb 2017 15:53:30 +0200 | ||
4 | Subject: [PATCH] weston-launch: Provide a default version that doesn't require | ||
5 | |||
6 | PAM | ||
7 | |||
8 | weston-launch requires PAM for starting weston as a non-root user. | ||
9 | |||
10 | Since starting weston as root is a valid use case by itself, if | ||
11 | PAM is not available, provide a default version of weston-launch | ||
12 | without non-root-user support. | ||
13 | |||
14 | Upstream-Status: Denied [https://gitlab.freedesktop.org/wayland/weston/-/merge_requests/725] | ||
15 | |||
16 | Signed-off-by: Tom Hochstein <tom.hochstein@nxp.com> | ||
17 | Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com> | ||
18 | Signed-off-by: Denys Dmytriyenko <denys@ti.com> | ||
19 | Signed-off-by: Ming Liu <ming.liu@toradex.com> | ||
20 | |||
21 | --- | ||
22 | libweston/meson.build | 16 ++++++++++++---- | ||
23 | libweston/weston-launch.c | 21 +++++++++++++++++++++ | ||
24 | meson_options.txt | 7 +++++++ | ||
25 | 3 files changed, 40 insertions(+), 4 deletions(-) | ||
26 | |||
27 | diff --git a/libweston/meson.build b/libweston/meson.build | ||
28 | index 08d23ec..cb9fd3f 100644 | ||
29 | --- a/libweston/meson.build | ||
30 | +++ b/libweston/meson.build | ||
31 | @@ -216,16 +216,24 @@ dep_vertex_clipping = declare_dependency( | ||
32 | ) | ||
33 | |||
34 | if get_option('weston-launch') | ||
35 | - dep_pam = cc.find_library('pam') | ||
36 | + deps_weston_launch = [systemd_dep, dep_libdrm] | ||
37 | |||
38 | - if not cc.has_function('pam_open_session', dependencies: dep_pam) | ||
39 | - error('pam_open_session not found for weston-launch') | ||
40 | + if get_option('pam') | ||
41 | + dep_pam = cc.find_library('pam') | ||
42 | + if not cc.has_function('pam_open_session', dependencies: dep_pam) | ||
43 | + error('pam_open_session not found for weston-launch') | ||
44 | + endif | ||
45 | + | ||
46 | + if dep_pam.found() | ||
47 | + deps_weston_launch += dep_pam | ||
48 | + config_h.set('HAVE_PAM', '1') | ||
49 | + endif | ||
50 | endif | ||
51 | |||
52 | executable( | ||
53 | 'weston-launch', | ||
54 | 'weston-launch.c', | ||
55 | - dependencies: [dep_pam, systemd_dep, dep_libdrm], | ||
56 | + dependencies: deps_weston_launch, | ||
57 | include_directories: common_inc, | ||
58 | install: true | ||
59 | ) | ||
60 | diff --git a/libweston/weston-launch.c b/libweston/weston-launch.c | ||
61 | index 521cb2c..2d42d33 100644 | ||
62 | --- a/libweston/weston-launch.c | ||
63 | +++ b/libweston/weston-launch.c | ||
64 | @@ -51,7 +51,9 @@ | ||
65 | |||
66 | #include <pwd.h> | ||
67 | #include <grp.h> | ||
68 | +#ifdef HAVE_PAM | ||
69 | #include <security/pam_appl.h> | ||
70 | +#endif | ||
71 | |||
72 | #ifdef HAVE_SYSTEMD_LOGIN | ||
73 | #include <systemd/sd-login.h> | ||
74 | @@ -100,8 +102,10 @@ drmSetMaster(int drm_fd) | ||
75 | #endif | ||
76 | |||
77 | struct weston_launch { | ||
78 | +#ifdef HAVE_PAM | ||
79 | struct pam_conv pc; | ||
80 | pam_handle_t *ph; | ||
81 | +#endif | ||
82 | int tty; | ||
83 | int ttynr; | ||
84 | int sock[2]; | ||
85 | @@ -192,6 +196,7 @@ weston_launch_allowed(struct weston_launch *wl) | ||
86 | return false; | ||
87 | } | ||
88 | |||
89 | +#ifdef HAVE_PAM | ||
90 | static int | ||
91 | pam_conversation_fn(int msg_count, | ||
92 | const struct pam_message **messages, | ||
93 | @@ -232,6 +237,7 @@ setup_pam(struct weston_launch *wl) | ||
94 | |||
95 | return 0; | ||
96 | } | ||
97 | +#endif | ||
98 | |||
99 | static int | ||
100 | setup_launcher_socket(struct weston_launch *wl) | ||
101 | @@ -466,6 +472,7 @@ quit(struct weston_launch *wl, int status) | ||
102 | close(wl->signalfd); | ||
103 | close(wl->sock[0]); | ||
104 | |||
105 | +#ifdef HAVE_PAM | ||
106 | if (wl->new_user) { | ||
107 | err = pam_close_session(wl->ph, 0); | ||
108 | if (err) | ||
109 | @@ -473,6 +480,7 @@ quit(struct weston_launch *wl, int status) | ||
110 | err, pam_strerror(wl->ph, err)); | ||
111 | pam_end(wl->ph, err); | ||
112 | } | ||
113 | +#endif | ||
114 | |||
115 | /* | ||
116 | * Get a fresh handle to the tty as the previous one is in | ||
117 | @@ -710,6 +718,7 @@ setup_session(struct weston_launch *wl, char **child_argv) | ||
118 | setenv("HOME", wl->pw->pw_dir, 1); | ||
119 | setenv("SHELL", wl->pw->pw_shell, 1); | ||
120 | |||
121 | +#ifdef HAVE_PAM | ||
122 | env = pam_getenvlist(wl->ph); | ||
123 | if (env) { | ||
124 | for (i = 0; env[i]; ++i) { | ||
125 | @@ -718,6 +727,7 @@ setup_session(struct weston_launch *wl, char **child_argv) | ||
126 | } | ||
127 | free(env); | ||
128 | } | ||
129 | +#endif | ||
130 | |||
131 | /* | ||
132 | * We open a new session, so it makes sense | ||
133 | @@ -789,8 +799,10 @@ static void | ||
134 | help(const char *name) | ||
135 | { | ||
136 | fprintf(stderr, "Usage: %s [args...] [-- [weston args..]]\n", name); | ||
137 | +#ifdef HAVE_PAM | ||
138 | fprintf(stderr, " -u, --user Start session as specified username,\n" | ||
139 | " e.g. -u joe, requires root.\n"); | ||
140 | +#endif | ||
141 | fprintf(stderr, " -t, --tty Start session on alternative tty,\n" | ||
142 | " e.g. -t /dev/tty4, requires -u option.\n"); | ||
143 | fprintf(stderr, " -v, --verbose Be verbose\n"); | ||
144 | @@ -804,7 +816,9 @@ main(int argc, char *argv[]) | ||
145 | int i, c; | ||
146 | char *tty = NULL; | ||
147 | struct option opts[] = { | ||
148 | +#ifdef HAVE_PAM | ||
149 | { "user", required_argument, NULL, 'u' }, | ||
150 | +#endif | ||
151 | { "tty", required_argument, NULL, 't' }, | ||
152 | { "verbose", no_argument, NULL, 'v' }, | ||
153 | { "help", no_argument, NULL, 'h' }, | ||
154 | @@ -816,11 +830,16 @@ main(int argc, char *argv[]) | ||
155 | while ((c = getopt_long(argc, argv, "u:t:vh", opts, &i)) != -1) { | ||
156 | switch (c) { | ||
157 | case 'u': | ||
158 | +#ifdef HAVE_PAM | ||
159 | wl.new_user = optarg; | ||
160 | if (getuid() != 0) { | ||
161 | fprintf(stderr, "weston: Permission denied. -u allowed for root only\n"); | ||
162 | exit(EXIT_FAILURE); | ||
163 | } | ||
164 | +#else | ||
165 | + fprintf(stderr, "weston: -u is unsupported in this weston-launch build\n"); | ||
166 | + exit(EXIT_FAILURE); | ||
167 | +#endif | ||
168 | break; | ||
169 | case 't': | ||
170 | tty = optarg; | ||
171 | @@ -872,8 +891,10 @@ main(int argc, char *argv[]) | ||
172 | if (setup_tty(&wl, tty) < 0) | ||
173 | exit(EXIT_FAILURE); | ||
174 | |||
175 | +#ifdef HAVE_PAM | ||
176 | if (wl.new_user && setup_pam(&wl) < 0) | ||
177 | exit(EXIT_FAILURE); | ||
178 | +#endif | ||
179 | |||
180 | if (setup_launcher_socket(&wl) < 0) | ||
181 | exit(EXIT_FAILURE); | ||
182 | diff --git a/meson_options.txt b/meson_options.txt | ||
183 | index 239bd2d..99e4ec3 100644 | ||
184 | --- a/meson_options.txt | ||
185 | +++ b/meson_options.txt | ||
186 | @@ -73,6 +73,13 @@ option( | ||
187 | ) | ||
188 | |||
189 | option( | ||
190 | + 'pam', | ||
191 | + type: 'boolean', | ||
192 | + value: true, | ||
193 | + description: 'Define if PAM is available' | ||
194 | +) | ||
195 | + | ||
196 | +option( | ||
197 | 'xwayland', | ||
198 | type: 'boolean', | ||
199 | value: true, | ||
diff --git a/meta-xilinx-core/recipes-graphics/wayland/weston/dont-use-plane-add-prop.patch b/meta-xilinx-core/recipes-graphics/wayland/weston/dont-use-plane-add-prop.patch new file mode 100644 index 00000000..a4444e5d --- /dev/null +++ b/meta-xilinx-core/recipes-graphics/wayland/weston/dont-use-plane-add-prop.patch | |||
@@ -0,0 +1,23 @@ | |||
1 | Fix atomic modesetting with musl | ||
2 | |||
3 | atomic modesetting seems to fail with drm weston backend and this patch fixes | ||
4 | it, below errors are seen before weston exits | ||
5 | |||
6 | atomic: couldn't commit new state: Invalid argument | ||
7 | |||
8 | Upstream-Status: Submitted [https://gitlab.freedesktop.org/wayland/weston/-/issues/158] | ||
9 | Signed-off-by: Khem Raj <raj.khem@gmail.com> | ||
10 | |||
11 | --- a/libweston/backend-drm/kms.c | ||
12 | +++ b/libweston/backend-drm/kms.c | ||
13 | @@ -1168,8 +1168,8 @@ drm_pending_state_apply_atomic(struct dr | ||
14 | wl_list_for_each(plane, &b->plane_list, link) { | ||
15 | drm_debug(b, "\t\t[atomic] starting with plane %lu disabled\n", | ||
16 | (unsigned long) plane->plane_id); | ||
17 | - plane_add_prop(req, plane, WDRM_PLANE_CRTC_ID, 0); | ||
18 | - plane_add_prop(req, plane, WDRM_PLANE_FB_ID, 0); | ||
19 | + //plane_add_prop(req, plane, WDRM_PLANE_CRTC_ID, 0); | ||
20 | + //plane_add_prop(req, plane, WDRM_PLANE_FB_ID, 0); | ||
21 | } | ||
22 | |||
23 | flags |= DRM_MODE_ATOMIC_ALLOW_MODESET; | ||
diff --git a/meta-xilinx-core/recipes-graphics/wayland/weston/systemd-notify.weston-start b/meta-xilinx-core/recipes-graphics/wayland/weston/systemd-notify.weston-start new file mode 100644 index 00000000..a97e7b38 --- /dev/null +++ b/meta-xilinx-core/recipes-graphics/wayland/weston/systemd-notify.weston-start | |||
@@ -0,0 +1,9 @@ | |||
1 | #!/bin/sh | ||
2 | |||
3 | # SPDX-FileCopyrightText: Huawei Inc. | ||
4 | # SPDX-License-Identifier: Apache-2.0 | ||
5 | |||
6 | |||
7 | if [[ -x "/usr/lib/weston/systemd-notify.so" ]]; then | ||
8 | add_weston_module "systemd-notify.so" | ||
9 | fi | ||
diff --git a/meta-xilinx-core/recipes-graphics/wayland/weston/weston.desktop b/meta-xilinx-core/recipes-graphics/wayland/weston/weston.desktop new file mode 100644 index 00000000..1086ae8b --- /dev/null +++ b/meta-xilinx-core/recipes-graphics/wayland/weston/weston.desktop | |||
@@ -0,0 +1,9 @@ | |||
1 | [Desktop Entry] | ||
2 | Encoding=UTF-8 | ||
3 | Type=Application | ||
4 | Name=Weston | ||
5 | Comment=Wayland Compostitor | ||
6 | Exec=weston | ||
7 | Icon=weston | ||
8 | Terminal=false | ||
9 | Categories=Utility; | ||
diff --git a/meta-xilinx-core/recipes-graphics/wayland/weston/weston.png b/meta-xilinx-core/recipes-graphics/wayland/weston/weston.png new file mode 100644 index 00000000..ea8b7e0e --- /dev/null +++ b/meta-xilinx-core/recipes-graphics/wayland/weston/weston.png | |||
Binary files differ | |||
diff --git a/meta-xilinx-core/recipes-graphics/wayland/weston/xwayland.weston-start b/meta-xilinx-core/recipes-graphics/wayland/weston/xwayland.weston-start new file mode 100644 index 00000000..db384b1a --- /dev/null +++ b/meta-xilinx-core/recipes-graphics/wayland/weston/xwayland.weston-start | |||
@@ -0,0 +1,5 @@ | |||
1 | #!/bin/sh | ||
2 | |||
3 | if type Xwayland >/dev/null 2>/dev/null; then | ||
4 | mkdir -p /tmp/.X11-unix | ||
5 | fi | ||
diff --git a/meta-xilinx-core/recipes-graphics/wayland/weston_%.bbappend b/meta-xilinx-core/recipes-graphics/wayland/weston_%.bbappend index bb6413a8..edb77fc5 100644 --- a/meta-xilinx-core/recipes-graphics/wayland/weston_%.bbappend +++ b/meta-xilinx-core/recipes-graphics/wayland/weston_%.bbappend | |||
@@ -9,19 +9,6 @@ DEFAULT_PACKAGE_ARCH:zynqmp = "${SOC_FAMILY_ARCH}" | |||
9 | PACKAGE_ARCH = "${DEFAULT_PACKAGE_ARCH}" | 9 | PACKAGE_ARCH = "${DEFAULT_PACKAGE_ARCH}" |
10 | 10 | ||
11 | 11 | ||
12 | # mali400 specific items | ||
13 | LIBMALI_SRC_URI = " \ | ||
14 | file://0001-libweston-GL_EXT_unpack_subimage-not-supported-for-G.patch \ | ||
15 | file://0002-libmali-does-not-support-gles3.patch \ | ||
16 | " | ||
17 | MALI_SRC_URI = "${@bb.utils.contains('DISTRO_FEATURES', 'libmali', '${LIBMALI_SRC_URI}', '', d)}" | ||
18 | SRC_URI:append = "${@bb.utils.contains('MACHINE_FEATURES', 'mali400', ' ${MALI_SRC_URI}', '', d)}" | ||
19 | |||
20 | # Skip dmabuf-feedback, as it requires gbm >= 21.1.1, mali-xlnx only provides 17.3 | ||
21 | DEFAULT_SIMPLECLIENTS := "${SIMPLECLIENTS}" | ||
22 | MALI_SIMPLECLIENTS = "${@bb.utils.contains('DISTRO_FEATURES', 'libmali', 'damage,im,egl,shm,touch,dmabuf-v4l,dmabuf-egl', '${DEFAULT_SIMPLECLIENTS}', d)}" | ||
23 | SIMPLECLIENTS = "${@bb.utils.contains('MACHINE_FEATURES', 'mali400', '${MALI_SIMPLECLIENTS}', '${DEFAULT_SIMPLECLIENTS}', d)}" | ||
24 | |||
25 | # Links to libmali-xlnx, so it becomes MACHINE_ARCH specific | 12 | # Links to libmali-xlnx, so it becomes MACHINE_ARCH specific |
26 | DEFAULT_PACKAGE_ARCH := "${PACKAGE_ARCH}" | 13 | DEFAULT_PACKAGE_ARCH := "${PACKAGE_ARCH}" |
27 | MALI_PACKAGE_ARCH = "${@'${MACHINE_ARCH}' if d.getVar('PREFERRED_PROVIDER_virtual/libgles1') == 'libmali-xlnx' else '${DEFAULT_PACKAGE_ARCH}'}" | 14 | MALI_PACKAGE_ARCH = "${@'${MACHINE_ARCH}' if d.getVar('PREFERRED_PROVIDER_virtual/libgles1') == 'libmali-xlnx' else '${DEFAULT_PACKAGE_ARCH}'}" |
diff --git a/meta-xilinx-core/recipes-graphics/wayland/weston_10.0.2.bbappend b/meta-xilinx-core/recipes-graphics/wayland/weston_10.0.2.bbappend new file mode 100644 index 00000000..18396c5e --- /dev/null +++ b/meta-xilinx-core/recipes-graphics/wayland/weston_10.0.2.bbappend | |||
@@ -0,0 +1,8 @@ | |||
1 | ZYNQMP_WARN_DEFAULT = "0" | ||
2 | ZYNQMP_WARN_DEFAULT:zynqmp = "${@bb.utils.contains('DISTRO_FEATURES', 'libmali', '1', '0', d)}" | ||
3 | ZYNQMP_WARN = "${@bb.utils.contains('MACHINE_FEATURES', 'mali400', '${ZYNQMP_WARN_DEFAULT}', '0', d)}" | ||
4 | |||
5 | python() { | ||
6 | if d.getVar('ZYNQMP_WARN') == "1": | ||
7 | raise bb.parse.SkipRecipe("Weston 10.0.0.2 requires GLES 3 interfaces which are not available when libmali enabled. Use Weston 9.0.0.0 instead.") | ||
8 | } | ||
diff --git a/meta-xilinx-core/recipes-graphics/wayland/weston_9.0.0.bb b/meta-xilinx-core/recipes-graphics/wayland/weston_9.0.0.bb new file mode 100644 index 00000000..a534b1b7 --- /dev/null +++ b/meta-xilinx-core/recipes-graphics/wayland/weston_9.0.0.bb | |||
@@ -0,0 +1,148 @@ | |||
1 | SUMMARY = "Weston, a Wayland compositor" | ||
2 | DESCRIPTION = "Weston is the reference implementation of a Wayland compositor" | ||
3 | HOMEPAGE = "http://wayland.freedesktop.org" | ||
4 | LICENSE = "MIT" | ||
5 | LIC_FILES_CHKSUM = "file://COPYING;md5=d79ee9e66bb0f95d3386a7acae780b70 \ | ||
6 | file://libweston/compositor.c;endline=27;md5=6c53bbbd99273f4f7c4affa855c33c0a" | ||
7 | |||
8 | # We want this version to be "newer" then 10, only if libmali and mali400 are both enabled | ||
9 | ORIG_PE := "${PE}" | ||
10 | MALI_PE = "${@bb.utils.contains('DISTRO_FEATURES', 'libmali', '1', '${ORIG_PE}', d)}" | ||
11 | PE = "${@bb.utils.contains('MACHINE_FEATURES', 'mali400', '${MALI_PE}', '${ORIG_PE}', d)}" | ||
12 | |||
13 | SRC_URI = "https://wayland.freedesktop.org/releases/${BPN}-${PV}.tar.xz \ | ||
14 | file://weston.png \ | ||
15 | file://weston.desktop \ | ||
16 | file://xwayland.weston-start \ | ||
17 | file://systemd-notify.weston-start \ | ||
18 | file://0001-weston-launch-Provide-a-default-version-that-doesn-t.patch \ | ||
19 | file://0001-tests-include-fcntl.h-for-open-O_RDWR-O_CLOEXEC-and-.patch \ | ||
20 | file://0001-meson.build-fix-incorrect-header.patch \ | ||
21 | file://0001-libweston-backend-drm-Re-order-gbm-destruction-at-DR.patch \ | ||
22 | " | ||
23 | |||
24 | SRC_URI:append:libc-musl = " file://dont-use-plane-add-prop.patch " | ||
25 | |||
26 | SRC_URI[sha256sum] = "5cf5d6ce192e0eb15c1fc861a436bf21b5bb3b91dbdabbdebe83e1f83aa098fe" | ||
27 | |||
28 | UPSTREAM_CHECK_URI = "https://wayland.freedesktop.org/releases.html" | ||
29 | |||
30 | inherit meson pkgconfig useradd features_check | ||
31 | # depends on virtual/egl | ||
32 | # weston-init requires pam enabled if started via systemd | ||
33 | REQUIRED_DISTRO_FEATURES = "opengl ${@oe.utils.conditional('VIRTUAL-RUNTIME_init_manager', 'systemd', 'pam', '', d)}" | ||
34 | |||
35 | DEPENDS = "libxkbcommon gdk-pixbuf pixman cairo glib-2.0" | ||
36 | DEPENDS += "wayland wayland-protocols libinput virtual/egl pango wayland-native" | ||
37 | |||
38 | LDFLAGS += "${@bb.utils.contains('DISTRO_FEATURES', 'lto', '-Wl,-z,undefs', '', d)}" | ||
39 | |||
40 | WESTON_MAJOR_VERSION = "${@'.'.join(d.getVar('PV').split('.')[0:1])}" | ||
41 | |||
42 | EXTRA_OEMESON += "-Dbackend-default=auto -Dpipewire=false" | ||
43 | |||
44 | PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'kms fbdev wayland egl clients', '', d)} \ | ||
45 | ${@bb.utils.contains('DISTRO_FEATURES', 'x11 wayland', 'xwayland', '', d)} \ | ||
46 | ${@bb.utils.filter('DISTRO_FEATURES', 'pam systemd x11', d)} \ | ||
47 | ${@bb.utils.contains_any('DISTRO_FEATURES', 'wayland x11', '', 'headless', d)} \ | ||
48 | launch \ | ||
49 | image-jpeg \ | ||
50 | screenshare \ | ||
51 | shell-desktop \ | ||
52 | shell-fullscreen \ | ||
53 | shell-ivi" | ||
54 | |||
55 | # | ||
56 | # Compositor choices | ||
57 | # | ||
58 | # Weston on KMS | ||
59 | PACKAGECONFIG[kms] = "-Dbackend-drm=true,-Dbackend-drm=false,drm udev virtual/egl virtual/libgles2 virtual/libgbm mtdev" | ||
60 | # Weston on Wayland (nested Weston) | ||
61 | PACKAGECONFIG[wayland] = "-Dbackend-wayland=true,-Dbackend-wayland=false,virtual/egl virtual/libgles2" | ||
62 | # Weston on X11 | ||
63 | PACKAGECONFIG[x11] = "-Dbackend-x11=true,-Dbackend-x11=false,virtual/libx11 libxcb libxcb libxcursor cairo" | ||
64 | # Headless Weston | ||
65 | PACKAGECONFIG[headless] = "-Dbackend-headless=true,-Dbackend-headless=false" | ||
66 | # Weston on framebuffer | ||
67 | PACKAGECONFIG[fbdev] = "-Dbackend-fbdev=true,-Dbackend-fbdev=false,udev mtdev" | ||
68 | # Weston on RDP | ||
69 | PACKAGECONFIG[rdp] = "-Dbackend-rdp=true,-Dbackend-rdp=false,freerdp" | ||
70 | # weston-launch | ||
71 | PACKAGECONFIG[launch] = "-Dweston-launch=true,-Dweston-launch=false,drm" | ||
72 | # VA-API desktop recorder | ||
73 | PACKAGECONFIG[vaapi] = "-Dbackend-drm-screencast-vaapi=true,-Dbackend-drm-screencast-vaapi=false,libva" | ||
74 | # Weston with EGL support | ||
75 | PACKAGECONFIG[egl] = "-Drenderer-gl=true,-Drenderer-gl=false,virtual/egl" | ||
76 | # Weston with lcms support | ||
77 | PACKAGECONFIG[lcms] = "-Dcolor-management-lcms=true,-Dcolor-management-lcms=false,lcms" | ||
78 | # Weston with webp support | ||
79 | PACKAGECONFIG[webp] = "-Dimage-webp=true,-Dimage-webp=false,libwebp" | ||
80 | # Weston with systemd-login support | ||
81 | PACKAGECONFIG[systemd] = "-Dsystemd=true -Dlauncher-logind=true,-Dsystemd=false -Dlauncher-logind=false,systemd dbus" | ||
82 | # Weston with Xwayland support (requires X11 and Wayland) | ||
83 | PACKAGECONFIG[xwayland] = "-Dxwayland=true,-Dxwayland=false" | ||
84 | # colord CMS support | ||
85 | PACKAGECONFIG[colord] = "-Dcolor-management-colord=true,-Dcolor-management-colord=false,colord" | ||
86 | # Clients support | ||
87 | PACKAGECONFIG[clients] = "-Dsimple-clients=all -Ddemo-clients=true,-Dsimple-clients= -Ddemo-clients=false" | ||
88 | # Virtual remote output with GStreamer on DRM backend | ||
89 | PACKAGECONFIG[remoting] = "-Dremoting=true,-Dremoting=false,gstreamer1.0 gstreamer1.0-plugins-base" | ||
90 | # Weston with PAM support | ||
91 | PACKAGECONFIG[pam] = "-Dpam=true,-Dpam=false,libpam" | ||
92 | # Weston with screen-share support | ||
93 | PACKAGECONFIG[screenshare] = "-Dscreenshare=true,-Dscreenshare=false" | ||
94 | # Traditional desktop shell | ||
95 | PACKAGECONFIG[shell-desktop] = "-Dshell-desktop=true,-Dshell-desktop=false" | ||
96 | # Fullscreen shell | ||
97 | PACKAGECONFIG[shell-fullscreen] = "-Dshell-fullscreen=true,-Dshell-fullscreen=false" | ||
98 | # In-Vehicle Infotainment (IVI) shell | ||
99 | PACKAGECONFIG[shell-ivi] = "-Dshell-ivi=true,-Dshell-ivi=false" | ||
100 | # JPEG image loading support | ||
101 | PACKAGECONFIG[image-jpeg] = "-Dimage-jpeg=true,-Dimage-jpeg=false, jpeg" | ||
102 | |||
103 | do_install:append() { | ||
104 | # Weston doesn't need the .la files to load modules, so wipe them | ||
105 | rm -f ${D}/${libdir}/libweston-${WESTON_MAJOR_VERSION}/*.la | ||
106 | |||
107 | # If X11, ship a desktop file to launch it | ||
108 | if [ "${@bb.utils.filter('DISTRO_FEATURES', 'x11', d)}" ]; then | ||
109 | install -d ${D}${datadir}/applications | ||
110 | install ${WORKDIR}/weston.desktop ${D}${datadir}/applications | ||
111 | |||
112 | install -d ${D}${datadir}/icons/hicolor/48x48/apps | ||
113 | install ${WORKDIR}/weston.png ${D}${datadir}/icons/hicolor/48x48/apps | ||
114 | fi | ||
115 | |||
116 | if [ "${@bb.utils.contains('PACKAGECONFIG', 'xwayland', 'yes', 'no', d)}" = "yes" ]; then | ||
117 | install -Dm 644 ${WORKDIR}/xwayland.weston-start ${D}${datadir}/weston-start/xwayland | ||
118 | fi | ||
119 | |||
120 | if [ "${@bb.utils.contains('PACKAGECONFIG', 'systemd', 'yes', 'no', d)}" = "yes" ]; then | ||
121 | install -Dm 644 ${WORKDIR}/systemd-notify.weston-start ${D}${datadir}/weston-start/systemd-notify | ||
122 | fi | ||
123 | |||
124 | if [ "${@bb.utils.contains('PACKAGECONFIG', 'launch', 'yes', 'no', d)}" = "yes" ]; then | ||
125 | chmod u+s ${D}${bindir}/weston-launch | ||
126 | fi | ||
127 | } | ||
128 | |||
129 | PACKAGES += "${@bb.utils.contains('PACKAGECONFIG', 'xwayland', '${PN}-xwayland', '', d)} \ | ||
130 | libweston-${WESTON_MAJOR_VERSION} ${PN}-examples" | ||
131 | |||
132 | FILES:${PN}-dev += "${libdir}/${BPN}/libexec_weston.so" | ||
133 | FILES:${PN} = "${bindir}/weston ${bindir}/weston-terminal ${bindir}/weston-info ${bindir}/weston-launch ${bindir}/wcap-decode ${libexecdir} ${libdir}/${BPN}/*.so* ${datadir}" | ||
134 | |||
135 | FILES:libweston-${WESTON_MAJOR_VERSION} = "${libdir}/lib*${SOLIBS} ${libdir}/libweston-${WESTON_MAJOR_VERSION}/*.so" | ||
136 | SUMMARY:libweston-${WESTON_MAJOR_VERSION} = "Helper library for implementing 'wayland window managers'." | ||
137 | |||
138 | FILES:${PN}-examples = "${bindir}/*" | ||
139 | |||
140 | FILES:${PN}-xwayland = "${libdir}/libweston-${WESTON_MAJOR_VERSION}/xwayland.so" | ||
141 | RDEPENDS:${PN}-xwayland += "xwayland" | ||
142 | |||
143 | RDEPENDS:${PN} += "xkeyboard-config" | ||
144 | RRECOMMENDS:${PN} = "weston-init liberation-fonts" | ||
145 | RRECOMMENDS:${PN}-dev += "wayland-protocols" | ||
146 | |||
147 | USERADD_PACKAGES = "${PN}" | ||
148 | GROUPADD_PARAM:${PN} = "--system weston-launch" | ||