The branch, master has been updated
via 937fd25f831c5a0e1a617eab132d8f416d5b36ee (commit)
from 7399e80bd8181c79b16d80a6c2213619dfe2ff87 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit 937fd25f831c5a0e1a617eab132d8f416d5b36ee
Author: Mike Gabriel <mike.gabriel(a)das-netzwerkteam.de>
Date: Wed Nov 20 12:48:13 2013 +0100
Work around Debian bug #729373 during TCE creation. Replace alsa-utils init script and ALSA's utils.sh (for Debian wheezy+jessie chroots).
-----------------------------------------------------------------------
Summary of changes:
debian/changelog | 4 +-
debian/x2gothinclient-chroot.install | 1 +
.../patchsets/alsa-utils.wheezy/alsa-utils | 209 ++++++++++++++++++++
.../patchsets/alsa-utils.wheezy/utils.sh | 182 +++++++++++++++++
.../sbin/x2gothinclient_create | 7 +
5 files changed, 401 insertions(+), 2 deletions(-)
create mode 100644 debian/x2gothinclient-chroot.install
create mode 100755 x2gothinclient-chroot/patchsets/alsa-utils.wheezy/alsa-utils
create mode 100644 x2gothinclient-chroot/patchsets/alsa-utils.wheezy/utils.sh
The diff of changes is:
diff --git a/debian/changelog b/debian/changelog
index 7d613da..5498d6c 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -15,8 +15,8 @@ x2gothinclient (1.1.0.1-0~x2go1) UNRELEASED; urgency=low
during thin client startup.
- Patch /etc/init.d/checkroot-bootclean.sh during TCE creation to
avoid failures when clean tmp files on the read-only NFS root-fs.
- - Work around Debian bug #729373 during TCE creation. Patch alsa-utils
- init script and ALSA's utils.sh.
+ - Work around Debian bug #729373 during TCE creation. Replace alsa-utils
+ init script and ALSA's utils.sh (for Debian wheezy+jessie chroots).
- Refrain from using "~<user>" when launching X2Go Client as it cannot
handle it, yet. Use "~" instead (handable by X2Go Client >= 4.0.1.2).
- Tweak the /etc/os-release more comprehensively.
diff --git a/debian/x2gothinclient-chroot.install b/debian/x2gothinclient-chroot.install
new file mode 100644
index 0000000..53435cc
--- /dev/null
+++ b/debian/x2gothinclient-chroot.install
@@ -0,0 +1 @@
+x2gothinclient-chroot/patchsets usr/share/x2go/tce/
\ No newline at end of file
diff --git a/x2gothinclient-chroot/patchsets/alsa-utils.wheezy/alsa-utils b/x2gothinclient-chroot/patchsets/alsa-utils.wheezy/alsa-utils
new file mode 100755
index 0000000..0dc8372
--- /dev/null
+++ b/x2gothinclient-chroot/patchsets/alsa-utils.wheezy/alsa-utils
@@ -0,0 +1,209 @@
+#!/bin/sh
+#
+# alsa-utils initscript
+#
+### BEGIN INIT INFO
+# Provides: alsa-utils
+# Required-Start: $local_fs $remote_fs
+# Required-Stop: $remote_fs
+# Default-Start: S
+# Default-Stop: 0 1 6
+# Short-Description: Restore and store ALSA driver settings
+# Description: This script stores and restores mixer levels on
+# shutdown and bootup.On sysv-rc systems: to
+# disable storing of mixer levels on shutdown,
+# remove /etc/rc[06].d/K50alsa-utils. To disable
+# restoring of mixer levels on bootup, rename the
+# "S50alsa-utils" symbolic link in /etc/rcS.d/ to
+# "K50alsa-utils".
+### END INIT INFO
+
+# Don't use set -e; check exit status instead
+
+# Exit silently if package is no longer installed
+[ -x /usr/sbin/alsactl ] || exit 0
+
+PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
+MYNAME=/etc/init.d/alsa-utils
+export ALSACTLHOME=/var/run/alsa
+
+[ -d "$ALSACTLHOME" ] || mkdir -p "$ALSACTLHOME"
+
+. /lib/lsb/init-functions
+. /usr/share/alsa/utils.sh
+
+# $1 EXITSTATUS
+# [$2 MESSAGE]
+log_action_end_msg_and_exit()
+{
+ log_action_end_msg "$1" ${2:+"$2"}
+ exit $1
+}
+
+# $1 PROGRAM
+executable()
+{
+ # If which is not available then we must be running before
+ # /usr is mounted on a system that has which in /usr/bin/.
+ # Conclude that $1 is not executable.
+ [ -x /bin/which ] || [ -x /usr/bin/which ] || return 1
+ which "$1" >/dev/null 2>&1
+}
+
+executable amixer || { echo "${MYNAME}: Error: No amixer program available." >&2 ; exit 1 ; }
+
+# $1 <card ID> | "all"
+restore_levels()
+{
+ [ -f /var/lib/alsa/asound.state ] || return 1
+ CARD="$1"
+ [ "$1" = all ] && CARD=""
+ # Assume that if alsactl prints a message on stderr
+ # then it failed somehow. This works around the fact
+ # that alsactl doesn't return nonzero status when it
+ # can't restore settings for the card
+ if MSG="$(alsactl -E HOME="$ALSACTLHOME" restore $CARD 2>&1 >/dev/null)" && [ ! "$MSG" ] ; then
+ return 0
+ else
+ # Retry with the "force" option. This restores more levels
+ # but it results in much longer error messages.
+ alsactl -F restore $CARD >/dev/null 2>&1
+ log_action_cont_msg "warning: 'alsactl -E HOME="$ALSACTLHOME" restore${CARD:+ $CARD}' failed with error message '$MSG'"
+ return 1
+ fi
+}
+
+# $1 <card ID> | "all"
+store_levels()
+{
+ CARD="$1"
+ [ "$1" = all ] && CARD=""
+ if MSG="$(alsactl -E HOME="$ALSACTLHOME" store $CARD 2>&1)" ; then
+ sleep 1
+ return 0
+ else
+ log_action_cont_msg "warning: 'alsactl store${CARD:+ $CARD}' failed with error message '$MSG'"
+ return 1
+ fi
+}
+
+
+# $1 <card ID>
+mute_and_zero_levels_on_card()
+{
+ CARDOPT="-c $1"
+ for CTL in \
+ Master \
+ PCM \
+ Synth \
+ CD \
+ Line \
+ Mic \
+ "PCM,1" \
+ Wave \
+ Music \
+ AC97 \
+ "Master Digital" \
+ DAC \
+ "DAC,0" \
+ "DAC,1" \
+ Headphone \
+ Speaker \
+ Playback
+ do
+ mute_and_zero_level "$CTL"
+ done
+# for CTL in \
+# "Audigy Analog/Digital Output Jack" \
+# "SB Live Analog/Digital Output Jack"
+# do
+# switch_control "$CTL" off
+# done
+ return 0
+}
+
+# $1 <card ID> | "all"
+mute_and_zero_levels()
+{
+ TTZML_RETURNSTATUS=0
+ case "$1" in
+ all)
+ for CARD in $(echo_card_indices) ; do
+ mute_and_zero_levels_on_card "$CARD" || TTZML_RETURNSTATUS=1
+ done
+ ;;
+ *)
+ mute_and_zero_levels_on_card "$1" || TTZML_RETURNSTATUS=1
+ ;;
+ esac
+ return $TTZML_RETURNSTATUS
+}
+
+
+# $1 <card ID> | "all"
+card_OK()
+{
+ [ "$1" ] || bugout
+ if [ "$1" = all ] ; then
+ [ -d /proc/asound ]
+ return $?
+ else
+ [ -d "/proc/asound/card$1" ] || [ -d "/proc/asound/$1" ]
+ return $?
+ fi
+}
+
+# If a card identifier is provided in $2 then regard it as an error
+# if that card is not present; otherwise don't regard it as an error.
+
+case "$1" in
+ start)
+ EXITSTATUS=0
+ TARGET_CARD="$2"
+ case "$TARGET_CARD" in
+ ""|all) TARGET_CARD=all ; log_action_begin_msg "Setting up ALSA" ;;
+ *) log_action_begin_msg "Setting up ALSA card ${TARGET_CARD}" ;;
+ esac
+ card_OK "$TARGET_CARD" || log_action_end_msg_and_exit "$( [ ! "$2" ] ; echo $? ; )" "none loaded"
+ preinit_levels "$TARGET_CARD" || EXITSTATUS=1
+ if ! restore_levels "$TARGET_CARD" ; then
+ sanify_levels "$TARGET_CARD" || EXITSTATUS=1
+ restore_levels "$TARGET_CARD" >/dev/null 2>&1 || :
+ fi
+ log_action_end_msg_and_exit "$EXITSTATUS"
+ ;;
+ stop)
+ EXITSTATUS=0
+ TARGET_CARD="$2"
+ case "$TARGET_CARD" in
+ ""|all) TARGET_CARD=all ; log_action_begin_msg "Shutting down ALSA" ;;
+ *) log_action_begin_msg "Shutting down ALSA card ${TARGET_CARD}" ;;
+ esac
+ card_OK "$TARGET_CARD" || log_action_end_msg_and_exit "$( [ ! "$2" ] ; echo $? ; )" "none loaded"
+ store_levels "$TARGET_CARD" || EXITSTATUS=1
+ #mute_and_zero_levels "$TARGET_CARD" || EXITSTATUS=1
+ log_action_end_msg_and_exit "$EXITSTATUS"
+ ;;
+ restart|force-reload)
+ EXITSTATUS=0
+ $0 stop || EXITSTATUS=1
+ $0 start || EXITSTATUS=1
+ exit $EXITSTATUS
+ ;;
+ reset)
+ TARGET_CARD="$2"
+ case "$TARGET_CARD" in
+ ""|all) TARGET_CARD=all ; log_action_begin_msg "Resetting ALSA" ;;
+ *) log_action_begin_msg "Resetting ALSA card ${TARGET_CARD}" ;;
+ esac
+ card_OK "$TARGET_CARD" || log_action_end_msg_and_exit "$( [ ! "$2" ] ; echo $? ; )" "none loaded"
+ preinit_levels "$TARGET_CARD"
+ sanify_levels "$TARGET_CARD"
+ log_action_end_msg_and_exit "$?"
+ ;;
+ *)
+ echo "Usage: $MYNAME {start [CARD]|stop [CARD]|restart [CARD]|reset [CARD]}" >&2
+ exit 3
+ ;;
+esac
+
diff --git a/x2gothinclient-chroot/patchsets/alsa-utils.wheezy/utils.sh b/x2gothinclient-chroot/patchsets/alsa-utils.wheezy/utils.sh
new file mode 100644
index 0000000..0d07caf
--- /dev/null
+++ b/x2gothinclient-chroot/patchsets/alsa-utils.wheezy/utils.sh
@@ -0,0 +1,182 @@
+# Shell snippet.
+
+bugout() { echo "${MYNAME}: Programming error" >&2 ; exit 123 ; }
+
+echo_card_indices()
+{
+ if [ -f /proc/asound/cards ] ; then
+ sed -n -e's/^[[:space:]]*\([0-7]\)[[:space:]].*/\1/p' /proc/asound/cards
+ fi
+}
+
+filter_amixer_output()
+{
+ sed \
+ -e '/Unable to find simple control/d' \
+ -e '/Unknown playback setup/d' \
+ -e '/^$/d'
+}
+
+# The following functions try to set many controls.
+# No card has all the controls and so some of the attempts are bound to fail.
+# Because of this, the functions can't return useful status values.
+
+# $1 <control>
+# $2 <level>
+# $CARDOPT
+unmute_and_set_level()
+{
+ { [ "$2" ] && [ "$CARDOPT" ] ; } || bugout
+ HOME=$ALSACTLHOME amixer $CARDOPT -q set "$1" "$2" unmute 2>&1 | filter_amixer_output || :
+ return 0
+}
+
+# $1 <control>
+# $CARDOPT
+mute_and_zero_level()
+{
+ { [ "$1" ] && [ "$CARDOPT" ] ; } || bugout
+ HOME=$ALSACTLHOME amixer $CARDOPT -q set "$1" "0%" mute 2>&1 | filter_amixer_output || :
+ return 0
+}
+
+# $1 <control>
+# $2 "on" | "off"
+# $CARDOPT
+switch_control()
+{
+ { [ "$2" ] && [ "$CARDOPT" ] ; } || bugout
+ HOME=$ALSACTLHOME amixer $CARDOPT -q set "$1" "$2" 2>&1 | filter_amixer_output || :
+ return 0
+}
+
+# $1 <card ID>
+sanify_levels_on_card()
+{
+ CARDOPT="-c $1"
+
+ unmute_and_set_level "Master" "80%"
+ unmute_and_set_level "Master Mono" "80%" # See Bug#406047
+ unmute_and_set_level "Master Digital" "80%" # E.g., cs4237B
+ unmute_and_set_level "Playback" "80%"
+ unmute_and_set_level "Headphone" "70%"
+ unmute_and_set_level "PCM" "80%"
+ unmute_and_set_level "PCM,1" "80%" # E.g., ess1969
+ unmute_and_set_level "DAC" "80%" # E.g., envy24, cs46xx
+ unmute_and_set_level "DAC,0" "80%" # E.g., envy24
+ unmute_and_set_level "DAC,1" "80%" # E.g., envy24
+ unmute_and_set_level "Synth" "80%"
+ unmute_and_set_level "CD" "80%"
+
+ mute_and_zero_level "Mic"
+ mute_and_zero_level "IEC958" # Ubuntu #19648
+
+ # Intel P4P800-MX (Ubuntu bug #5813)
+ switch_control "Master Playback Switch" on
+ switch_control "Master Surround" on
+
+ # Trident/YMFPCI/emu10k1:
+ unmute_and_set_level "Wave" "80%"
+ unmute_and_set_level "Music" "80%"
+ unmute_and_set_level "AC97" "80%"
+
+ # DRC:
+ unmute_and_set_level "Dynamic Range Compression" "80%"
+
+ # Required for HDA Intel (hda-intel):
+ unmute_and_set_level "Front" "80%"
+ unmute_and_set_level "Master Front" "80%"
+
+ # Required for SB Live 7.1/24-bit (ca0106):
+ unmute_and_set_level "Analog Front" "80%"
+
+ # Required at least for Via 823x hardware on DFI K8M800-MLVF Motherboard with kernels 2.6.10-3/4 (see ubuntu #7286):
+ switch_control "IEC958 Capture Monitor" off
+
+ # Required for hardware allowing toggles for AC97 through IEC958,
+ # valid values are 0, 1, 2, 3. Needs to be set to 0 for PCM1.
+ unmute_and_set_level "IEC958 Playback AC97-SPSA" "0"
+
+ # Required for newer Via hardware (see Ubuntu #31784)
+ unmute_and_set_level "VIA DXS,0" "80%"
+ unmute_and_set_level "VIA DXS,1" "80%"
+ unmute_and_set_level "VIA DXS,2" "80%"
+ unmute_and_set_level "VIA DXS,3" "80%"
+
+ # Required on some notebooks with ICH4:
+ switch_control "Headphone Jack Sense" off
+ switch_control "Line Jack Sense" off
+
+ # Some machines need one or more of these to be on;
+ # others need one or more of these to be off:
+ #
+ # switch_control "External Amplifier" on
+ # switch_control "Audigy Analog/Digital Output Jack" on
+ # switch_control "SB Live Analog/Digital Output Jack" on
+
+ # D1984 -- Thinkpad T61/X61
+ switch_control "Speaker" on
+ switch_control "Headphone" on
+
+ # HDA-Intel w/ "Digital" capture mixer (See Ubuntu #193823)
+ unmute_and_set_level "Digital" "80%"
+
+ # On MacBookPro5,3 and later models (See Bug#597791)
+ unmute_and_set_level "Front Speaker" "80%"
+ # On MacBook5,2 models (See Bug#602973)
+ unmute_and_set_level "LFE" "80%"
+
+ # On Intel 82801H (See Bug#603550)
+ unmute_and_set_level "Speaker" "80%"
+
+ return 0
+}
+
+# $1 <card ID> | "all"
+sanify_levels()
+{
+ TTSDML_RETURNSTATUS=0
+ case "$1" in
+ all)
+ for CARD in $(echo_card_indices) ; do
+ sanify_levels_on_card "$CARD" || TTSDML_RETURNSTATUS=1
+ done
+ ;;
+ *)
+ sanify_levels_on_card "$1" || TTSDML_RETURNSTATUS=1
+ ;;
+ esac
+ return $TTSDML_RETURNSTATUS
+}
+
+# $1 <card ID>
+preinit_levels_on_card()
+{
+ CARDOPT="-c $1"
+
+ # Silly dance to activate internal speakers by default on PowerMac
+ # Snapper and Tumbler
+ id=$(cat /proc/asound/card$1/id 2>/dev/null)
+ if [ "$id" = "Snapper" -o "$id" = "Tumbler" ]; then
+ switch_control "Auto Mute" off
+ switch_control "PC Speaker" off
+ switch_control "Auto Mute" on
+ fi
+}
+
+# $1 <card ID> | "all"
+preinit_levels()
+{
+ TTSDML_RETURNSTATUS=0
+ case "$1" in
+ all)
+ for CARD in $(echo_card_indices) ; do
+ preinit_levels_on_card "$CARD" || TTSDML_RETURNSTATUS=1
+ done
+ ;;
+ *)
+ preinit_levels_on_card "$1" || TTSDML_RETURNSTATUS=1
+ ;;
+ esac
+ return $TTSDML_RETURNSTATUS
+}
diff --git a/x2gothinclientmanagement/sbin/x2gothinclient_create b/x2gothinclientmanagement/sbin/x2gothinclient_create
index c59e062..b363f1f 100755
--- a/x2gothinclientmanagement/sbin/x2gothinclient_create
+++ b/x2gothinclientmanagement/sbin/x2gothinclient_create
@@ -213,6 +213,13 @@ fi
[ \$? -eq 0 ] && test -e /etc/init.d/alsa-utils && sed "s/^ALSACTLHOME=/export ALSACTLHOME=/" -i /etc/init.d/alsa-utils || true
[ \$? -eq 0 ] && test -e /usr/share/alsa/utils.sh && sed "s/amixer \\\$CARDOPT/HOME=\\\$ALSACTLHOME amixer \\\$CARDOPT/g" -i /usr/share/alsa/utils.sh || true
+###
+### apply patchsets if provided
+###
+# we will use our own alsa-utils init script for Debian wheezy chroots (very similar to the version found in Debian jessie): work around Debian bug #729373.
+[ \$? -eq 0 ] && if [ "\$TC_DISTRO_CODENAME" == "wheezy" ]; then cp /usr/share/x2go/tce/patchsets/alsa-utils.wheezy/alsa-utils /etc/init.d/; cp /usr/share/x2go/tce/patchsets/alsa-utils.wheezy/utils.sh /usr/share/alsa/; fi
+[ \$? -eq 0 ] && if [ "\$TC_DISTRO_CODENAME" == "jessie" ]; then cp /usr/share/x2go/tce/patchsets/alsa-utils.wheezy/alsa-utils /etc/init.d/; cp /usr/share/x2go/tce/patchsets/alsa-utils.wheezy/utils.sh /usr/share/alsa/; fi
+
# update all (mostly only one) initrd.img files
[ \$? -eq 0 ] && update-initramfs -u -v -k all
hooks/post-receive
--
x2gothinclient.git (X2Go Thin Client Environment)
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "x2gothinclient.git" (X2Go Thin Client Environment).