diff mbox series

[3/3] weston-init: mimic systemd behavior when running in sysvinit

Message ID 20230804200438.1651568-3-otavio@ossystems.com.br
State New
Headers show
Series [1/3] weston-init: remove misleading comment about udev rule | expand

Commit Message

Otavio Salvador Aug. 4, 2023, 8:04 p.m. UTC
The systemd uses /run/wayland-0 as global socket and it is important to
align the behavior so it avoids diverging when using sysvinit. Another
change is installing the ${sysconfdir}/profile.d/weston-socket.sh script
also aligning the behaviors.

The commit modifies the behavior of the weston-init script when running
in sysvinit. It mimics the behavior of systemd by exporting the
WAYLAND_DISPLAY variable and using it as the socket for the weston
command.

The changes include:

- The installation of the weston-socket.sh script in the /etc/profile.d
directory, which sets the WAYLAND_DISPLAY variable to /run/wayland-0 if
it is not already set.

- Modifying the weston-start script to check if the WAYLAND_DISPLAY
variable is set. If not, it sets it to /run/wayland-0.

These changes ensure that the weston command uses the same socket
defined in the WAYLAND_DISPLAY variable, allowing compatibility with
systems using sysvinit and systemd.

Fixes: 2818cbc730 ("weston-init: add profile to point users to global socket")
Tested-by: Tom Hochstein <tom.hochstein@nxp.com>
Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
---

 meta/recipes-graphics/wayland/weston-init.bb           | 4 +++-
 meta/recipes-graphics/wayland/weston-init/weston-start | 6 +++++-
 2 files changed, 8 insertions(+), 2 deletions(-)

Comments

