Skip to contentSkip to conversation

Initial wayland integration

PATCH In review Alex DAMIAN 2 participants 8 messages Jan 7, 2013 – Jan 8, 2013

lore
Share & tools
lore
#0 lore raw

v4 cover Initial wayland integration

From: Alexandru DAMIAN <[email protected]>

Hi,

I've rebased the patch on top of the latest master.

I have several changes in the patches, in particular on how to select proper dependency versions. Please review.

This is a set of patches that integrate Wayland/Weston 1.0.3 into mainline.

All library dependencies are satisfied, and Weston works under X11 and DRM.

A user must install separately (no hard dependency) the hardware DRM drivers to be able to run weston on barebone hardware. Hardware drivers built-in are the swrast, i915 and i965 (i965 is tested on real hardware).

There is no default integration in any distro, the packages may be installed through the package manager.

Further improvements will include a wrapper script for weston and integration in the distro features.

Documentation will be available on wiki, and announced here.

The following changes since commit b03c4188c8372ae9156a9e6adc7cf66edc76dd16:

icu: update to upstream version 50.1.1 (2013-01-07 11:09:44 +0000)

are available in the git repository at:

git://git.yoctoproject.org/poky-contrib adamian/wayland/upstream.1
http://git.yoctoproject.org/cgit.cgi/poky-contrib/log/?h=adamian/wayland/upstream.1

Alexandru DAMIAN (3):
Wayland userspace library initial 1.0.3
Prepare mesa-dri for weston compatibility
Initial commit for wayland/weston 1.0.3

 meta/recipes-graphics/mesa/mesa-common.inc     |   10 +++++++-
 meta/recipes-graphics/mesa/mesa-dri.inc        |    1 +
 meta/recipes-graphics/mesa/mesa-dri_git.bb     |    3 +++
 meta/recipes-graphics/wayland/wayland.inc      |   32 ++++++++++++++++++++++++
 meta/recipes-graphics/wayland/wayland_1.0.3.bb |    7 ++++++
 meta/recipes-graphics/wayland/weston.inc       |   23 +++++++++++++++++
 meta/recipes-graphics/wayland/weston_1.0.3.bb  |    9 +++++++
 7 files changed, 84 insertions(+), 1 deletion(-)
 create mode 100644 meta/recipes-graphics/wayland/wayland.inc
 create mode 100644 meta/recipes-graphics/wayland/wayland_1.0.3.bb
 create mode 100644 meta/recipes-graphics/wayland/weston.inc
 create mode 100644 meta/recipes-graphics/wayland/weston_1.0.3.bb
Signature · 1 line
1.7.10.4
#1 lore raw

PATCH v4 1/3 Wayland userspace library initial 1.0.3

From: Alexandru DAMIAN <[email protected]>

Wayland is a new protocol a protocol for a client application to display user interface windows through the use of a compositing window manager. This package include the specific set of server-side and client-side C libraries that implement the protocol.

Wayland is hosted on http://wayland.freedesktop.org/

---
 meta/recipes-graphics/wayland/wayland.inc      |   32 ++++++++++++++++++++++++
 meta/recipes-graphics/wayland/wayland_1.0.3.bb |    7 ++++++
 2 files changed, 39 insertions(+)
 create mode 100644 meta/recipes-graphics/wayland/wayland.inc
 create mode 100644 meta/recipes-graphics/wayland/wayland_1.0.3.bb
meta/recipes-graphics/wayland/wayland.inc new file +32 -0
new file mode 100644
index 0000000..ba02e5a
@@ -0,0 +1,32 @@
+inherit autotools pkgconfig
+
+SUMMARY = "Wayland, a protocol between a compositor and clients"
+
+DESCRIPTION = "Wayland is a protocol for a compositor to talk to its clients \
+as well as a C library implementation of that protocol. The compositor can be \
+a standalone display server running on Linux kernel modesetting and evdev \
+input devices, an X application, or a wayland client itself. The clients can \
+be traditional applications, X servers (rootless or fullscreen) or other \
+display servers."
+
+HOMEPAGE = "http://wayland.freedesktop.org"
+SECTION = "wayland/base"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=1d4476a7d98dd5691c53d4d43a510c72"
+
+# needs wayland-native for the wayland-scanner utility
+BBCLASSEXTEND = "native"
+
+DEPENDS_virtclass-native = "expat-native"
+DEPENDS = "expat wayland-native"
+
+EXTRA_OECONF_virtclass-native = "--disable-documentation"
+EXTRA_OECONF = "--disable-documentation --disable-scanner"
+
+# wayland installs a m4 macro for other projects to use. This m4 macro
+# includes a path to a makefile fragment to get the rules to generate
+# stubs from protocol description files.
+do_install_append_class-native() {
+  sed -i -e '4,10s,prefix=.*$,prefix=${D}/${prefix},;4,10s,exec_prefix=,exec_prefix=${D}/${exec_prefix},' \
+    ${D}/${datadir}/aclocal/wayland-scanner.m4
+}
meta/recipes-graphics/wayland/wayland_1.0.3.bb new file +7 -0
new file mode 100644
index 0000000..28dd49b
@@ -0,0 +1,7 @@
+require wayland.inc
+
+SRC_URI = "http://wayland.freedesktop.org/releases/wayland-1.0.3.tar.xz"
+SRC_URI[md5sum] = "eebe23571fd4f9ceacc583238e5a8ae9"
+SRC_URI[sha256sum] = "f6be5ee11ba534baaa116350b5efb874bf9963bf3fb18bcf40130317e83a5913"
+
+PR = "r0"
Signature · 1 line
1.7.10.4
#2 lore raw

PATCH v4 2/3 Prepare mesa-dri for weston compatibility

From: Alexandru DAMIAN <[email protected]>

This patch enables mesa-git to build wayland-compatible packages for usage with weston.

It adds wayland platform support, packs the wayland-egl files.

Activate by setting up OVERRIDE for "weston" to get it to build.

---
 meta/recipes-graphics/mesa/mesa-common.inc |   10 +++++++++-
 meta/recipes-graphics/mesa/mesa-dri.inc    |    1 +
 meta/recipes-graphics/mesa/mesa-dri_git.bb |    3 +++
 3 files changed, 13 insertions(+), 1 deletion(-)
meta/recipes-graphics/mesa/mesa-common.inc +9 -1
index 70957eb..cf6e610 100644
@@ -29,10 +29,15 @@ EXTRA_OECONF = "--disable-glu \
                 --disable-glut \
                 --enable-shared-glapi"
 
-PACKAGECONFIG ??= "${@base_contains('DISTRO_FEATURES', 'x11', 'x11', '', d)} egl gles"
+PACKAGECONFIG ??= "egl gles \
+		${@base_contains('DISTRO_FEATURES', 'x11', 'x11', '', d)}\
+		${@base_contains('DISTRO_FEATURES', 'wayland', 'wayland', '', d)}\
+		"
 
 X11_DEPS = "xf86driproto glproto virtual/libx11 libxext libxxf86vm libxdamage libxfixes"
 PACKAGECONFIG[x11] = "--enable-glx-tls,--disable-glx,${X11_DEPS}"
+PACKAGECONFIG[wayland] = ",,wayland"
+
 
 # Multiple virtual/gl providers being built breaks staging
 EXCLUDE_FROM_WORLD = "1"
