[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#884606: stretch-pu: package espeakup/1:0.80-5+b2



Samuel Thibault, on jeu. 21 déc. 2017 15:42:13 +0100, wrote:
> Cyril Brulebois, on jeu. 21 déc. 2017 15:37:00 +0100, wrote:
> > I don't think that's an issue with cherry-picking the relevant commit,
> > since it doesn't seem to contain any indications the default voice is
> > getting set to English?
> 
> IIRC I had issues without it, so it was on purpose, and just missed
> documenting it.

Here is the fixed patch.
diff --git a/debian/changelog b/debian/changelog
index a908870..0c1d5a3 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,13 @@
+espeakup (1:0.80-5+deb9u1) stretch; urgency=medium
+
+  * debian/espeakup-udeb.start: Fix case where card 0 does not have an id or
+    where cards have non-contiguous indexes. Also make sure we load the
+    english language by default.
+  * debian/espeakup-udeb.finish-install: Use card id in installed system
+    to avoid issues with card detection ordering.
+
+ -- Samuel Thibault <sthibault@debian.org>  Sun, 17 Dec 2017 16:35:19 +0100
+
 espeakup (1:0.80-5) unstable; urgency=medium
 
   * Use canonical anonscm vcs URL.
diff --git a/debian/espeakup-udeb.finish-install b/debian/espeakup-udeb.finish-install
index 00e7e84..17c9182 100644
--- a/debian/espeakup-udeb.finish-install
+++ b/debian/espeakup-udeb.finish-install
@@ -12,4 +12,4 @@ apt-install espeakup alsa-utils || true
 
 cp /usr/share/espeakup-udeb/espeakup.default /target/etc/default/espeakup
 sed -i -e "s/^VOICE=.*/VOICE=$VOICE/" /target/etc/default/espeakup
-[ -z "$ALSA_CARD" ] || sed -i -e "s/^# ALSA_CARD=.*/ALSA_CARD=\"$ALSA_CARD\"/" /target/etc/default/espeakup
+[ -z "$ALSA_CARD" ] || sed -i -e "s/^# ALSA_CARD=.*/ALSA_CARD=\"`cat /sys/class/sound/card$ALSA_CARD/id`\"/" /target/etc/default/espeakup
diff --git a/debian/espeakup-udeb.start b/debian/espeakup-udeb.start
index d187d77..2f5db6a 100644
--- a/debian/espeakup-udeb.start
+++ b/debian/espeakup-udeb.start
@@ -1,7 +1,15 @@
+BASE=/sys/class/sound
+
+strip () {
+	cardid=${1#$BASE/card}
+	echo ${cardid%/id}
+}
+
 if lsmod | grep -q speakup_soft; then
 	# Give drivers some time to detect boards :/
 	sleep 2
-	N=$(ls /sys/class/sound/card*/id | wc -l)
+	IDS=$(echo $BASE/card*/id)
+	N=$(echo $IDS | wc -w)
 	case $N in
 		0)
 			echo No sound card detected, can not do software speech synthesis... Press enter to continue anyway.
@@ -9,17 +17,18 @@ if lsmod | grep -q speakup_soft; then
 			;;
 		1)
 			# Just one card, can not be wrong
-			echo 0 > /var/run/espeakup.card
-			/usr/bin/espeakup > /var/log/espeakup.log 2>&1
+			echo $(strip $IDS) > /var/run/espeakup.card
+			/usr/bin/espeakup -V en > /var/log/espeakup.log 2>&1
 			;;
 		*)
 			# Several cards, make the user choose
 			CARD=none
 			while [ "$CARD" = none ]
 			do
-				for i in $( seq 0 $(($N-1)) )
+				for ID in $IDS
 				do
-					ALSA_CARD=$(cat /sys/class/sound/card$i/id) /usr/bin/espeakup >> /var/log/espeakup.log 2>&1
+					i=$(strip $ID)
+					ALSA_CARD=$(cat /sys/class/sound/card$i/id) /usr/bin/espeakup -V en >> /var/log/espeakup.log 2>&1
 					while ! [ -r /var/run/espeakup.pid ]
 					do
 						sleep 0.1
@@ -41,6 +50,6 @@ if lsmod | grep -q speakup_soft; then
 				done
 			done
 			echo "$CARD" > /var/run/espeakup.card
-			ALSA_CARD=$(cat /sys/class/sound/card$CARD/id) /usr/bin/espeakup >> /var/log/espeakup.log 2>&1
+			ALSA_CARD=$(cat /sys/class/sound/card$CARD/id) /usr/bin/espeakup -V en >> /var/log/espeakup.log 2>&1
 	esac
 fi

Reply to: