From 087f117b3f205977e9cb2b88c182a6ce07c60396 Mon Sep 17 00:00:00 2001 From: CentOS Sources Date: Wed, 16 Dec 2020 12:28:23 +0000 Subject: [PATCH] import xorg-x11-xinit-1.3.4-18.el8 --- .gitignore | 1 + .xorg-x11-xinit.metadata | 1 + ...tty-when-telling-the-server-to-start.patch | 34 +++ ...x-picking-an-already-used-display-nu.patch | 36 +++ ...tx-auto-display-select-work-with-per.patch | 35 +++ SOURCES/Xclients | 78 ++++++ SOURCES/Xmodmap | 25 ++ SOURCES/Xresources | 13 + SOURCES/Xsession | 93 +++++++ SOURCES/localuser.sh | 12 + SOURCES/xinit-1.0.2-client-session.patch | 38 +++ .../xinit-1.3.4-set-XORG_RUN_AS_USER_OK.patch | 15 ++ SOURCES/xinit-compat | 7 + SOURCES/xinit-compat.desktop | 4 + SOURCES/xinitrc | 33 +++ SOURCES/xinitrc-common | 61 +++++ SPECS/xorg-x11-xinit.spec | 229 ++++++++++++++++++ 17 files changed, 715 insertions(+) create mode 100644 .gitignore create mode 100644 .xorg-x11-xinit.metadata create mode 100644 SOURCES/0001-startx-Pass-keeptty-when-telling-the-server-to-start.patch create mode 100644 SOURCES/0002-startx-Fix-startx-picking-an-already-used-display-nu.patch create mode 100644 SOURCES/0003-startx-Make-startx-auto-display-select-work-with-per.patch create mode 100644 SOURCES/Xclients create mode 100644 SOURCES/Xmodmap create mode 100644 SOURCES/Xresources create mode 100644 SOURCES/Xsession create mode 100755 SOURCES/localuser.sh create mode 100644 SOURCES/xinit-1.0.2-client-session.patch create mode 100644 SOURCES/xinit-1.3.4-set-XORG_RUN_AS_USER_OK.patch create mode 100644 SOURCES/xinit-compat create mode 100644 SOURCES/xinit-compat.desktop create mode 100755 SOURCES/xinitrc create mode 100644 SOURCES/xinitrc-common create mode 100644 SPECS/xorg-x11-xinit.spec diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..2e76eab --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +SOURCES/xinit-1.3.4.tar.bz2 diff --git a/.xorg-x11-xinit.metadata b/.xorg-x11-xinit.metadata new file mode 100644 index 0000000..b7743ca --- /dev/null +++ b/.xorg-x11-xinit.metadata @@ -0,0 +1 @@ +de3469080d73ced1f7d7a1803e813bc6ea352072 SOURCES/xinit-1.3.4.tar.bz2 diff --git a/SOURCES/0001-startx-Pass-keeptty-when-telling-the-server-to-start.patch b/SOURCES/0001-startx-Pass-keeptty-when-telling-the-server-to-start.patch new file mode 100644 index 0000000..f6fa8ff --- /dev/null +++ b/SOURCES/0001-startx-Pass-keeptty-when-telling-the-server-to-start.patch @@ -0,0 +1,34 @@ +From c70ab1d87b4aec8f171615aa8dee4a1fc1104b4b Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Tue, 20 Jan 2015 16:18:34 +0100 +Subject: [PATCH xinit] startx: Pass -keeptty when telling the server to start + on the current tty + +Detaching from the tty causes systemd-logind to refuse service to the xserver, +the xserver already tries to detect that it is being asked to run on the +current tty and then automatically enables -keeptty, but this code fails if +all of stdin, stdout and stderr are redirected to a file. So explicitly tell +the xserver to not detach when we're telling it to run on the current tty. + +BugLink: https://bugzilla.redhat.com/show_bug.cgi?id=1177513 +Signed-off-by: Hans de Goede +--- + startx.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/startx.cpp b/startx.cpp +index 1c6fce0..45d7bd9 100644 +--- a/startx.cpp ++++ b/startx.cpp +@@ -195,7 +195,7 @@ if [ x"$server" = x ]; then + tty=$(tty) + if expr match "$tty" '^/dev/tty[0-9]\+$' > /dev/null; then + tty_num=$(echo "$tty" | grep -oE '[0-9]+$') +- vtarg="vt$tty_num" ++ vtarg="vt$tty_num -keeptty" + fi + #endif + +-- +2.1.0 + diff --git a/SOURCES/0002-startx-Fix-startx-picking-an-already-used-display-nu.patch b/SOURCES/0002-startx-Fix-startx-picking-an-already-used-display-nu.patch new file mode 100644 index 0000000..1db645a --- /dev/null +++ b/SOURCES/0002-startx-Fix-startx-picking-an-already-used-display-nu.patch @@ -0,0 +1,36 @@ +From 848dc9b7f3a95f14efd4ea34188cba51965c9f53 Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Fri, 20 Mar 2015 14:25:44 +0100 +Subject: [PATCH xinit 2/3] startx: Fix startx picking an already used display + number when -nolock is used + +Currently startx relies on /tmp/.X?-lock being present for automatically +picking a free display number. This does not work if -nolock is used when +starting the server, or if the server is started with -displayfd as -displayfd +implies -nolock. + +This is becoming a problem now that -displayfd is getting used by +display-managers (e.g. gdm), this fixes this by also checking for +/tmp/.X11-unix/X? + +Signed-off-by: Hans de Goede +--- + startx.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/startx.cpp b/startx.cpp +index 8520399..fe49996 100644 +--- a/startx.cpp ++++ b/startx.cpp +@@ -120,7 +120,7 @@ enable_xauth=1 + XCOMM Automatically determine an unused $DISPLAY + d=0 + while true ; do +- [ -e /tmp/.X$d-lock ] || break ++ [ -e "/tmp/.X$d-lock" -o -S "/tmp/.X11-unix/X$d" ] || break + d=$(($d + 1)) + done + defaultdisplay=":$d" +-- +2.3.3 + diff --git a/SOURCES/0003-startx-Make-startx-auto-display-select-work-with-per.patch b/SOURCES/0003-startx-Make-startx-auto-display-select-work-with-per.patch new file mode 100644 index 0000000..aa67ba0 --- /dev/null +++ b/SOURCES/0003-startx-Make-startx-auto-display-select-work-with-per.patch @@ -0,0 +1,35 @@ +From 72939fed64b00be4a74dd0e1bf0b418e00ac4c57 Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Fri, 20 Mar 2015 14:30:08 +0100 +Subject: [PATCH xinit 3/3] startx: Make startx auto display select work with + per user /tmp dirs + +If a separate /tmp per user is used the existing auto display select code +does not work, add an extra check for the unix socket for the display number +existing in /proc/net/unix (linux only). + +Signed-off-by: Hans de Goede +--- + startx.cpp | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +diff --git a/startx.cpp b/startx.cpp +index fe49996..3b0dd86 100644 +--- a/startx.cpp ++++ b/startx.cpp +@@ -120,7 +120,11 @@ enable_xauth=1 + XCOMM Automatically determine an unused $DISPLAY + d=0 + while true ; do +- [ -e "/tmp/.X$d-lock" -o -S "/tmp/.X11-unix/X$d" ] || break ++ [ -e "/tmp/.X$d-lock" -o -S "/tmp/.X11-unix/X$d" ] || ++#ifdef __linux__ ++ grep -q "/tmp/.X11-unix/X$d" "/proc/net/unix" || ++#endif ++ break + d=$(($d + 1)) + done + defaultdisplay=":$d" +-- +2.3.3 + diff --git a/SOURCES/Xclients b/SOURCES/Xclients new file mode 100644 index 0000000..1d6d6f7 --- /dev/null +++ b/SOURCES/Xclients @@ -0,0 +1,78 @@ +#!/bin/bash +# Copyright (C) 1999 - 2004 Red Hat, Inc. All rights reserved. This +# copyrighted material is made available to anyone wishing to use, modify, +# copy, or redistribute it subject to the terms and conditions of the +# GNU General Public License version 2. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +GSESSION="$(type -p gnome-session)" +MSESSION="$(type -p mate-session)" +STARTKDE="$(type -p startkde)" +STARTLXDE="$(type -p startlxde)" + +# check to see if the user has a preferred desktop +PREFERRED= +if [ -f /etc/sysconfig/desktop ]; then + . /etc/sysconfig/desktop + if [ "$DESKTOP" = "GNOME" ]; then + PREFERRED="$GSESSION" + elif [ "$DESKTOP" = "MATE" ]; then + PREFERRED="$MSESSION" + elif [ "$DESKTOP" = "KDE" ]; then + PREFERRED="$STARTKDE" + elif [ "$DESKTOP" = "LXDE" ]; then + PREFERRED="$STARTLXDE" + fi +fi + +if [ -n "$PREFERRED" ]; then + exec "$PREFERRED" +fi + +# now if we can reach here, either no desktop file was present, +# or the desktop requested is not installed. + +if [ -n "$GSESSION" ]; then + # by default, we run GNOME. + exec "$GSESSION" +elif [ -n "$STARTKDE" ]; then + # if GNOME isn't installed, try KDE. + exec "$STARTKDE" +elif [ -n "$STARTLXDE" ]; then + # if neither GNOME nor KDE then LXDE + exec "$STARTLXDE" +fi + +# We should also support /etc/X11/xinit/Xclients.d scripts +XCLIENTS_D=/etc/X11/xinit/Xclients.d +if [ "$#" -eq 1 ] && [ -x "$XCLIENTS_D/Xclients.$1.sh" ]; then + exec -l $SHELL -c "$SSH_AGENT $XCLIENTS_D/Xclients.$1.sh" +fi + +# Failsafe. + +# these files are left sitting around by TheNextLevel. +rm -f $HOME/Xrootenv.0 + +# Argh! Nothing good is installed. Fall back to twm +{ + # gosh, neither fvwm95 nor fvwm2 is available; + # fall back to failsafe settings + [ -x /usr/bin/xsetroot ] && /usr/bin/xsetroot -solid '#222E45' + + if [ -x /usr/bin/xclock ] ; then + /usr/bin/xclock -geometry 100x100-5+5 & + fi + if [ -x /usr/bin/xterm ] ; then + /usr/bin/xterm -geometry 80x50-50+150 & + fi + if [ -x /usr/bin/firefox -a -f /usr/share/doc/HTML/index.html ]; then + /usr/bin/firefox /usr/share/doc/HTML/index.html & + fi + if [ -x /usr/bin/twm ] ; then + exec /usr/bin/twm + fi +} diff --git a/SOURCES/Xmodmap b/SOURCES/Xmodmap new file mode 100644 index 0000000..5625f3a --- /dev/null +++ b/SOURCES/Xmodmap @@ -0,0 +1,25 @@ +! /etc/X11/Xmodmap +! +! global Xmodmap file -- used by both xdm and xinit (startx) + +! keycode and keysym remapping should generally be used only if the X +! server config file has been configured to disable the XKEYBOARD +! extension + +! i386 and alpha +! keycode 22 = BackSpace +! keycode 107 = Delete + +! powerpc +! keycode 59 = BackSpace +! keycode 125 = Delete + +! sparc +! keycode 50 = BackSpace +! keycode 73 = Delete + +! Euro sign support +! keycode 26 = e E currency +! keycode 54 = c C cent +! keycode 113 = Mode_switch Mode_switch Multi_key + diff --git a/SOURCES/Xresources b/SOURCES/Xresources new file mode 100644 index 0000000..814e990 --- /dev/null +++ b/SOURCES/Xresources @@ -0,0 +1,13 @@ +! This is the global resources file that is loaded when +! all users log in, as well as for the login screen + +! Fix the Xft dpi to 96; this prevents tiny fonts +! or HUGE fonts depending on the screen size. +Xft.dpi: 96 + +! hintstyle: medium means that (for Postscript fonts) we +! position the stems for maximum constrast and consistency +! but do not force the stems to integral widths. hintnone, +! hintslight, and hintfull are the other possibilities. +Xft.hintstyle: hintmedium +Xft.hinting: true diff --git a/SOURCES/Xsession b/SOURCES/Xsession new file mode 100644 index 0000000..2cffea1 --- /dev/null +++ b/SOURCES/Xsession @@ -0,0 +1,93 @@ +#!/bin/bash +# Copyright (C) 1999 - 2004 Red Hat, Inc. All rights reserved. This +# copyrighted material is made available to anyone wishing to use, modify, +# copy, or redistribute it subject to the terms and conditions of the +# GNU General Public License version 2. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +# redirect errors to a file in user's home directory if we can +if [ -z "$GDMSESSION" ]; then + # GDM redirect output itself in a smarter fashion + errfile="$HOME/.xsession-errors" + if ( umask 077 && cp /dev/null "$errfile" 2> /dev/null ); then + chmod 600 "$errfile" + [ -x /sbin/restorecon ] && /sbin/restorecon $errfile + exec > "$errfile" 2>&1 + else + errfile=$(mktemp -q /tmp/xses-$USER.XXXXXX) + if [ $? -eq 0 ]; then + exec > "$errfile" 2>&1 + fi + fi +fi + +SWITCHDESKPATH=/usr/share/switchdesk + +# Mandatorily source xinitrc-common, which is common code shared between the +# Xsession and xinitrc scripts which has been factored out to avoid duplication +. /etc/X11/xinit/xinitrc-common + +# This Xsession.d implementation, is intended to obsolete and replace the +# various mechanisms present in the 'case' statement which follows, and to +# eventually be able to easily remove all hard coded window manager specific +# content from this script. See bug #142260 for additional explanation and +# details. All window manager rpm packages and desktop environment +# packages should be modified to provide the Xsession.d/Xsession.$wm scripts +# to start themselves up. In the future, the legacy switchdesk mechanisms +# and hard coded window managers and desktop environments will be removed from +# this script. +XCLIENTS_D=/etc/X11/xinit/Xclients.d +if [ "$#" -eq 1 ] && [ -x "$XCLIENTS_D/Xclients.$1.sh" ]; then + exec -l $SHELL -c "$CK_XINIT_SESSION $SSH_AGENT $XCLIENTS_D/Xclients.$1.sh" +else +# now, we see if xdm/gdm/kdm has asked for a specific environment +case $# in +1) + if [ -x "$SWITCHDESKPATH/Xclients.$1" ]; then + exec -l $SHELL -c "$SWITCHDESKPATH/Xclients.$1"; + fi; + + case "$1" in + failsafe) + exec -l $SHELL -c "xterm -geometry 80x24-0-0" + ;; + gnome|gnome-session) + # lack of SSH_AGENT is intentional, see #441123. though + # the whole thing should really happen in xinitrc.d anyway. + exec -l $SHELL -c gnome-session + exec /bin/sh -c "exec -l $SHELL -c \"gnome-session\"" + ;; + kde|kde1|kde2) + exec $CK_XINIT_SESSION $SSH_AGENT /bin/sh -c "exec -l $SHELL -c \"startkde\"" + ;; + twm) + # fall back to twm + exec $CK_XINIT_SESSION $SSH_AGENT /bin/sh -c "exec -l $SHELL -c \"twm\"" + ;; + *) + # GDM provies either a command line as the first argument or + # provides 'failsafe', 'default' or 'custom'. KDM will do the + # same at some point + if [ "$1" != "default" -a "$1" != "custom" ]; then + exec $CK_XINIT_SESSION $SSH_AGENT /bin/sh -c "exec -l $SHELL -c \"$1\"" + fi + ;; + esac +esac +fi + +# otherwise, take default action +if [ -x "$HOME/.xsession" ]; then + exec -l $SHELL -c "$CK_XINIT_SESSION $SSH_AGENT $HOME/.xsession" +elif [ -x "$HOME/.Xclients" ]; then + exec -l $SHELL -c "$CK_XINIT_SESSION $SSH_AGENT $HOME/.Xclients" +elif [ -x /etc/X11/xinit/Xclients ]; then + exec -l $SHELL -c "$CK_XINIT_SESSION $SSH_AGENT /etc/X11/xinit/Xclients" +else + # should never get here; failsafe fallback + exec -l $SHELL -c "xsm" +fi + diff --git a/SOURCES/localuser.sh b/SOURCES/localuser.sh new file mode 100755 index 0000000..0cf6fe6 --- /dev/null +++ b/SOURCES/localuser.sh @@ -0,0 +1,12 @@ +#!/bin/sh +# Copyright (C) 2006 Red Hat, Inc. All rights reserved. This +# copyrighted material is made available to anyone wishing to use, modify, +# copy, or redistribute it subject to the terms and conditions of the +# GNU General Public License version 2. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +# +[ -x /usr/bin/xhost ] && [ -x /usr/bin/id ] && + xhost +si:localuser:`id -un` >& /dev/null diff --git a/SOURCES/xinit-1.0.2-client-session.patch b/SOURCES/xinit-1.0.2-client-session.patch new file mode 100644 index 0000000..f463f68 --- /dev/null +++ b/SOURCES/xinit-1.0.2-client-session.patch @@ -0,0 +1,38 @@ +diff -up xinit-1.3.4/xinit.c.client-session xinit-1.3.4/xinit.c +--- xinit-1.3.4/xinit.c.client-session 2014-03-25 10:20:26.000000000 +0100 ++++ xinit-1.3.4/xinit.c 2014-09-11 17:03:30.928360694 +0200 +@@ -89,6 +89,8 @@ char xserverrcbuf[256]; + + #define TRUE 1 + #define FALSE 0 ++#define OK_EXIT 0 ++#define ERR_EXIT 1 + + static char *default_server = "X"; + static char *default_display = ":0"; /* choose most efficient */ +@@ -560,6 +562,7 @@ startClient(char *client_argv[]) + { + clientpid = fork(); + if (clientpid == 0) { ++ int fd; + set_environment(); + setWindowPath(); + +@@ -567,7 +570,16 @@ startClient(char *client_argv[]) + Error("cannot change uid"); + _exit(EXIT_FAILURE); + } +- setpgid(0, getpid()); ++ fd = open ("/dev/null", O_RDONLY); ++ ++ if (fd < 0) { ++ Error("cannot open /dev/null: %s\n", strerror(errno)); ++ _exit(ERR_EXIT); ++ } ++ close (STDIN_FILENO); ++ dup2 (fd, STDIN_FILENO); ++ close (fd); ++ setsid(); + Execute(client_argv); + Error("Unable to run program \"%s\"", client_argv[0]); + diff --git a/SOURCES/xinit-1.3.4-set-XORG_RUN_AS_USER_OK.patch b/SOURCES/xinit-1.3.4-set-XORG_RUN_AS_USER_OK.patch new file mode 100644 index 0000000..8e36e5d --- /dev/null +++ b/SOURCES/xinit-1.3.4-set-XORG_RUN_AS_USER_OK.patch @@ -0,0 +1,15 @@ +diff -up xinit-1.3.4/startx.cpp~ xinit-1.3.4/startx.cpp +--- xinit-1.3.4/startx.cpp~ 2015-03-18 12:13:11.000000000 +0100 ++++ xinit-1.3.4/startx.cpp 2015-03-18 12:49:49.445624223 +0100 +@@ -140,8 +140,10 @@ + have_vtarg="yes" + fi + done +-if [ "$have_vtarg" = "no" ]; then ++if [ "$have_vtarg" = "no" -a x"$vtarg" != x ]; then + serverargs="$serverargs $vtarg" ++ XCOMM Fedora specific mod to make X run as non root ++ export XORG_RUN_AS_USER_OK=1 + fi + + XCOMM if no display, use default diff --git a/SOURCES/xinit-compat b/SOURCES/xinit-compat new file mode 100644 index 0000000..863956c --- /dev/null +++ b/SOURCES/xinit-compat @@ -0,0 +1,7 @@ +#!/bin/sh +for session in ~/.xsession ~/.Xclients /etc/X11/xinit/Xclients ; +do +if [ -f ${session} ] ; then + exec ${session} +fi +done diff --git a/SOURCES/xinit-compat.desktop b/SOURCES/xinit-compat.desktop new file mode 100644 index 0000000..c11478d --- /dev/null +++ b/SOURCES/xinit-compat.desktop @@ -0,0 +1,4 @@ +[Desktop Entry] +Name=User script +Comment=This session runs ~/.xsession or ~/.Xclients if available +Exec=/usr/libexec/xinit-compat diff --git a/SOURCES/xinitrc b/SOURCES/xinitrc new file mode 100755 index 0000000..39e5b10 --- /dev/null +++ b/SOURCES/xinitrc @@ -0,0 +1,33 @@ +#!/bin/sh +# Copyright (C) 1999 - 2005 Red Hat, Inc. All rights reserved. This +# copyrighted material is made available to anyone wishing to use, modify, +# copy, or redistribute it subject to the terms and conditions of the +# GNU General Public License version 2. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +# +# Authors: +# Mike A. Harris + +# Mandatorily source xinitrc-common, which is common code shared between the +# Xsession and xinitrc scripts which has been factored out to avoid duplication +. /etc/X11/xinit/xinitrc-common + +# The user may have their own clients they want to run. If they don't, +# fall back to system defaults. +if [ -f $HOME/.Xclients ]; then + exec $CK_XINIT_SESSION $SSH_AGENT $HOME/.Xclients || \ + exec $CK_XINIT_SESSION $SSH_AGENT $HOME/.Xclients +elif [ -f /etc/X11/xinit/Xclients ]; then + exec $CK_XINIT_SESSION $SSH_AGENT /etc/X11/xinit/Xclients || \ + exec $CK_XINIT_SESSION $SSH_AGENT /etc/X11/xinit/Xclients +else + # Failsafe settings. Although we should never get here + # (we provide fallbacks in Xclients as well) it can't hurt. + [ -x /usr/bin/xsetroot ] && /usr/bin/xsetroot -solid '#222E45' + [ -x /usr/bin/xclock ] && /usr/bin/xclock -geometry 100x100-5+5 & + [ -x /usr/bin/xterm ] && xterm -geometry 80x50-50+150 & + [ -x /usr/bin/twm ] && /usr/bin/twm +fi diff --git a/SOURCES/xinitrc-common b/SOURCES/xinitrc-common new file mode 100644 index 0000000..6509c80 --- /dev/null +++ b/SOURCES/xinitrc-common @@ -0,0 +1,61 @@ +# Copyright (C) 1999 - 2004 Red Hat, Inc. All rights reserved. This +# copyrighted material is made available to anyone wishing to use, modify, +# copy, or redistribute it subject to the terms and conditions of the +# GNU General Public License version 2. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +# xinitrc-common +# +# This is common code shared by both Xsession and xinitrc scripts. Be sure +# to take this into account when fixing bugs or adding new functionality. + +# Set up i18n environment +if [ -r /etc/profile.d/lang.sh ]; then + . /etc/profile.d/lang.sh +fi + +[ -r $HOME/.profile ] && . $HOME/.profile + +userresources=$HOME/.Xresources +usermodmap=$HOME/.Xmodmap +userxkbmap=$HOME/.Xkbmap + +sysresources=/etc/X11/Xresources +sysmodmap=/etc/X11/Xmodmap +sysxkbmap=/etc/X11/Xkbmap + +# merge in defaults +[ -r "$sysresources" ] && xrdb -nocpp -merge "$sysresources" +[ -r "$userresources" ] && xrdb -merge "$userresources" + +# merge in keymaps +if [ -r "$sysxkbmap" ]; then + setxkbmap $(cat "$sysxkbmap") +fi + +if [ -r "$userxkbmap" ]; then + setxkbmap $(cat "$userxkbmap") +fi + +# xkb and xmodmap don't play nice together +if ! [ -r "$sysxkbmap" -o -r "$userxkbmap" ] ; then + [ -r "$sysmodmap" ] && xmodmap "$sysmodmap" + [ -r "$usermodmap" ] && xmodmap "$usermodmap" +fi + +# run all system xinitrc shell scripts. +for file in /etc/X11/xinit/xinitrc.d/* ; do + . $file +done + +# Prefix launch of session with ssh-agent if available and not already running. +if [ -z "$SSH_AGENT" ] && [ -z "$SSH_AUTH_SOCK" ] && [ -z "$SSH_AGENT_PID" ] && [ -x /usr/bin/ssh-agent ]; then + if [ "x$TMPDIR" != "x" ]; then + SSH_AGENT="/usr/bin/ssh-agent /bin/env TMPDIR=$TMPDIR" + else + SSH_AGENT="/usr/bin/ssh-agent" + fi +fi diff --git a/SPECS/xorg-x11-xinit.spec b/SPECS/xorg-x11-xinit.spec new file mode 100644 index 0000000..97de5e1 --- /dev/null +++ b/SPECS/xorg-x11-xinit.spec @@ -0,0 +1,229 @@ +%global pkgname xinit + +Summary: X.Org X11 X Window System xinit startup scripts +Name: xorg-x11-%{pkgname} +Version: 1.3.4 +Release: 18%{?dist} +License: MIT +URL: http://www.x.org + +Source0: http://xorg.freedesktop.org/archive/individual/app/%{pkgname}-%{version}.tar.bz2 +Source10: xinitrc-common +Source11: xinitrc +Source12: Xclients +Source13: Xmodmap +Source14: Xresources +# NOTE: Xsession is used by xdm/kdm/gdm and possibly others, so we keep it +# here instead of the xdm package. +Source16: Xsession +Source17: localuser.sh +Source18: xinit-compat.desktop +Source19: xinit-compat + +# Fedora specific patches +Patch1: xinit-1.0.2-client-session.patch +# A few fixes submitted upstream, rhbz#1177513, rhbz#1203780 +Patch3: 0001-startx-Pass-keeptty-when-telling-the-server-to-start.patch +Patch4: 0002-startx-Fix-startx-picking-an-already-used-display-nu.patch +Patch5: 0003-startx-Make-startx-auto-display-select-work-with-per.patch +# Fedora specific patch to match the similar patch in the xserver +Patch6: xinit-1.3.4-set-XORG_RUN_AS_USER_OK.patch + +BuildRequires: automake gcc +BuildRequires: pkgconfig(x11) +BuildRequires: dbus-devel + +# NOTE: startx needs xauth in order to run, but that is not picked up +# automatically by rpm. (Bug #173684) +Requires: xorg-x11-xauth +# next two are for localuser.sh +Requires: coreutils +Requires: xhost + +Provides: %{pkgname} = %{version} + +%description +X.Org X11 X Window System xinit startup scripts. + +%package session +Summary: Display manager support for ~/.xsession and ~/.Xclients + +%description session +Allows legacy ~/.xsession and ~/.Xclients files to be used from display +managers. + +%prep +%setup -q -n %{pkgname}-%{version} +%patch1 -p1 +%patch3 -p1 +%patch4 -p1 +%patch5 -p1 +%patch6 -p1 + +%build +%configure +make %{?_smp_mflags} + +%install +%make_install +install -p -m644 -D %{SOURCE18} $RPM_BUILD_ROOT%{_datadir}/xsessions/xinit-compat.desktop + +# Install Red Hat custom xinitrc, etc. +{ + mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/X11/xinit + + install -p -m 644 %{SOURCE10} $RPM_BUILD_ROOT%{_sysconfdir}/X11/xinit/xinitrc-common + + for script in %{SOURCE11} %{SOURCE12} %{SOURCE16} ; do + install -p -m 755 $script $RPM_BUILD_ROOT%{_sysconfdir}/X11/xinit/${script##*/} + done + + install -p -m 644 %{SOURCE13} $RPM_BUILD_ROOT%{_sysconfdir}/X11/Xmodmap + install -p -m 644 %{SOURCE14} $RPM_BUILD_ROOT%{_sysconfdir}/X11/Xresources + + mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/X11/xinit/xinitrc.d + install -p -m 755 %{SOURCE17} $RPM_BUILD_ROOT%{_sysconfdir}/X11/xinit/xinitrc.d/localuser.sh + + mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/X11/xinit/Xclients.d + + mkdir -p $RPM_BUILD_ROOT%{_libexecdir} + install -p -m 755 %{SOURCE19} $RPM_BUILD_ROOT%{_libexecdir} +} + +%files +%doc COPYING README ChangeLog +%{_bindir}/startx +%{_bindir}/xinit +%dir %{_sysconfdir}/X11/xinit +%{_sysconfdir}/X11/xinit/xinitrc +%{_sysconfdir}/X11/xinit/xinitrc-common +%config(noreplace) %{_sysconfdir}/X11/Xmodmap +%config(noreplace) %{_sysconfdir}/X11/Xresources +%dir %{_sysconfdir}/X11/xinit/Xclients.d +%{_sysconfdir}/X11/xinit/Xclients +%{_sysconfdir}/X11/xinit/Xsession +%dir %{_sysconfdir}/X11/xinit/xinitrc.d +%{_sysconfdir}/X11/xinit/xinitrc.d/* +%{_mandir}/man1/startx.1* +%{_mandir}/man1/xinit.1* + +%files session +%{_libexecdir}/xinit-compat +%{_datadir}/xsessions/xinit-compat.desktop + +%changelog +* Mon Feb 19 2018 Peter Hutterer 1.3.4-18 +- Add BR for automake and gcc + +* Fri Feb 09 2018 Fedora Release Engineering - 1.3.4-17 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Thu Aug 03 2017 Fedora Release Engineering - 1.3.4-16 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild + +* Thu Jul 27 2017 Fedora Release Engineering - 1.3.4-15 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Sat Feb 11 2017 Fedora Release Engineering - 1.3.4-14 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild + +* Wed Dec 14 2016 Hans de Goede - 1.3.4-13 +- Check for all 3 of SSH_AGENT, SSH_AGENT_PID and SSH_AUTH_SOCK to fix + a regression introduced by the previous fix (rhbz#1352339) + +* Mon Aug 29 2016 Hans de Goede - 1.3.4-12 +- Drop 0001-startx-Pass-nolisten-tcp-by-default.patch this is the + server default now +- Check for SSH_AUTH_SOCK not SSH_AGENT in xinitrc-common (rhbz#1352339) + +* Fri Feb 05 2016 Fedora Release Engineering - 1.3.4-11 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild + +* Wed Jan 20 2016 Peter Hutterer +- s/define/global/ + +* Fri Jun 19 2015 Fedora Release Engineering - 1.3.4-10 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild + +* Mon May 18 2015 Hans de Goede - 1.3.4-9 +- Fix typo in Xsession file (rhbz#1222299) + +* Thu Apr 30 2015 Hans de Goede - 1.3.4-8 +- Only set XORG_RUN_AS_USER_OK when no vt is specified (#1203780) + +* Fri Mar 20 2015 Hans de Goede - 1.3.4-7 +- Fix startx auto display select not working when a Xserver started by + gdm is running + +* Wed Mar 18 2015 Hans de Goede - 1.3.4-6 +- Set XORG_RUN_AS_USER_OK when starting X on the current tty, to run X + to run without root rights when possible + +* Sat Feb 21 2015 Till Maas - 1.3.4-5 +- Rebuilt for Fedora 23 Change + https://fedoraproject.org/wiki/Changes/Harden_all_packages_with_position-independent_code + +* Tue Feb 3 2015 Hans de Goede - 1.3.4-4 +- xinitrc-common: Do not override SSH_AGENT if already set (rhbz#1067676) + +* Thu Jan 22 2015 Simone Caronni - 1.3.4-3 +- Xorg without root rights breaks by streams redirection (#1177513). +- Format SPEC file; trim changelog. + +* Wed Oct 1 2014 Hans de Goede - 1.3.4-2 +- Add support for MATE to Xclients (#1147905) + +* Thu Sep 11 2014 Hans de Goede - 1.3.4-1 +- New upstream release 1.3.4 +- Resolves #806491 #990213 #1006029 +- Remove stale ck-xinit-session references from xinitrc-common (#910969) +- Make startx pass "-nolisten tcp" by default, use -listen as server + option to disable this (#1111684) +- Teach Xclients script about lxde (#488602) + +* Mon Aug 18 2014 Fedora Release Engineering - 1.3.2-13 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild + +* Sun Jun 08 2014 Fedora Release Engineering - 1.3.2-12 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild + +* Tue Mar 25 2014 Hans de Goede - 1.3.2-11 +- Fix startx ignoring a server or display passed on the cmdline (#960955) +- Drop Fedora custom patch to unset XDG_SESSION_COOKIE, this was only for CK + +* Thu Jan 23 2014 Dave Airlie 1.3.2-10 +- fix for ppc64le enable (#1056742) + +* Sun Aug 04 2013 Fedora Release Engineering - 1.3.2-9 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild + +* Fri Feb 15 2013 Fedora Release Engineering - 1.3.2-8 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild + +* Mon Oct 01 2012 Kevin Fenzi 1.3.2-7 +- Add patch to not switch tty's, so systemd-logind works right with startx. +- Partially Fixes bug #806491 + +* Sun Jul 22 2012 Fedora Release Engineering - 1.3.2-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + +* Thu Apr 26 2012 Adam Jackson 1.3.2-5 +- xinit 1.3.2 + +* Thu Mar 08 2012 Adam Jackson 1.3.1-5 +- Rebuild + +* Sat Jan 14 2012 Fedora Release Engineering - 1.3.1-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild + +* Wed Nov 16 2011 Adam Jackson 1.3.1-2 +- Drop ConsoleKit integration, being removed in F17 + +* Mon Jul 25 2011 Matěj Cepl - 1.3.1-1 +- New upstream version. Patches updated. + +* Sat May 28 2011 Matěj Cepl - 1.0.9-21 +- xinitrc-common sources ~/.profile (Bug 551508) + +* Tue Feb 08 2011 Fedora Release Engineering - 1.0.9-20 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild