[SRU] Service activation via Systemd socket

Bug #1991022 reported by Nathan Teodosio
12
This bug affects 1 person
Affects Status Importance Assigned to Milestone
speech-dispatcher (Ubuntu)
Fix Released
High
Nathan Teodosio
Jammy
Fix Released
High
Nathan Teodosio
Kinetic
Fix Released
High
Nathan Teodosio
Lunar
Fix Released
High
Nathan Teodosio

Bug Description

[Description]

Systemd socket activation for Speech Dispatcher.

  - Creates the speech-dispatcher.socket;
  - Modifies the server so that it can detect it was automatically launched by that socket activation; and
  - Modifies the Autotools files accordingly.

[Impact]

Its relevance is described in [1], of which I quote the essential parts [my notes in brackets]:

> Sandboxed applications [snaps] that use Speech Dispatcher currently bundle it inside of the sandbox, so that each application has its own "private" instance of Speech Dispatcher running. This works more or less, but it has the downside that speech dispatcher cannot coordinate simultaneous messages from multiple apps. When multiple sandboxed apps use Speech Dispatcher at the same time, the text reading overlaps.
>
> In order to solve this issue, I would really like to give sandboxed apps access to the Speech Dispatcher instance of the host.

That can be done by implementing the action of the speech dispatcher service via a Systemd socket:

> The only issue I see is having it auto launch. I think it would probably be a good step forward for speech-dispatcher to be auto launched by a systemd socket like other daemons already do on demand. That way the host speech-dispatcher with it's configuration would be used by all snaps,

[Additional information]

The changes are already merged upstream[21][22][23], but still not released.

I have built and installed the package in Mantic and verified that running spd-say from inside a snap causes the host's dispatcher to spawn and emit sound — see 'Test case' for more details. This has also been verified in Jammy by Lissyx[31][32] and there is a merge proposal[4] for the Firefox snap that assumes the incorporation of this delta in speech-dispatcher.

Note: Either the installed socket needs to be started manually to function correctly or the session must be restarted or the system needs to be rebooted.

[Test case]

Install the proposed speech-dispatcher and the snap[5] containing spd-say. Restart the user session so the new systemd unit gets activated. Then,

  snap run --shell geheim
  $ XDG_RUNTIME_DIR=/run/user/1000 spd-say hi

should say "hi" through your loudspeakers. If you have no loudspeakers or if you are testing in a virtual machine, you can use Pavucontrol to verify that the dummy output device meter shows activity right after you issue the last command.

[Regression potential]

If the socket communication were not working (e.g. connection refused), then this would result in text-to-speech failing, even for a not sandboxed program.

