From ad08c6625d1ec4d127593a29bba4a52bea01434e Mon Sep 17 00:00:00 2001 From: Pavel Zhukov <pavel.zhukov@huawei.com> Date: Tue, 7 Sep 2021 21:43:25 +0200 Subject: [PATCH] weston: wrapper for weston modules argument Due to custom option parser implementation weston accepts only one argument of given type. As the result if multiple modules add --module only last will be used. This fix introduces wrapper around modules in terms of weston-init to prepare proper modules argument for weston and moves systemd-notify module into weston-init module instead of command line argument Based on Poky revision #bdd30be1a3815f70062d8febca91eaf042a77c3d Downstream changes: Adding add_weston_module function into weston-start script and modify xwayland plugin to use new interface. Submitted upstream: https://lists.openembedded.org/g/openembedded-core/topic/patch_weston_wrapper_for/85453995 Ref: https://git.ostc-eu.org/OSTC/OHOS/meta-ohos/-/issues/110 Signed-off-by: Pavel Zhukov <pavel.zhukov@huawei.com> --- .../wayland/weston-init/weston-start | 94 +++++++++++++++++++ .../wayland/weston-init/weston@.service | 2 +- .../weston/systemd-notify.weston-start | 9 ++ .../wayland/weston/xwayland.weston-start | 6 ++ .../wayland/weston_8.0.0.bbappend | 9 ++ 5 files changed, 119 insertions(+), 1 deletion(-) create mode 100755 meta-ohos-core/recipes-graphics/wayland/weston-init/weston-start create mode 100644 meta-ohos-core/recipes-graphics/wayland/weston/systemd-notify.weston-start create mode 100644 meta-ohos-core/recipes-graphics/wayland/weston/xwayland.weston-start create mode 100644 meta-ohos-core/recipes-graphics/wayland/weston_8.0.0.bbappend diff --git a/meta-ohos-core/recipes-graphics/wayland/weston-init/weston-start b/meta-ohos-core/recipes-graphics/wayland/weston-init/weston-start new file mode 100755 index 00000000..117225d8 --- /dev/null +++ b/meta-ohos-core/recipes-graphics/wayland/weston-init/weston-start @@ -0,0 +1,94 @@ +#!/bin/sh +# Copyright (C) 2016 O.S. Systems Software LTDA. +# Copyright (C) 2016 Freescale Semiconductor + +export PATH="/sbin:/usr/sbin:/bin:/usr/bin" + +usage() { + cat <<EOF + $0 [<openvt arguments>] [-- <weston options>] +EOF +} + +## Module support +modules_dir=@DATADIR@/weston-start + +# Add weston extra argument +add_weston_argument() { + weston_args="$weston_args $1" +} + +# Add openvt extra argument +add_openvt_argument() { + openvt_args="$openvt_args $1" +} + +## Add module to --modules argument +add_weston_module() { + if [[ "x${weston_modules}" == "x" ]]; then + weston_modules="--modules " + fi; + weston_modules+="${1}," +} + + +if [ -n "$WAYLAND_DISPLAY" ]; then + echo "ERROR: A Wayland compositor is already running, nested Weston instance is not supported yet." + exit 1 +fi + +if [ -n "$WESTON_USER" ]; then + if [ -z "$WESTON_TTY" ]; then + echo "ERROR: If you have WESTON_USER variable set, you also need WESTON_TTY." + exit 1 + fi + weston_args_user="-u $WESTON_USER -t $WESTON_TTY" +fi + +if [ -n "$DISPLAY" ]; then + launcher="weston" +else + launcher="weston-launch $weston_args_user --" +fi + +openvt_args="-s" +while [ -n "$1" ]; do + if [ "$1" = "--" ]; then + shift + break + fi + openvt_args="$openvt_args $1" + shift +done + +weston_args=$* + +# Load and run modules +if [ -d "$modules_dir" ]; then + for m in "$modules_dir"/*; do + # Skip backup files + if [ "`echo $m | sed -e 's/\~$//'`" != "$m" ]; then + continue + fi + + # process module + . $m + done + if [[ x"{$weston_modules}" != "x" ]]; then + add_weston_argument "${weston_modules}" + fi; +fi + +if test -z "$XDG_RUNTIME_DIR"; then + export XDG_RUNTIME_DIR=/run/user/`id -u ${WESTON_USER}` + if ! test -d "$XDG_RUNTIME_DIR"; then + mkdir --parents $XDG_RUNTIME_DIR + chmod 0700 $XDG_RUNTIME_DIR + fi + if [ -n "$WESTON_USER" ] + then + chown $WESTON_USER:$WESTON_USER $XDG_RUNTIME_DIR + fi +fi + +exec openvt $openvt_args -- $launcher $weston_args --log=@LOCALSTATEDIR@/log/weston.log diff --git a/meta-ohos-core/recipes-graphics/wayland/weston-init/weston@.service b/meta-ohos-core/recipes-graphics/wayland/weston-init/weston@.service index f59537be..70c706d7 100644 --- a/meta-ohos-core/recipes-graphics/wayland/weston-init/weston@.service +++ b/meta-ohos-core/recipes-graphics/wayland/weston-init/weston@.service @@ -18,4 +18,4 @@ StandardError=journal PermissionsStartOnly=true IgnoreSIGPIPE=no -ExecStart=/usr/bin/weston-start -v -e -- $OPTARGS --modules=systemd-notify.so +ExecStart=/usr/bin/weston-start -v -e -- $OPTARGS diff --git a/meta-ohos-core/recipes-graphics/wayland/weston/systemd-notify.weston-start b/meta-ohos-core/recipes-graphics/wayland/weston/systemd-notify.weston-start new file mode 100644 index 00000000..fdb48cb6 --- /dev/null +++ b/meta-ohos-core/recipes-graphics/wayland/weston/systemd-notify.weston-start @@ -0,0 +1,9 @@ +#!/bin/sh + +# SPDX-FileCopyrightText: Huawei Inc. +# SPDX-License-Identifier: Apache-2.0 + + +if [[ -x "/usr/lib/weston/systemd-notify.so" ]]; then + add_weston_module "systemd-notify.so" +fi diff --git a/meta-ohos-core/recipes-graphics/wayland/weston/xwayland.weston-start b/meta-ohos-core/recipes-graphics/wayland/weston/xwayland.weston-start new file mode 100644 index 00000000..22984f50 --- /dev/null +++ b/meta-ohos-core/recipes-graphics/wayland/weston/xwayland.weston-start @@ -0,0 +1,6 @@ +#!/bin/sh + +if type Xwayland >/dev/null 2>/dev/null; then + mkdir -p /tmp/.X11-unix + add_weston_module "xwayland.so" +fi diff --git a/meta-ohos-core/recipes-graphics/wayland/weston_8.0.0.bbappend b/meta-ohos-core/recipes-graphics/wayland/weston_8.0.0.bbappend new file mode 100644 index 00000000..dd347610 --- /dev/null +++ b/meta-ohos-core/recipes-graphics/wayland/weston_8.0.0.bbappend @@ -0,0 +1,9 @@ +# SPDX-FileCopyrightText: Huawei Inc. +# SPDX-License-Identifier: Apache-2.0 + +FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" + +SRC_URI += "file://systemd-notify.weston-start" +do_install_append() { + install -Dm 644 ${WORKDIR}/systemd-notify.weston-start ${D}${datadir}/weston-start/systemd-notify +} -- GitLab