Patchwork [v2] matchbox-keyboard: daemonize launch

login
register
mail settings
Submitter Alexandre Belloni
Date Feb. 15, 2014, 4:34 p.m.
Message ID <1392482043-28060-1-git-send-email-alexandre.belloni@free-electrons.com>
Download mbox | patch
Permalink /patch/66799/
State New
Headers show

Comments

Alexandre Belloni - Feb. 15, 2014, 4:34 p.m.
The .shbg extension is not properly supported by the Xsession script
provided by xserver-common.

Make the matchbox-keyboard startup script wait for matchbox desktop and
start the matchbox-keyboard daemon in its own shell, in the background.

See discussion here:
https://lists.yoctoproject.org/pipermail/poky/2013-December/009463.html

Bug here:
https://bugzilla.yoctoproject.org/show_bug.cgi?id=5546

Signed-off-by: Alexandre Belloni <alexandre.belloni@free-electrons.com>
---

Changes since v1:
 - stop using another script to start in the background and spawn a
   background shell from the startup script

 .../matchbox-keyboard/files/80matchboxkeyboard.sh  | 21 ++++++++++++++++++++
 .../files/80matchboxkeyboard.shbg                  | 23 ----------------------
 .../matchbox-keyboard/matchbox-keyboard_git.bb     |  4 ++--
 3 files changed, 23 insertions(+), 25 deletions(-)
 create mode 100755 meta/recipes-sato/matchbox-keyboard/files/80matchboxkeyboard.sh
 delete mode 100755 meta/recipes-sato/matchbox-keyboard/files/80matchboxkeyboard.shbg
Bernhard Reutner-Fischer - Feb. 16, 2014, 1:46 p.m.
On 15 February 2014 17:34:57 Alexandre Belloni 
<alexandre.belloni@free-electrons.com> wrote:

> The .shbg extension is not properly supported by the Xsession script
> provided by xserver-common.
>
> Make the matchbox-keyboard startup script wait for matchbox desktop and
> start the matchbox-keyboard daemon in its own shell, in the background.

Maybe you could remove obsolescent test(1) usage while you touch it?

