Hello community, here is the log from the commit of package xdm for openSUSE:Factory checked in at 2017-10-20 14:41:37 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/xdm (Old) and /work/SRC/openSUSE:Factory/.xdm.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "xdm" Fri Oct 20 14:41:37 2017 rev:61 rq:534975 version:1.1.11 Changes: -------- --- /work/SRC/openSUSE:Factory/xdm/xdm.changes 2017-07-28 09:40:18.398259333 +0200 +++ /work/SRC/openSUSE:Factory/.xdm.new/xdm.changes 2017-10-20 14:41:40.380022458 +0200 @@ -1,0 +2,25 @@ +Wed Oct 18 15:01:24 UTC 2017 - sndir...@suse.com + +- reintroduced /etc/X11/xdm/keytable script and the hook-up in + /usr/lib/X11/display-manager to setup X11 keymaps, since YaST + is not able to use localectl already during installation due to + dbus and appropriate systemd services not running :-( + (bsc#1046436) + +------------------------------------------------------------------- +Thu Oct 12 10:08:28 UTC 2017 - dims...@opensuse.org + +- Have update-alternatives handle Xinit's integration of the + displaymanager, replacing /etc/sysconfig/displaymanager. +- Add a dummy entry for 'console' - which is special-cased in the + display-manager script to 'exit early'. In order for it to become + an option for update-alternatives, the target needs to exist. +- Update /usr/lib/X11/display-manager to get the + default-displaymanager from the update-alternative setting + instead of reading it from /etc/sysconfig/displaymanager. +- Remove DISPLAYMANAGER from displaymanager.sysconfig template. +- Add xdm-with-update-alternative.patch so the needed changes can + be applied for suse_version >= 1330 only, not breaking Leap 42.x. +- All that together solves boo#1053863. + +------------------------------------------------------------------- New: ---- xdm-with-update-alternative.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ xdm.spec ++++++ --- /var/tmp/diff_new_pack.9pqYk1/_old 2017-10-20 14:41:41.019992513 +0200 +++ /var/tmp/diff_new_pack.9pqYk1/_new 2017-10-20 14:41:41.023992326 +0200 @@ -44,10 +44,12 @@ Source4: display-manager.service Source5: xsession.desktop Patch1: xdm-tolerant-hostname-changes.diff +# PATCH-FEATURE-OPENSUSE xdm-with-update-alternative.patch dims...@opensuse.org -- Choice of default DM by means of u-a +Patch2: xdm-with-update-alternative.patch # needed for patch0, patch2, patch3, patch4 BuildRequires: libtool BuildRequires: pam-devel -BuildRequires: pkg-config +BuildRequires: pkgconfig BuildRequires: pkgconfig(x11) BuildRequires: pkgconfig(xau) BuildRequires: pkgconfig(xaw7) @@ -72,7 +74,6 @@ Recommends: dbus-1-x11 # This was part of the xorg-x11 package up to version 7.6 Conflicts: xorg-x11 <= 7.6 -BuildRoot: %{_tmppath}/%{name}-%{version}-build %if !%with_systemd Patch0: xdm-consolekit.diff %endif @@ -117,6 +118,8 @@ pushd xdm %patch1 -p1 popd +# Special note: patch 2 is applied in install section; tagging it here for the source validator only +#patch2 -p1 %build # needed for patch0 @@ -137,6 +140,9 @@ pushd %{buildroot} # SuSE default XDM configuration tar xf %{SOURCE1} +%if 0%{?suse_version} >= 1330 +patch -p1 < %{PATCH2} +%endif %if %dm_fallbacks tar xf %{SOURCE3} %endif @@ -171,6 +177,14 @@ EOF chmod 0755 %{buildroot}%{_sbindir}/rcxdm %endif +%if 0%{?suse_version} >= 1330 +# prepare for defaul-dm to be chosen by means of update-alternatives +mkdir -p %{buildroot}%{_sysconfdir}/alternatives +touch %{buildroot}%{_sysconfdir}/alternatives/default-displaymanager +ln -s %{_sysconfdir}/alternatives/default-displaymanager %{buildroot}%{_libexecdir}/X11/displaymanagers/default-displaymanager +# Inject a dummy 'console' selection - which used to be choice in /etc/sysconfig/displaymanager +touch %{buildroot}%{_libexecdir}/X11/displaymanagers/console +%endif %post %if 0%{?suse_version} < 1315 @@ -184,9 +198,15 @@ %ifarch aarch64 ppc64le if ! [ -c /dev/fb* -o -d /dev/dri ]; then sed -i -e "s+DISPLAYMANAGER_STARTS_XSERVER=.*+DISPLAYMANAGER_STARTS_XSERVER=\"no\"+g" \ - /etc/sysconfig/displaymanager + %{_sysconfdir}/sysconfig/displaymanager fi %endif +%if 0%{?suse_version} >= 1330 +%{_sbindir}/update-alternatives --install %{_libexecdir}/X11/displaymanagers/default-displaymanager \ + default-displaymanager %{_libexecdir}/X11/displaymanagers/console 5 +%{_sbindir}/update-alternatives --install %{_libexecdir}/X11/displaymanagers/default-displaymanager \ + default-displaymanager %{_libexecdir}/X11/displaymanagers/xdm 10 +%endif %pre %if !0%{?suse_version} < 1315 @@ -200,6 +220,12 @@ # Do not restart DM on update (bnc#886641) %service_del_postun -n display-manager.service %endif +%if 0%{?suse_version} >= 1330 +[ -f %{_libexecdir}/X11/displaymanagers/console ] || %{_sbindir}/update-alternatives \ + --remove default-displaymanager %{_libexecdir}/X11/displaymanagers/console +[ -f %{_libexecdir}/X11/displaymanagers/xdm ] || %{_sbindir}/update-alternatives \ + --remove default-displaymanager %{_libexecdir}/X11/displaymanagers/xdm +%endif %preun %if !0%{?suse_version} < 1315 @@ -212,6 +238,11 @@ %doc HOWTO.xdm %dir %{_dminitdir} %{_dminitdir}/xdm +%if 0%{?suse_version} >= 1330 +%{_dminitdir}/console +%{_libexecdir}/X11/displaymanagers/default-displaymanager +%ghost %{_sysconfdir}/alternatives/default-displaymanager +%endif %if %dm_fallbacks %{_dminitdir}/entrance.fallback %{_dminitdir}/gdm.fallback ++++++ xdm-with-update-alternative.patch ++++++ diff -ur xdm.old/usr/lib/X11/display-manager xdm.new/usr/lib/X11/display-manager --- xdm.old/usr/lib/X11/display-manager 2017-02-06 14:19:33.541035000 +0100 +++ xdm.new/usr/lib/X11/display-manager 2017-10-12 15:44:06.592204792 +0200 @@ -109,6 +109,8 @@ #set -x +# DISPLAYMANAGER used to be set in /etc/sysconfig/displaymanager, but the default is now set by update-alternatives +DISPLAYMANAGER=$(realpath --relative-base=/usr/lib/X11/displaymanagers /usr/lib/X11/displaymanagers/default-displaymanager) DM=${DISPLAYMANAGER##*/} case "$DM" in @@ -127,6 +129,7 @@ do name="${i}_vars" PIDFILE=/var/run/$i.pid; + type $name > /dev/null || continue; $name $DM && break; done if [ -z "$DISPLAYMANAGER" -o ! -x "$DISPLAYMANAGER" ] diff -ur xdm.old/var/adm/fillup-templates/sysconfig.displaymanager xdm.new/var/adm/fillup-templates/sysconfig.displaymanager --- xdm.old/var/adm/fillup-templates/sysconfig.displaymanager 2017-01-04 11:15:56.259500000 +0100 +++ xdm.new/var/adm/fillup-templates/sysconfig.displaymanager 2017-10-12 16:35:23.775259305 +0200 @@ -1,14 +1,6 @@ ## Path: Desktop/Display manager ## Description: settings to generate a proper displaymanager config -## Type: string(kdm,xdm,gdm,wdm,entrance,console,lightdm,sddm) -## Default: "" -# -# Here you can set the default Display manager (kdm/xdm/gdm/wdm/entrance/console). -# all changes in this file require a restart of the displaymanager -# -DISPLAYMANAGER="" - ## Type: yesno ## Default: no # ++++++ xdm.tar.bz2 ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/etc/X11/xdm/keytable new/etc/X11/xdm/keytable --- old/etc/X11/xdm/keytable 1970-01-01 01:00:00.000000000 +0100 +++ new/etc/X11/xdm/keytable 2017-10-18 16:58:19.074036000 +0200 @@ -0,0 +1,59 @@ +#! /bin/bash + +if [ $UID -ne 0 ]; then + echo "You need to be root to run this program" + exit 0 +fi + +vconsole_conf_file=/etc/vconsole.conf +previous_x11conf_file=/etc/X11/xorg.conf.d/90-keytable.conf +systemd_x11conf_file=/etc/X11/xorg.conf.d/00-keyboard.conf +keyboard_map_systemd=/usr/share/systemd/kbd-model-map + +function setkeyboard { + echo "Command: localectl set-keymap $1" + # xorg.conf.d snippet is only written if a valid snippet is already + # available, so create an us sample if neccessary + if [ ! -f $systemd_x11conf_file ]; then + localectl set-x11-keymap us + fi + + # check systemd mapping + NEWKEYMAP=$(echo "$1" | sed "s/ $//" ) + opts=$(grep -P "^$NEWKEYMAP\t" "$keyboard_map_systemd" | sed -re "s/[^\t]*//" -e "s/[\t]+/ /g" ) + if [ -z "$opts" ]; then + echo "W: Cannot find mapping for $NEWKEYMAP in $keyboard_map_systemd" + echo "W: This will result in an 'us' X keyboard layout as default" + else + echo "I: Using systemd $keyboard_map_systemd mapping" + fi + + localectl set-keymap $1 + if [ -f $systemd_x11conf_file ]; then + if [ -f $previous_x11conf_file ]; then + if [ $systemd_x11conf_file -nt $previous_x11conf_file ]; then + rm -f $previous_x11conf_file + fi + fi + exit 0 + else + echo "$systemd_x11conf_file has not been created!" + fi +} + +if [ -f $vconsole_conf_file ]; then + echo "$vconsole_conf_file available" + . $vconsole_conf_file + if [ ! -z $KEYMAP ]; then + echo "KEYMAP: $KEYMAP" + options="$KEYMAP $KEYMAP_TOGGLE" + setkeyboard "$options" + else + echo "KEYMAP not set" + fi +else + echo "$vconsole_conf_file not available" +fi + +echo "Keyboard layout could not be set" +exit 1 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/usr/lib/X11/display-manager new/usr/lib/X11/display-manager --- old/usr/lib/X11/display-manager 2017-02-06 14:19:33.541035000 +0100 +++ new/usr/lib/X11/display-manager 2017-10-18 16:59:26.687226000 +0200 @@ -144,6 +144,11 @@ case "$1" in start) + # use system keyboard as global X keyboard configuration + if [ -x /etc/X11/xdm/keytable ]; then + /etc/X11/xdm/keytable + fi + [ -n "$STARTPROC" ] && $STARTPROC echo -n "Starting service $DM" # Don't start xdm if no Xserver is configured and xdm is not