summaryrefslogtreecommitdiffstats
path: root/meta/recipes-graphics/wayland
diff options
context:
space:
mode:
authorMing Liu <ming.liu@toradex.com>2019-08-02 17:14:41 +0800
committerRichard Purdie <richard.purdie@linuxfoundation.org>2019-08-03 23:56:01 +0100
commite5b0ad5dfa1bfec1d7f591554ab846252d8aaddb (patch)
tree2bdc682e1293dddc1257a955a2195d084aded8cd /meta/recipes-graphics/wayland
parent89a27680008dbe7a02016afc94fd62a05b0c9ff6 (diff)
downloadpoky-e5b0ad5dfa1bfec1d7f591554ab846252d8aaddb.tar.gz
weston: change to use meson build system
The changes include: - Drop all autotools related patches. - Move weston-launch setuid-install to do_install task since it's not supported yet by meson build. - Drop cairo-glesv2 package config, it's not supported by meson build, the recommended value is hard-coded to cairo-image for now in weston source. - Introduce remoting package config, to give this option a explicit value, or else the build would run into gstreamer missing error since it defaults to be true but gstreamer is not in depends list. - Default to headless backend if neither x11 nor wayland is in DISTRO_FEATURES. To be noticed, the packages built from meson would not be identical with those built from autotools, for instance, libz dependency has been dropped from meson build, and systemd-notify is always built in meson when systemd packageconfig is enabled, which in autotools, it's optional, and so on, it's not easy to list all the differences, but you could get them by comparing the pkgdata directories built by meson and autotools. (From OE-Core rev: 8d68e3cb315137f73d1b0f5f80180c2d3526f99d) Signed-off-by: Stefan Agner <stefan.agner@toradex.com> Signed-off-by: Ming Liu <ming.liu@toradex.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/recipes-graphics/wayland')
-rw-r--r--meta/recipes-graphics/wayland/weston/0001-make-error-portable.patch34
-rw-r--r--meta/recipes-graphics/wayland/weston/0001-weston-launch-Provide-a-default-version-that-doesn-t.patch93
-rw-r--r--meta/recipes-graphics/wayland/weston_6.0.1.bb49
3 files changed, 102 insertions, 74 deletions
diff --git a/meta/recipes-graphics/wayland/weston/0001-make-error-portable.patch b/meta/recipes-graphics/wayland/weston/0001-make-error-portable.patch
index 0eb3d95a6d..acea9dbc31 100644
--- a/meta/recipes-graphics/wayland/weston/0001-make-error-portable.patch
+++ b/meta/recipes-graphics/wayland/weston/0001-make-error-portable.patch
@@ -9,27 +9,14 @@ kind of systemsi e.g. musl.
9Upstream-Status: Submitted 9Upstream-Status: Submitted
10 10
11Signed-off-by: Khem Raj <raj.khem@gmail.com> 11Signed-off-by: Khem Raj <raj.khem@gmail.com>
12 12Signed-off-by: Ming Liu <ming.liu@toradex.com>
13--- 13---
14 configure.ac | 2 ++
15 libweston/weston-error.h | 20 ++++++++++++++++++++ 14 libweston/weston-error.h | 20 ++++++++++++++++++++
16 libweston/weston-launch.c | 2 +- 15 libweston/weston-launch.c | 2 +-
17 3 files changed, 23 insertions(+), 1 deletion(-) 16 meson.build | 1 +
17 3 files changed, 22 insertions(+), 1 deletion(-)
18 create mode 100644 libweston/weston-error.h 18 create mode 100644 libweston/weston-error.h
19 19
20diff --git a/configure.ac b/configure.ac
21index c05ad01..6da6e04 100644
22--- a/configure.ac
23+++ b/configure.ac
24@@ -126,6 +126,8 @@ AC_CHECK_DECL(CLOCK_MONOTONIC,[],
25 [AC_MSG_ERROR("CLOCK_MONOTONIC is needed to compile weston")],
26 [[#include <time.h>]])
27
28+AC_CHECK_HEADERS([error.h])
29+
30 AC_CHECK_FUNCS([mkostemp strchrnul initgroups posix_fallocate])
31
32 # check for libdrm as a build-time dependency only
33diff --git a/libweston/weston-error.h b/libweston/weston-error.h 20diff --git a/libweston/weston-error.h b/libweston/weston-error.h
34new file mode 100644 21new file mode 100644
35index 0000000..2089d02 22index 0000000..2089d02
@@ -76,3 +63,18 @@ index bf73e0d..9064439 100644
76 63
77 #define DRM_MAJOR 226 64 #define DRM_MAJOR 226
78 65
66diff --git a/meson.build b/meson.build
67index 2155b7b..baa52d9 100644
68--- a/meson.build
69+++ b/meson.build
70@@ -94,6 +94,7 @@ foreach func : optional_libc_funcs
71 endforeach
72
73 optional_system_headers = [
74+ 'error.h',
75 'linux/sync_file.h'
76 ]
77 foreach hdr : optional_system_headers
78--
792.7.4
80
diff --git a/meta/recipes-graphics/wayland/weston/0001-weston-launch-Provide-a-default-version-that-doesn-t.patch b/meta/recipes-graphics/wayland/weston/0001-weston-launch-Provide-a-default-version-that-doesn-t.patch
index a2f61bfdd3..81cc025371 100644
--- a/meta/recipes-graphics/wayland/weston/0001-weston-launch-Provide-a-default-version-that-doesn-t.patch
+++ b/meta/recipes-graphics/wayland/weston/0001-weston-launch-Provide-a-default-version-that-doesn-t.patch
@@ -15,44 +15,46 @@ Upstream-Status: Pending
15Signed-off-by: Tom Hochstein <tom.hochstein@nxp.com> 15Signed-off-by: Tom Hochstein <tom.hochstein@nxp.com>
16Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com> 16Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
17Signed-off-by: Denys Dmytriyenko <denys@ti.com> 17Signed-off-by: Denys Dmytriyenko <denys@ti.com>
18 18Signed-off-by: Ming Liu <ming.liu@toradex.com>
19--- 19---
20 configure.ac | 9 +++++++-- 20 libweston/meson.build | 16 ++++++++++++----
21 libweston/weston-launch.c | 20 ++++++++++++++++++++ 21 libweston/weston-launch.c | 20 ++++++++++++++++++++
22 2 files changed, 27 insertions(+), 2 deletions(-) 22 meson_options.txt | 7 +++++++
23 3 files changed, 39 insertions(+), 4 deletions(-)
23 24
24diff --git a/configure.ac b/configure.ac 25diff --git a/libweston/meson.build b/libweston/meson.build
25index 6da6e04..681f7c8 100644 26index 33ab970..32f495a 100644
26--- a/configure.ac 27--- a/libweston/meson.build
27+++ b/configure.ac 28+++ b/libweston/meson.build
28@@ -515,13 +515,17 @@ AC_ARG_ENABLE(resize-optimization, 29@@ -472,16 +472,24 @@ if get_option('renderer-gl')
29 AS_IF([test "x$enable_resize_optimization" = "xyes"], 30 endif
30 [AC_DEFINE([USE_RESIZE_POOL], [1], [Use resize memory pool as a performance optimization])]) 31
31 32 if get_option('weston-launch')
32+AC_ARG_WITH(pam, 33- dep_pam = cc.find_library('pam')
33+ AS_HELP_STRING([--with-pam], [Use PAM]), 34+ deps_weston_launch = [systemd_dep, dep_libdrm]
34+ [use_pam=$withval], [use_pam=yes]) 35
35 AC_ARG_ENABLE(weston-launch, [ --enable-weston-launch],, enable_weston_launch=yes) 36- if not cc.has_function('pam_open_session', dependencies: dep_pam)
36 AM_CONDITIONAL(BUILD_WESTON_LAUNCH, test x$enable_weston_launch = xyes) 37- error('pam_open_session not found for weston-launch')
37-if test x$enable_weston_launch = xyes; then 38+ if get_option('pam')
38+if test x$enable_weston_launch = xyes -a x$use_pam = xyes; then 39+ dep_pam = cc.find_library('pam')
39 WESTON_SEARCH_LIBS([PAM], [pam], [pam_open_session], [have_pam=yes], [have_pam=no]) 40+ if not cc.has_function('pam_open_session', dependencies: dep_pam)
40 if test x$have_pam = xno; then 41+ error('pam_open_session not found for weston-launch')
41- AC_ERROR([weston-launch requires pam]) 42+ endif
42+ AC_ERROR([PAM support is explicitly requested, but libpam couldn't be found]) 43+
43 fi 44+ if dep_pam.found()
44+ AC_DEFINE([HAVE_PAM], [1], [Define if PAM is available]) 45+ deps_weston_launch += dep_pam
45 fi 46+ config_h.set('HAVE_PAM', '1')
46 47+ endif
47 AM_CONDITIONAL(HAVE_PANGO, test "x$have_pango" = "xyes") 48 endif
48@@ -767,6 +771,7 @@ AC_MSG_RESULT([ 49
49 Enable developer documentation ${enable_devdocs} 50 executable(
50 51 'weston-launch',
51 weston-launch utility ${enable_weston_launch} 52 'weston-launch.c',
52+ PAM support ${use_pam} 53- dependencies: [dep_pam, systemd_dep, dep_libdrm],
53 systemd-login support ${have_systemd_login} 54+ dependencies: deps_weston_launch,
54 systemd notify support ${enable_systemd_notify} 55 include_directories: include_directories('..'),
55 56 install: true
57 )
56diff --git a/libweston/weston-launch.c b/libweston/weston-launch.c 58diff --git a/libweston/weston-launch.c b/libweston/weston-launch.c
57index 9064439..c6abe92 100644 59index 9064439..c6abe92 100644
58--- a/libweston/weston-launch.c 60--- a/libweston/weston-launch.c
@@ -172,3 +174,24 @@ index 9064439..c6abe92 100644
172 174
173 if (setup_launcher_socket(&wl) < 0) 175 if (setup_launcher_socket(&wl) < 0)
174 exit(EXIT_FAILURE); 176 exit(EXIT_FAILURE);
177diff --git a/meson_options.txt b/meson_options.txt
178index 0e1d183..9a5c3d5 100644
179--- a/meson_options.txt
180+++ b/meson_options.txt
181@@ -73,6 +73,13 @@ option(
182 )
183
184 option(
185+ 'pam',
186+ type: 'boolean',
187+ value: true,
188+ description: 'Define if PAM is available'
189+)
190+
191+option(
192 'xwayland',
193 type: 'boolean',
194 value: true,
195--
1962.7.4
197
diff --git a/meta/recipes-graphics/wayland/weston_6.0.1.bb b/meta/recipes-graphics/wayland/weston_6.0.1.bb
index 95b540333e..fe8f1b8c31 100644
--- a/meta/recipes-graphics/wayland/weston_6.0.1.bb
+++ b/meta/recipes-graphics/wayland/weston_6.0.1.bb
@@ -8,8 +8,8 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=d79ee9e66bb0f95d3386a7acae780b70 \
8SRC_URI = "https://wayland.freedesktop.org/releases/${BPN}-${PV}.tar.xz \ 8SRC_URI = "https://wayland.freedesktop.org/releases/${BPN}-${PV}.tar.xz \
9 file://weston.png \ 9 file://weston.png \
10 file://weston.desktop \ 10 file://weston.desktop \
11 file://0001-make-error-portable.patch \
12 file://xwayland.weston-start \ 11 file://xwayland.weston-start \
12 file://0001-make-error-portable.patch \
13 file://0001-weston-launch-Provide-a-default-version-that-doesn-t.patch \ 13 file://0001-weston-launch-Provide-a-default-version-that-doesn-t.patch \
14" 14"
15SRC_URI[md5sum] = "e7b10710ef1eac82258f97bfd41fe534" 15SRC_URI[md5sum] = "e7b10710ef1eac82258f97bfd41fe534"
@@ -17,7 +17,7 @@ SRC_URI[sha256sum] = "bf2f6d5aae2e11cabb6bd69a76bcf9edb084f8c3e14ca769bea7234a51
17 17
18UPSTREAM_CHECK_URI = "https://wayland.freedesktop.org/releases.html" 18UPSTREAM_CHECK_URI = "https://wayland.freedesktop.org/releases.html"
19 19
20inherit autotools pkgconfig useradd distro_features_check 20inherit meson pkgconfig useradd distro_features_check
21# depends on virtual/egl 21# depends on virtual/egl
22REQUIRED_DISTRO_FEATURES = "opengl" 22REQUIRED_DISTRO_FEATURES = "opengl"
23 23
@@ -26,49 +26,48 @@ DEPENDS += "wayland wayland-protocols libinput virtual/egl pango wayland-native"
26 26
27WESTON_MAJOR_VERSION = "${@'.'.join(d.getVar('PV').split('.')[0:1])}" 27WESTON_MAJOR_VERSION = "${@'.'.join(d.getVar('PV').split('.')[0:1])}"
28 28
29EXTRA_OECONF = "--enable-setuid-install \ 29EXTRA_OEMESON += "-Dbackend-default=auto -Dbackend-rdp=false"
30 --disable-rdp-compositor \ 30
31 --enable-autotools \
32 "
33PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'kms fbdev wayland egl', '', d)} \ 31PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'kms fbdev wayland egl', '', d)} \
34 ${@bb.utils.contains('DISTRO_FEATURES', 'x11 wayland', 'xwayland', '', d)} \ 32 ${@bb.utils.contains('DISTRO_FEATURES', 'x11 wayland', 'xwayland', '', d)} \
35 ${@bb.utils.filter('DISTRO_FEATURES', 'pam systemd x11', d)} \ 33 ${@bb.utils.filter('DISTRO_FEATURES', 'pam systemd x11', d)} \
34 ${@bb.utils.contains_any('DISTRO_FEATURES', 'wayland x11', '', 'headless', d)} \
36 clients launch" 35 clients launch"
37# 36#
38# Compositor choices 37# Compositor choices
39# 38#
40# Weston on KMS 39# Weston on KMS
41PACKAGECONFIG[kms] = "--enable-drm-compositor,--disable-drm-compositor,drm udev virtual/mesa virtual/libgbm mtdev" 40PACKAGECONFIG[kms] = "-Dbackend-drm=true,-Dbackend-drm=false,drm udev virtual/mesa virtual/libgbm mtdev"
42# Weston on Wayland (nested Weston) 41# Weston on Wayland (nested Weston)
43PACKAGECONFIG[wayland] = "--enable-wayland-compositor,--disable-wayland-compositor,virtual/mesa" 42PACKAGECONFIG[wayland] = "-Dbackend-wayland=true,-Dbackend-wayland=false,virtual/mesa"
44# Weston on X11 43# Weston on X11
45PACKAGECONFIG[x11] = "--enable-x11-compositor,--disable-x11-compositor,virtual/libx11 libxcb libxcb libxcursor cairo" 44PACKAGECONFIG[x11] = "-Dbackend-x11=true,-Dbackend-x11=false,virtual/libx11 libxcb libxcb libxcursor cairo"
46# Headless Weston 45# Headless Weston
47PACKAGECONFIG[headless] = "--enable-headless-compositor,--disable-headless-compositor" 46PACKAGECONFIG[headless] = "-Dbackend-headless=true,-Dbackend-headless=false"
48# Weston on framebuffer 47# Weston on framebuffer
49PACKAGECONFIG[fbdev] = "--enable-fbdev-compositor,--disable-fbdev-compositor,udev mtdev" 48PACKAGECONFIG[fbdev] = "-Dbackend-fbdev=true,-Dbackend-fbdev=false,udev mtdev"
50# weston-launch 49# weston-launch
51PACKAGECONFIG[launch] = "--enable-weston-launch,--disable-weston-launch,drm" 50PACKAGECONFIG[launch] = "-Dweston-launch=true,-Dweston-launch=false,drm"
52# VA-API desktop recorder 51# VA-API desktop recorder
53PACKAGECONFIG[vaapi] = "--enable-vaapi-recorder,--disable-vaapi-recorder,libva" 52PACKAGECONFIG[vaapi] = "-Dbackend-drm-screencast-vaapi=true,-Dbackend-drm-screencast-vaapi=false,libva"
54# Weston with EGL support 53# Weston with EGL support
55PACKAGECONFIG[egl] = "--enable-egl --enable-simple-egl-clients,--disable-egl --disable-simple-egl-clients,virtual/egl" 54PACKAGECONFIG[egl] = "-Drenderer-gl=true,-Drenderer-gl=false,virtual/egl"
56# Weston with cairo glesv2 support
57PACKAGECONFIG[cairo-glesv2] = "--with-cairo-glesv2,--with-cairo=image,cairo"
58# Weston with lcms support 55# Weston with lcms support
59PACKAGECONFIG[lcms] = "--enable-lcms,--disable-lcms,lcms" 56PACKAGECONFIG[lcms] = "-Dcolor-management-lcms=true,-Dcolor-management-lcms=false,lcms"
60# Weston with webp support 57# Weston with webp support
61PACKAGECONFIG[webp] = "--with-webp,--without-webp,libwebp" 58PACKAGECONFIG[webp] = "-Dimage-webp=true,-Dimage-webp=false,libwebp"
62# Weston with systemd-login support 59# Weston with systemd-login support
63PACKAGECONFIG[systemd] = "--enable-systemd-login,--disable-systemd-login,systemd dbus" 60PACKAGECONFIG[systemd] = "-Dsystemd=true -Dlauncher-logind=true,-Dsystemd=false -Dlauncher-logind=false,systemd dbus"
64# Weston with Xwayland support (requires X11 and Wayland) 61# Weston with Xwayland support (requires X11 and Wayland)
65PACKAGECONFIG[xwayland] = "--enable-xwayland,--disable-xwayland" 62PACKAGECONFIG[xwayland] = "-Dxwayland=true,-Dxwayland=false"
66# colord CMS support 63# colord CMS support
67PACKAGECONFIG[colord] = "--enable-colord,--disable-colord,colord" 64PACKAGECONFIG[colord] = "-Dcolor-management-colord=true,-Dcolor-management-colord=false,colord"
68# Clients support 65# Clients support
69PACKAGECONFIG[clients] = "--enable-clients --enable-simple-clients --enable-demo-clients-install,--disable-clients --disable-simple-clients" 66PACKAGECONFIG[clients] = "-Dsimple-clients=all -Ddemo-clients=true,-Dsimple-clients= -Ddemo-clients=false"
67# Virtual remote output with GStreamer on DRM backend
68PACKAGECONFIG[remoting] = "-Dremoting=true,-Dremoting=false,gstreamer-1.0"
70# Weston with PAM support 69# Weston with PAM support
71PACKAGECONFIG[pam] = "--with-pam,--without-pam,libpam" 70PACKAGECONFIG[pam] = "-Dpam=true,-Dpam=false,libpam"
72 71
73do_install_append() { 72do_install_append() {
74 # Weston doesn't need the .la files to load modules, so wipe them 73 # Weston doesn't need the .la files to load modules, so wipe them
@@ -86,6 +85,10 @@ do_install_append() {
86 if [ "${@bb.utils.contains('PACKAGECONFIG', 'xwayland', 'yes', 'no', d)}" = "yes" ]; then 85 if [ "${@bb.utils.contains('PACKAGECONFIG', 'xwayland', 'yes', 'no', d)}" = "yes" ]; then
87 install -Dm 644 ${WORKDIR}/xwayland.weston-start ${D}${datadir}/weston-start/xwayland 86 install -Dm 644 ${WORKDIR}/xwayland.weston-start ${D}${datadir}/weston-start/xwayland
88 fi 87 fi
88
89 if [ "${@bb.utils.contains('PACKAGECONFIG', 'launch', 'yes', 'no', d)}" = "yes" ]; then
90 chmod u+s ${D}${bindir}/weston-launch
91 fi
89} 92}
90 93
91PACKAGES += "${@bb.utils.contains('PACKAGECONFIG', 'xwayland', '${PN}-xwayland', '', d)} \ 94PACKAGES += "${@bb.utils.contains('PACKAGECONFIG', 'xwayland', '${PN}-xwayland', '', d)} \