summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeremy Olexa <darkside@gentoo.org>2010-09-20 15:22:38 +0000
committerJeremy Olexa <darkside@gentoo.org>2010-09-20 15:22:38 +0000
commit91defa534bc67e57ecd7bdef9a32925c169791b2 (patch)
treeb95aeede664a2eeaf818e5c8c249fe8a49e5c522 /x11-misc/slim
parentbeta version bump (diff)
downloadgentoo-2-91defa534bc67e57ecd7bdef9a32925c169791b2.tar.gz
gentoo-2-91defa534bc67e57ecd7bdef9a32925c169791b2.tar.bz2
gentoo-2-91defa534bc67e57ecd7bdef9a32925c169791b2.zip
Revbump to vastly improve the session handling. Work done by Ian Stakenvicius in bug 334111. Also remove old and cleanup.
(Portage version: 2.1.9.4/cvs/Linux x86_64)
Diffstat (limited to 'x11-misc/slim')
-rw-r--r--x11-misc/slim/ChangeLog12
-rw-r--r--x11-misc/slim/files/Xsession160
-rw-r--r--x11-misc/slim/files/slim-1.3.1-config.diff45
-rw-r--r--x11-misc/slim/files/slim-1.3.1-gcc4.4.patch17
-rw-r--r--x11-misc/slim/files/slim-1.3.2-r2-config.diff (renamed from x11-misc/slim/files/slim-1.3.2-config.diff)26
-rw-r--r--x11-misc/slim/slim-1.3.1_p20091114.ebuild97
-rw-r--r--x11-misc/slim/slim-1.3.2-r2.ebuild (renamed from x11-misc/slim/slim-1.3.2.ebuild)18
7 files changed, 206 insertions, 169 deletions
diff --git a/x11-misc/slim/ChangeLog b/x11-misc/slim/ChangeLog
index c84a04312e3b..3f72c7ba66d2 100644
--- a/x11-misc/slim/ChangeLog
+++ b/x11-misc/slim/ChangeLog
@@ -1,6 +1,16 @@
# ChangeLog for x11-misc/slim
# Copyright 1999-2010 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/x11-misc/slim/ChangeLog,v 1.57 2010/09/12 15:29:33 armin76 Exp $
+# $Header: /var/cvsroot/gentoo-x86/x11-misc/slim/ChangeLog,v 1.58 2010/09/20 15:22:38 darkside Exp $
+
+*slim-1.3.2-r2 (20 Sep 2010)
+
+ 20 Sep 2010; Jeremy Olexa <darkside@gentoo.org>
+ -slim-1.3.1_p20091114.ebuild, -files/slim-1.3.1-config.diff,
+ -files/slim-1.3.1-gcc4.4.patch, -slim-1.3.2.ebuild, +slim-1.3.2-r2.ebuild,
+ -files/slim-1.3.2-config.diff, +files/slim-1.3.2-r2-config.diff,
+ +files/Xsession:
+ Revbump to vastly improve the session handling. Work done by Ian
+ Stakenvicius in bug 334111. Also remove old and cleanup.
12 Sep 2010; Raúl Porcel <armin76@gentoo.org> slim-1.3.2-r1.ebuild:
sparc stable wrt #333661
diff --git a/x11-misc/slim/files/Xsession b/x11-misc/slim/files/Xsession
new file mode 100644
index 000000000000..d24ee1c03011
--- /dev/null
+++ b/x11-misc/slim/files/Xsession
@@ -0,0 +1,160 @@
+#!/bin/sh
+#
+# $Header: /var/cvsroot/gentoo-x86/x11-misc/slim/files/Xsession,v 1.1 2010/09/20 15:22:38 darkside Exp $
+#
+# SLiM Xsession script
+#
+# This script is a wrapper that handles selection of a session from
+# /etc/X11/Sessions/ as necessary. It doesn't handle actual session setup.
+#
+# The script takes a session name as the first argument. If no argument is
+# given, or if the argument does not match an available session script:
+# - Run ~/.xsession and if that's not available,
+# - Run the appropriate Xclients startup (see the code below)
+#
+# (Note that other arguments could also follow, but only the command one is
+# right now relevant and supported)
+#
+# The output is redirected to /var/log/slim.log.
+#
+# By default this is run in a login shell, see /etc/slim.conf for details.
+
+command="$@"
+
+# this will go into the slim.log along with all other echo's
+# good for debugging where things went wrong
+echo "$0: Beginning session setup..."
+
+# Read /etc/xprofile and .xprofile for X specific setup
+test -f /etc/xprofile && . /etc/xprofile
+test -f "$HOME/.xprofile" && . "$HOME/.xprofile"
+
+# userresources and sysresources and all these other vars are
+# unneeded here as by default the session script we're handing
+# off to will take care of it.
+
+# wrap possible arguments to determine whether to treat special or not
+if [ "x$command" = "xcustom" ] || [ "x$command" = "xCustom" ] || \
+ [ "x$command" = "xdefault" ] || [ "x$command" = "xDefault" ]; then
+ command="Xsession"
+fi
+if [ "x$command" = "x" ]; then
+ # no default specified, check if Xsession will complete
+ # and if not then assign XSESSION to command
+ if [ -x "$HOME/.xsession" ] || [ -x "$HOME/.Xclients" ] || \
+ [ -x /etc/X11/xinit/Xclients ] || [ -x /etc/X11/Xclients ]; then
+ command="Xsession"
+ else
+ command=$XSESSION
+ fi
+fi
+
+# ripped directly from /etc/X11/chooser.sh
+
+sessionscript=""
+for x in /etc/X11/Sessions/* ; do
+ if [ "`echo ${x##*/} | awk '{ print toupper($1) }'`" \
+ = "`echo ${command} | awk '{ print toupper($1) }'`" ]; then
+ # Found the matching session
+ sessionscript="${x}"
+ break
+ fi
+done
+
+if [ -n "$sessionscript" ]; then
+
+ if [ -f ${sessionscript} ]; then
+ if [ -x ${sessionscript} ]; then
+ exec "${sessionscript}"
+ else
+ exec /bin/sh "${sessionscript}"
+ fi
+ fi
+
+ echo "Unable to execute session script ${sessionscript}"
+ exit 1
+
+fi
+
+# Launch a default session
+# This was mostly ripped from GDM's Xsession script
+
+
+echo "Could not find appropriate session script, exec'ing xterm"
+
+userresources="$HOME/.Xresources"
+usermodmap="$HOME/.Xmodmap"
+userxkbmap="$HOME/.Xkbmap"
+
+sysresources=/etc/X11/Xresources
+sysmodmap=/etc/X11/Xmodmap
+sysxkbmap=/etc/X11/Xkbmap
+
+rh6sysresources=/etc/X11/xinit/Xresources
+rh6sysmodmap=/etc/X11/xinit/Xmodmap
+
+# merge in defaults
+if [ -f "$rh6sysresources" ]; then
+ xrdb -merge "$rh6sysresources"
+fi
+
+if [ -f "$sysresources" ]; then
+ xrdb -merge "$sysresources"
+fi
+
+if [ -f "$userresources" ]; then
+ xrdb -merge "$userresources"
+fi
+
+# merge in keymaps
+if [ -f "$sysxkbmap" ]; then
+ setxkbmap `cat "$sysxkbmap"`
+ XKB_IN_USE=yes
+fi
+
+if [ -f "$userxkbmap" ]; then
+ setxkbmap `cat "$userxkbmap"`
+ XKB_IN_USE=yes
+fi
+
+#
+# Eeek, this seems like too much magic here
+#
+if [ -z "$XKB_IN_USE" -a ! -L /etc/X11/X ]; then
+ if grep '^exec.*/Xsun' /etc/X11/X > /dev/null 2>&1 && [ -f /etc/X11/XF86Config ]; then
+ xkbsymbols=`sed -n -e 's/^[ ]*XkbSymbols[ ]*"\(.*\)".*$/\1/p' /etc/X11/XF86Config`
+ if [ -n "$xkbsymbols" ]; then
+ setxkbmap -symbols "$xkbsymbols"
+ XKB_IN_USE=yes
+ fi
+ fi
+fi
+
+# xkb and xmodmap don't play nice together
+if [ -z "$XKB_IN_USE" ]; then
+ if [ -f "$rh6sysmodmap" ]; then
+ xmodmap "$rh6sysmodmap"
+ fi
+
+ if [ -f "$sysmodmap" ]; then
+ xmodmap "$sysmodmap"
+ fi
+
+ if [ -f "$usermodmap" ]; then
+ xmodmap "$usermodmap"
+ fi
+fi
+
+unset XKB_IN_USE
+
+# run all system xinitrc shell scripts.
+if [ -d /etc/X11/xinit/xinitrc.d ]; then
+ for i in /etc/X11/xinit/xinitrc.d/* ; do
+ if [ -x "$i" ]; then
+ . "$i"
+ fi
+ done
+fi
+
+exec xterm -geometry 80x24+0+0
+
diff --git a/x11-misc/slim/files/slim-1.3.1-config.diff b/x11-misc/slim/files/slim-1.3.1-config.diff
deleted file mode 100644
index bb9a98bab379..000000000000
--- a/x11-misc/slim/files/slim-1.3.1-config.diff
+++ /dev/null
@@ -1,45 +0,0 @@
---- slim.conf.orig 2008-12-26 11:45:17.308256705 -0600
-+++ slim.conf 2008-12-26 11:46:55.314256630 -0600
-@@ -2,7 +2,7 @@
- # Note: -xauth $authfile is automatically appended
- default_path ./:/bin:/usr/bin:/usr/local/bin
- default_xserver /usr/bin/X
--#xserver_arguments -dpi 75
-+xserver_arguments -nolisten tcp -br -deferglyphs 16
-
- # Commands for halt, login, etc.
- halt_cmd /sbin/shutdown -h now
-@@ -18,7 +18,7 @@
-
-
- # Activate numlock when slim starts. Valid values: on|off
--# numlock on
-+numlock on
-
- # Hide the mouse cursor (note: does not work with some WMs).
- # Valid values: true|false
-@@ -33,7 +33,8 @@
- # to adjust the command according to your preferred shell,
- # i.e. for freebsd use:
- # login_cmd exec /bin/sh - ~/.xinitrc %session
--login_cmd exec /bin/bash -login ~/.xinitrc %session
-+# login_cmd exec /bin/bash -login ~/.xinitrc %session
-+login_cmd exec /bin/bash -login /etc/X11/xinit/xinitrc
-
- # Commands executed when starting and exiting a session.
- # They can be used for registering a X11 session with
-@@ -41,11 +42,13 @@
- #
- # sessionstart_cmd some command
- # sessionstop_cmd some command
-+sessionstart_cmd /usr/bin/sessreg -a -l :0.0 %user
-+sessionstop_cmd /usr/bin/sessreg -d -l :0.0 %user
-
- # Start in daemon mode. Valid values: yes | no
- # Note that this can be overriden by the command line
- # options "-d" and "-nodaemon"
--# daemon yes
-+daemon yes
-
- # Available sessions (first one is the default).
- # The current chosen session name is replaced in the login_cmd
diff --git a/x11-misc/slim/files/slim-1.3.1-gcc4.4.patch b/x11-misc/slim/files/slim-1.3.1-gcc4.4.patch
deleted file mode 100644
index 5c51d1f79662..000000000000
--- a/x11-misc/slim/files/slim-1.3.1-gcc4.4.patch
+++ /dev/null
@@ -1,17 +0,0 @@
-Patch to allow compilation with gcc-4.4
-
-Notified by Daniel J. - from Debian bug tracker
-
-http://bugs.gentoo.org/252745
-
---- switchuser.h 2008-11-11 19:40:18.000000000 +0000
-+++ switchuser.h 2008-11-11 19:40:28.000000000 +0000
-@@ -18,6 +18,7 @@
- #include <pwd.h>
- #include <grp.h>
- #include <paths.h>
-+#include <cstdio>
- #include <iostream>
- #include "const.h"
- #include "cfg.h"
-
diff --git a/x11-misc/slim/files/slim-1.3.2-config.diff b/x11-misc/slim/files/slim-1.3.2-r2-config.diff
index e05711b41c14..a8ae185a845e 100644
--- a/x11-misc/slim/files/slim-1.3.2-config.diff
+++ b/x11-misc/slim/files/slim-1.3.2-r2-config.diff
@@ -1,5 +1,5 @@
---- slim.conf.orig 2010-07-08 00:04:10.000000000 -0500
-+++ slim.conf 2010-07-30 21:46:14.713367279 -0500
+--- slim.conf.orig 2010-08-25 11:52:23.000000000 -0400
++++ slim.conf 2010-08-25 11:58:58.000000000 -0400
@@ -2,7 +2,7 @@
# Note: -xauth $authfile is automatically appended
default_path /bin:/usr/bin:/usr/local/bin
@@ -24,11 +24,11 @@
# login_cmd exec /bin/sh - ~/.xinitrc %session
-login_cmd exec /bin/bash -login ~/.xinitrc %session
+# login_cmd exec /bin/bash -login ~/.xinitrc %session
-+login_cmd exec /bin/bash -login /etc/X11/xinit/xinitrc
++login_cmd exec /bin/bash -login /usr/share/slim/Xsession %session
# Commands executed when starting and exiting a session.
# They can be used for registering a X11 session with
-@@ -41,11 +42,13 @@
+@@ -41,20 +42,26 @@
#
# sessionstart_cmd some command
# sessionstop_cmd some command
@@ -43,9 +43,12 @@
# Available sessions (first one is the default).
# The current chosen session name is replaced in the login_cmd
-@@ -53,8 +56,10 @@
+ # above, so your login command can handle different sessions.
# see the xinitrc.sample file shipped with slim sources
- sessions xfce4,icewm,wmaker,blackbox
+-sessions xfce4,icewm,wmaker,blackbox
++#sessions xfce4,icewm,wmaker,blackbox
++# Alternatively, read available sessions from a directory:
++sessiondir /etc/X11/Sessions
-# Executed when pressing F11 (requires imagemagick)
+# Executed when pressing F11 (requires media-gfx/imagemagick for import)
@@ -55,3 +58,14 @@
# welcome message. Available variables: %host, %domain
welcome_msg Welcome to %host
+@@ -83,8 +88,8 @@
+ # randomly choose from
+ current_theme default
+
+-# Lock file
+-lockfile /var/run/slim.lock
++# Lock file, /etc/init.d/xdm expects slim.pid
++lockfile /var/run/slim.pid
+
+ # Log file
+ logfile /var/log/slim.log
diff --git a/x11-misc/slim/slim-1.3.1_p20091114.ebuild b/x11-misc/slim/slim-1.3.1_p20091114.ebuild
deleted file mode 100644
index 39306feb69a2..000000000000
--- a/x11-misc/slim/slim-1.3.1_p20091114.ebuild
+++ /dev/null
@@ -1,97 +0,0 @@
-# Copyright 1999-2010 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/x11-misc/slim/slim-1.3.1_p20091114.ebuild,v 1.11 2010/05/21 22:24:38 darkside Exp $
-
-EAPI=2
-
-inherit toolchain-funcs pam eutils
-
-DESCRIPTION="Simple Login Manager"
-HOMEPAGE="http://slim.berlios.de"
-SRC_URI="mirror://gentoo/${P}.tar.bz2"
-
-LICENSE="GPL-2"
-SLOT="0"
-KEYWORDS="amd64 ppc ppc64 sparc x86"
-IUSE="branding screenshot pam"
-
-RDEPEND="x11-libs/libXmu
- x11-libs/libX11
- x11-libs/libXpm
- x11-libs/libXft
- media-libs/libpng
- media-libs/jpeg
- x11-apps/sessreg
- pam? ( virtual/pam )
- screenshot? ( media-gfx/imagemagick )"
-DEPEND="${RDEPEND}
- dev-util/pkgconfig
- x11-proto/xproto"
-PDEPEND="branding? ( >=x11-themes/slim-themes-1.2.3a-r3 )"
-
-src_prepare() {
- # respect C[XX]FLAGS, fix crosscompile,
- # fix linking order for --as-needed"
- sed -i -e "s:^CXX=.*:CXX=$(tc-getCXX) ${CXXFLAGS}:" \
- -e "s:^CC=.*:CC=$(tc-getCC) ${CFLAGS}:" \
- -e "s:^MANDIR=.*:MANDIR=/usr/share/man:" \
- -e "s:^\t\(.*\)\ \$(LDFLAGS)\ \(.*\):\t\1\ \2\ \$(LDFLAGS):g" \
- -e "s:-I/usr/include/libpng12:$(pkg-config --cflags-only-I libpng):" \
- -e "s:-lpng12:$(pkg-config --libs-only-l libpng):" \
- -r -e "s:^LDFLAGS=(.*):LDFLAGS=\1 ${LDFLAGS}:" \
- Makefile || die "sed failed in Makefile"
- epatch "${FILESDIR}/${PN}-1.3.1-config.diff"
-
- if use branding; then
- sed -i -e 's/ default/ slim-gentoo-simple/' slim.conf || die
- fi
-
- # Gentoo bug 297655
- epatch "${FILESDIR}/14509-fix-keyboard-in-tty-from-which-${PN}-is-lauched.patch"
- # Upstream bug #15287
- epatch "${FILESDIR}/15287-fix-pam-authentication-with-pam_unix2.patch"
- # Gentoo Bug 261713
- epatch "${FILESDIR}/261713-restart-xserver-if-killed.patch"
-}
-
-src_compile() {
- if use pam ; then
- emake USE_PAM=1 || die "emake failed."
- else
- emake || die "emake failed."
- fi
-}
-
-src_install() {
- if use pam ; then
- emake USE_PAM=1 DESTDIR="${D}" install || die "emake install failed."
- pamd_mimic_system slim auth account password session
- else
- emake DESTDIR="${D}" install || die "emake install failed."
- fi
-
- insinto /etc/logrotate.d
- newins "${FILESDIR}/slim.logrotate" slim || die "newins failed"
-
- dodoc xinitrc.sample ChangeLog README TODO THEMES
-}
-
-pkg_postinst() {
- elog
- elog "The configuration file is located at /etc/slim.conf."
- elog
- elog "If you wish ${PN} to start automatically, set DISPLAYMANAGER=\"${PN}\" "
- elog "in /etc/conf.d/xdm and run \"rc-update add xdm default\"."
- elog "By default, ${PN} will use default XSESSION value set in /etc/rc.conf."
- elog
- elog "If you want to use .xinitrc in the user's home directory for session"
- elog "management instead, see README and xinitrc.sample in"
- elog "/usr/share/doc/${PF} and change your login_cmd in /etc/slim.conf"
- elog "accordingly."
- elog
- if ! use pam; then
- elog "You have merged ${PN} without USE=pam, this will cause ${PN} to fall back to"
- elog "the console when restarting your window manager. If this is not"
- elog "desired, then please remerge ${PN} with USE=pam"
- fi
-}
diff --git a/x11-misc/slim/slim-1.3.2.ebuild b/x11-misc/slim/slim-1.3.2-r2.ebuild
index 6f3196666045..bf22b7e8e6d5 100644
--- a/x11-misc/slim/slim-1.3.2.ebuild
+++ b/x11-misc/slim/slim-1.3.2-r2.ebuild
@@ -1,6 +1,6 @@
# Copyright 1999-2010 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/x11-misc/slim/slim-1.3.2.ebuild,v 1.1 2010/07/31 02:58:39 darkside Exp $
+# $Header: /var/cvsroot/gentoo-x86/x11-misc/slim/slim-1.3.2-r2.ebuild,v 1.1 2010/09/20 15:22:38 darkside Exp $
EAPI=2
@@ -39,7 +39,8 @@ src_prepare() {
-e "s:-lpng12:$(pkg-config --libs-only-l libpng):" \
-r -e "s:^LDFLAGS=(.*):LDFLAGS=\1 ${LDFLAGS}:" \
Makefile || die "sed failed in Makefile"
- epatch "${FILESDIR}/${PN}-1.3.2-config.diff"
+ # Our Gentoo-specific config changes
+ epatch "${FILESDIR}/${PN}-1.3.2-r2-config.diff"
if use branding; then
sed -i -e 's/ default/ slim-gentoo-simple/' slim.conf || die
@@ -51,6 +52,8 @@ src_prepare() {
epatch "${FILESDIR}/15287-fix-pam-authentication-with-pam_unix2.patch"
# Gentoo Bug 261713
epatch "${FILESDIR}/261713-restart-xserver-if-killed.patch"
+ # Gentoo bug 261359, upstream 15326
+ epatch "${FILESDIR}/261359-fix-SIGTERM-freeze.patch"
}
src_compile() {
@@ -69,6 +72,9 @@ src_install() {
emake DESTDIR="${D}" install || die "emake install failed."
fi
+ insinto /usr/share/slim
+ newins "${FILESDIR}/Xsession" Xsession || die "newins failed"
+
insinto /etc/logrotate.d
newins "${FILESDIR}/slim.logrotate" slim || die "newins failed"
@@ -81,7 +87,13 @@ pkg_postinst() {
elog
elog "If you wish ${PN} to start automatically, set DISPLAYMANAGER=\"${PN}\" "
elog "in /etc/conf.d/xdm and run \"rc-update add xdm default\"."
- elog "By default, ${PN} will use default XSESSION value set in /etc/rc.conf."
+ elog
+ elog "By default, ${PN} now does proper X session selection, including ~/.xsession"
+ elog "support, as well as selection between sessions available in"
+ elog "/etc/X11/Sessions/ at login by pressing [F1]."
+ elog
+ elog "The XSESSION environment variable is still supported as a default"
+ elog "if no session has been specified by the user."
elog
elog "If you want to use .xinitrc in the user's home directory for session"
elog "management instead, see README and xinitrc.sample in"