1
0
mirror of https://git.yoctoproject.org/poky synced 2026-05-31 12:49:46 +00:00

xserver-nodm-init: Deprecate /etc/X11/Xserver

This commit should provide the same functionality as before, but
should make meta-oe xserver-nodm-init-2.0 obsolete as well as
keep systemd and sysvinit startup better in sync.

/etc/X11/Xserver is not called anymore: it is provided by both
x11-common and xserver-common with no useful differences (but some
annoying ones). Instead xserver-nodm-init provides
/etc/xserver-nodm/Xserver as the startup script and
/etc/default/xserver-nodm as the default settings file. These are
used by both init systems.

The Xserver script could be completely removed (with sysv and
systemd calling xinit directly), but to keep compatibility with
meta-oes xserver-nodm-init-2.0 the Xserver script sources
/etc/X11/xserver-common if one exists -- and systemd EnvironmentFile
cannot do that.

x11-common used to have a packageconfig to easily control screen
blanking. Move this to xserver-nodm-init.

(From OE-Core rev: e8ce3d2626e505924a75de96650abca166fd230a)

Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Jussi Kukkonen
2016-09-01 09:53:04 +03:00
committed by Richard Purdie
parent 37f4b39d0e
commit 3b7cdffebd
7 changed files with 70 additions and 29 deletions
@@ -5,10 +5,10 @@ SECTION = "x11"
PR = "r31" PR = "r31"
SRC_URI = "file://xserver-nodm \ SRC_URI = "file://xserver-nodm \
file://Xusername \ file://Xserver \
file://gplv2-license.patch \ file://gplv2-license.patch \
file://xserver-nodm.service \ file://xserver-nodm.service.in \
file://xserver-nodm.conf \ file://xserver-nodm.conf.in \
" "
S = "${WORKDIR}" S = "${WORKDIR}"
@@ -16,35 +16,44 @@ S = "${WORKDIR}"
# Since we refer to ROOTLESS_X which is normally enabled per-machine # Since we refer to ROOTLESS_X which is normally enabled per-machine
PACKAGE_ARCH = "${MACHINE_ARCH}" PACKAGE_ARCH = "${MACHINE_ARCH}"
inherit update-rc.d systemd inherit update-rc.d systemd distro_features_check
REQUIRED_DISTRO_FEATURES = "x11"
PACKAGECONFIG ??= "blank"
# dpms and screen saver will be on only if 'blank' is in PACKAGECONFIG
PACKAGECONFIG[blank] = ""
do_install() { do_install() {
install -d ${D}${sysconfdir}/init.d install -d ${D}${sysconfdir}/default
install xserver-nodm ${D}${sysconfdir}/init.d install xserver-nodm.conf.in ${D}${sysconfdir}/default/xserver-nodm
install -d ${D}${sysconfdir}/xserver-nodm
install Xserver ${D}${sysconfdir}/xserver-nodm/Xserver
BLANK_ARGS="${@bb.utils.contains('PACKAGECONFIG', 'blank', '', '-s 0 -dpms', d)}"
if [ "${ROOTLESS_X}" = "1" ] ; then
XUSER_HOME="/home/xuser"
XUSER="xuser"
else
XUSER_HOME=${ROOT_HOME}
XUSER="root"
fi
sed -i "s:@HOME@:${XUSER_HOME}:; s:@USER@:${XUSER}:; s:@BLANK_ARGS@:${BLANK_ARGS}:" \
${D}${sysconfdir}/default/xserver-nodm
if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then
install -d ${D}${sysconfdir}/default
install xserver-nodm.conf ${D}${sysconfdir}/default/xserver-nodm
install -d ${D}${systemd_unitdir}/system install -d ${D}${systemd_unitdir}/system
install -m 0644 ${WORKDIR}/xserver-nodm.service ${D}${systemd_unitdir}/system install -m 0644 ${WORKDIR}/xserver-nodm.service.in ${D}${systemd_unitdir}/system/xserver-nodm.service
if [ "${ROOTLESS_X}" = "1" ] ; then sed -i "s:@USER@:${XUSER}:" ${D}${systemd_unitdir}/system/xserver-nodm.service
sed -i 's!^HOME=.*!HOME=/home/xuser!' ${D}${sysconfdir}/default/xserver-nodm
sed -i 's!^User=.*!User=xuser!' ${D}${systemd_unitdir}/system/xserver-nodm.service
else
sed -i 's!^HOME=.*!HOME=${ROOT_HOME}!' ${D}${sysconfdir}/default/xserver-nodm
sed -i '/^User=/d' ${D}${systemd_unitdir}/system/xserver-nodm.service
fi
fi fi
if ${@bb.utils.contains('DISTRO_FEATURES','sysvinit','true','false',d)}; then if ${@bb.utils.contains('DISTRO_FEATURES','sysvinit','true','false',d)}; then
if [ "${ROOTLESS_X}" = "1" ] ; then install -d ${D}${sysconfdir}/init.d
install -d ${D}${sysconfdir}/X11 install xserver-nodm ${D}${sysconfdir}/init.d
install Xusername ${D}${sysconfdir}/X11
fi
fi fi
} }
RDEPENDS_${PN} = "${@base_conditional('ROOTLESS_X', '1', 'xuser-account', '', d)}" RDEPENDS_${PN} = "xinit ${@base_conditional('ROOTLESS_X', '1', 'xuser-account', '', d)}"
INITSCRIPT_NAME = "xserver-nodm" INITSCRIPT_NAME = "xserver-nodm"
INITSCRIPT_PARAMS = "start 9 5 . stop 20 0 1 2 3 6 ." INITSCRIPT_PARAMS = "start 9 5 . stop 20 0 1 2 3 6 ."
@@ -0,0 +1,25 @@
#!/bin/sh
# This script is only needed to make sure /etc/X11/xserver-common
# can affect XSERVER, ARGS & DPI: otherwise systemd could just use
# /etc/default/xserver-nodm as EnvironmentFile and sysvinit could just
# source the same file
. /etc/profile
# load default values for XSERVER, ARGS, DISPLAY...
. /etc/default/xserver-nodm
# Allow xserver-common to override ARGS, XSERVER, DPI
if [ -e /etc/X11/xserver-common ] ; then
. /etc/X11/xserver-common
if [ ! -e $XSERVER ] ; then
XSERVER=$(which $XSERVER)
fi
fi
if [ -n "$DPI" ] ; then
ARGS="$ARGS -dpi $DPI"
fi
exec xinit /etc/X11/Xsession -- $XSERVER $DISPLAY $ARGS $*
@@ -1 +0,0 @@
xuser
@@ -26,10 +26,11 @@ done
case "$1" in case "$1" in
start) start)
. /etc/profile . /etc/profile
username=root
#default for USER
. /etc/default/xserver-nodm
echo "Starting Xserver" echo "Starting Xserver"
if [ -f /etc/X11/Xusername ]; then if [ "$USER" != "root" ]; then
username=`cat /etc/X11/Xusername`
# setting for rootless X # setting for rootless X
chmod o+w /var/log chmod o+w /var/log
chmod g+r /dev/tty[0-3] chmod g+r /dev/tty[0-3]
@@ -38,8 +39,9 @@ case "$1" in
chmod o+rw /dev/hidraw* chmod o+rw /dev/hidraw*
fi fi
fi fi
# Using su rather than sudo as latest 1.8.1 cause failure [YOCTO #1211] # Using su rather than sudo as latest 1.8.1 cause failure [YOCTO #1211]
su -l -c '/etc/X11/Xserver&' $username su -l -c '/etc/xserver-nodm/Xserver &' $USER
# Wait for the desktop to say its finished loading # Wait for the desktop to say its finished loading
# before loading the rest of the system # before loading the rest of the system
# dbus-wait org.matchbox_project.desktop Loaded # dbus-wait org.matchbox_project.desktop Loaded
@@ -1 +0,0 @@
HOME=/home/root
@@ -0,0 +1,7 @@
# common environment file for sysvinit and systemd
XSERVER=/usr/bin/Xorg
DISPLAY=:0
ARGS=" -br -pn @BLANK_ARGS@ "
HOME=@HOME@
USER=@USER@
@@ -2,9 +2,9 @@
Description=Xserver startup without a display manager Description=Xserver startup without a display manager
[Service] [Service]
User=root
EnvironmentFile=/etc/default/xserver-nodm EnvironmentFile=/etc/default/xserver-nodm
ExecStart=/etc/X11/Xserver User=@USER@
ExecStart=/etc/xserver-nodm/Xserver
[Install] [Install]
Alias=display-manager.service Alias=display-manager.service