[25430] in Source-Commits
/svn/athena r24976 - trunk/debathena/debathena/xsession/debian
daemon@ATHENA.MIT.EDU (Jonathan D Reed)
Wed Feb 23 20:19:20 2011
Date: Wed, 23 Feb 2011 20:19:13 -0500
From: Jonathan D Reed <jdreed@MIT.EDU>
Message-Id: <201102240119.p1O1JD2p013879@drugstore.mit.edu>
To: source-commits@mit.edu
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Author: jdreed
Date: 2011-02-23 20:19:13 -0500 (Wed, 23 Feb 2011)
New Revision: 24976
Added:
trunk/debathena/debathena/xsession/debian/debathena-gdm-sucks.sh
trunk/debathena/debathena/xsession/debian/debathena-homedir-mode.sh
trunk/debathena/debathena/xsession/debian/debathena-message.sh
trunk/debathena/debathena/xsession/debian/debathena-nocalls.sh
trunk/debathena/debathena/xsession/debian/debathena-quota.sh
trunk/debathena/debathena/xsession/debian/debathena-tcsh-sucks.sh
trunk/debathena/debathena/xsession/debian/debathena-tracker.sh
Modified:
trunk/debathena/debathena/xsession/debian/00debathena-gdm-sucks
trunk/debathena/debathena/xsession/debian/00debathena-message
trunk/debathena/debathena/xsession/debian/00debathena-tcsh-sucks
trunk/debathena/debathena/xsession/debian/01debathena-quota
trunk/debathena/debathena/xsession/debian/05debathena-nocalls
trunk/debathena/debathena/xsession/debian/96debathena-tracker
trunk/debathena/debathena/xsession/debian/97debathena-homedir-mode
trunk/debathena/debathena/xsession/debian/98debathena-xsession
trunk/debathena/debathena/xsession/debian/changelog
trunk/debathena/debathena/xsession/debian/debathena-xsession.install
Log:
In xsession:
* Don't use dpkg-query because it slows logins down; instead ship actual
scripts in /usr/share and source them (Trac #778)
Modified: trunk/debathena/debathena/xsession/debian/00debathena-gdm-sucks
===================================================================
--- trunk/debathena/debathena/xsession/debian/00debathena-gdm-sucks 2011-02-23 20:55:52 UTC (rev 24975)
+++ trunk/debathena/debathena/xsession/debian/00debathena-gdm-sucks 2011-02-24 01:19:13 UTC (rev 24976)
@@ -1,14 +1,2 @@
-if [ "$(dpkg-query -W -f '${Status}' debathena-xsession 2>/dev/null)" = "install ok installed" ] && [ "$GDMSESSION" = "001debathena-ttymode" ]; then
- if [ "$DEBATHENA_HOME_TYPE" = "afs" ]; then
- QUOTAPCT=$(fs lq $HOME | tail -1 | awk '{print $4}' | sed 's/[^0-9]*//g')
- if [ $QUOTAPCT -ge 100 ]; then
- # Otherwise it blocks the session until it times out
- pkill pulseaudio
- fi
- fi
- if zenity --question --text="This will launch an xterm which will emulate a tty-mode login session. You can end your session by typing 'logout'.\nContinue?"; then
- xsetroot -solid grey
- xterm -ls -geometry 80x24+280+220 -display :0.0
- fi
- exit 0
-fi
\ No newline at end of file
+[ -f /usr/share/debathena-xsession/debathena-gdm-sucks.sh ] && \
+ . /usr/share/debathena-xsession/debathena-gdm-sucks.sh
Modified: trunk/debathena/debathena/xsession/debian/00debathena-message
===================================================================
--- trunk/debathena/debathena/xsession/debian/00debathena-message 2011-02-23 20:55:52 UTC (rev 24975)
+++ trunk/debathena/debathena/xsession/debian/00debathena-message 2011-02-24 01:19:13 UTC (rev 24976)
@@ -1,18 +1,2 @@
-# This file is sourced by Xsession(5), not executed.
-
-# Work around the absence of the message function (to pretty-print user
-# messages) from some versions of gdm's Xsession script.
-if [ "$(dpkg-query -W -f '${Status}' debathena-xsession 2>/dev/null)" = "install ok installed" ] && \
- ! hash message 2>/dev/null ; then
- message () {
- text="$@"
- echo "$text" | fold -s
- if [ -n "$DISPLAY" ]; then
- if hash zenity 2>/dev/null ; then
- zenity --info --text "$text"
- elif hash xmessage 2>/dev/null ; then
- echo "$text" | fold -s | xmessage -center -file -
- fi
- fi
- }
-fi
+[ -f /usr/share/debathena-xsession/debathena-message.sh ] && \
+ . /usr/share/debathena-xsession/debathena-message.sh
Modified: trunk/debathena/debathena/xsession/debian/00debathena-tcsh-sucks
===================================================================
--- trunk/debathena/debathena/xsession/debian/00debathena-tcsh-sucks 2011-02-23 20:55:52 UTC (rev 24975)
+++ trunk/debathena/debathena/xsession/debian/00debathena-tcsh-sucks 2011-02-24 01:19:13 UTC (rev 24976)
@@ -1,10 +1,2 @@
-# This file is sourced by Xsession(5), not executed.
-
-# Horrible work-around for the fact that GDM can't read the
-# .xsession-errors file it tries to write.
-if [ "$(dpkg-query -W -f '${Status}' debathena-xsession 2>/dev/null)" = "install ok installed" ] && \
- echo "$SHELL" | grep -q 'tcsh' && \
- [ 'afs' = "$DEBATHENA_HOME_TYPE" ]; then
- xterm -rightbar -sb -fa "" -fs 12 -T ".xsession-errors" -e tail -n +1 -f "$HOME/.xsession-errors" &
- export XCONSOLE=$!
-fi
+[ -f /usr/share/debathena-xsession/debathena-tcsh-sucks.sh ] && \
+ . /usr/share/debathena-xsession/debathena-tcsh-sucks.sh
Modified: trunk/debathena/debathena/xsession/debian/01debathena-quota
===================================================================
--- trunk/debathena/debathena/xsession/debian/01debathena-quota 2011-02-23 20:55:52 UTC (rev 24975)
+++ trunk/debathena/debathena/xsession/debian/01debathena-quota 2011-02-24 01:19:13 UTC (rev 24976)
@@ -1,6 +1,2 @@
-if [ "$(dpkg-query -W -f '${Status}' debathena-xsession 2>/dev/null)" = "install ok installed" ] && [ "$DEBATHENA_HOME_TYPE" = "afs" ]; then
- QUOTAPCT=$(fs lq $HOME | tail -1 | awk '{print $4}' | sed 's/[^0-9]*//g')
- if [ $QUOTAPCT -ge 100 ]; then
- message "You have exceeded your AFS quota. This login session will likely fail.\n\nTry using the 'Athena TTY Session' login session to get a tty-mode login session, and then remove or compress some files to get below your quota.\n\nYou may also request a quota increase from User Accounts by calling x3-1325."
- fi
-fi
+[ -f /usr/share/debathena-xsession/debathena-quota.sh ] && \
+ . /usr/share/debathena-xsession/debathena-quota.sh
Modified: trunk/debathena/debathena/xsession/debian/05debathena-nocalls
===================================================================
--- trunk/debathena/debathena/xsession/debian/05debathena-nocalls 2011-02-23 20:55:52 UTC (rev 24975)
+++ trunk/debathena/debathena/xsession/debian/05debathena-nocalls 2011-02-24 01:19:13 UTC (rev 24976)
@@ -1,19 +1,2 @@
-if [ "$(dpkg-query -W -f '${Status}' debathena-xsession 2>/dev/null)" != "install ok installed" ]; then
- return 0
-fi
-
-if [ "$GDMSESSION" = "000debathena-nocalls" ]; then
- export NOCALLS=1
- message "You have chosen to log in without your customizations." \
- "Your dotfiles will be ignored in favor of the system" \
- "default settings. You can use this session to fix any" \
- "problems with your dotfiles."
-fi
-
-# You don't actually want nocalls as your default session
-[ -e "$HOME/.dmrc" ] && \
- grep -q 000debathena-nocalls "$HOME/.dmrc" && \
- rm "$HOME/.dmrc"
-[ -e "/var/cache/gdm/$USER/dmrc" ] && \
- grep -q 000debathena-nocalls "/var/cache/gdm/$USER/dmrc" && \
- rm "/var/cache/gdm/$USER/dmrc"
+[ -f /usr/share/debathena-xsession/debathena-nocalls.sh ] && \
+ . /usr/share/debathena-xsession/debathena-nocalls.sh
Modified: trunk/debathena/debathena/xsession/debian/96debathena-tracker
===================================================================
--- trunk/debathena/debathena/xsession/debian/96debathena-tracker 2011-02-23 20:55:52 UTC (rev 24975)
+++ trunk/debathena/debathena/xsession/debian/96debathena-tracker 2011-02-24 01:19:13 UTC (rev 24976)
@@ -1,13 +1,2 @@
-# This file is sourced by Xsession(5), not executed.
-
-if [ "$(dpkg-query -W -f '${Status}' debathena-xsession 2>/dev/null)" = "install ok installed" ] && \
- [ afs = "$DEBATHENA_HOME_TYPE" ] && \
- [ -f "$HOME/.config/tracker/tracker.cfg" ] && \
- [ "$(awk -F= '/^EnableIndexing/ { print $2}' $HOME/.config/tracker/tracker.cfg)" != "false" ]; then
-
- message "You currently have the Tracker applet configured to index" \
- "your home directory, probably because you logged into an earlier" \
- "version of Debathena. This is undesirable, because it can interact" \
- "poorly with the AFS cache and render AFS unusable. To fix this," \
- "run the following command: athrun consult fix-tracker"
-fi
+[ -f /usr/share/debathena-xsession/debathena-tracker.sh ] && \
+ . /usr/share/debathena-xsession/debathena-tracker.sh
Modified: trunk/debathena/debathena/xsession/debian/97debathena-homedir-mode
===================================================================
--- trunk/debathena/debathena/xsession/debian/97debathena-homedir-mode 2011-02-23 20:55:52 UTC (rev 24975)
+++ trunk/debathena/debathena/xsession/debian/97debathena-homedir-mode 2011-02-24 01:19:13 UTC (rev 24976)
@@ -1,12 +1,2 @@
-# This file is sourced by Xsession(5), not executed.
-
-if [ "$(dpkg-query -W -f '${Status}' debathena-xsession 2>/dev/null)" = "install ok installed" ] && \
- [ afs = "$DEBATHENA_HOME_TYPE" ] && \
- stat -L --format='%A' "$HOME" | egrep -q '^(.....w|........w)'; then
- hm=$(stat -L --format='%a' "$HOME")
- message "Your home directory is mode $hm, probably because it was created" \
- "a long time ago. You likely received a spurious error dialog about" \
- ".dmrc as a result of the mode bits on your home directory. To fix this" \
- "condition, you can run: chmod 755 \$HOME"
- unset hm
-fi
+[ -f /usr/share/debathena-xsession/debathena-homedir-mode.sh ] && \
+ . /usr/share/debathena-xsession/debathena-homedir-mode.sh
Modified: trunk/debathena/debathena/xsession/debian/98debathena-xsession
===================================================================
--- trunk/debathena/debathena/xsession/debian/98debathena-xsession 2011-02-23 20:55:52 UTC (rev 24975)
+++ trunk/debathena/debathena/xsession/debian/98debathena-xsession 2011-02-24 01:19:13 UTC (rev 24976)
@@ -5,7 +5,9 @@
# - This is an AFS homedir
# - The user has a standard Athena shell
# - The user does not have an xsession script
-if [ "$(dpkg-query -W -f '${Status}' debathena-xsession 2>/dev/null)" = "install ok installed" ] && \
+
+if [ -x /usr/lib/init/xsession.bash ] && \
+ [ -x /usr/lib/init/xsession.tcsh ] && \
[ afs = "$DEBATHENA_HOME_TYPE" -a ! -e "$USERXSESSION" \
-a ! -e "$ALTUSERXSESSION" ]; then
case $SHELL in
Modified: trunk/debathena/debathena/xsession/debian/changelog
===================================================================
--- trunk/debathena/debathena/xsession/debian/changelog 2011-02-23 20:55:52 UTC (rev 24975)
+++ trunk/debathena/debathena/xsession/debian/changelog 2011-02-24 01:19:13 UTC (rev 24976)
@@ -1,3 +1,10 @@
+debathena-xsession (1.17) unstable; urgency=low
+
+ * Don't use dpkg-query because it slows logins down; instead ship actual
+ scripts in /usr/share and source them (Trac #778)
+
+ -- Jonathan Reed <jdreed@mit.edu> Wed, 23 Feb 2011 20:17:06 -0500
+
debathena-xsession (1.16) unstable; urgency=low
* Add an Athena-specific tty-mode login session that will get you an xterm
Added: trunk/debathena/debathena/xsession/debian/debathena-gdm-sucks.sh
===================================================================
--- trunk/debathena/debathena/xsession/debian/debathena-gdm-sucks.sh (rev 0)
+++ trunk/debathena/debathena/xsession/debian/debathena-gdm-sucks.sh 2011-02-24 01:19:13 UTC (rev 24976)
@@ -0,0 +1,14 @@
+if [ "$GDMSESSION" = "001debathena-ttymode" ]; then
+ if [ "$DEBATHENA_HOME_TYPE" = "afs" ]; then
+ QUOTAPCT=$(fs lq $HOME | tail -1 | awk '{print $4}' | sed 's/[^0-9]*//g')
+ if [ $QUOTAPCT -ge 100 ]; then
+ # Otherwise it blocks the session until it times out
+ pkill pulseaudio
+ fi
+ fi
+ if zenity --question --text="This will launch an xterm which will emulate a tty-mode login session. You can end your session by typing 'logout'.\nContinue?"; then
+ xsetroot -solid grey
+ xterm -ls -geometry 80x24+280+220 -display :0.0
+ fi
+ exit 0
+fi
Added: trunk/debathena/debathena/xsession/debian/debathena-homedir-mode.sh
===================================================================
--- trunk/debathena/debathena/xsession/debian/debathena-homedir-mode.sh (rev 0)
+++ trunk/debathena/debathena/xsession/debian/debathena-homedir-mode.sh 2011-02-24 01:19:13 UTC (rev 24976)
@@ -0,0 +1,11 @@
+# This file is sourced by Xsession(5), not executed.
+
+if [ afs = "$DEBATHENA_HOME_TYPE" ] && \
+ stat -L --format='%A' "$HOME" | egrep -q '^(.....w|........w)'; then
+ hm=$(stat -L --format='%a' "$HOME")
+ message "Your home directory is mode $hm, probably because it was created" \
+ "a long time ago. You likely received a spurious error dialog about" \
+ ".dmrc as a result of the mode bits on your home directory. To fix this" \
+ "condition, you can run: chmod 755 \$HOME"
+ unset hm
+fi
Added: trunk/debathena/debathena/xsession/debian/debathena-message.sh
===================================================================
--- trunk/debathena/debathena/xsession/debian/debathena-message.sh (rev 0)
+++ trunk/debathena/debathena/xsession/debian/debathena-message.sh 2011-02-24 01:19:13 UTC (rev 24976)
@@ -0,0 +1,17 @@
+# This file is sourced by Xsession(5), not executed.
+
+# Work around the absence of the message function (to pretty-print user
+# messages) from some versions of gdm's Xsession script.
+if ! hash message 2>/dev/null ; then
+ message () {
+ text="$@"
+ echo "$text" | fold -s
+ if [ -n "$DISPLAY" ]; then
+ if hash zenity 2>/dev/null ; then
+ zenity --info --text "$text"
+ elif hash xmessage 2>/dev/null ; then
+ echo "$text" | fold -s | xmessage -center -file -
+ fi
+ fi
+ }
+fi
Added: trunk/debathena/debathena/xsession/debian/debathena-nocalls.sh
===================================================================
--- trunk/debathena/debathena/xsession/debian/debathena-nocalls.sh (rev 0)
+++ trunk/debathena/debathena/xsession/debian/debathena-nocalls.sh 2011-02-24 01:19:13 UTC (rev 24976)
@@ -0,0 +1,15 @@
+if [ "$GDMSESSION" = "000debathena-nocalls" ]; then
+ export NOCALLS=1
+ message "You have chosen to log in without your customizations." \
+ "Your dotfiles will be ignored in favor of the system" \
+ "default settings. You can use this session to fix any" \
+ "problems with your dotfiles."
+fi
+
+# You don't actually want nocalls as your default session
+[ -e "$HOME/.dmrc" ] && \
+ grep -q 000debathena-nocalls "$HOME/.dmrc" && \
+ rm "$HOME/.dmrc"
+[ -e "/var/cache/gdm/$USER/dmrc" ] && \
+ grep -q 000debathena-nocalls "/var/cache/gdm/$USER/dmrc" && \
+ rm "/var/cache/gdm/$USER/dmrc"
Added: trunk/debathena/debathena/xsession/debian/debathena-quota.sh
===================================================================
--- trunk/debathena/debathena/xsession/debian/debathena-quota.sh (rev 0)
+++ trunk/debathena/debathena/xsession/debian/debathena-quota.sh 2011-02-24 01:19:13 UTC (rev 24976)
@@ -0,0 +1,6 @@
+if [ "$DEBATHENA_HOME_TYPE" = "afs" ]; then
+ QUOTAPCT=$(fs lq $HOME | tail -1 | awk '{print $4}' | sed 's/[^0-9]*//g')
+ if [ $QUOTAPCT -ge 100 ]; then
+ message "You have exceeded your AFS quota. This login session will likely fail.\n\nTry using the 'Athena TTY Session' login session to get a tty-mode login session, and then remove or compress some files to get below your quota.\n\nYou may also request a quota increase from User Accounts by calling x3-1325."
+ fi
+fi
Added: trunk/debathena/debathena/xsession/debian/debathena-tcsh-sucks.sh
===================================================================
--- trunk/debathena/debathena/xsession/debian/debathena-tcsh-sucks.sh (rev 0)
+++ trunk/debathena/debathena/xsession/debian/debathena-tcsh-sucks.sh 2011-02-24 01:19:13 UTC (rev 24976)
@@ -0,0 +1,10 @@
+# This file is sourced by Xsession(5), not executed.
+
+# Horrible work-around for the fact that GDM can't read the
+# .xsession-errors file it tries to write.
+
+if echo "$SHELL" | grep -q 'tcsh' && \
+ [ 'afs' = "$DEBATHENA_HOME_TYPE" ]; then
+ xterm -rightbar -sb -fa "" -fs 12 -T ".xsession-errors" -e tail -n +1 -f "$HOME/.xsession-errors" &
+ export XCONSOLE=$!
+fi
Added: trunk/debathena/debathena/xsession/debian/debathena-tracker.sh
===================================================================
--- trunk/debathena/debathena/xsession/debian/debathena-tracker.sh (rev 0)
+++ trunk/debathena/debathena/xsession/debian/debathena-tracker.sh 2011-02-24 01:19:13 UTC (rev 24976)
@@ -0,0 +1,12 @@
+# This file is sourced by Xsession(5), not executed.
+
+if [ afs = "$DEBATHENA_HOME_TYPE" ] && \
+ [ -f "$HOME/.config/tracker/tracker.cfg" ] && \
+ [ "$(awk -F= '/^EnableIndexing/ { print $2}' $HOME/.config/tracker/tracker.cfg)" != "false" ]; then
+
+ message "You currently have the Tracker applet configured to index" \
+ "your home directory, probably because you logged into an earlier" \
+ "version of Debathena. This is undesirable, because it can interact" \
+ "poorly with the AFS cache and render AFS unusable. To fix this," \
+ "run the following command: athrun consult fix-tracker"
+fi
Modified: trunk/debathena/debathena/xsession/debian/debathena-xsession.install
===================================================================
--- trunk/debathena/debathena/xsession/debian/debathena-xsession.install 2011-02-23 20:55:52 UTC (rev 24975)
+++ trunk/debathena/debathena/xsession/debian/debathena-xsession.install 2011-02-24 01:19:13 UTC (rev 24976)
@@ -15,3 +15,10 @@
debian/quotawarn usr/lib/init
debian/xsession.bash usr/lib/init
debian/xsession.tcsh usr/lib/init
+debian/debathena-gdm-sucks.sh usr/share/debathena-xsession
+debian/debathena-homedir-mode.sh usr/share/debathena-xsession
+debian/debathena-message.sh usr/share/debathena-xsession
+debian/debathena-nocalls.sh usr/share/debathena-xsession
+debian/debathena-quota.sh usr/share/debathena-xsession
+debian/debathena-tcsh-sucks.sh usr/share/debathena-xsession
+debian/debathena-tracker.sh usr/share/debathena-xsession