Do note, however, that if the socket were not available for whatever reason (e.g. the user didn't start it manually nor rebooted), then the sd_listen_fds(0) >= 1 test would be false and no regression would be observed, as then the program would fallback to its usual operation.

[1] https://github.com/brailcom/speechd/issues/335
[21] https://github.com/brailcom/speechd/pull/763
[22] https://github.com/brailcom/speechd/pull/776
[23] https://github.com/brailcom/speechd/pull/817
[31] https://irclogs.ubuntu.com/2023/05/17/%23ubuntu-desktop.html
[32] https://bugzilla.mozilla.org/show_bug.cgi?id=1729750#c23
[4] https://github.com/canonical/firefox-snap/pull/12
[5] https://launchpad.net/~nteodosio/+snap/test-speechd/+build/2103550

Revision history for this message
Nathan Teodosio (nteodosio) wrote :
tags: added: wip
tags: added: kinetic
Revision history for this message
Nathan Teodosio (nteodosio) wrote : Install log and debdiff
description: updated
tags: removed: wip
Graham Inggs (ginggs)
summary: - Feature freeze exception: Socket activation
+ [FFe] Socket activation
Revision history for this message
Utkarsh Gupta (utkarsh) wrote : Re: [FFe] Socket activation

Hi Nathan,

Thank you for filing the FFe bug. The bug is well documented and supported via attached logs and diff. Whilst this looks good for FFe, please wait for an ACK from the actual Release team member. Thanks! \o/

Revision history for this message
Graham Inggs (ginggs) wrote :

Thanks Utkarsh, I agree this looks good, FFe granted.

Changed in speech-dispatcher (Ubuntu):
status: New → Triaged
Revision history for this message
Sebastien Bacher (seb128) wrote :

Thanks for the reviews.

@Nathan, I've uploaded that one with some tweaks now, let me know if you think it's right

- added an actual patch description to the changelog
- build-depends on libsystemd-dev since that provides the libsystemd.pc which the patch uses
- updated debian/speech-dispatcher.install to include the new units

Changed in speech-dispatcher (Ubuntu):
assignee: nobody → Nathan Teodosio (nteodosio)
importance: Undecided → High
status: Triaged → Fix Committed
Revision history for this message
Nathan Teodosio (nteodosio) wrote : Re: [Bug 1991022] Re: [FFe] Socket activation

> @Nathan, I've uploaded that one with some tweaks now, let me know if you
> think it's right

Absolutely! Thanks, Sebastien.

Revision history for this message
Brian Murray (brian-murray) wrote : Re: [FFe] Socket activation

This was removed from the archive shortly before release so I've set the status back to Triaged.

Changed in speech-dispatcher (Ubuntu):
status: Fix Committed → Triaged
Revision history for this message
Ubuntu Foundations Team Bug Bot (crichton) wrote :

The attachment "0.11.3-1--0.11.3-1ubuntu1.diff" seems to be a debdiff. The ubuntu-sponsors team has been subscribed to the bug report so that they can review and hopefully sponsor the debdiff. If the attachment isn't a patch, please remove the "patch" flag from the attachment, remove the "patch" tag, and if you are member of the ~ubuntu-sponsors, unsubscribe the team.

[This is an automated message performed by a Launchpad user owned by ~brian-murray, for any issue please contact him.]

tags: added: patch
Revision history for this message
Simon Quigley (tsimonq2) wrote :

This package exists in Lunar again and the fix has been released upstream, marking as Fix Released.

Changed in speech-dispatcher (Ubuntu):
status: Triaged → Fix Released
description: updated
Changed in speech-dispatcher (Ubuntu):
status: Fix Released → In Progress
summary: - [FFe] Socket activation
+ Service activation via Systemd socket
Revision history for this message
Nathan Teodosio (nteodosio) wrote : Debdiff
Revision history for this message
Sebastien Bacher (seb128) wrote : Re: Service activation via Systemd socket

Thanks Nathan, uploaded!

Changed in speech-dispatcher (Ubuntu):
status: In Progress → Fix Committed
Revision history for this message
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package speech-dispatcher - 0.11.4-2ubuntu1

---------------
speech-dispatcher (0.11.4-2ubuntu1) mantic; urgency=medium

  [ Nathan Pratta Teodosio ]
  * patches/systemd-socket-activation: Added.
    - Enables activating Speech Dispatcher via a Systemd socket, it's needed
    for confined clients to be able to activate the service (LP: #1991022).
  * control: remove deprecated lsb-base package.

  [ Sebastien Bacher]
  * debian/control:
    - Build-Depends on libsystemd-dev
  * debian/speech-dispatcher.install:
    - install the new systemd units

 -- Sebastien Bacher <email address hidden> Mon, 15 May 2023 13:43:36 +0200

Changed in speech-dispatcher (Ubuntu):
status: Fix Committed → Fix Released
Changed in speech-dispatcher (Ubuntu Focal):
assignee: nobody → Nathan Teodosio (nteodosio)
Changed in speech-dispatcher (Ubuntu Jammy):
assignee: nobody → Nathan Teodosio (nteodosio)
Changed in speech-dispatcher (Ubuntu Kinetic):
assignee: nobody → Nathan Teodosio (nteodosio)
Changed in speech-dispatcher (Ubuntu Lunar):
assignee: nobody → Nathan Teodosio (nteodosio)
Changed in speech-dispatcher (Ubuntu Focal):
importance: Undecided → High
Changed in speech-dispatcher (Ubuntu Jammy):
importance: Undecided → High
Changed in speech-dispatcher (Ubuntu Kinetic):
importance: Undecided → High
Changed in speech-dispatcher (Ubuntu Lunar):
importance: Undecided → High
description: updated
description: updated
Revision history for this message
Nathan Teodosio (nteodosio) wrote :
Changed in speech-dispatcher (Ubuntu Lunar):
status: New → Confirmed
Revision history for this message
Nathan Teodosio (nteodosio) wrote :
Changed in speech-dispatcher (Ubuntu Kinetic):
status: New → Confirmed
Revision history for this message
Nathan Teodosio (nteodosio) wrote :
Changed in speech-dispatcher (Ubuntu Jammy):
status: New → Confirmed
description: updated
tags: removed: kinetic
summary: - Service activation via Systemd socket
+ [SRU] Service activation via Systemd socket
no longer affects: speech-dispatcher (Ubuntu Focal)
Revision history for this message
Sebastien Bacher (seb128) wrote :

Thanks, I've uploaded to the different series now but remove the lsb-base change to not complicate the review (it's another changeset so by SRU rule it would have required another bug/testcase). I always tweaked the lunar and kinetic revision since we can't re-use version which already got published to launchpad

Changed in speech-dispatcher (Ubuntu Lunar):
status: Confirmed → Fix Committed
Changed in speech-dispatcher (Ubuntu Kinetic):
status: Confirmed → Fix Committed
Changed in speech-dispatcher (Ubuntu Jammy):
status: Confirmed → Fix Committed
Revision history for this message
Steve Langasek (vorlon) wrote :

This looks very good to me, thanks. My only concern is that the test case includes a manual:

  systemctl start --user speech-dispatcher.socket

Is that in place of re-starting the user session? I would expect the socket unit to be started automatically. Should we ask for a restart of the user session as part of the verification, to ensure this happens correctly?

description: updated
Changed in speech-dispatcher (Ubuntu Lunar):
status: Fix Committed → Incomplete
Changed in speech-dispatcher (Ubuntu Kinetic):
status: Fix Committed → Incomplete
Changed in speech-dispatcher (Ubuntu Jammy):
status: Fix Committed → Incomplete
Revision history for this message
Nathan Teodosio (nteodosio) wrote : Re: [Bug 1991022] Re: [SRU] Service activation via Systemd socket

Hi, what exactly does restarting the session mean? I could verify
whether that would work.

Otherwise the behavior I observed is consistent with
https://source.puri.sm/kop316/mmsd/-/issues/3.

Revision history for this message
Steve Langasek (vorlon) wrote :

A user logout/login would qualify as restarting the user session.

Revision history for this message
Nathan Teodosio (nteodosio) wrote :

Yes, I can confirm that restarting the user session is enough.

description: updated
Revision history for this message
Sebastien Bacher (seb128) wrote :

We believe the question got answered and the upload should be good for review now

Changed in speech-dispatcher (Ubuntu Jammy):
status: Incomplete → New
Changed in speech-dispatcher (Ubuntu Kinetic):
status: Incomplete → New
Changed in speech-dispatcher (Ubuntu Lunar):
status: Incomplete → New
description: updated
description: updated
Revision history for this message
Steve Langasek (vorlon) wrote : Please test proposed package

Hello Nathan, or anyone else affected,

Accepted speech-dispatcher into lunar-proposed. The package will build now and be available at https://launchpad.net/ubuntu/+source/speech-dispatcher/0.11.4-2ubuntu0.1 in a few hours, and then in the -proposed repository.

Please help us by testing this new package. See https://wiki.ubuntu.com/Testing/EnableProposed for documentation on how to enable and use -proposed. Your feedback will aid us getting this update out to other Ubuntu users.

If this package fixes the bug for you, please add a comment to this bug, mentioning the version of the package you tested, what testing has been performed on the package and change the tag from verification-needed-lunar to verification-done-lunar. If it does not fix the bug for you, please add a comment stating that, and change the tag to verification-failed-lunar. In either case, without details of your testing we will not be able to proceed.

Further information regarding the verification process can be found at https://wiki.ubuntu.com/QATeam/PerformingSRUVerification . Thank you in advance for helping!

N.B. The updated package will be released to -updates after the bug(s) fixed by this package have been verified and the package has been in -proposed for a minimum of 7 days.

Changed in speech-dispatcher (Ubuntu Lunar):
status: New → Fix Committed
tags: added: verification-needed verification-needed-lunar
Revision history for this message
Steve Langasek (vorlon) wrote :

Hello Nathan, or anyone else affected,

Accepted speech-dispatcher into kinetic-proposed. The package will build now and be available at https://launchpad.net/ubuntu/+source/speech-dispatcher/0.11.3-1ubuntu1.1 in a few hours, and then in the -proposed repository.

Please help us by testing this new package. See https://wiki.ubuntu.com/Testing/EnableProposed for documentation on how to enable and use -proposed. Your feedback will aid us getting this update out to other Ubuntu users.

If this package fixes the bug for you, please add a comment to this bug, mentioning the version of the package you tested, what testing has been performed on the package and change the tag from verification-needed-kinetic to verification-done-kinetic. If it does not fix the bug for you, please add a comment stating that, and change the tag to verification-failed-kinetic. In either case, without details of your testing we will not be able to proceed.

Further information regarding the verification process can be found at https://wiki.ubuntu.com/QATeam/PerformingSRUVerification . Thank you in advance for helping!

N.B. The updated package will be released to -updates after the bug(s) fixed by this package have been verified and the package has been in -proposed for a minimum of 7 days.

Changed in speech-dispatcher (Ubuntu Kinetic):
status: New → Fix Committed
tags: added: verification-needed-kinetic
Revision history for this message
Steve Langasek (vorlon) wrote :

Hello Nathan, or anyone else affected,

Accepted speech-dispatcher into jammy-proposed. The package will build now and be available at https://launchpad.net/ubuntu/+source/speech-dispatcher/0.11.1-1ubuntu3 in a few hours, and then in the -proposed repository.

Please help us by testing this new package. See https://wiki.ubuntu.com/Testing/EnableProposed for documentation on how to enable and use -proposed. Your feedback will aid us getting this update out to other Ubuntu users.

If this package fixes the bug for you, please add a comment to this bug, mentioning the version of the package you tested, what testing has been performed on the package and change the tag from verification-needed-jammy to verification-done-jammy. If it does not fix the bug for you, please add a comment stating that, and change the tag to verification-failed-jammy. In either case, without details of your testing we will not be able to proceed.

Further information regarding the verification process can be found at https://wiki.ubuntu.com/QATeam/PerformingSRUVerification . Thank you in advance for helping!

N.B. The updated package will be released to -updates after the bug(s) fixed by this package have been verified and the package has been in -proposed for a minimum of 7 days.

Changed in speech-dispatcher (Ubuntu Jammy):
status: New → Fix Committed
tags: added: verification-needed-jammy
Revision history for this message
Nathan Teodosio (nteodosio) wrote :

I installed 0.11.1-1ubuntu3 from jammy-proposed and the snap[5] in a Jammy virtual machine, logged out, logged in, opened Pavucontrol, ran

  snap run --shell geheim
  XDG_RUNTIME_DIR=/run/user/1000 spd-say hi

and verified that the volume indicator in Pavucontrol moved right after issuing the command.

[5] https://launchpad.net/~nteodosio/+snap/test-speechd/+build/2103550

tags: added: verification-done-jammy
removed: verification-needed-jammy
Revision history for this message
Nathan Teodosio (nteodosio) wrote :

Verified in Lobster (0.11.4-2ubuntu0.1) and Kinetic (0.11.3-1ubuntu1.1) that the test case produces sound.

tags: added: verification-done verification-done-kinetic verification-done-lunar
removed: verification-needed verification-needed-kinetic verification-needed-lunar
Revision history for this message
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package speech-dispatcher - 0.11.4-2ubuntu0.1

---------------
speech-dispatcher (0.11.4-2ubuntu0.1) lunar; urgency=medium

  * patches/systemd-socket-activation: Added.
    - Enables activating Speech Dispatcher via a Systemd socket, it's needed
    for confined clients to be able to activate the service (LP: #1991022).

  [ Sebastien Bacher]
  * debian/control:
    - Build-Depends on libsystemd-dev
  * debian/speech-dispatcher.install:
    - install the new systemd units

 -- Nathan Pratta Teodosio <email address hidden> Wed, 10 May 2023 08:40:27 +0200

Changed in speech-dispatcher (Ubuntu Lunar):
status: Fix Committed → Fix Released
Revision history for this message
Łukasz Zemczak (sil2100) wrote : Update Released

The verification of the Stable Release Update for speech-dispatcher has completed successfully and the package is now being released to -updates. Subsequently, the Ubuntu Stable Release Updates Team is being unsubscribed and will not receive messages about this bug report. In the event that you encounter a regression using the package from -updates please report a new bug using ubuntu-bug and tag the bug report regression-update so we can easily find any regressions.

Revision history for this message
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package speech-dispatcher - 0.11.3-1ubuntu1.1

---------------
speech-dispatcher (0.11.3-1ubuntu1.1) kinetic; urgency=medium

  * patches/systemd-socket-activation: Added.
    - Enables activating Speech Dispatcher via a Systemd socket, it's needed
    for confined clients to be able to activate the service (LP: #1991022).

  [ Sebastien Bacher]
  * debian/control:
    - Build-Depends on libsystemd-dev
  * debian/speech-dispatcher.install:
    - install the new systemd units

 -- Nathan Pratta Teodosio <email address hidden> Tue, 23 May 2023 08:59:41 +0200

Changed in speech-dispatcher (Ubuntu Kinetic):
status: Fix Committed → Fix Released
Revision history for this message
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package speech-dispatcher - 0.11.1-1ubuntu3

---------------
speech-dispatcher (0.11.1-1ubuntu3) jammy; urgency=medium

  * patches/systemd-socket-activation: Added.
    - Enables activating Speech Dispatcher via a Systemd socket, it's needed
    for confined clients to be able to activate the service (LP: #1991022).

  [ Sebastien Bacher]
  * debian/control:
    - Build-Depends on libsystemd-dev
  * debian/speech-dispatcher.install:
    - install the new systemd units

 -- Nathan Pratta Teodosio <email address hidden> Tue, 23 May 2023 09:29:24 +0200

Changed in speech-dispatcher (Ubuntu Jammy):
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.