Also, why do you need another shell instance, out of curiosity. ISTM that 
only wastes RAM..
Thanks,
>
> See discussion here:
> https://lists.yoctoproject.org/pipermail/poky/2013-December/009463.html
>
> Bug here:
> https://bugzilla.yoctoproject.org/show_bug.cgi?id=5546
>
> Signed-off-by: Alexandre Belloni <alexandre.belloni@free-electrons.com>
> ---
>
> Changes since v1:
>  - stop using another script to start in the background and spawn a
>    background shell from the startup script
>
>  .../matchbox-keyboard/files/80matchboxkeyboard.sh  | 21 ++++++++++++++++++++
>  .../files/80matchboxkeyboard.shbg                  | 23 ----------------------
>  .../matchbox-keyboard/matchbox-keyboard_git.bb     |  4 ++--
>  3 files changed, 23 insertions(+), 25 deletions(-)
>  create mode 100755 
>  meta/recipes-sato/matchbox-keyboard/files/80matchboxkeyboard.sh
>  delete mode 100755 
>  meta/recipes-sato/matchbox-keyboard/files/80matchboxkeyboard.shbg
>
> diff --git 
> a/meta/recipes-sato/matchbox-keyboard/files/80matchboxkeyboard.sh 
> b/meta/recipes-sato/matchbox-keyboard/files/80matchboxkeyboard.sh
> new file mode 100755
> index 000000000000..d822efa6e70c
> --- /dev/null
> +++ b/meta/recipes-sato/matchbox-keyboard/files/80matchboxkeyboard.sh
> @@ -0,0 +1,21 @@
> +#!/bin/sh
> +
> +. /etc/formfactor/config
> +
> +CMD=""
> +
> +if [ "$HAVE_KEYBOARD" = "0" ]; then
> +    CMD="matchbox-keyboard -d"
> +elif [ "$DISPLAY_CAN_ROTATE" = "1" ]; then
> +    if [ "$HAVE_KEYBOARD_PORTRAIT" = "1" -a "$HAVE_KEYBOARD_LANDSCAPE" = 
> "0" ]; then
> +        CMD="matchbox-keyboard -d -o landscape"
> +    elif [ "$HAVE_KEYBOARD_LANDSCAPE" = "1" -a "$HAVE_KEYBOARD_PORTRAIT" = 
> "0" ]; then
> +        CMD="matchbox-keyboard -d -o portrait"
> +    fi
> +fi
> +
> +if [ "$CMD" ]; then
> +    # Delay to make sure the window manager is active
> +    # by waiting for the desktop to say its finished loading
> +	( dbus-wait org.matchbox_project.desktop Loaded && $CMD ) &
> +fi
> diff --git 
> a/meta/recipes-sato/matchbox-keyboard/files/80matchboxkeyboard.shbg 
> b/meta/recipes-sato/matchbox-keyboard/files/80matchboxkeyboard.shbg
> deleted file mode 100755
> index 43c5d3ed6a32..000000000000
> --- a/meta/recipes-sato/matchbox-keyboard/files/80matchboxkeyboard.shbg
> +++ /dev/null
> @@ -1,23 +0,0 @@
> -#!/bin/sh
> -
> -. /etc/formfactor/config
> -
> -CMD=""
> -
> -if [ "$HAVE_KEYBOARD" = "0" ]; then
> -    CMD="matchbox-keyboard -d"
> -elif [ "$DISPLAY_CAN_ROTATE" = "1" ]; then
> -    if [ "$HAVE_KEYBOARD_PORTRAIT" = "1" -a "$HAVE_KEYBOARD_LANDSCAPE" = 
> "0" ]; then
> -        CMD="matchbox-keyboard -d -o landscape"
> -    elif [ "$HAVE_KEYBOARD_LANDSCAPE" = "1" -a "$HAVE_KEYBOARD_PORTRAIT" = 
> "0" ]; then
> -        CMD="matchbox-keyboard -d -o portrait"
> -    fi
> -fi
> -					
> -
> -if [ "$CMD" ]; then
> -    # Delay to make sure the window manager is active
> -    # by waiting for the desktop to say its finished loading
> -    dbus-wait org.matchbox_project.desktop Loaded
> -    exec $CMD
> -fi
> diff --git a/meta/recipes-sato/matchbox-keyboard/matchbox-keyboard_git.bb 
> b/meta/recipes-sato/matchbox-keyboard/matchbox-keyboard_git.bb
> index ffcabcad2215..70caf6fc0222 100644
> --- a/meta/recipes-sato/matchbox-keyboard/matchbox-keyboard_git.bb
> +++ b/meta/recipes-sato/matchbox-keyboard/matchbox-keyboard_git.bb
> @@ -17,7 +17,7 @@ PR = "r4"
>  SRC_URI = "git://git.yoctoproject.org/${BPN} \
>             file://configure_fix.patch;maxrev=1819 \
>             file://single-instance.patch \
> -           file://80matchboxkeyboard.shbg \
> +           file://80matchboxkeyboard.sh \
>             file://png-fix.patch"
>
>  S = "${WORKDIR}/git"
> @@ -43,7 +43,7 @@ FILES_${PN}-applet = "${libdir}/matchbox-panel/*.so"
>
>  do_install_append () {
>  	install -d ${D}/${sysconfdir}/X11/Xsession.d/
> -	install -m 755 ${WORKDIR}/80matchboxkeyboard.shbg 
> ${D}/${sysconfdir}/X11/Xsession.d/
> +	install -m 755 ${WORKDIR}/80matchboxkeyboard.sh 
> ${D}/${sysconfdir}/X11/Xsession.d/
>
>  	rm -f ${D}${libdir}/gtk-2.0/*/immodules/*.la
>  	rm -f ${D}${libdir}/matchbox-panel/*.la
> --
> 1.8.3.2
>
> _______________________________________________
> Openembedded-core mailing list
> Openembedded-core@lists.openembedded.org
> http://lists.openembedded.org/mailman/listinfo/openembedded-core



Sent with AquaMail for Android
http://www.aqua-mail.com
Alexandre Belloni - Feb. 16, 2014, 2:13 p.m.
On 16/02/2014 at 14:46:12 +0100, Bernhard Reutner-Fischer wrote :
> On 15 February 2014 17:34:57 Alexandre Belloni
> <alexandre.belloni@free-electrons.com> wrote:
> 
> >The .shbg extension is not properly supported by the Xsession script
> >provided by xserver-common.
> >
> >Make the matchbox-keyboard startup script wait for matchbox desktop and
> >start the matchbox-keyboard daemon in its own shell, in the background.
> 
> Maybe you could remove obsolescent test(1) usage while you touch it?
> 

Hum, which usage is obsolete ?

> Also, why do you need another shell instance, out of curiosity. ISTM
> that only wastes RAM..

We create a shell and start in the background to wait for
matchbox-desktop to start. This allows X continue to start and run the
next Xsession scripts. And matchbox-desktop has to be the last started
program si we don't have any other way. Anyway, once the
matchbox-keyboard daemon starts, the shell will exit and not use ram
anymore.

> Thanks,
> >
> >See discussion here:
> >https://lists.yoctoproject.org/pipermail/poky/2013-December/009463.html
> >
> >Bug here:
> >https://bugzilla.yoctoproject.org/show_bug.cgi?id=5546
> >
> >Signed-off-by: Alexandre Belloni <alexandre.belloni@free-electrons.com>
> >---
> >
> >Changes since v1:
> > - stop using another script to start in the background and spawn a
> >   background shell from the startup script
> >
> > .../matchbox-keyboard/files/80matchboxkeyboard.sh  | 21 ++++++++++++++++++++
> > .../files/80matchboxkeyboard.shbg                  | 23 ----------------------
> > .../matchbox-keyboard/matchbox-keyboard_git.bb     |  4 ++--
> > 3 files changed, 23 insertions(+), 25 deletions(-)
> > create mode 100755
> >meta/recipes-sato/matchbox-keyboard/files/80matchboxkeyboard.sh
> > delete mode 100755
> >meta/recipes-sato/matchbox-keyboard/files/80matchboxkeyboard.shbg
> >
> >diff --git
> >a/meta/recipes-sato/matchbox-keyboard/files/80matchboxkeyboard.sh
> >b/meta/recipes-sato/matchbox-keyboard/files/80matchboxkeyboard.sh
> >new file mode 100755
> >index 000000000000..d822efa6e70c
> >--- /dev/null
> >+++ b/meta/recipes-sato/matchbox-keyboard/files/80matchboxkeyboard.sh
> >@@ -0,0 +1,21 @@
> >+#!/bin/sh
> >+
> >+. /etc/formfactor/config
> >+
> >+CMD=""
> >+
> >+if [ "$HAVE_KEYBOARD" = "0" ]; then
> >+    CMD="matchbox-keyboard -d"
> >+elif [ "$DISPLAY_CAN_ROTATE" = "1" ]; then
> >+    if [ "$HAVE_KEYBOARD_PORTRAIT" = "1" -a
> >"$HAVE_KEYBOARD_LANDSCAPE" = "0" ]; then
> >+        CMD="matchbox-keyboard -d -o landscape"
> >+    elif [ "$HAVE_KEYBOARD_LANDSCAPE" = "1" -a
> >"$HAVE_KEYBOARD_PORTRAIT" = "0" ]; then
> >+        CMD="matchbox-keyboard -d -o portrait"
> >+    fi
> >+fi
> >+
> >+if [ "$CMD" ]; then
> >+    # Delay to make sure the window manager is active
> >+    # by waiting for the desktop to say its finished loading
> >+	( dbus-wait org.matchbox_project.desktop Loaded && $CMD ) &
> >+fi
> >diff --git
> >a/meta/recipes-sato/matchbox-keyboard/files/80matchboxkeyboard.shbg
> >b/meta/recipes-sato/matchbox-keyboard/files/80matchboxkeyboard.shbg
> >deleted file mode 100755
> >index 43c5d3ed6a32..000000000000
> >--- a/meta/recipes-sato/matchbox-keyboard/files/80matchboxkeyboard.shbg
> >+++ /dev/null
> >@@ -1,23 +0,0 @@
> >-#!/bin/sh
> >-
> >-. /etc/formfactor/config
> >-
> >-CMD=""
> >-
> >-if [ "$HAVE_KEYBOARD" = "0" ]; then
> >-    CMD="matchbox-keyboard -d"
> >-elif [ "$DISPLAY_CAN_ROTATE" = "1" ]; then
> >-    if [ "$HAVE_KEYBOARD_PORTRAIT" = "1" -a
> >"$HAVE_KEYBOARD_LANDSCAPE" = "0" ]; then
> >-        CMD="matchbox-keyboard -d -o landscape"
> >-    elif [ "$HAVE_KEYBOARD_LANDSCAPE" = "1" -a
> >"$HAVE_KEYBOARD_PORTRAIT" = "0" ]; then
> >-        CMD="matchbox-keyboard -d -o portrait"
> >-    fi
> >-fi
> >-					
> >-
> >-if [ "$CMD" ]; then
> >-    # Delay to make sure the window manager is active
> >-    # by waiting for the desktop to say its finished loading
> >-    dbus-wait org.matchbox_project.desktop Loaded
> >-    exec $CMD
> >-fi
> >diff --git
> >a/meta/recipes-sato/matchbox-keyboard/matchbox-keyboard_git.bb
> >b/meta/recipes-sato/matchbox-keyboard/matchbox-keyboard_git.bb
> >index ffcabcad2215..70caf6fc0222 100644
> >--- a/meta/recipes-sato/matchbox-keyboard/matchbox-keyboard_git.bb
> >+++ b/meta/recipes-sato/matchbox-keyboard/matchbox-keyboard_git.bb
> >@@ -17,7 +17,7 @@ PR = "r4"
> > SRC_URI = "git://git.yoctoproject.org/${BPN} \
> >            file://configure_fix.patch;maxrev=1819 \
> >            file://single-instance.patch \
> >-           file://80matchboxkeyboard.shbg \
> >+           file://80matchboxkeyboard.sh \
> >            file://png-fix.patch"
> >
> > S = "${WORKDIR}/git"
> >@@ -43,7 +43,7 @@ FILES_${PN}-applet = "${libdir}/matchbox-panel/*.so"
> >
> > do_install_append () {
> > 	install -d ${D}/${sysconfdir}/X11/Xsession.d/
> >-	install -m 755 ${WORKDIR}/80matchboxkeyboard.shbg
> >${D}/${sysconfdir}/X11/Xsession.d/
> >+	install -m 755 ${WORKDIR}/80matchboxkeyboard.sh
> >${D}/${sysconfdir}/X11/Xsession.d/
> >
> > 	rm -f ${D}${libdir}/gtk-2.0/*/immodules/*.la
> > 	rm -f ${D}${libdir}/matchbox-panel/*.la
> >--
> >1.8.3.2
> >
> >_______________________________________________
> >Openembedded-core mailing list
> >Openembedded-core@lists.openembedded.org
> >http://lists.openembedded.org/mailman/listinfo/openembedded-core
> 
> 
> 
> Sent with AquaMail for Android
> http://www.aqua-mail.com
> 
>
Ross Burton - Feb. 17, 2014, 11:23 a.m.
On 16 February 2014 14:13, Alexandre Belloni
<alexandre.belloni@free-electrons.com> wrote:
>> Also, why do you need another shell instance, out of curiosity. ISTM
>> that only wastes RAM..
>
> We create a shell and start in the background to wait for
> matchbox-desktop to start. This allows X continue to start and run the
> next Xsession scripts. And matchbox-desktop has to be the last started
> program si we don't have any other way. Anyway, once the
> matchbox-keyboard daemon starts, the shell will exit and not use ram
> anymore.

As matchbox-keyboard.sh is being sourced, I don't think we need to subshell.

Ross
Alexandre Belloni - Feb. 17, 2014, 12:27 p.m.
On 17/02/2014 at 11:23:19 +0000, Burton, Ross wrote :
> On 16 February 2014 14:13, Alexandre Belloni
> <alexandre.belloni@free-electrons.com> wrote:
> >> Also, why do you need another shell instance, out of curiosity. ISTM
> >> that only wastes RAM..
> >
> > We create a shell and start in the background to wait for
> > matchbox-desktop to start. This allows X continue to start and run the
> > next Xsession scripts. And matchbox-desktop has to be the last started
> > program si we don't have any other way. Anyway, once the
> > matchbox-keyboard daemon starts, the shell will exit and not use ram
> > anymore.
> 
> As matchbox-keyboard.sh is being sourced, I don't think we need to subshell.
> 

Indeed, that seems to work, I will send v3.

Patch

diff --git a/meta/recipes-sato/matchbox-keyboard/files/80matchboxkeyboard.sh b/meta/recipes-sato/matchbox-keyboard/files/80matchboxkeyboard.sh
new file mode 100755
index 000000000000..d822efa6e70c
--- /dev/null
+++ b/meta/recipes-sato/matchbox-keyboard/files/80matchboxkeyboard.sh
@@ -0,0 +1,21 @@ 
+#!/bin/sh
+
+. /etc/formfactor/config
+
+CMD=""
+
+if [ "$HAVE_KEYBOARD" = "0" ]; then
+    CMD="matchbox-keyboard -d"
+elif [ "$DISPLAY_CAN_ROTATE" = "1" ]; then
+    if [ "$HAVE_KEYBOARD_PORTRAIT" = "1" -a "$HAVE_KEYBOARD_LANDSCAPE" = "0" ]; then
+        CMD="matchbox-keyboard -d -o landscape"
+    elif [ "$HAVE_KEYBOARD_LANDSCAPE" = "1" -a "$HAVE_KEYBOARD_PORTRAIT" = "0" ]; then
+        CMD="matchbox-keyboard -d -o portrait"
+    fi
+fi
+
+if [ "$CMD" ]; then
+    # Delay to make sure the window manager is active
+    # by waiting for the desktop to say its finished loading
+	( dbus-wait org.matchbox_project.desktop Loaded && $CMD ) &
+fi
diff --git a/meta/recipes-sato/matchbox-keyboard/files/80matchboxkeyboard.shbg b/meta/recipes-sato/matchbox-keyboard/files/80matchboxkeyboard.shbg
deleted file mode 100755
index 43c5d3ed6a32..000000000000
--- a/meta/recipes-sato/matchbox-keyboard/files/80matchboxkeyboard.shbg
+++ /dev/null
@@ -1,23 +0,0 @@ 
-#!/bin/sh
-
-. /etc/formfactor/config
-
-CMD=""
-
-if [ "$HAVE_KEYBOARD" = "0" ]; then
-    CMD="matchbox-keyboard -d"
-elif [ "$DISPLAY_CAN_ROTATE" = "1" ]; then
-    if [ "$HAVE_KEYBOARD_PORTRAIT" = "1" -a "$HAVE_KEYBOARD_LANDSCAPE" = "0" ]; then
-        CMD="matchbox-keyboard -d -o landscape"
-    elif [ "$HAVE_KEYBOARD_LANDSCAPE" = "1" -a "$HAVE_KEYBOARD_PORTRAIT" = "0" ]; then
-        CMD="matchbox-keyboard -d -o portrait"
-    fi
-fi
-					
-
-if [ "$CMD" ]; then
-    # Delay to make sure the window manager is active
-    # by waiting for the desktop to say its finished loading
-    dbus-wait org.matchbox_project.desktop Loaded
-    exec $CMD
-fi
diff --git a/meta/recipes-sato/matchbox-keyboard/matchbox-keyboard_git.bb b/meta/recipes-sato/matchbox-keyboard/matchbox-keyboard_git.bb
index ffcabcad2215..70caf6fc0222 100644
--- a/meta/recipes-sato/matchbox-keyboard/matchbox-keyboard_git.bb
+++ b/meta/recipes-sato/matchbox-keyboard/matchbox-keyboard_git.bb
@@ -17,7 +17,7 @@  PR = "r4"
 SRC_URI = "git://git.yoctoproject.org/${BPN} \
            file://configure_fix.patch;maxrev=1819 \
            file://single-instance.patch \
-           file://80matchboxkeyboard.shbg \
+           file://80matchboxkeyboard.sh \
            file://png-fix.patch"
 
 S = "${WORKDIR}/git"
@@ -43,7 +43,7 @@  FILES_${PN}-applet = "${libdir}/matchbox-panel/*.so"
 
 do_install_append () {
 	install -d ${D}/${sysconfdir}/X11/Xsession.d/
-	install -m 755 ${WORKDIR}/80matchboxkeyboard.shbg ${D}/${sysconfdir}/X11/Xsession.d/
+	install -m 755 ${WORKDIR}/80matchboxkeyboard.sh ${D}/${sysconfdir}/X11/Xsession.d/
 
 	rm -f ${D}${libdir}/gtk-2.0/*/immodules/*.la
 	rm -f ${D}${libdir}/matchbox-panel/*.la