Khem Raj Aug. 4, 2023, 11:54 p.m. UTC | #1
On Fri, Aug 4, 2023 at 1:05 PM Otavio Salvador <otavio@ossystems.com.br> wrote:
>
> The systemd uses /run/wayland-0 as global socket and it is important to
> align the behavior so it avoids diverging when using sysvinit. Another
> change is installing the ${sysconfdir}/profile.d/weston-socket.sh script
> also aligning the behaviors.
>
> The commit modifies the behavior of the weston-init script when running
> in sysvinit. It mimics the behavior of systemd by exporting the
> WAYLAND_DISPLAY variable and using it as the socket for the weston
> command.
>
> The changes include:
>
> - The installation of the weston-socket.sh script in the /etc/profile.d
> directory, which sets the WAYLAND_DISPLAY variable to /run/wayland-0 if
> it is not already set.
>
> - Modifying the weston-start script to check if the WAYLAND_DISPLAY
> variable is set. If not, it sets it to /run/wayland-0.
>
> These changes ensure that the weston command uses the same socket
> defined in the WAYLAND_DISPLAY variable, allowing compatibility with
> systems using sysvinit and systemd.
>
> Fixes: 2818cbc730 ("weston-init: add profile to point users to global socket")
> Tested-by: Tom Hochstein <tom.hochstein@nxp.com>
> Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
> ---
>
>  meta/recipes-graphics/wayland/weston-init.bb           | 4 +++-
>  meta/recipes-graphics/wayland/weston-init/weston-start | 6 +++++-
>  2 files changed, 8 insertions(+), 2 deletions(-)
>
> diff --git a/meta/recipes-graphics/wayland/weston-init.bb b/meta/recipes-graphics/wayland/weston-init.bb
> index 024e400665..6c8dc36467 100644
> --- a/meta/recipes-graphics/wayland/weston-init.bb
> +++ b/meta/recipes-graphics/wayland/weston-init.bb
> @@ -40,13 +40,15 @@ do_install() {
>         if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then
>                 install -D -p -m0644 ${WORKDIR}/weston.service ${D}${systemd_system_unitdir}/weston.service
>                 install -D -p -m0644 ${WORKDIR}/weston.socket ${D}${systemd_system_unitdir}/weston.socket
> -               install -D -p -m0644 ${WORKDIR}/weston-socket.sh ${D}${sysconfdir}/profile.d/weston-socket.sh
>                 sed -i -e s:/etc:${sysconfdir}:g \
>                         -e s:/usr/bin:${bindir}:g \
>                         -e s:/var:${localstatedir}:g \
>                         ${D}${systemd_system_unitdir}/weston.service
>         fi
>
> +       # Export the WAYLAND_DISPLAY in case it is using the global socket
> +       install -D -p -m0644 ${WORKDIR}/weston-socket.sh ${D}${sysconfdir}/profile.d/weston-socket.sh
> +
>         if [ "${@bb.utils.filter('DISTRO_FEATURES', 'pam', d)}" ]; then
>                 install -D -p -m0644 ${WORKDIR}/weston-autologin ${D}${sysconfdir}/pam.d/weston-autologin
>         fi
> diff --git a/meta/recipes-graphics/wayland/weston-init/weston-start b/meta/recipes-graphics/wayland/weston-init/weston-start
> index 01670cd4f5..7b898bb436 100755
> --- a/meta/recipes-graphics/wayland/weston-init/weston-start
> +++ b/meta/recipes-graphics/wayland/weston-init/weston-start
> @@ -68,4 +68,8 @@ if test -z "$XDG_RUNTIME_DIR"; then
>         fi
>  fi
>
> -su -c "XDG_RUNTIME_DIR=/run/user/`id -u ${WESTON_USER}` weston $weston_args --log=/tmp/weston.log" $WESTON_USER
> +if [ -z "$WAYLAND_DISPLAY" ]; then
> +       WAYLAND_DISPLAY=/run/wayland-0

This can be set automatically by something like
WAYLAND_DISPLAY=`basename /run/user/1000/wayland-[0-9]`

That way it can cover more e.g. my variscite/imx8 SOM I have wayland-1

> +fi

≈> +
> +su -c "XDG_RUNTIME_DIR=/run/user/`id -u ${WESTON_USER}` weston $weston_args --socket=$WAYLAND_DISPLAY --log=/tmp/weston.log" $WESTON_USER



> --
> 2.41.0
>
>
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#185541): https://lists.openembedded.org/g/openembedded-core/message/185541
> Mute This Topic: https://lists.openembedded.org/mt/100553774/1997914
> Group Owner: openembedded-core+owner@lists.openembedded.org
> Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [raj.khem@gmail.com]
> -=-=-=-=-=-=-=-=-=-=-=-
>
Otavio Salvador Aug. 5, 2023, 12:48 p.m. UTC | #2
Em sex., 4 de ago. de 2023 às 20:54, Khem Raj <raj.khem@gmail.com> escreveu:
> On Fri, Aug 4, 2023 at 1:05 PM Otavio Salvador <otavio@ossystems.com.br> wrote:
> > -su -c "XDG_RUNTIME_DIR=/run/user/`id -u ${WESTON_USER}` weston $weston_args --log=/tmp/weston.log" $WESTON_USER
> > +if [ -z "$WAYLAND_DISPLAY" ]; then
> > +       WAYLAND_DISPLAY=/run/wayland-0
>
> This can be set automatically by something like
> WAYLAND_DISPLAY=`basename /run/user/1000/wayland-[0-9]`
>
> That way it can cover more e.g. my variscite/imx8 SOM I have wayland-1

This uses the same as systemd, so it has the same behavior. However,
it supports users to override it using /etc/default/weston. So it sets
this only if unset.
Alexandre Belloni Aug. 7, 2023, 8:56 a.m. UTC | #3
Hello,

I believe this change causes this QA failure:

https://autobuilder.yoctoproject.org/typhoon/#/builders/40/builds/7576/steps/12/logs/stdio

On 04/08/2023 17:04:11-0300, Otavio Salvador wrote:
> The systemd uses /run/wayland-0 as global socket and it is important to
> align the behavior so it avoids diverging when using sysvinit. Another
> change is installing the ${sysconfdir}/profile.d/weston-socket.sh script
> also aligning the behaviors.
> 
> The commit modifies the behavior of the weston-init script when running
> in sysvinit. It mimics the behavior of systemd by exporting the
> WAYLAND_DISPLAY variable and using it as the socket for the weston
> command.
> 
> The changes include:
> 
> - The installation of the weston-socket.sh script in the /etc/profile.d
> directory, which sets the WAYLAND_DISPLAY variable to /run/wayland-0 if
> it is not already set.
> 
> - Modifying the weston-start script to check if the WAYLAND_DISPLAY
> variable is set. If not, it sets it to /run/wayland-0.
> 
> These changes ensure that the weston command uses the same socket
> defined in the WAYLAND_DISPLAY variable, allowing compatibility with
> systems using sysvinit and systemd.
> 
> Fixes: 2818cbc730 ("weston-init: add profile to point users to global socket")
> Tested-by: Tom Hochstein <tom.hochstein@nxp.com>
> Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
> ---
> 
>  meta/recipes-graphics/wayland/weston-init.bb           | 4 +++-
>  meta/recipes-graphics/wayland/weston-init/weston-start | 6 +++++-
>  2 files changed, 8 insertions(+), 2 deletions(-)
> 
> diff --git a/meta/recipes-graphics/wayland/weston-init.bb b/meta/recipes-graphics/wayland/weston-init.bb
> index 024e400665..6c8dc36467 100644
> --- a/meta/recipes-graphics/wayland/weston-init.bb
> +++ b/meta/recipes-graphics/wayland/weston-init.bb
> @@ -40,13 +40,15 @@ do_install() {
>  	if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then
>  		install -D -p -m0644 ${WORKDIR}/weston.service ${D}${systemd_system_unitdir}/weston.service
>  		install -D -p -m0644 ${WORKDIR}/weston.socket ${D}${systemd_system_unitdir}/weston.socket
> -		install -D -p -m0644 ${WORKDIR}/weston-socket.sh ${D}${sysconfdir}/profile.d/weston-socket.sh
>  		sed -i -e s:/etc:${sysconfdir}:g \
>  			-e s:/usr/bin:${bindir}:g \
>  			-e s:/var:${localstatedir}:g \
>  			${D}${systemd_system_unitdir}/weston.service
>  	fi
>  
> +	# Export the WAYLAND_DISPLAY in case it is using the global socket
> +	install -D -p -m0644 ${WORKDIR}/weston-socket.sh ${D}${sysconfdir}/profile.d/weston-socket.sh
> +
>  	if [ "${@bb.utils.filter('DISTRO_FEATURES', 'pam', d)}" ]; then
>  		install -D -p -m0644 ${WORKDIR}/weston-autologin ${D}${sysconfdir}/pam.d/weston-autologin
>  	fi
> diff --git a/meta/recipes-graphics/wayland/weston-init/weston-start b/meta/recipes-graphics/wayland/weston-init/weston-start
> index 01670cd4f5..7b898bb436 100755
> --- a/meta/recipes-graphics/wayland/weston-init/weston-start
> +++ b/meta/recipes-graphics/wayland/weston-init/weston-start
> @@ -68,4 +68,8 @@ if test -z "$XDG_RUNTIME_DIR"; then
>  	fi
>  fi
>  
> -su -c "XDG_RUNTIME_DIR=/run/user/`id -u ${WESTON_USER}` weston $weston_args --log=/tmp/weston.log" $WESTON_USER
> +if [ -z "$WAYLAND_DISPLAY" ]; then
> +	WAYLAND_DISPLAY=/run/wayland-0
> +fi
> +
> +su -c "XDG_RUNTIME_DIR=/run/user/`id -u ${WESTON_USER}` weston $weston_args --socket=$WAYLAND_DISPLAY --log=/tmp/weston.log" $WESTON_USER
> -- 
> 2.41.0
> 

> 
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#185541): https://lists.openembedded.org/g/openembedded-core/message/185541
> Mute This Topic: https://lists.openembedded.org/mt/100553774/3617179
> Group Owner: openembedded-core+owner@lists.openembedded.org
> Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [alexandre.belloni@bootlin.com]
> -=-=-=-=-=-=-=-=-=-=-=-
>
Otavio Salvador Aug. 7, 2023, 11:35 a.m. UTC | #4
Hello Alexandre,

Em seg., 7 de ago. de 2023 às 05:56, Alexandre Belloni via
lists.openembedded.org
<alexandre.belloni=bootlin.com@lists.openembedded.org> escreveu:
> I believe this change causes this QA failure:
>
> https://autobuilder.yoctoproject.org/typhoon/#/builders/40/builds/7576/steps/12/logs/stdio

I'll check this. @Purdie, Richard please hold this patch until I check
the error.
diff mbox series

Patch

diff --git a/meta/recipes-graphics/wayland/weston-init.bb b/meta/recipes-graphics/wayland/weston-init.bb
index 024e400665..6c8dc36467 100644
--- a/meta/recipes-graphics/wayland/weston-init.bb
+++ b/meta/recipes-graphics/wayland/weston-init.bb
@@ -40,13 +40,15 @@  do_install() {
 	if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then
 		install -D -p -m0644 ${WORKDIR}/weston.service ${D}${systemd_system_unitdir}/weston.service
 		install -D -p -m0644 ${WORKDIR}/weston.socket ${D}${systemd_system_unitdir}/weston.socket
-		install -D -p -m0644 ${WORKDIR}/weston-socket.sh ${D}${sysconfdir}/profile.d/weston-socket.sh
 		sed -i -e s:/etc:${sysconfdir}:g \
 			-e s:/usr/bin:${bindir}:g \
 			-e s:/var:${localstatedir}:g \
 			${D}${systemd_system_unitdir}/weston.service
 	fi
 
+	# Export the WAYLAND_DISPLAY in case it is using the global socket
+	install -D -p -m0644 ${WORKDIR}/weston-socket.sh ${D}${sysconfdir}/profile.d/weston-socket.sh
+
 	if [ "${@bb.utils.filter('DISTRO_FEATURES', 'pam', d)}" ]; then
 		install -D -p -m0644 ${WORKDIR}/weston-autologin ${D}${sysconfdir}/pam.d/weston-autologin
 	fi
diff --git a/meta/recipes-graphics/wayland/weston-init/weston-start b/meta/recipes-graphics/wayland/weston-init/weston-start
index 01670cd4f5..7b898bb436 100755
--- a/meta/recipes-graphics/wayland/weston-init/weston-start
+++ b/meta/recipes-graphics/wayland/weston-init/weston-start
@@ -68,4 +68,8 @@  if test -z "$XDG_RUNTIME_DIR"; then
 	fi
 fi
 
-su -c "XDG_RUNTIME_DIR=/run/user/`id -u ${WESTON_USER}` weston $weston_args --log=/tmp/weston.log" $WESTON_USER
+if [ -z "$WAYLAND_DISPLAY" ]; then
+	WAYLAND_DISPLAY=/run/wayland-0
+fi
+
+su -c "XDG_RUNTIME_DIR=/run/user/`id -u ${WESTON_USER}` weston $weston_args --socket=$WAYLAND_DISPLAY --log=/tmp/weston.log" $WESTON_USER