[alsa-devel] [PATCH - alsactl 1/1] make systemd service start in proper way

Tom Yan tom.ty89 at gmail.com
Sun Jan 24 13:57:12 CET 2016


How do you think the check should be? The symlinks will just be no-op
if sound.target doesn't exist. I'm not gonna introduce some dirty
switch to make it fall back to basic.target.wants for systemd<v18.

On 24 January 2016 at 19:32, Takashi Iwai <tiwai at suse.de> wrote:
> On Sun, 24 Jan 2016 11:48:09 +0100,
> Tom Yan wrote:
>>
>> Since v18:
>> http://cgit.freedesktop.org/systemd/systemd/commit/?id=88dfa2938af09e511e4911e6984360ded0e2cd8d
>> http://cgit.freedesktop.org/systemd/systemd/tag/?id=v18
>
> OK, it's old enough, but maybe safer to have some check in configure
> script?
>
>
> Takashi
>
>>
>> On 24 January 2016 at 15:56, Takashi Iwai <tiwai at suse.de> wrote:
>> > On Sun, 24 Jan 2016 01:30:23 +0100,
>> > tom.ty89 at gmail.com wrote:
>> >>
>> >> From: Tom Yan <tom.ty89 at gmail.com>
>> >>
>> >> Use sound.target to trigger the service, which is the proper way
>> >> to start a service related to sound card. This also makes sure that
>> >> the service will only start if a sound card exists in the system.
>> >
>> > Has this target existed in all released versions of systemd?
>> > Just to be sure...
>> >
>> >> basic.target is too early for either of the service:
>> >> 1. alsa-state.service will spam "No soundcards found" on every boot
>> >
>> > Actually this should be seen as a bug of alsactl itself.  In the
>> > daemon mode, it should be allowed to run without the sound card at
>> > start.
>> >
>> >> 2. alsa-restore.service will never start because of
>> >>    "ConditionPathExistsGlob=/dev/snd/control*"
>> >
>> > ... unless reloading or starting the service later.
>> >
>> >> "After=sysinit.target" is removed from alsa-state.service because it
>> >> never made any sense.
>> >>
>> >> "After=alsa-state.service" is removed from alsa-restore.service because
>> >> it is completely unnecessary with the daemon conf switch.
>> >>
>> >> Now either of serivce is enough to manage the state all by itself without
>> >> the udev rules if only ONE sound card exists in the system, while the rules
>> >> are still necessary in system with multiple sound cards.
>> >
>> > ... or with a hotplug device.
>> >
>> >> "StandardOutput=syslog" is also removed from alsa-restore.service because it
>> >> makes little sense (if it has ever switched the behaviour away from default).
>> >
>> > That's superfluous indeed.
>> >
>> >
>> > thanks,
>> >
>> > Takashi
>> >
>> >
>> >> Signed-off-by: Tom Yan <tom.ty89 at gmail.com>
>> >>
>> >> diff --git a/alsactl/Makefile.am b/alsactl/Makefile.am
>> >> index cac8094..90fab9d 100644
>> >> --- a/alsactl/Makefile.am
>> >> +++ b/alsactl/Makefile.am
>> >> @@ -29,8 +29,8 @@ systemdsystemunit_DATA = \
>> >>
>> >>  install-data-hook:
>> >>       $(MKDIR_P) -m 0755 \
>> >> -             $(DESTDIR)$(systemdsystemunitdir)/basic.target.wants
>> >> -     ( cd $(DESTDIR)$(systemdsystemunitdir)/basic.target.wants && \
>> >> +             $(DESTDIR)$(systemdsystemunitdir)/sound.target.wants
>> >> +     ( cd $(DESTDIR)$(systemdsystemunitdir)/sound.target.wants && \
>> >>               rm -f alsa-state.service alsa-restore.service && \
>> >>               $(LN_S) ../alsa-state.service alsa-state.service && \
>> >>               $(LN_S) ../alsa-restore.service alsa-restore.service)
>> >> diff --git a/alsactl/alsa-restore.service.in b/alsactl/alsa-restore.service.in
>> >> index 2884098..fbcf983 100644
>> >> --- a/alsactl/alsa-restore.service.in
>> >> +++ b/alsactl/alsa-restore.service.in
>> >> @@ -6,12 +6,9 @@
>> >>  [Unit]
>> >>  Description=Save/Restore Sound Card State
>> >>  ConditionPathExists=!@daemonswitch@
>> >> -ConditionPathExistsGlob=/dev/snd/control*
>> >> -After=alsa-state.service
>> >>
>> >>  [Service]
>> >>  Type=oneshot
>> >>  RemainAfterExit=true
>> >>  ExecStart=- at sbindir@/alsactl restore
>> >>  ExecStop=- at sbindir@/alsactl store
>> >> -StandardOutput=syslog
>> >> diff --git a/alsactl/alsa-state.service.in b/alsactl/alsa-state.service.in
>> >> index f1321d6..5a8fe5e 100644
>> >> --- a/alsactl/alsa-state.service.in
>> >> +++ b/alsactl/alsa-state.service.in
>> >> @@ -6,7 +6,6 @@
>> >>  [Unit]
>> >>  Description=Manage Sound Card State (restore and store)
>> >>  ConditionPathExists=@daemonswitch@
>> >> -After=sysinit.target
>> >>
>> >>  [Service]
>> >>  Type=simple
>> >> --
>> >> 2.7.0
>> >>
>>


More information about the Alsa-devel mailing list