[meta-freescale] X11 incompatibilities using meta-oe with poky

Alexandre Belloni alexandre.belloni at free-electrons.com
Fri Dec 27 13:22:43 PST 2013


Hi,

When using core-image-sato (latest dora), I encountered again an issue
that I once solved by hacking around it. It has the following symptoms:
 - touchscreen calibration doesn't start the first time the board is booted
 - matchbox-keyboard doesn't come up when touching the keyboard icon in
the panel
 - matchbox-panel is ugly (compare
http://www.ossystems.com.br/images/blog/boards/boundarydevices-nitrogen6x-hdmi-screenshot-fsl-image-gui.jpg
with http://free-electrons.com/~alexandre/matchbox-panel.jpg)

This time, I decided to investigate that issue a bit more. Here is what
I found:
The cause is the /etc/X11/Xsession script which at some point does:
=-=-=-=-=-=-=-=-=-=-=-=-==-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
SESSIONFILES=`ls -X $SYSSESSIONDIR`
if [ -n "$SESSIONFILES" ]; then
  for SESSIONFILE in $SESSIONFILES; do
  # Test if script is executable first before sourcing it
    if [ -x "$SYSSESSIONDIR/$SESSIONFILE" ]; then
      . $SYSSESSIONDIR/$SESSIONFILE
    fi
  done
fi
=-=-=-=-=-=-=-=-=-=-=-=-==-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

This is not working because ls -X is not sorting the files
alphabetically but by extension:
=-=-=-=-=-=-=-=-=-=-=-=-==-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
root at cfa10058:~# ls -X -1 /etc/X11/Xsession.d/
60xXDefaults
89xdgautostart
90xXWindowManager
30xinput_calibrate.sh
70settings-daemon.sh
80matchboxkeyboard.shbg
=-=-=-=-=-=-=-=-=-=-=-=-==-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

So, obviously, matchbox is started before calibration and matchbox-keyboard.
Now, why is that happening ?

Looking at the build directory, one can find Xsession being provided by
two packages !
xserver-common 1.34-r8 and x11-common 0.1-r47 why ?
The dependancies are:
packagegroup-core-x11 -> x11-common
packagegroup-core-x11 -> xserver-nodm-init -> xserver-common

Which is what we ask for since
poky/meta/recipes-graphics/packagegroups/packagegroup-core-x11.bb has:
=-=-=-=-=-=-=-=-=-=-=-=-==-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# xserver-common, x11-common
VIRTUAL-RUNTIME_xserver_common ?= "x11-common"

# elsa, xserver-nodm-init
VIRTUAL-RUNTIME_graphical_init_manager ?= "xserver-nodm-init"

[...]
RDEPENDS_${PN}-utils = "\
    ${VIRTUAL-RUNTIME_xserver_common} \
    ${VIRTUAL-RUNTIME_graphical_init_manager} \
    xauth \
    xhost \
    xset \
    xrandr \
    "
=-=-=-=-=-=-=-=-=-=-=-=-==-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

What is really happening is that xserver-nodm-init is provided both by
poky/meta/recipes-graphics/x11-common/xserver-nodm-init.bb and
meta-openembedded/meta-oe/recipes-graphics/xserver-nodm-init/xserver-nodm-init_2.0.bb

layer                 path                                      priority
==========================================================================
meta                  /home/alex/fsl/sources/poky/meta  5
meta-yocto            /home/alex/fsl/sources/poky/meta-yocto  5
meta-oe               /home/alex/fsl/sources/meta-openembedded/meta-oe  6

The meta-oe one is selected ! That one can't actually work with the
current
poky/meta/recipes-sato/matchbox-keyboard/matchbox-keyboard_git.bb recipe
because of the "ls -X" sorting and it doesn't know how to handle shbg
files this will hang trying to use 80matchboxkeyboard.shbg

So my next step was to remove the meta-oe layer (or simply mask
/meta-openembedded/meta-oe/recipes-graphics/). The final result is
better but touch screen calibration (xtscal instead of
xinput-calibrator) fails with:
XCALIBRATE extension missing: Resource temporarily unavailable
XCALIBRATE extension missing: Resource temporarily unavailable
XCALIBRATE extension missing: Resource temporarily unavailable


So, questions:
 - How do we solve that cleanly ?
 - Why doesn't xserver-common conflicts with x11-common despite
RCONFLICTS_${PN} = "xserver-kdrive-common x11-common" ?
 - Shouldn't we stop using xtscal and use xinput-calibrator instead ?
 - Should we update the Xsession script from the poky recipes and stop
using x11-common ?

On my side, what I do is masking
/meta-openembedded/meta-oe/recipes-graphics/ and replacing xtscal by
xinput-calibrator as a dependency of x11-common but I believe we can do
better.

-- 
Alexandre Belloni, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com



More information about the meta-freescale mailing list