[poky] 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 poky
mailing list