@@ -49,6 +54,7 @@ PACKAGES =+ "libegl-mesa libegl-mesa-dev \
              libgles1-mesa libgles1-mesa-dev \
              libgles2-mesa libgles2-mesa-dev \
              libgles3-mesa libgles3-mesa-dev \
+             wayland-egl wayland-egl-dev \
             "
 
 do_install_append () {
@@ -90,8 +96,10 @@ FILES_libgles2-mesa = "${libdir}/libGLESv2.so.*"
 FILES_libgl-mesa = "${libdir}/libGL.so.*"
 FILES_libglapi = "${libdir}/libglapi.so.*"
 FILES_libosmesa = "${libdir}/libOSMesa.so.*"
+FILES_wayland-egl = "${libdir}/libwayland-egl.so.*"
 
 FILES_${PN}-dev = "${libdir}/pkgconfig/dri.pc"
+FILES_wayland-egl-dev = "${libdir}/pkgconfig/wayland-egl.pc ${libdir}/libwayland-egl.*"
 FILES_libdricore-dev = "${libdir}/libdricore*.*"
 FILES_libegl-mesa-dev = "${libdir}/libEGL.* ${includedir}/EGL ${includedir}/KHR ${libdir}/pkgconfig/egl.pc"
 FILES_libgbm-dev = "${libdir}/libgbm.* ${libdir}/pkgconfig/gbm.pc ${includedir}/gbm.h"
meta/recipes-graphics/mesa/mesa-dri.inc +1 -0
index 07544ab..1f6ec78 100644
@@ -13,6 +13,7 @@ PACKAGECONFIG[gles] = "--enable-gles1 --enable-gles2, --disable-gles1 --disable-
 
 EGL_PLATFORMS  = "drm"
 EGL_PLATFORMS .="${@base_contains('DISTRO_FEATURES', 'x11', ',x11', '', d)}"
+EGL_PLATFORMS .="${@base_contains('DISTRO_FEATURES', 'wayland', ',wayland', '', d)}"
 PACKAGECONFIG[egl] = "--enable-egl --with-egl-platforms=${EGL_PLATFORMS}, --disable-egl"
 
 python populate_packages_prepend() {
meta/recipes-graphics/mesa/mesa-dri_git.bb +3 -0
index 69a433e..6327ef0 100644
@@ -5,4 +5,7 @@ require mesa-dri.inc
 # this needs to be lower than -1 because all mesa-dri have -1 and git version has highest PV, but shouldn't be default
 DEFAULT_PREFERENCE = "-2"
 
+# if we're using a OVERRIDES = "weston" in local.conf
+DEFAULT_PREFERENCE_weston = "1"
+
 PR = "${INC_PR}.0"
Signature · 1 line
1.7.10.4
#3 lore raw

Re: [PATCH 2/3] Prepare mesa-dri for weston compatibility

meta/recipes-graphics/mesa/mesa-dri_git.bb require mesa-dri.inc · line 9

Quoted 2 lines · Alex DAMIAN
meta/recipes-graphics/mesa/mesa-dri_git.bb +2 -0
+# if we're using a OVERRIDES = "weston" in local.conf
+DEFAULT_PREFERENCE_weston = "1"

Don't bother. As I've said before Mesa 9.0.1 is going to be merged shortly (there was a failure on ARM, which is now sorted) and that can build Wayland, so if we merged this patch *now* this chunk would be deleted again in a few days time.

Ross

#4 lore raw

Re: [PATCH 2/3] Prepare mesa-dri for weston compatibility

In reply to Alex DAMIAN
Quoted 1 line · Alex DAMIAN

+ wayland-egl wayland-egl-dev \

"libwayland-egl" and "libwayland-egl-dev", please.

Ross

#5 lore raw

PATCH v4 3/3 Initial commit for wayland/weston 1.0.3

In reply to Alex DAMIAN

From: Alexandru DAMIAN <[email protected]>

This patch adds the Weston reference compositing
manager from Wayland.

We add version 1.0.3 which is the latest stable release in Dec 2012. See the upstream at:

http://wayland.freedesktop.org/releases.html

To enable building, set in local.conf

#Build mesa-dri compatible packages
OVERRIDES += ":weston"
#Enable the wayland distro feature
DISTRO_FEATURES_append_weston = " wayland "

---
 meta/recipes-graphics/wayland/weston.inc      |   23 +++++++++++++++++++++++
 meta/recipes-graphics/wayland/weston_1.0.3.bb |    9 +++++++++
 2 files changed, 32 insertions(+)
 create mode 100644 meta/recipes-graphics/wayland/weston.inc
 create mode 100644 meta/recipes-graphics/wayland/weston_1.0.3.bb
meta/recipes-graphics/wayland/weston.inc new file +23 -0
new file mode 100644
index 0000000..2293589
@@ -0,0 +1,23 @@
+inherit autotools pkgconfig
+
+SUMMARY = "Weston, a Wayland compositor"
+DESCRIPTION = "Weston is the reference implementation of a Wayland compositor"
+HOMEPAGE = "http://wayland.freedesktop.org"
+SECTION = "wayland/base"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=275efac2559a224527bd4fd593d38466"
+
+DEPENDS = "wayland mesa-dri libxkbcommon gdk-pixbuf pixman cairo glib-2.0 mtdev jpeg"
+DEPENDS += "virtual/egl"
+
+EXTRA_OECONF  = "--enable-wayland-compositor --disable-android-compositor"
+EXTRA_OECONF += "--enable-setuid-install --enable-simple-clients"
+EXTRA_OECONF += "--enable-clients --disable-xwayland"
+
+PACKAGECONFIG ??= "${@base_contains('DISTRO_FEATURES', 'wayland', 'kms', '', d)} \
+                   ${@base_contains('DISTRO_FEATURES', 'x11', 'x11', '', d)} \
+                   ${@base_contains('DISTRO_FEATURES', 'opengles2', 'gles', '', d)} \
+                  "
+PACKAGECONFIG[kms] = "--enable-drm-compositor,--disable-drm-compositor,drm udev mesa-dri libpam"
+PACKAGECONFIG[x11] = "--enable-x11-compositor,--disable-x11-compositor,virtual/libx11 libxcb libxcb libxcursor cairo"
+PACKAGECONFIG[gles] = "--with-cairo-glesv2,,virtual/libgles2"
meta/recipes-graphics/wayland/weston_1.0.3.bb new file +9 -0
new file mode 100644
index 0000000..625965b
@@ -0,0 +1,9 @@
+require weston.inc
+
+SRC_URI = "http://wayland.freedesktop.org/releases/weston-1.0.3.tar.xz \
+	  "
+SRC_URI[md5sum] = "f82ac2e013e6b6a6303ac4ba7b64c7f2"
+SRC_URI[sha256sum] = "3136a7d2f654ea3e946d4217f7e25321248ad2921f1f4e2504dda58968e04853"
+
+PR = "r0"
+
Signature · 1 line
1.7.10.4
#6 lore raw

Re: [PATCH 3/3] Initial commit for wayland/weston 1.0.3

Quoted 9 lines · Alex DAMIAN

From: Alexandru DAMIAN <[email protected]>

This patch adds the Weston reference compositing
manager from Wayland.

We add version 1.0.3 which is the latest stable release in Dec 2012. See the upstream at:

http://wayland.freedesktop.org/releases.html

Remove this, it's obvious from the commit which version you're using.

Quoted 4 lines

To enable building, set in local.conf

#Build mesa-dri compatible packages
OVERRIDES += ":weston"

As in 2/3, don't do this.

Quoted 2 lines

#Enable the wayland distro feature
DISTRO_FEATURES_append_weston = " wayland "

Surely you want the wayland feature globally, so that mesa builds with Wayland support? 'To enable wayland, add "wayland" to DISTRO_FEATURES.' is all you need.

Ross

#7 lore raw

Re: [PATCH 1/3] Wayland userspace library initial 1.0.3

In reply to Alex DAMIAN

meta/recipes-graphics/wayland/wayland.inc line 32

Quoted 4 lines · Alex DAMIAN
meta/recipes-graphics/wayland/wayland.inc new file +4 -0
+do_install_append_class-native() {
+  sed -i -e '4,10s,prefix=.*$,prefix=${D}/${prefix},;4,10s,exec_prefix=,exec_prefix=${D}/${exec_prefix},' \
+    ${D}/${datadir}/aclocal/wayland-scanner.m4
+}

My previous comments still stand:

The use of addresses seems fragile, would it be safer to inject the paths pre-configure when @prefix@ is easily replaceable? As is to demonstrate this, you missed a @datarootdir@ replacement. Probably best to do a replacement pre-configure on the @foo@ symbols.

Also using STAGING_BINDIR_NATIVE and STAGING_DATADIR_NATIVE would be clearer.

Ross